• Docker
  • Front authentification sur mes containers docker

Bonjour,

Je cherche le moyen de rajouter une page ou une simple authentification pour accéder à mes containers disponible en interface web.
Connaissez vous un bon moyen ?

Bonjour,
le plus simple pour ça est de passer par un proxy genre traefik ou nginx proxy manager qui vont gérer tout ça pour toi. C'est d'autant plus appréciable que tu peux diffuser plusieurs containers derrière un seul frontend.

J'ai configurer des proxy host avec un Access List mais il ne fonctionne pas. Il ne demande pas d'authentification quand je me connecte aux adresses

    Je ne vois pas ton screen. Avec Nginx tu peux ajouter un htpasswd (à créer avant) via ces paramètres :

    auth_basic "Accès réservé";
    auth_basic_user_file /data/htpasswd/torrent.domaine.com;

    J'ai déjà fait cette configuration

    https://imgur.com/a/PYAqljs

    (c'est ton tuto que j'avais déjà suivi avant de voir ton message 😁)

    dikdableu Ca me semble bizarre, surtout le domain name "cloud9" qui n'est pas un fqdn.
    Donc on résume, c'est bien ton docker nginx proxy manager qui écoute sur les ports 80 et 443 ? Tu as déclaré un nouveau sous domaine dans ton dns pour ton container ?

    Non je n'ai pas déclarer de sous domaine DNS mais mon container ecoute bien sur le 80 81 et 443

    Alors comment tu essaie d'accéder à ton container au juste ?

    par adresse ip et port. j'ai un mapping de port host vers container mais j'aimerais que quand j'accéde au container X.X.X.X:9091 il me mette une authentification

    Ah non, là ça ne va pas marcher. Le principe du reverse proxy est qu'il prend TOUTES les entrées, et c'est lui qui gère une authentification si nécessaire (ainsi que des certificats ssl, etc...). En général, quand on fait ça, on fait en sorte que le container ne diffuse pas sur toutes les interfaces réseau pour éviter qu'on y accède sans passer par le reverse proxy.
    Si tu veux rajouter une authentification en accédant directement à ton container, il faut modifier ton container pour ça, et il n'y a pas de règle pour.

    J'ai ajouté mon domaine mais je n'arrive pas a dire à docker d'ouvrir le port du container mais pas vers l'extérieur. j'ai mit -p 9091 mais il m'auto map sur un port automatiquement

    Il y a plusieurs façons de faire :

    • si tu lances en docker "classique", tu peux mettre
      -p 172.17.0.1:9091:9091
      Ce qui va faire que ton container va "écouter" uniquement sur l'interface 172.17.0.1 (qui est par défaut l'interface docker de ton hôte). Dans proxy manager, tu mets donc 172.17.0.1 (et non localhost) et le port 9091
    • Si tu es en docker-compose c'est plus simple, puisque docker compose fait un lien par défaut entre tous tes containers. Du coup, tu n'as pas besoin du tout d'exposer le port, et dans proxy manager, en hôte, tu mets juste le nom du container cible vers le port 9091. Comme ils sont sont sur le même réseau, la communication sera établie.

    Merci de ton aide, je sens que j'avance j'ai réussi a faire demander un authentification mais visiblement mes containers n'aiment pas trop. Mon container cloud9 me dit bad gateway 502 et mon transmission me dit que la connexion est perdu avec le serveur

    Edit: j'ai réglé le problème de cloud9 en activant le SSL mais mon transmission ne marche toujours pas

    Alors là, on va rentrer dans du debug...

    docker exec -it proxymanager bash

    (remplace proxymanager par le nom de ton container)
    Et ensuite, tu vas voir dans le répertoire /data/logs pour voir ce qu'il te dit... Il y a un log par hôte proxy, il faut regarder ce qui se passe dedans afin d'aller plus loin

    Merci encore de votre aide. J'ai fais ma petite enquete. Il semblerait que transmission n'aime pas etre derrière un proxy, j'ai donc cherché à adapter la conf en fonction (en changeant les whitelist, en rajoutant une auth) mais rien à faire il ne veut pas

    Bon du coup j'ai pris un autre gestionnaire que transmission et ça fonctionne nickel, je vous remercie de votre aide ! 😄

      Répondre…