Acesso externo direto HTTPS + Acesso interno HTTP: Duck DNS + NGINX

Este tutorial mostra como configurar o acesso externo com HTTPS e manter o acesso interno com HTTP (pelo navegador e aplicativo).

Isso resolve um erro comum no aplicativo que acontecem com muitos, que é o não reconhecimento dos certificados SSL gerados para o endereço Duck DNS quanto está acessando via rede local prejudicando o acesso pelo aplicativo e a atualização dos sensores do smartphone quando conectado na rede local.

1) Verificando se você está fora de uma rede CGNAT:

  • a) Verifique o endereço IP da interface WAN do seu modem (IPv4 Público):

Neste exemplo vamos assumir que seja 189.1.1.136.

  • c) Se o endereço IP mostrado no roteador for igual ao endereço IP mostrado no site, o seu endereço IP é público e você conseguirá o acesso externo.
  • d) Caso os endereços IP mostrados no roteador e no site forem diferentes você não conseguirá acesso externo usando o Duck DNS. Verifique o tópico Acesso externo ao seu Home Assistant: Diversas formas! para verificar a melhor alternativa para você.

2. Criando um domínio do Duck DNS:

  • b) Crie um endereço para seu Home Assistant e pegue o token que irá mostrar na tela.
    Exemplo: minhacasa.duckdns.org

3) Redirecionando a porta no seu modem:

Esse procedimento varia de acordo com o modelo do modem, as principais informações são:

  • Protocolo: TCP
  • Porta Externa: 8443
  • Porta Interna: 443
  • Endereço IP Interno: 192.168.1.55 (alterar para o endereço IP do seu servidor do home assistant).Segue um exemplo de configuração no modem Askey utilizado pela VIVO (isso vai mudar de acordo com cada roteador), mas a lógica é a mesma: redirecionar a porta 8443 para a porta 443 do IP do seu Home Assistant.

4) Instalando e configurando o DuckDNS:

  • a) Instalação: Acesse a Add-on Store e localize o Duck DNS, clique nele e depois no botão instalar.

Vá em Configurações, clique em Add-ons, Backups e Supervisor.

Clique em Loja de Add-ons.

Procure o Duck DNS.

  • b) Configuração: Acesse a guia Configurações do Duck DNS e substitua pelo código abaixo:

Código:

 lets_encrypt:
  accept_terms: true
  certfile: fullchain.pem
  keyfile: privkey.pem
  algo: secp384r1
 token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 domains:
   - zzzzzzzz.duckdns.org
 aliases: []
 seconds: 300

Substitua o token e atualize o domínio com as informações do item 2.

  • c) Reinicie o add-on Duck DNS.

5) Instalando e Configurando o NGINX Home Assistant SSL proxy:

  • a) Instalação: Acesse a Add-on Store e localize o NGINX Home Assistant SSL proxy, clique nele e depois no botão instalar:

Vá em Configurações, clique em Add-ons, Backups e Supervisor.

Clique em Loja de Add-ons.

Procure o NGINX.

  • b) Configuração: Acesse a guia Configurações do NGINX Home Assistant SSL proxy e faça as seguintes alterações:

    1. Altere o código incluindo o domínio do Duck DNS criado no item 2:
 domain: dominio.duckdns.org
 certfile: fullchain.pem
 keyfile: privkey.pem
 hsts: max-age=31536000; includeSubDomains
 cloudflare: false
 customize:
   active: false
   default: nginx_proxy_default*.conf
