Help pour transfert de l'accès externe de HA sur RPi vers swag en docker sur OMV6

Bonjour la communauté.

Novice dans tous les domaines mais j’apprends en galérant.

Petit descriptif de l’installation actuelle :

Home assistant installé sur ssd et RPi4 via l’image récupérée dans l’imager RPi
Comme je voulais un accès externe, j’ai mis le module Duckdns, fait la redirection 443 externe vers 8123 interne dans la box, mis l’adresse internet externe à sa place et dans le fichier configuration.yaml les petites lignes qui étaient demandées
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem

Bref tout cela fonctionne bien mais je suis entrain de faire un nas OMV6 et je voudrais transférer l’accès externe de ha dans le container swag d’OMV6.
Je me nourris de la chaîne youtube de GuiPoM pour faire cette installation. La mise en route du container swag n’a pas posé de soucis, c’est après que cela ce gatte.

J’ai utilisé le fichier homeassistant.subdomain.conf pour ngnix comme celà :

## Version 2023/02/05
# make sure that your homeassistant container is named homeassistant
# make sure that your dns has a cname set for homeassistant

# As of homeassistant 2021.7.0, it is now required to define the network range your proxy resides in, this is done in Homeassitants configuration.yaml
# https://www.home-assistant.io/integrations/http/#trusted_proxies
# Example below uses the default dockernetwork ranges, you may need to update this if you dont use defaults.
#
# http:
#   use_x_forwarded_for: true
#   trusted_proxies:
#     - 172.16.0.0/12

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name ha.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    # enable for ldap auth (requires ldap-location.conf in the location block)
    #include /config/nginx/ldap-server.conf;

    # enable for Authelia (requires authelia-location.conf in the location block)
    #include /config/nginx/authelia-server.conf;

    # enable for Authentik (requires authentik-location.conf in the location block)
    #include /config/nginx/authentik-server.conf;

    location / {
        # enable the next two lines for http auth
        #auth_basic "Restricted";
        #auth_basic_user_file /config/nginx/.htpasswd;

        # enable for ldap auth (requires ldap-server.conf in the server block)
        #include /config/nginx/ldap-location.conf;

        # enable for Authelia (requires authelia-server.conf in the server block)
        #include /config/nginx/authelia-location.conf;

        # enable for Authentik (requires authentik-server.conf in the server block)
        #include /config/nginx/authentik-location.conf;

        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app 192.168.1.***;
        set $upstream_port 8123;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }

    #location ~ ^/(api|local|media)/ {
    #    include /config/nginx/proxy.conf;
    #    include /config/nginx/resolver.conf;
    #    set $upstream_app 192.168.1.***;
    #    set $upstream_port 80;
    #    set $upstream_proto http;
    #    proxy_pass $upstream_proto://$upstream_app:$upstream_port;
    #}      
}

J’ai enlevé la redirection du 443 vers ha pour le mettre vers OMV6, stoppé Duckdns sur ha et dans le configuration.yaml de ha, commenté les deux lignes ssl et rajouté
http:
use_x_forwarded_for: true
trusted_proxies:
- 172.18.0.0/16 (ce n’est pas la même que dans le fichier mais c’est bien celle du network de swag sur mon nas)
Redémarré ha, swag et ça ne fonctionne pas.
A l’adresse https://ha.mondomaine.duckdns.org/ je tombe sur une erreur 400: Bad Request
et si je mets https://mondomaine.duckdns.org/ je tombe sur la page d’accueil de HA avec le logo et le message Unable to connect to Home Assistant.

J’ai vu que dans le sujet ici, fredarro avait réussi à faire la manip mais sans préciser sur quoi était son ha, ni ce qu’il avait fait dans la conf de ha.

Je loupe un truc c’est certain mais j’avoue ne pas voir quoi.

j’espère avoir été clair et pas trop long et merci par avance aux bonnes âmes qui pourront m’aider.

1 « J'aime »

Lo,

Tu dois renseigner la partie #location avec ton IP et le port
Tu dois également enlever les # devant chaque ligne

Au plaisir
Bonne journée

Tu veux parler de la deuxième location je suppose, ça ne fonctionne pas non plus je l’avais commenté après avoir vu le fichier de fredarro dans l’autre post qui lui n’avait pas cette deuxième parti.

Mais si je la renseigne comme la première je tombe quand même sur 400: Bad Request

