Skip to main content

👀 Visualiser tout avec Portainer

Portainer est un super outil pour avoir une interface web pour gérer tout à propos de Docker : images, stacks (docker-compose), conteneurs, volumes, réseaux, etc.

On va utiliser traefik comme reverse proxy avec portainer. Sauf que si on met les deux dans le même fichier docker-file, on ne pourra plus gérer traefik avec portainer car il aura été créé en dehors.

On va d'abord créer un réseau traefik pour pouvoir ajouter traefik par après :

sudo docker network create traefik

Donc on va mettre traefik après. Tout d'abord on va créer portainer en version non sécurisée :

version: '3'
services:
  portainer:
    image: portainer/portainer-ce:latest
    restart: always
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "./portainer_data:/data"

    # Une fois que traefik aura été configuré on pourra supprimer cette partie
    ports:
      # 9000 est le port non sécurisé de portainer (qui va après passer par traefik pour être sécurisé)
      - "9000:9000"

    labels:
      - "traefik.enable=true"

      # On va passer les trucs du port 9000 au port 443 pour être sécurisé par traefik avec letsencrypt
      # Vous pouvez changer le nom de domaine, le nom de l'entrypoint et le nom du resolver de certificat
      - "traefik.http.services.portainer.loadbalancer.server.port=9000"
      - "traefik.http.routers.portainer.rule=Host(`votre-nom-de-domaine-ici.net`)" 
      - "traefik.http.routers.portainer.entrypoints=https" 
      - "traefik.http.routers.portainer.tls.certresolver=le" 

    networks:
      - traefik

networks:
  traefik:
    external: true

Après on peut le lancer en faisant :

sudo docker-compose up -d

Ensuite on peut configurer portainer sur son interface à l'addresse http://ip-du-serveur:9000. Ensuite on peut ajouter traefik en cliquant sur l'environement local puis sur Stack puis sur "Add new stack"

version: '3'

services:
  traefik:
    image: "traefik:latest"
    restart: always
    ports:
      - "80:80"
      - "443:443"
    command:
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.http.address=:80"
      - "--entrypoints.https.address=:443"
      - "--certificatesresolvers.le.acme.httpchallenge=true"
      - "--certificatesresolvers.le.acme.httpchallenge.entrypoint=http"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
    networks:
      - traefik

networks:
  traefik:
    external: true

Une fois cela fait on peut le deployer et normalement portainer devrait être accessible à l'addresse https://votre-nom-de-domaine.net si c'est bien le cas alors on va pouvoir supprimer l'exposition du port non sécurisé :

    # On peut commenter la section "ports" du docker-file d'origine puis le relancer
		
    #ports:
      #- "9000:9000"

Et enfin relancer portainer :

sudo docker-compose up -d

Et voilà maintenant portainer est installé et configuré !