Portainer
Interface web de gestion de Docker. Un Portainer central sur le serveur principal pilote les deux machines : son propre Docker directement, et celui du Raspberry Pi par un agent.
Architecture
| Machine | Composant | Image | Rôle |
|---|---|---|---|
| Serveur principal | Portainer CE | portainer/portainer-ce:lts | Instance centrale |
| Raspberry Pi | Portainer Agent | portainer/agent:latest | Donne accès au Docker du Pi depuis l'instance centrale |
| Raspberry Pi | Portainer CE | portainer/portainer-ce:sts | Instance locale, en doublon de l'instance centrale |
Instance centrale (serveur principal)
docker run -d --name portainer --restart=always \
-p 9443:9443 -p 8000:8000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:lts
docker network connect proxy portainer
| Port | Rôle |
|---|---|
| 9443 | Interface web en HTTPS |
| 8000 | Tunnel des agents Edge ; inutile sans agent Edge |
Premier accès : https://<IP_SERVEUR>:9443, création du compte administrateur dans les minutes qui suivent le démarrage.
Le conteneur est aussi sur le réseau proxy pour être publié par SWAG. Pour les redéploiements longs, passer par l'accès direct (voir Dépannage).
Agent (Raspberry Pi)
-p 9001:9001 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
portainer/agent:lts
- Utiliser le tag qui correspond au canal du serveur (lts ici) plutôt que latest.
- Options : -e AGENT_SECRET=<SECRET> (même valeur côté serveur) pour que seul ce serveur puisse piloter l'agent ; -v /:/host pour la gestion des fichiers de l'hôte.
Puis, sur l'instance centrale : Environments > Add environment > Docker Standalone > Agent, adresse <IP_RASPBERRY>:9001.
Personnalisation
Settings > General :
| Réglage | Valeur |
|---|---|
| Logo personnalisé | https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/pi-hosted-logo.png |
| Modèles d'applications | https://raw.githubusercontent.com/Lissy93/portainer-templates/main/templates.json |
La liste de Lissy93 est bien plus fournie que celle d'origine. Un conteneur déployé depuis un modèle n'est pas une stack : sa configuration se relit avec docker inspect.
Limites connues
- build: . ne fonctionne pas dans une stack : construire l'image sur l'hôte puis la référencer par son nom.
- Une stack lancée en ligne de commande (docker compose) apparaît comme « créée hors de Portainer » : elle est visible mais non modifiable depuis l'interface.
Sauvegarde
Les données de Portainer (stacks, variables d'environnement, utilisateurs, réglages) sont dans le volume portainer_data. Settings > General > Backup Portainer produit une archive téléchargeable, protégeable par mot de passe, à conserver hors du serveur.