Bonjour tous

Après une grande discussion en off avec @fredarro, j’y suis arrivé.

Il aura fallu renseigner plus de chose dans le fichier configuration.yaml de HA

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 192.168.1.*** # Ip du pc omv, docker, swag surtout ne pas mettre le /24 HA n'aime pas
    - 172.17.0.0/16    # Adresse du network docker (bridge)
    - 172.18.0.0/16    # Adresse du network swag

et au final mon fichier pour ngnix et swag est celui-là :

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name ha.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    location / {
        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app 192.168.1.***;
        set $upstream_port 8123;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;
    }
}

Donc un énorme merci à @fredarro pour son aide.

1 « J'aime »

Bonjour,
Peux tu apporter des precisions stp?
ton stack homeassistant contient il cette ligne?

network_mode: host

sur le fichier homeassistant.subdomain.conf, il manque une partie ou c’est volontaire car il ne ressemble pas a celui de swag:

  location / {
        # enable the next two lines for http auth
        #auth_basic "Restricted";
        #auth_basic_user_file /config/nginx/.htpasswd;

        # enable for ldap auth (requires ldap-server.conf in the server block)
        #include /config/nginx/ldap-location.conf;

        # enable for Authelia (requires authelia-server.conf in the server block)
        #include /config/nginx/authelia-location.conf;

        # enable for Authentik (requires authentik-server.conf in the server block)
        #include /config/nginx/authentik-location.conf;

        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app homeassistant;
        set $upstream_port 8123;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }

    location ~ ^/(api|local|media)/ {
        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app homeassistant;
        set $upstream_port 8123;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;
    }
}

car vous l’aurez compris, moi ca ne marche pas:
192.168.1.99:8123 OK
https://homeassistant.xxxxxx.duckdns.org KO → Unable to connect to Home Assistant. code d’etat 502

remplace cette ligne par

        set $upstream_app 192.168.1.99;

Hello
Tu as dû mal lire, il n’y a pas de stack HA chez moi, c’est sur un RPi4 complètement en dehors de mon nas où se trouve swag.
Le fichier pour nginx, tu l’as complet dans mon post, les fichier proposés sont des exemples que tu adapte à ta configuration, là ton HA il est où, sur quoi, bref il n’y a pas assez d’informations, mais je serais déjà tenté de dire de commenter le deuxième location comme je l’avais fait dans mon premier post explicatif.

Ok j’ai surement mal compris ta conf, comme tu parlais de GuiPom…
Me concernant:
J’ai OMV6 d’installer. Grace a lui, j’ai pu installer Portainer pour faire des dockers, en autre:
1 docker homeassistant
1 docker swag
1 docker next cloud
Le couple nextcloud/swag fonctionne. J’en conclus que mon swag fonctionne

J’ai modifié homeassistant par 192.168.1.99 meme soucis

Tu as quoi comme retour ?
Ton swag et ton HA sont sur le même réseau ? 192.168.1.xxx
Et ta config http dans HA, es-tu sûr quelle est OK ?

là ça ressemble à l’exemple qu’il avait donné pour mettre portainer sur le web, dans le container de HA il faut rajouter le réseau swag_default et ça devrait fonctionner.

Une autre precision: mon port 443 est deja utilisé par mon instance OMV. Donc si j’ai bien compris le port 443 de swag écoute sur le port interne de ma box 10443:

ports:
      - 10443:443

J’ai également ouvert le port externe de ma box 443 qui pointe vers 192.168.1.99:10443

Ceci a t’il une incidence sur le homeassistant.subdomain.conf:

server {
    listen 443 ssl;
    listen [::]:443 ssl;

Alors oui et non, ces vidéos sont géniales pour te faire creuser les méninges, puisque swag est dans docker dans OMV, dans sa stack il écoute le 443 aussi, en fait il faut regarder la playlist reverse proxy et assigner le 443 externe de ta box vers le 443 de ta machine OMV.
Tu prend le même fichier que moi pour ngnix en mettant les bonnes IP, dans le container HA ajoute le réseau swag_default, dans la stack swag, fait le écouter le 443 et ça devrait le faire je pense.

Bonjour a tous je viens aussi de me faire un nas diy avec omv6 j’y est installer nginx proxy manager et tous les services fonctionne de l’extérieur sof homeassistant jai aussi docker et portainer