servers: nginx_proxy/*.conf
  1. Preencha a porta 443 na configuração de rede.

6) Alterando as configurações do Home Asssistant:

  • a) Remova as linhas abaixo do seu arquivo de configuração (config/configuration.yaml) se elas existirem:
http:
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem
  • b) Adicione as seguintes linhas ao seu arquivo de configuração (config/configuration.yaml):
http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 172.30.33.0/24
    - 192.168.0.0/16 #Altere os primeiros dois números para os do endereço IP da sua rede (192 e 168).
  • c) Configure as URL interna e externas de acesso ao seu Home Assistant por uma das opções a seguir:
    • Opção 1: Inclua as informação pela interface em Configurações > Geral, alterando o endereço IP do seu Home Assistant e o domínio do seu Duck DNS):image
    • Opção 2: Adicione as seguintes linhas ao seu arquivo de configuração (config/configuration.uaml), alterando o endereço IP do seu Home Assistant e o domínio do seu Duck DNS):
homeassistant:
  internal_url: "http://192.168.1.55:8123"
  external_url: "https://dominio.duckdns.org:8443"

7) Reinicie o Home Assistant.

Reinicie o Home Assitant para as configurações entrarem em vigor.

8) Configurando o aplicativo:

Configure as URLs de acesso do aplicativo e as redes wifi:

  • Acesso externo: Usar HTTPS e a porta 8443.
  • Acesso Interno: Usar HTTP e a porta 8123.
  • Configurar em quais redes wifi deverá ser usado a URL de acesso interno (incluir todas as redes wifi que você usa na sua casa).

8) Testes de verificação:

  1. Acesse o Home Assistant pela sua rede local no navegador:
  • Usar HTTP e a porta 8123.
  • URL a ser utilizada: http://192.168.1.55:8123/ (alterar para o IP do seu Home Assistant)Não deve apresentar mensagem de erro de certificado SSL.
  1. Acesse o Home Assistant externamente no navegador:
  1. Acesse o Home Assistant pela sua rede local através do aplicativo do celular:
  • Usar HTTP e a porta 8123.
  • URL a ser utilizada: http://192.168.1.55:8123/ (alterar para o IP do seu Home Assistant)
  • Configurar redes wifi conforme item 7.Não deve apresentar mensagem de erro de certificado SSL.
  1. Acesse o Home Assistant externamente através do aplicativo do celular:

9) URL para utilização em integrações externas (exeplo: Alexa, Google, etc):

Um abraço.

Video:

Agora já pode utilizar o aplicativo do Home Assistant e acessar externamente. Utilizando o aplicativo do Home Assistant terá os sensores do seu smartphone disponíveis para criar automações.

2 Likes

Olá @douglasit o meu home assistant não carrega mais depois do passo 6 item b. Fica com a tela iniciando e não abre nada. Nem pela porta 8123 nem pela 8443.
Quando eu acesso o arquivo configuration pelo samba share e volto a configuraçao anterior o HA volta a fucnionar
Screenshot_1

Para o entender onde pode estar o erro, me diga qual o IP local do seu Home Assistant, o IP local do computador que você está tentando acessar e como está colocando o código no arquivo configuration.yaml quando não está conseguindo acessar.

O código que eu estou colocando é o do tutorial:

http:
  use_x_forwarded_for: true
  trusted_proxies:
   - 172.30.33.0/24
   - 192.168.0.0/16
IP do Home Assistant é 192.168.68.122
IP da minha máquina é 192.168.68.121

Uso nginx com duckdns assim:

# nginx
http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 172.30.33.0/24

# duckdns.org (se usar somente o duckdns sem nginx, descomente as 4 linhas abaixo)
#http:
#  server_port: 8123
#  ssl_certificate: /ssl/fullchain.pem
#  ssl_key: /ssl/privkey.pem

homeassistant:
  internal_url: http://192.168.1.100:8123
  external_url: https://xxxxx.duckdns.org:9999

Desconfio que o seu erro é na identação do código, teste copiar e colar este código exatamente igual no seu arquivo configuration.yaml subsituindo esse seu:

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 172.30.33.0/24
    - 192.168.0.0/16
1 Like

Só que como você está usando não consegue usar o aplicativo com o endereço IP local, né?

Acesso com o ip local normalmente.

Vou conferir a digitação novamente, eu já tinha visto isso… Mas eu consegui usar o duckDNS sem o NGINX. Se não precisar vou deixar sem ele. Mas muito obrigado.