Déploiement avec Portainer¶
Ce guide explique comment déployer la stack LMELP via l'interface web Portainer, une alternative graphique au déploiement en ligne de commande.
Prérequis¶
- Portainer installé et accessible
- Repository
docker-lmelpcloné ou fichiers disponibles localement - Fichier
.envconfiguré avec vos valeurs
Avantages de Portainer¶
- Interface graphique : Gestion visuelle des containers et stacks
- Monitoring : Vue en temps réel de l'état des services
- Logs centralisés : Accès facile aux logs de chaque container
- Gestion des ressources : Monitoring CPU, RAM, réseau
- Mise à jour simplifiée : Redéploiement en un clic
Accéder à Portainer¶
Ouvrir Portainer dans votre navigateur :
- Local :
https://localhost:9443 - NAS/Serveur distant :
https://nas-ip:9443
Première connexion :
- Créer un compte administrateur
- Sélectionner "Docker" comme environnement
- Choisir "Local" ou "Remote" selon votre installation
Déploiement via Repository Git¶
Étape 1 : Créer une nouvelle stack¶
- Se connecter à Portainer
- Aller dans Stacks dans le menu latéral
- Cliquer sur + Add stack
Étape 2 : Configurer la stack¶
Name : lmelp-stack
Build method : Sélectionner Repository
Git Repository :
Authentication: Coche
Username: castorfou
Personal Access Token: <voir dans enpass: github personal access tokens>
Repository URL: https://github.com/castorfou/docker-lmelp
Repository reference: refs/heads/main
Compose path: docker-compose.yml
GitOps updates : Cocher pour detecter les mises a jour de docker-compose.yml
Environment Variables : Cliquer sur Load variables from .env file et Selectionner le fichier .env
Étape 3 : Déployer¶
- Vérifier la configuration
- Cocher Pull latest image versions (recommandé)
- Cliquer sur Deploy the stack
Portainer va :
- Cloner le repository
- Télécharger les images Docker
- Créer les volumes
- Démarrer les containers
Étape 4 : Vérifier le déploiement¶
Aller dans Stacks → lmelp-stack pour voir :
- Liste des services (
lmelp-mongo,lmelp-frontoffice,lmelp-backoffice-frontend,lmelp-backoffice-backend) - État de chaque container (vert = healthy)
- Logs en temps réel
Gestion de la stack dans Portainer¶
Voir l'état des containers¶
Stacks → lmelp-stack :
- lmelp-backoffice-backend : ⬤ healthy
- lmelp-backoffice-frontend : ⬤ healthy
- lmelp-frontoffice : ⬤ healthy
- lmelp-mongo : ⬤ healthy
Consulter les logs¶
- Stacks → lmelp-stack
- Cliquer sur un service (ex:
lmelp-mongo) - Onglet Logs
- Activer Auto-refresh pour mise à jour automatique
Redémarrer un service¶
- Stacks → lmelp-stack
- Cocher le service à redémarrer
- Cliquer sur Restart
Redémarrer toute la stack :
Depuis la page de la stack, cliquer sur Stop this stack puis Start this stack.
Monitoring des ressources¶
- Stacks → lmelp-stack
- Cliquer sur un service
- Onglet Stats : graphiques de CPU, RAM, I/O réseau et disque
Accéder à la console d'un container¶
- Stacks → lmelp-stack
- Cliquer sur un service
- Onglet Console
- Sélectionner
/bin/bashou/bin/sh - Cliquer sur Connect
Exemple - Exécuter une restauration :
Mise à jour de la stack¶
Mise à jour des images Docker¶
- Stacks → lmelp-stack
- Cliquer sur Pull and redeploy
- Cocher Re-pull image
- Cliquer sur Update
Portainer va :
- Télécharger les dernières images
- Arrêter les containers existants
- Recréer les containers avec les nouvelles images
- Conserver les volumes (données préservées)
Mise à jour de la configuration¶
Modifier les variables d'environnement :
- Stacks → lmelp-stack
- Onglet Environment variables
- Modifier ou ajouter des variables
- Cliquer sur Update the stack
Modifier le docker-compose.yml :
- Stacks → lmelp-stack
- Onglet Editor
- Modifier le fichier YAML
- Cliquer sur Update the stack
Gestion des volumes¶
Voir les volumes¶
- Volumes dans le menu latéral
- Rechercher
lmelp
Volumes créés :
- Volumes Docker pour MongoDB data, backups, audios, logs
- Ou bind mounts vers
./data/selon la configuration
Surveillance et alertes¶
Notifications Portainer¶
Configurer des notifications pour surveiller la stack :
- Settings → Notifications
- Ajouter un webhook (Slack, Discord, Email, etc.)
- Configurer des alertes pour :
- Container down
- Resource limits exceeded
- Failed deployments
Monitoring externe¶
Intégrer avec des outils externes :
- Prometheus + Grafana : Métriques détaillées
- cAdvisor : Monitoring des containers
- Netdata : Monitoring système en temps réel
Déploiement sur NAS Synology¶
Prérequis Synology¶
- Installer Container Manager depuis Package Center
- Activer SSH dans Panneau de configuration → Terminal & SNMP
- Se connecter via SSH :
ssh admin@nas-ip
Étapes spécifiques¶
- Créer les dossiers de données :
# Se connecter au NAS
ssh admin@nas-ip
# Créer la structure
sudo mkdir -p /volume1/docker/lmelp/{mongodb,backups,audios,logs,scripts,cron}
- Copier les fichiers :
# Depuis votre machine locale
scp -r scripts/* admin@nas-ip:/volume1/docker/lmelp/scripts/
scp cron/backup-cron admin@nas-ip:/volume1/docker/lmelp/cron/
-
Déployer via Portainer (Container Manager → Portainer)
-
Adapter
.envpour Synology :
# Chemins absolus pour Synology
MONGO_DATA_PATH=/volume1/docker/lmelp/mongodb
BACKUP_PATH=/volume1/docker/lmelp/backups
AUDIO_PATH=/volume1/docker/lmelp/audios
LOG_PATH=/volume1/docker/lmelp/logs
# Réseau en mode host
DB_HOST=localhost
Dépannage¶
La stack ne démarre pas¶
- Vérifier les logs depuis Portainer
- Vérifier les variables d'environnement
- Vérifier que les volumes sont accessibles
- Vérifier les ports disponibles
Un container est en erreur¶
- Stacks → lmelp-stack → cliquer sur le container en erreur
- Onglet Logs : identifier l'erreur
- Onglet Inspect : vérifier la configuration
- Redémarrer le container
Problèmes de permissions¶
# Se connecter à l'hôte
ssh user@server
# Vérifier et corriger les permissions
sudo chown -R 1000:1000 /path/to/data/
sudo chmod -R 755 /path/to/data/
Impossible d'accéder à l'application¶
- Vérifier que les containers sont running
- Vérifier les ports dans Container details
- Vérifier les règles firewall de l'hôte
- Tester depuis l'hôte :
curl http://localhost:8501
Sécurité¶
Protéger Portainer¶
- Activer HTTPS : Settings → SSL certificate
- Authentification forte : Settings → Authentication → Activer 2FA
- Limiter l'accès réseau : Utiliser un reverse proxy (Nginx, Traefik)
Protéger les secrets¶
Ne jamais exposer .env via Git :
- Uploader
.envuniquement via l'interface Portainer - Utiliser Docker secrets pour les valeurs sensibles
- Activer les restrictions d'accès aux variables dans Portainer
Prochaines étapes¶
- Installation : Prérequis et installation initiale
- Configuration : Détails sur les variables
- Gestion des backups : Sauvegarder et restaurer
