Home assistant – https (inside & outside – lan)

Instruções de como proceder para ter o HA a trabalhar com HTTPS dentro e fora da rede. Mesmo com routers que não suportam loopback.

1º - DUCKDNS – INSTALAÇÃO E CONFIGURAÇÃO

Site: www.duckdns.org

  • Criar uma conta. Podem usar a vossa conta google ou do Github.
  • Criar um domínio do DuckDns.
  • Desta página irão precisar:

HA – DuckDNS add-on

  • Instalar o Duck DNS no seu HA. É um add-on official do Hass.io

  • Depois de instalado, colocar esta configuração:

{
  "lets_encrypt": {
    "accept_terms": true,
    "certfile": "fullchain.pem",
    "keyfile": "privkey.pem"
  },
  "token": "TOKEN-DO-VOSSO-DUCK-DNS”
  "domains": ["omeudominio.duckdns.org"],
  "seconds": 300
}
  • Iniciar o add-on.

  • Criar uma Port Forward no vosso router para a porta 8123. No router da NOS, apenas podemos fazer através da página: https://aminhanet.nos.pt

EXEMPLO:

imagem
  • Modificar em configuration.yaml, os campos relativos a SSL/TLS, que por defeito estão comentados “#”.
# Uncomment this if you are using SSL/TLS...
http:
  base_url: omeudominio.duckdns.org
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem
  • Validar o conteúdo do configuration.yaml está correto e reiniciar o HA.

  • Depois do HA voltar a iniciar poderá aceder da seguinte maneira:

NOTA: Se tiver dificuldades em carregar pela primeira vez a página após o reinício do HA, pressione “CTRL+F5”, para forçar o browser a carregar a página através do vosso servidor e não da cache.

***********************************************************************************************

2º - NGINX - INSTALAÇÃO E CONFIGURAÇÃO

  • Instalar o NGINX Home Assistant SSL proxy no seu HA. É um add-on official do Hass.io

  • Depois de instalado, colocar esta configuração:

{
  "domain": " omeudominio.duckdns.org",
  "certfile": "fullchain.pem",
  "keyfile": "privkey.pem",
  "hsts": "max-age=31536000; includeSubDomains",
  "customize": {
    "active": false,
    "default": "nginx_proxy_default*.conf",
    "servers": "nginx_proxy/*.conf"
  }
}
  • A porta original a ser usada é a 443. Mas no meu caso, o meu ISP é a NOS, e o router não me permite criar uma regra de Port Forwarding para a 443. Por isso optei por usar uma outra que não está ocupada, a 441.
    Se acontecer o mesmo convosco, antes de iniciarem o add-on, coloquem no separador “Network”, Container 443/tcp – Host – 441.
    Atenção que ao colocarem esta porta e depois clicarem em “SAVE”, normalmente os dados colocados em cima no “Config” voltam à origem. Se isso acontecer voltem a colocar o vosso domínio DuckDNS e salvem novamente

  • Iniciar o add-on.

  • Criar uma Port Forward no vosso router para a porta 441 (No meu caso). No router da NOS, apenas podemos fazer através da página: https://aminhanet.nos.pt

    imagem
  • Devem desativar a regra anterior da porta 8123.

  • Modificar em configuration.yaml, os campos relativos a SSL/TLS novamente. Agora devem comentá-los. E criar o base_url em baixo do TTS:

# Uncomment this if you are using SSL/TLS...

#http:
#  base_url: omeudominio.duckdns.org
#  ssl_certificate: /ssl/fullchain.pem
#  ssl_key: /ssl/privkey.pem

# Text to speech

tts:
  - platform: google_translate
    base_url: http://192.168.1.XXX:8123

NOTA: O próximo passo fazer do nosso HA um servidor de DNS, de maneira a podermos usar HTTPS, dentro e fora de rede. E com isto podermos usar exatamente o mesmo endereço quer seja localmente quer seja fora.

***********************************************************************************************

3º - Dnsmasq - INSTALAÇÃO E CONFIGURAÇÃO

  • Instalar o Dnsmasq no seu HA. É um add-on official do Hass.io

  • Depois de instalado, colocar esta configuração:

{
  "defaults": ["8.8.8.8", "8.8.4.4"],
  "forwards": [],
  "hosts": [
    {"host": "omeudominio.duckdns.org", "ip": "192.168.1.XXX"}
  ]
}
  • Salvar a configuração e iniciar o add-on.
  • Caso o vosso router permita mudar a Configuração de DNS, podem fazê-lo, usando os seguintes dados:
    • DNS Primário: 192.168.1.XXX (IP do vosso HA)
    • DNS Secundário: 8.8.8.8
  • Caso não permita, que é a minha situação. Não vejo nenhuma opção para mudar isso no router da NOS, alterei os DNS nos meus próprios dispositivos: Telemóvel, PC, Portátil. Todos aqueles que pretendem que comuniquem com o vosso HA.

Se tudo correu bem a partir deste momento podem aceder ao vosso HA com o mesmo endereço, estejam na rede interna ou externa:

2 Curtiram
# Uncomment this if you are using SSL/TLS...

#http:
#  base_url: omeudominio.duckdns.org
#  ssl_certificate: /ssl/fullchain.pem
#  ssl_key: /ssl/privkey.pem

# Text to speech

tts:
  - platform: google_translate
    base_url: http://192.168.1.XXX:8123

@dcnilas11 podes corrigir essa parte do tutorial? Isso não está correcto não podes ter a base url dentro do tts, mas sim deves colocar dentro do http

A minha questão vai para o 2º e 3º passo. É aconselhado faze-los? Pois tenho feito só até ao 1º passo, acedo internamente pelo https.ip:8123 e fora pelo dominio duckdns.org:8123

