• Seedbox
  • Securiser des containers dockers avec le script d'Ex-rat ?

@Arck0s si tu as besoin je peux te poster mes docker-compose en exemple.

    Aerya : mon Nginx, enfin celui d’Ex_rat, ne gère que rTorrent/ruTorrent. Je ne lui ai rien « appris » d’autre. Et mes apps dockerisees utilisenet leur ports par défaut.

    kimu : ben à la rigueur si tu pouvais me montrer sur 1, histoire que je comprenne la chose.
    Là je lis des choses très intéressantes sur Traefik, tout comme sur Nginx-proxy, mais j’ai de grosses lacunes sur pas mal de termes, du coup c’est pas super évident.

    Merci à vous 2

    • kimu a répondu à ça.

      Arck0s Voila mon docker-compose:

      version: '2'
      services:
      portainer:
      image: portainer/portainer
      container_name: portainer
      hostname: portainer
      volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /home/username/portainer/data:/data
      command: -H unix:///var/run/docker.sock
      labels:
      - traefik.enable=true
      - traefik.frontend.rule=Host:xxx.ndd.fr
      - traefik.docker.network=traefik_proxy
      - traefik.backend.port=9000
      networks:
      - traefik_proxy

      traefik:
      image: traefik
      container_name: traefik
      hostname: traefik
      labels:
      - traefik.enable=true
      - traefik.docker.network=traefik_proxy
      - traefik.frontend.rule=Host:yyy.ndd.fr
      - traefik.port=9001
      command:
      --defaultEntryPoints='http,https'
      --logLevel=DEBUG
      --web
      --web.address=:9001
      --entryPoints='Name:http Address::80 Redirect.EntryPoint:https'
      --entryPoints='Name:https Address::443 TLS'
      --acme
      --acme.email=moi@mail.com
      --acme.storage=/certs/acme.json
      --acme.entryPoint=https
      --acme.ondemand=false
      --acme.onhostrule=true
      --acme.httpChallenge.entryPoint=http
      --acme.domains="ndd.fr,xxx.ndd.fr,yyy.ndd.fr"
      --docker
      --docker.domain=traefik
      --docker.watch
      --docker.exposedbydefault=false
      volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /home/username/traefik/certs:/certs
      - /var/null:/traefik.toml
      ports:
      - "80:80"
      - "443:443"
      networks:
      - traefik_proxy

      Quelques explications:

      • 1 docker qui héberge portainer et qui n'a aucun port exposé.
      • 1 docker qui héberge traefik qui expose les ports 80 et 443.

      La discussion entre les 2 dockers se fait par les labels 'traefik.xxx=yyy'

      Au final, l'ensemble des requêtes est transmis a mon docker traefik et mon docker portainer n'est accessible que par l'adresse : xxx.ndd.fr. De plus, l'accès est automatiquement redirigé en HTTPS si la requête initiale est en HTTP.

      En espérant que cela t'aide 🙂

        kimu : Merci bien, donc si je comprends le principe, pour mon cas, seul muximux sera accessible par son adresse et ensuite quand j’appelerais L’une des applications en cliquant sur son lien c’est traefik qui s’occupera de tout, du coup pas possible pour quelqu’un qui n’accède pas à Muximux d’y avoir accès ?

        • kimu a répondu à ça.

          Arck0s : C'est l'idée que je me fais. Après je n'utilise pas muximux donc a toi de faire les tests. Dans mon install, j'ai 3 containers chacun accessible via une adresse du type : cloud.ndd.fr, xxx.ndd.fr yyy.ndd.fr (se sont 3 services bien distinct les uns des autres). Il y a peut-être moyen dans Muximux d'utiliser ces adresses.

            kimu oui c’est possible,
            Mais n’ayant pas de domaine je passe par l’ipdemonserveur:portkivabien

            • kimu a répondu à ça.

              Arck0s Traefik ne fonctionne qu'avec des ndd il me semble.

              Traefik fait des sous-domaines. Tout ce qu'il "traite" est donc accessible sauf à bloquer les accès via IP ou user:pwd. Traefik sert à faire beau/propre, pas à sécuriser. Enfin ne l'utilisant plus, je ne sais pas si ça a évolué en ce sens en tous cas.

              Via le container nginx-proxy dont je te parlais plus haut tu peux ajouter (très simplement) des user:pwd aux containers liés : https://github.com/jwilder/nginx-proxy#basic-authentication-support

                Dès que j’arrive à trouver du temps je test tout ça, l’avantage de docker, pouvoir tester sans rien casser 😬

                Bonjour,

                Si tu veux faire de l'authentification exactement comme nginx, voici la syntaxe a mettre dans ton docker-compose au niveau label :

                labels:
                  - "traefik.enable=true"
                  - "traefik.port=8080"
                  - "traefik.frontend.rule=Host:test.domain.net"
                  - "traefik.frontend.auth.basic=tonuser:mot de passe crypté avec htpasswd"
                

                Si ton mot de passe crypté, avec htpasswd, comprend des $, il faudra le doubler.
                Exemple : Os4D18Z$$d0iz2mBQbjTxAjtj

                A plus

                  Yop,
                  Je viens de tester ta methode @Aerya , ca s'installe nickel ou presque, y'avait un conflit avec le port 443 du Nginx du script, j'ai du stopper le service est l'installation c,'est bien passé.
                  J'ai refait un container Plex et Radarr pour tester

                  docker run \
                  -d \
                  --name plex \
                  -p 32400:32400/tcp \
                  -p 33400:33400/tcp \
                  -p 33443:33443/tcp \
                  -p 3005:3005/tcp \
                  -p 8324:8324/tcp \
                  -p 32469:32469/tcp \
                  -p 1900:1900/udp \
                  -p 32410:32410/udp \
                  -p 32412:32412/udp \
                  -p 32413:32413/udp \
                  -p 32414:32414/udp \
                  -e TZ="Europe/Paris" \
                  -e PLEX_CLAIM="claim-xxxVVVccDDXC" \
                  -e ADVERTISE_IP="http://ipdemonserveur:32400/" \
                  -e PLEX_UID=1002 -e PLEX_GID=1002 \
                  -h *** \
                  -v /home/plex:/config \
                  -v /temp:/transcode \
                  -v /home/****/torrents:/data \
                  -e "VIRTUAL_PORT=32400" \
                  -e "VIRTUAL_HOST=plex.ipdemonserveur" \
                  -e "LETSENCRYPT_HOST=plex.ipdemonserveur" \
                  -e "LETSENCRYPT_EMAIL=******@outlook.fr" \
                  plexinc/pms-docker:plexpass
                  docker create \
                    --name=radarr \
                      -v /home/arck0s/docker/radarr:/config \
                      -v /home/****/torrents/radarr:/downloads \
                      -v /home/****/torrents/Films:/movies \
                      -v /etc/localtime:/etc/localtime:ro \
                      -e TZ=Europe/Paris \
                      -e PGID=1002 -e PUID=1002  \
                      -p 7878:7878 \
                    -e "VIRTUAL_PORT=7878" \
                  -e "VIRTUAL_HOST=radarr.ipdemonserveur" \
                  -e "LETSENCRYPT_HOST=radarr.ipdemonserveur" \
                  -e "LETSENCRYPT_EMAIL=*****@outlook.fr" \
                    linuxserver/radarr

                  Mais comment être sur que çà fonctionne, car la actuellement, j'ai toujours le symbole du cadenas barré sous FF

                  Faut vérifier dans Firefox mais normalement c'est un SSL Lets Encrypt.

                    Aerya Ben j'arrive pas a afficher le SSL, j'ai du faire une connerie. Peut être le Nginx du script qui chie dans la colle même si je l'ai stoppé. Je vais peut etre essayer d'installer un docker rTorrent/ruTorrent, et si j'y arrive, je repare sur une fresh installe Debian 9, avec une securisation, ou je remet le script d'Ex_rat et je supprime nginx.

                    triptixx Faut mettre ca dans chaque fichier de chaque appli, ou uniquement dans celui de traefik ?

                    @kimu tu est partis de quel tuto pour installer Traefik stp ?

                      Arck0s fais moi un email sur blog@mongblog et je regarderai demain ou en soirée 😉

                        Arck0s je me suis basé sur la conf donné par @zer dans ce tuto : https://mondedie.fr/d/8307-Discussion-Nextcloud-version-docker/93 pour la mise en place de Traefik. Après tu dois rajouter au moins les 4 labels pour faire communiquer traefik avec le container de ton choix.

                        Pour un peu de sécu tu peux mettre une authentification simple en ajoutant le label suivant : traefik.frontend.auth.basic=user:password

                        Par contre comme la fait remarquer Aerya Traefik ne travaille qu'avec des sous-domaines ( Pour mon utilisation personnel j'ai pris un .ovh qui est à un prix relativement correct).

                        Va sur le site officiel de Traefik, celui ci est très bien documenté.

                          kimu : merci. A l’heure actuel j’ai du mal à c9mprendre comment installer Traefik et Effectivement j’ai vu chez OVH le ndd a 0,99€/an, je vais en prendre 1 je pense.

                          Aerya : tu veux un mail de quoi au juste, lapincompris moua 😬

                            Arck0s
                            oui il faut placer ces labels, soit dans ta commande 'docker container run', soit dans le fichier dockerfile ou soit dans ton fichier docker-compose

                            exemple :

                            version: "3"
                            
                            services:
                              webdav:
                                build:
                                  context: ./webdav
                                  dockerfile: dockerfile-webdav
                                container_name: srvwebdav
                                labels:
                                  - "traefik.enable=true"
                                  - "traefik.port=8080"
                                  - "traefik.frontend.rule=Host:share.domain.net"
                                  - "traefik.docker.network=proxy"
                                  - "traefik.frontend.auth.basic=triptixx:$$apr1$$GOs4D18Z$$d0iz2"
                                  - "traefik.frontend.headers.browserXSSFilter=true"
                                  - "traefik.frontend.headers.contentSecurityPolicy=default-src *; img-src * 'self' data: https:; script-src 'self' 'unsafe-inline' 'unsafe-eval' *; style-src 'self' 'unsafe-inline' *; font-src * 'self' data:;"
                                  - "traefik.frontend.headers.STSSeconds=63072000"
                                  - "traefik.frontend.headers.STSIncludeSubdomains=true"
                                  - "traefik.frontend.headers.STSPreload=true"
                                  - "traefik.frontend.headers.frameDeny=true"
                                  - "traefik.frontend.headers.contentTypeNosniff=true"
                                  - "traefik.frontend.headers.referrerPolicy=no-referrer"
                                volumes:
                                  - seedbox_data_download:/opt/download:ro
                                networks:
                                  - proxy
                                restart: unless-stopped
                            
                            volumes:
                              seedbox_data_download:
                                external: true
                            
                            networks:
                              proxy:
                                external: true
                            

                            Arck0s Si tu souhaites autre chose que Traefik, tu me files les infos par email (domaine, sous-domaines, email à utiliser pour Lets Enscrypt) et je te renvoie les commandes à taper en "docker run -d..."

                            Répondre…