URL externe et URL interne avec duckdns en mode local

C’est un nom de domaine qu’il faut rentrer … celui de duckdns par exemple


C’est bien ton cas (édition pour cacher les infos perso ?)

j’ai mis un nom de domaine (exactement celui du duckdns) et c’est pas mieux, pareil même erreur

edit : j’ai mis mondomaine.duckdns.org:8123 dans source et ça fonctionne en http, mais je ne comprend pas pourquoi je dois mettre le port alors que dans toutes les docs y a pas ?

edit 2: je suis maintenant avec une erreur au moment de demander le passage en https - Internal error
quand je regarde le log de nginx dans HA :

[4/3/2023] [1:50:05 AM] [Nginx    ] › ℹ  info      Reloading Nginx
[4/3/2023] [1:50:10 AM] [SSL      ] › ℹ  info      Requesting Let'sEncrypt certificates for Cert #15: ebonnet.duckdns.org
[4/3/2023] [1:50:10 AM] [SSL      ] › ℹ  info      Command: certbot certonly --config "/etc/letsencrypt.ini" --cert-name "npm-15" --agree-tos --authenticator webroot --email "keyxxxxxxxx@gmail.com" --preferred-challenges "dns,http" --domains "ebxxxxx.duckdns.org" 
[4/3/2023] [1:50:18 AM] [Nginx    ] › ℹ  info      Reloading Nginx
[4/3/2023] [1:50:18 AM] [Express  ] › ⚠  warning   Command failed: certbot certonly --config "/etc/letsencrypt.ini" --cert-name "npm-15" --agree-tos --authenticator webroot --email "keyrie.yyyyyy@gmail.com" --preferred-challenges "dns,http" --domains "ebxxxxxx.duckdns.org" 
Saving debug log to /data/logs/letsencrypt/letsencrypt.log
Some challenges have failed.
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /data/logs/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.

Avec la nouvelle config tu n’as besoin que du port 80 et 443 qui renvoient vers 80 et 443 de l’addon nginx manager. Lui se charge de faire le relais vers ton port 8123.
Donc l’ancienne redirection 8123 vers 8123 n’a plus besoin d’être là. Et c’est pour ça que ça n’apparaît pas dans les doc.

Si letencrypt se plante c’est soit une erreur de dns/domaine soit un souci avec le port 80

cela n’explique pas pourquoi dans l’appli nginx je dois mettre le port dans source xxxx:8123 pour que la partie http fonctionne ?
ma config réseau est un peu particulière parce que je teste une installation qui va ensuite aller chez un client (toute la partie LAN spécifique avec l’Unifi Router)
donc elle est la suivante et c’est peut-être de là que le problème vient :

  • j’ai une livebox4 qui fait le lien avec le provider orange, donc assure la partie accès internet
  • mon réseau LAN spécifique à tout ce qui doit être avec HA est lui géré par un router (Unifi Router) qui est connecté en Gateway sur la livebox

dans le router j’ai 3 redirections:

dans la livebox j’ai aussi 3 redirections pour assurer que ce qui vient de l’internet va vers la Gateway de mon LAN

pour démarrer let’s enscrypt dans HA la 1ère fois j’ai dû enlever le port 80 de la config de nginx

puis j’ai testé nginx avec et sans le port 80 dans HA avec nginx j’avais les 3 ports 443,80,81 configurés


(redémarré HA au milieu)

dans les 2 cas la demande SSL de nginx est KO

mon duckdns:

le log de nginx montre une erreur ?:

[09:18:23] INFO: Starting the Manager...
[09:18:23] INFO: Starting NGinx...
[4/3/2023] [9:18:24 AM] [Global   ] › ℹ  info      Manual db configuration already exists, skipping config creation from environment variables
2023/04/03 09:18:25 [error] 297#297: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.30.32.1, server: nginxproxymanager, request: "GET /api/ HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "homeassistant:81", referrer: "http://homeassistant:81/nginx/proxy"
[4/3/2023] [9:18:27 AM] [Migrate  ] › ℹ  info      Current database version: 20211108145214
[4/3/2023] [9:18:27 AM] [Setup    ] › ℹ  info      Logrotate Timer initialized
[4/3/2023] [9:18:27 AM] [Setup    ] › ℹ  info      Logrotate completed.
[4/3/2023] [9:18:27 AM] [IP Ranges] › ℹ  info      Fetching IP Ranges from online services...
[4/3/2023] [9:18:27 AM] [IP Ranges] › ℹ  info      Fetching https://ip-ranges.amazonaws.com/ip-ranges.json
[4/3/2023] [9:18:28 AM] [IP Ranges] › ℹ  info      Fetching https://www.cloudflare.com/ips-v4
[4/3/2023] [9:18:28 AM] [IP Ranges] › ℹ  info      Fetching https://www.cloudflare.com/ips-v6
[4/3/2023] [9:18:28 AM] [SSL      ] › ℹ  info      Let's Encrypt Renewal Timer initialized
[4/3/2023] [9:18:28 AM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[4/3/2023] [9:18:28 AM] [IP Ranges] › ℹ  info      IP Ranges Renewal Timer initialized
[4/3/2023] [9:18:28 AM] [Global   ] › ℹ  info      Backend PID 267 listening on port 3000 ...
[4/3/2023] [9:18:32 AM] [Nginx    ] › ℹ  info      Reloading Nginx
[4/3/2023] [9:18:32 AM] [SSL      ] › ℹ  info      Renew Complete
`QueryBuilder#allowEager` method is deprecated. You should use `allowGraph` instead. `allowEager` method will be removed in 3.0
`QueryBuilder#eager` method is deprecated. You should use the `withGraphFetched` method instead. `eager` method will be removed in 3.0
QueryBuilder#omit is deprecated. This method will be removed in version 3.0
Model#$omit is deprected and will be removed in 3.0.

ça n’a rien a voir avec nginx, c’est juste l’ancienne mécanique … c’est pas utile

A virer, ça passe pas par nginx et ça va direct sur HA

Pourquoi ? Le 80 il le faut pour la partie SSL.

Avant de faire du ssl il faut avoir le http qui marche avec l’addon

vers HA… pas vers le routeur. si tu as des routes intermédiaires, à faire alors il faut les mettre en pace

Mouais, le support va être compliqué à mon avis, il va falloir potasser le sujet

les redir de la livebox sont obligatoirement vers la gateway , HA n’est pas connu de la livebox mais seulement du router c’est pour cela que j’ai les 2 redir et la bonne c’est celle du router.

j’ai dû enlever le port 80 parce que let’s enscrypt ne démarrait pas et réclamait le port 80, mais dans tous les cas avec et sans c’est pareil KO
maintenant que let’s encrypt à démarré je dois l’arrêter ? pour remettre le port 80 sur nginx ?

Bon, je resynthètise :

  • Tu vires l’option let’sencrypt de l’addon duckdns (et dans le yaml)
  • Tu laisses duckdns en place juste pour le nom de domaine (mise à jour de l’ip)
  • Tu actives Nginx manager avec le port 80, 81 et 443
  • Tu configures Nginx manager pour renvoyer le domaine duckdns vers le 8123 de HA
  • Tu configures ton réseau globalement pour que : les ports 80 et 443 seulement (et pas le 81, ni le 8123) du routeur en entrée arrivent sur les ports 80 et 443 de HA (pris par Nginx manager). Si ça ne fonctionne pas, rien d’autre n’est possible
  • Quand la partie HTTP fonctionne, alors tu actives la partie SSL de Nginx manager
1 « J'aime »

OK merci j’y vais de ce pas :innocent:

faut il pour ces manips que je supprime les 2 fichiers privkey et fullchain de ssl ?

Les fichiers, tu peux les laisser, l’important c’est de virer la config yaml qui les utilisent

j’ai rien dans configuration.yaml qui l’utilise ?

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

# Text to speech
tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
#http:
#  ssl_certificate: /ssl/fullchain.pem
#  ssl_key: /ssl/privkey.pem
template:
  - sensor:
      - name: "average_autoconso"
        unit_of_measurement: "%"
        state: >
          {% set autoconso = states('sensor.solaredge_selfconsumption_energy') | float %}
          {% set conso = states('sensor.solaredge_consumption_energy') | float %}
          {{ ((autoconso / conso) * 100) | round(1, default=0) }}
      - name: "average_autoprod"
        unit_of_measurement: "%"
        state: >
          {% set autoconso = states('sensor.solaredge_selfconsumption_energy') | float %}
          {% set prod = states('sensor.solaredge_energy_today') | float %}
          {% if prod == 0 %}
            {{ '0' }}
          {% else %}
          {{ ((autoconso / prod) * 100) | round(1, default=0) }}
          {% endif %}
# Example configuration.yaml entry
# Example configuration.yaml entry for Google Mail.
notify:
  - name: "xxx"
    platform: smtp
    server: "smtp.gmail.com"
    port: 587
    timeout: 15
    sender: "keyrxxxxx@gmail.com"
    encryption: starttls
    username: "kexxxxx@gmail.com"
    password: "qlyyyyyyyc"
    recipient:
      - "syyyyyyyrt@orange.fr"
      - "kxxxxxx@gmail.com"
    sender_name: "Bxxxxxx"

Bien si, mais c’est déjà inactif

oui c’est vrai , j’avais déjà mis ça en suspend :thinking:

maintenant que tout fonctionne j’ajoute ?

http: #si cette balise n'existe pas, ajoutez la, sinon ajouter seulement la suite (pas de duplication)
  use_x_forwarded_for: true
  trusted_proxies:
    - 172.18.0.1

Oui en fonction de ton montage réseau, il va falloir éventuellement les proxy. C’est la log qui va te donner les bonnes infos

oui j’ai trouvé l’IP dans le log ==> remplacé dans configuration.yaml et redémarrage
en réseau externe OK maintenant
il faut maintenant que je fasse un peu de ménage

  • je supprime quoi dans mon router et ma livebox sachant que j’ai une redir sur 80, 443, 8123 sur HA et que ma livebox a aussi 80,443, 8123 (sur la gateway)
  • je supprime quoi dans mes addons ?
    comment je renouvelle le certificat duckdns (expire dans 6 mois)

comme marqué plus haut : 8123 ça sert plus à rien

Rien:

  • Le certificat qui été géré par l’addon duckdns, est normalement géré par Nginx manager.
  • Et duckdns continue de maintenir la correspondance ip/domaine.

Au passage les certificats let’sencrypt sont en principe valables 3 mois, pas 6

Merci grandement, pour la patience et les conseils (je m’en serais pas sorti seul)
je vais maintenant pouvoir transporter cela chez mon client , j’aurais juste à modifier l’IP de sa Box dans duckdns et l’IP de la gateway entre l’unifi router et sa livebox (+ ouvrir les ports 80 et 443)

1 « J'aime »

je viens d’installer la conf chez mon client, le dream router unifi (donc le gestionnaire de réseau local n’a pas changé) et j’ai ajouté la redirection dans la box orange du client des ports 80, 81, 443, 8123 pour envoyer tout ce monde vers le routeur LAN.
HA fonctionne en local, duckdns a été automatiquement mis à jour avec la nouvelle adresse IP de la livebox, nginx:81 est accessible et n’a pas changé, la conf HA non plus.

Cependant je ne peux plus accéder HA via la commande qui fonctionnait jusqu’à présent sur mon réseau avec ma box, depuis l’extérieur, qui est celle que j’ai sous nginx manager.

j’ai bien entendu redémarré tous les services HA et HA aussi, mis a jour avec la dernière version nginx et HA (celle qui ne plante pas sur lovelace bouton).

Ai-je oublié quelque chose ?
dans le journal nginx je vois bien la demande connection

[15/Apr/2023:08:52:00 +0200] - 400 400 - GET https xxxx.duckdns.org "/favicon.ico" [Client 109.208.xxx.yyyy] [Length 16] [Gzip -] [Sent-to 192.168.0.yy] "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36" "https://xxxxx.duckdns.org/"

le retour est systématiquement
400 : bad request

Salut

Ça me fait mal… La moitié des ports ne servent à rien dans ce cas. Je l’ai déjà répété plusieurs fois dans mes messages précédents…
Si tu installais des portails ça reviendrai à mettre un machin électrique, à le laisser ouvert parce qu’il n’y a pas de courant et à mettre la télécommande sur le pilier au cas où !

Puisque de toutes façons il faut des détails en plus : Fait un schéma détaillé (adresse ip, port et protocole) de l’infra utilisée et les config de chacun des éléments. Ça servira à s’y retrouver et avec un peu de chance tu va comprendre pourquoi je râle