Bom Dia,

@RodolfoVieira Para mim também é estranho, mas é assim que o meu HA está a funcionar corretamente dentro como fora da rede.

Esta configuração bem como base no tutorial deste youtube:
Home Assistant, DuckDNS and Google TTS: Working

@karma Se para ti estiver bem assim, podes ficar aí sem problema.
Eu é que queria ter um url unico quer fosse fora, quer fosse dentro, por causa do device_tracking nos telemóveis e no accesso à app HA.
Assim, não ter de andar a trocar endereços constantemente.

Acho isso minimamente estranho estar a funcionar sem erros…isso não tem lógica rigorosamente nenhuna. Isso deverá estar no http e não no TTS. Altera isso e vais ver que funciona…se funciona de momento…acho como disse estranho.

Sim, mas eu logo posso fazer um teste para ver, sem problema nenhum.

Mas o que dizes é para colocar assim?

# Uncomment this if you are using SSL/TLS...

http:
  base_url: http://192.168.1.XXX:8123
#  ssl_certificate: /ssl/fullchain.pem
#  ssl_key: /ssl/privkey.pem

# Text to speech

tts:
  - platform: google_translate

ou

# Uncomment this if you are using SSL/TLS...

http:
  base_url: https://omeudominio.duckdns.org:441
#  ssl_certificate: /ssl/fullchain.pem
#  ssl_key: /ssl/privkey.pem

# Text to speech

tts:
  - platform: google_translate

@dcnilas11 @RodolfoVieira a configuração existe de facto. Mas a opção por defeito é usar o base_url do http:. Por isso o sitio correcto para a configuração deverá ser a secção http: para o HA a poder usar em todas as situações.

base_url

(string)(Optional)

A base URL to use instead of the one set in the http component. It is used as-is by the tts component. In particular, you need to include the protocol scheme http:// or https:// and the correct port number. They will not be automatically added for you.

Default value:

value of http.base_url

Eu pelo que percebi. Esta colocação do base_url no TTS, é pelo facto do router não ter loopback.

Nesse caso, se não tem loopback para o TTS também não tem para o resto. O loopback não é selectivo…

Ola pessoal preciso da vossa ajuda.

Estou a tentar instalar o Duck DNS.
Tenho o HA numa Virtual Machine
Router da NOS, ainda não consegui confirmar se a porta está bem aberta e a funcionar.

Consigo fazer a instalação do Duck DNS e configurar com o seguinte código sem problemas.

lets_encrypt:
  accept_terms: true
  certfile: fullchain.pem
  keyfile: privkey.pem
token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
domains:
  - xxxxxx.duckdns.org
aliases: []
seconds: 300

Contudo quando no configuration.yaml, escrevo a seguinte configuração e reinicio o sistema, deixo de conseguir aceder ao HA (dentro e fora da rede), tenho de aceder ao ficheiro via rede e voltar a editar, e volto a ter acesso.

http:
  base_url: 192.168.1.XXX:8123
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem

O base_url deve ser o teu dominio do duck dns.

http:
  base_url: omeudominio.duckdns.org
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem

Quando dizes que perdes acesso não consegues aceder pelo endereço interno com https (https://192.168.1.XXX:8123) ?

O base_url não deve ser usado e está descontinuado desde Maio de 2020…

A configuração do endereço está agora separada entre interno e externo e encontra-se em Configurações >> Geral.

http://<ip-do-ha>:8123/config/core

Já está a funcionar, fora da rede e dentro da rede.
Dentro da rede, tinha de aceder pelo endereço interno com https
https://192.168.1.xxx:8123/

Fora da rede configurei assim:
configuration.yaml

http:
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem

Nas configurações do HA fui : Configurações>>Geral
omeudominio.duckdns.org

Outra pergunta, dá para melhorar a segurança da ligação com outra password ?

Podes fazer ainda melhor e activar o 2FA nas contas de utilizador.

image

@j_assuncao Authenticator APP, TOP.

Obrigado

1 Curtiu

Boas Malta, sou novo por aqui e estou com um problema a instalar o Add-On do DUCK DNS.

Não consigo com que o DUCK DNS gere os certifacados…

Port Forwarding - MEO

Pasta SSL - Acedido via Samba

configuration.yaml

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# DuckDNS
http:
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem

# Text to speech
tts:
  - platform: google_translate

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

LOG - Duck Dns

# INFO: Using main config file /data/workdir/config
+ Generating account key...
+ Registering account key with ACME server...
+ Fetching account ID...
+ Done!
[19:56:27] INFO: OK
85.244.205.11
NOCHANGE
# INFO: Using main config file /data/workdir/config
 + Creating chain cache directory /data/workdir/chains
Processing sounoob.duckdns.org
 + Creating new directory /data/letsencrypt/sounoob.duckdns.org ...
 + Signing domains...
 + Generating private key...
 + Generating signing request...
 + Requesting new certificate order from CA...
  + ERROR: An error occurred while sending head-request to https://acme-v02.api.letsencrypt.org/acme/new-nonce (Status 000)
Details:
ERROR: Problem connecting to server (post for https://acme-v02.api.letsencrypt.org/acme/new-order; curl returned with 7)

Configuration - Duck Dns

lets_encrypt:
  accept_terms: true
  certfile: fullchain.pem
  keyfile: privkey.pem
token: xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx
domains:
  - sounoob.duckdns.org
aliases: []
seconds: 300

Resposta a tentativada de acesso externo:
https://sounoob.duckdns.org

ERR_SSL_PROTOCOL_ERROR

Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade