Help avec HomeAssistant & Proxy en Docker (ou comment faire autrement : de Traefik à Swag )

Bonjour à Tous.
Aprés avoir passé quelques nuits blanches sur quelques docker pour HA, je souhaiterais accéder à mon serveur depuis l’extérieur.
J’ai mis en place Nginx et DuckDNS mais je n’arrive pas à accéder à l’ensemble de mes containers. Je serais intéressé par quelques explications , tutos et retours d’expériences sur Traefik
Merci à tous

Edit (08/12/2022) :

  • Ma config matériel :
    – Core I5 4 Core / 8 Go Ram
    – Ubuntu 22.04 Server
    – Docker CE 20.10.21
    – Portainer CE 2.16.2 (Hors Stack)

  • Ma config containers
    – 4 Stacks
    – 3 Réseaux
    – 18 Containers

Edit (09/12/2022) :

  • Achat d’un nom de domaine (Mais à priori fonctionne avec DuckDNS)
  • Passage de Traefik à Swag (Merci à @fredarro ) → Ok
  • Mise en place du plugin DashboardOk
  • Mise en place du plugin MaxmindOk
  • Configuraton des sous-domaines pour chaque container visible depuis le net → Ok
  • Mise en place du plugin Geoip2Influx Ok

Edit (14/12/2022)

Les composes :

SWAG
##################################################
  # SWAG
##################################################
  swag:
    container_name: swag
    image: lscr.io/linuxserver/swag:latest
    cap_add:
      - NET_ADMIN
    environment:
      - TZ=Europe/Paris
      - PUID=1000
      - PGID=1000         
      - URL=${SWAG_DOMAIN}
      - VALIDATION=dns
      - SUBDOMAIN=wildcard
      - DNSPLUGIN=ovh      
      - EMAIL=${SWAG_MAIL}
      - DOCKER_MODS=linuxserver/mods:swag-dashboard|linuxserver/mods:swag-maxmind|linuxserver/mods:swag-geoip2influx
      - MAXMINDDB_LICENSE_KEY=${MAXMINDDB_KEY}
      - INFLUX_HOST=influxdb
      - INFLUX_HOST_PORT=8086
      - INFLUX_DATABASE=geoip2influx
      - INFLUX_USER=${INFLUXDB_USER}
      - INFLUX_PASS=${INFLUXDB_PASSWORD}
    volumes:
      - <rep d'installation>/swag:/config
    ports:
      - 443:443
      - 80:80 
      - 81:81
    networks:
      frontendnet: {}
      backendnet: {}
      hassionet: {}
    restart: unless-stopped
    labels:
      - "com.centurylinklabs.watchtower.enable=false"
AUTHELIA
##################################################
  # AUTHELIA
##################################################
  authelia:
    container_name: authelia
    image: authelia/authelia
    environment:
      - TZ=Europe/Paris
      - PUID=1000
      - PGID=1000   
    volumes:
      -<rep d'installation>/authelia:/config
    ports:
      - 9091:9091
    networks:
      frontendnet: {}
    restart: unless-stopped
    labels:
      - "com.centurylinklabs.watchtower.enable=false"
NETWORK
networks:
  frontendnet:
    external: true
    name: frontend
  backendnet:
    external: true
    name: backend
  hassionet:
    external: true
    name: hassio

Hello

la aussi on va y passé des heures a t’aidé si on a pas toutes les infos :grin: :wink:
Il manque plein de choses dans ton post
Regarde ceci

Salut, tu parle de treafik dans le titre, de NPM dans la description.
Moi, je te conseille Swap que j’utilise depuis quelques mois sans aucun problème.

Je te l’accorde, je comptais compléter le sujet avec mon compose et ce que je rajoute dans les autres containers. Mais le manque de temps a eu raison de mon entrain.
Je complète ASAP et je mets toutes les infos dans le post d’origine. :kissing_heart:

Swap ou Swag ?

Peux tu m’en dire à peine plus ? J’explore toutes les pistes.
Merci.

Salut,

A mon avis, l’ensemble doit se réduire au strict minimum…
HA c’est acceptable… Mariadb moins…
Donc c’est quoi la liste des containers que tu veux exposer ?

Par ailleurs Duckdns, c’est bien mais c’est vite limitant avec le sous-domaines.

1 « J'aime »

Hello.

Effectivement, je suis d’accord avec toi, j’ai eu l’occasion de lire quelques topic ou tu en parles trés bien.

Grafana,
vscode & esphome (sous certaines conditions)
Eventuellement Docker.
Car je ne suis pas forcement tout le temps là et même en déplacement j’aimerais pouvoir bidouiller parfois.

C’est bien la le fond du problème.
J’ai envisagé un temps de prendre un NdD mais je me demande si le jeu en vaut la chandelle.

Actuellement en promo sur OVH par exemple.
2 à 3 euros la création et moins de 10 euros le renouvellement annuel.
Ramené à l’heure de sommeil, c’est donné!

Alors « docker » (portainer ?) de l’extérieur, c’est une mauvaise idée. Par défaut on en donne pas accès aux choses importantes. Docker c’est le coeur de ta mécanique actuelle
Pour le reste ça reste des éléments HA donc c’est faisable. ça aurait sans doute été plus simple par contre de passer par une version HA OS ou HA supervised d’avoir les addons intégrés et de n’exposer QUE ha…

Bidouillage et déplacement = plus de chances de tout casser.

Un domaine en .fr c’est moins de 10€ ttc par an…

Vous allez finir par me convaincre. Mais ça ne changera pas fondamentalement le fond de ma question initiale.

C’est une partie de mon métier de dépanner les gens à distance alors je prends des précautions.

ça n’empêche pas d’être en mesure de se retrouver chauffage à fond, avec HA pas accessible pendant la semaine de déplacement.

Pour traefik, ça impose que les container cibles soient sur le même host que traefik… Après on peut bricoler des apaches/ngnix qui font rebonds mais c’est une étape un peu plus compliquée.
Tu peux commencer par bricoler cet exemple

Quand tu arriveras à avoir le container whoami avec son nom de domaine et en https, il sera temps d’adapter pour afficher HA à la place.

1 « J'aime »

J’ai blindé mon installation avec un serveur de prod et un serveur de dev…
Quand ça marche en dev, je passe en prod mais je ne t’apprends rien…

C’est parti dés ce soir :crazy_face:

C’est bien SWAG.

Les avantages (pour moi):

  • pas de surcharge des composes avec des labels.
  • sécurisation fail2ban et géographique incluses
  • certificats direct sur mon NDM ovh, pas de souci de renouvellement.
  • Redirection avec les sous domaine ou directory
  • Authentification centralisé pour éviter d’avoir des MDP à taper toutes les 3 minutes.
1 « J'aime »

Pas mal.
Par contre à la place des labels, tu as une config nginx à faire on dirait

Tu fais un fichier yaml par service.
Voici le mien pour HA:

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

    server_name ha.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;


    if ($lan-ip = yes) { set $geo-whitelist yes; }
    if ($geo-whitelist = no) { return 404; }
    # enable for ldap auth, fill in ldap details in ldap.conf
    include /config/nginx/ldap.conf;

    # enable for Authelia
    # include /config/nginx/authelia-server.conf;

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

        # enable the next two lines for ldap auth
        #auth_request /auth;
        #error_page 401 =200 /ldaplogin;

        # enable for Authelia
        # include /config/nginx/authelia-location.conf;

        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        proxy_pass http://192.168.1.111:8123;

Ils sont tous déjà préparé pour attaquer les services docker, il suffit de les dé-commenter.

1 « J'aime »

Ok, c’est bien ce que j’ai lu dans la doc.

Ce n’est pas plus contraignant que tous les labels dans Traefik.

Ils sont déjà tous prêts.
Il ne te reste plus qu’à supprimer le .sample du nom du fichier pour le rendre actif.


Par défaut il est configuré pour choper le bon container de ton docker mais tu l’adaptes comme tu veux.
Tu as la possibilité de l’envoyer vers un service détaché du docker.

1 « J'aime »

Pour plus d’info sur swag, voici une chaine YT qui m’a bien aidé pour le mettre en place
https://www.youtube.com/@GuiPoM

1 « J'aime »