Niveau 🟡 intermédiaire
Durée estimée : 20 min · Prérequis : Fiche service : Nginx Proxy Manager
Portainer, c'est un tableau de bord de cockpit pour Docker : au lieu de taper docker ps,
docker logs, docker compose up en ligne de commande, une interface graphique affiche
conteneurs, images, réseaux et volumes, et permet d'agir dessus en quelques clics — le même
pouvoir que la ligne de commande, présenté différemment.
Ce que Portainer apporte : une interface web complète pour gérer Docker — démarrer, arrêter,
inspecter des conteneurs, déployer des stacks depuis un fichier compose.yaml, consulter les
journaux, sans taper une seule commande. Utile en particulier pour visualiser rapidement l'état
d'ensemble d'un homelab avec plusieurs services, plutôt que d'enchaîner les commandes une par
une.
Pourquoi Portainer équivaut à un accès root. Pour agir sur Docker, Portainer a besoin
d'accéder au socket Docker (/var/run/docker.sock, déjà croisé en
M4) — et quiconque peut parler à ce socket
peut créer un conteneur avec n'importe quel montage, y compris la racine du système de fichiers
de la machine hôte. Donner accès à Portainer, c'est donc, en pratique, donner un accès
équivalent à root sur la machine entière — une conséquence à avoir clairement en tête avant
d'ouvrir cet accès à qui que ce soit.
⚠️ Le piège du premier démarrage : une fenêtre de configuration limitée dans le temps.
Au tout premier lancement, Portainer génère un jeton de configuration initiale (visible
uniquement dans ses journaux), valable seulement quelques minutes — passé ce délai, l'accès
initial expire par sécurité, et une réinitialisation complète devient nécessaire pour
recommencer. Un réflexe à avoir : consulter les journaux immédiatement après le premier
démarrage, pas plus tard.
Standalone vs agent. Portainer peut fonctionner en mode standalone (il administre
uniquement la machine sur laquelle il tourne) ou avec un agent déployé sur d'autres machines,
pour administrer plusieurs hĂ´tes Docker depuis une seule interface centrale. Le mode agent
n'a d'intérêt qu'à partir de plusieurs machines à administrer ensemble.
🧪 Concrètement, sur notre exemple : Portainer tourne en mode standalone — un choix qui
a suivi l'abandon d'un plan initial multi-hôtes (« agent »), envisagé du temps du premier essai
sur Mac mini. Le port9443(HTTPS, certificat auto-signé par Portainer lui-même — pas par
mkcert) a d'abord été publié plus largement que127.0.0.1, via une règleDOCKER-USER
explicite (vue en M2) : Ă ce moment du projet, Nginx Proxy Manager
n'existait pas encore pour servir de façade. Cette règle a ensuite été retirée, une fois le
réseaunpm_proxypartagé en place et Portainer accessible via le reverse proxy comme les
autres services — un exemple concret qu'une exception de sécurité temporaire doit être
reconsidérée dès que sa justification initiale disparaît, pas laissée en place par oubli.
L'accès au socket Docker n'est jamais un accès partiel — c'est structurellement un accès complet
à la machine, quel que soit le soin apporté à l'interface qui l'utilise.
docker compose up -d
# Démarre Portainer
docker compose logs portainer | grep -i token
# Cherche le jeton de configuration initiale -- à faire IMMÉDIATEMENT
# après le premier démarrage, avant l'expiration du délai limité
docker exec portainer ls -la /var/run/docker.sock
# Confirme que le socket est bien monté dans le conteneur -- c'est ce
# montage précis qui donne à Portainer son pouvoir sur toute la machine
Ouvre l'interface web de Portainer depuis le réseau local. Une fois connecté, la liste des
conteneurs actifs doit correspondre exactement à docker ps exécuté en ligne de commande sur la
même machine — la preuve que Portainer voit bien le même Docker que le terminal.
| SymptĂ´me | Cause probable | Solution |
|---|---|---|
| Jeton de configuration initiale expiré | Journaux non consultés assez rapidement après le premier démarrage | Réinitialiser le volume de données de Portainer pour repartir d'un premier démarrage propre |
| Accès Portainer laissé ouvert à des personnes qui n'ont pas besoin d'un accès root sur la machine | Sous-estimation de ce que l'accès au socket Docker permet réellement | Limiter strictement qui a accès à Portainer — l'équivalent, en pratique, d'un accès administrateur complet |
| Règle de pare-feu temporaire jamais retirée après que sa justification a disparu | Absence de revue périodique des exceptions de sécurité | Revoir explicitement chaque règle temporaire dès que le contexte qui l'a motivée change (ici, l'arrivée du reverse proxy) |
Parce que Portainer accède au socket Docker, et que quiconque peut parler à ce socket peut créer
un conteneur avec n'importe quel montage — y compris la racine du système de fichiers de la
machine hĂ´te.
Consulter ses journaux pour récupérer le jeton de configuration initiale, valable seulement
quelques minutes avant expiration.
À partir de plusieurs machines Docker à administrer depuis une seule interface centrale — le
mode standalone suffit pour une seule machine.
Sur une machine avec Docker, déploie Portainer, récupère le jeton de configuration initiale dans
ses journaux dans le délai imparti, puis connecte-toi et compare la liste des conteneurs affichés
Ă celle de docker ps en ligne de commande.
socket Docker ·
standalone ·
agent (Portainer)
Cette formation est proposée par Deladev, studio web de Loïc D. — création de sites et d'applications, accompagnement et formation sur mesure.
Les projets réalisés · Prestations et tarifs · Le blog tech · Me contacter
Écrite par Loïc D. avec l'assistance de Claude (Anthropic) — un travail à deux.
© 2026 Deladev — publiée sous licence CC BY-NC-ND 4.0. Vous pouvez la lire, y renvoyer par un lien, la partager et la citer en créditant la source. La revendre, l'utiliser dans une prestation ou une formation payante, la republier même partiellement ailleurs, en diffuser une version modifiée ou l'exploiter pour entraîner un modèle d'IA nécessitent une autorisation écrite — pour un usage interne en entreprise, c'est souvent oui, il suffit de demander.