4. Déploiement Docker via Portainer
Le déploiement se fait entièrement depuis l’interface Portainer. Vous n’avez pas besoin d’accéder au terminal de votre NAS.
Maintenant que vos dossiers sont prêts et votre fichier .env configuré, il est temps de lancer le conteneur pour que mon bot puisse enfin se connecter à Discord.
Vous utilisez Portainer ? (Méthode recommandée)
Le déploiement se fait entièrement depuis l’interface Portainer. C’est de loin la méthode la plus simple car vous n’avez pas besoin d’accéder au terminal de votre NAS.
Vous n’avez pas encore Portainer ?
Si vous ne l’avez pas encore, je vous recommande vraiment de l’installer. Cela change la vie pour gérer ses projets Docker sur Synology. Vous pouvez suivre ce guide excellent et ultra-rapide : 👉 Installer Portainer sur Synology en 30 secondes (Marius Hosting)
4.1 Créer un nouveau stack
Dans Portainer, accédez à Stacks dans le menu gauche, puis cliquez sur « + Add stack ».


Donnez un nom à votre stack (ex: marvin) puis collez la configuration suivante dans l’éditeur :

💡 À personnaliser : Dans le code suivant, j'ai utilisé marvin comme nom par défaut pour les dossiers et le conteneur. Si vous avez nommé votre dossier différemment sur votre NAS (par exemple /docker/monbot), n'oubliez pas d'adapter les lignes sous la section volumes pour que Docker retrouve vos fichiers.
| version: ‘3.8’ services: marvin-bot: # Vous pouvez renommer ceci en le-nom-de-votre-bot image: python:3.11-slim container_name: marvin-app # Le nom qui apparaîtra dans votre liste Docker network_mode: bridge volumes: – /volume1/docker/marvin:/app – /volume1/docker/marvin/img:/app/img working_dir: /app ports: – « 5050:5050 » environment: – PYTHONUNBUFFERED=1 command: > sh -c « pip install -r requirements.txt && python bot.py » restart: always | Comprendre la configuration : Image ( python:3.11-slim) : C’est l’image officielle qui va faire tourner le code du bot. Elle est légère et sera téléchargée automatiquement au premier lancement.Volumes : C’est la partie la plus importante. Elle fait le lien entre votre dossier réel sur le NAS ( /volume1/docker/marvin) et l’intérieur du conteneur. Cela garantit que votre base de données et vos images ne sont pas supprimées si vous redémarrez le bot.Ports ( 5050:5050) : C’est la porte d’entrée de votre dashboard. Une fois lancé, vous y accéderez via http://[IP-de-votre-NAS]:5050.Restart ( always) : Le bot redémarrera tout seul si votre NAS redémarre ou en cas de plantage imprévu.⚠️ Attention dans Portainer : Lors des prochaines mises à jour de votre stack, ne cochez pas l’option « Re-pull image », cela est inutile ici car nous utilisons une image Python fixe. |
4.3 Déployer le stack
Cliquez sur « Deploy the stack » en bas de page. Portainer va créer le conteneur et lancer le bot.
Le premier démarrage peut prendre 1 à 3 minutes le temps de télécharger les dépendances Python.

4.4 Vérifier les logs
Cliquez sur le conteneur marvin-app puis sur « Logs » pour vérifier que le démarrage s’est bien passé. Vous devriez voir :
[DB] ✅ Base de données initialisée et labels mis à jour
Marvin OS démarre…
* Running on http://0.0.0.0:5050
✅ Marvin OS connecté | Heure (Paris) : HH:MM:SS



💡 En cas d'erreur ModuleNotFoundError
Si vous voyez une erreur de module manquant au démarrage, vérifiez que votre fichier requirements.txt est bien présent et complet dans /volume1/docker/marvin/. Le fichier doit contenir : discord.py, feedparser, requests, beautifulsoup4, PyNaCl, flask, flask-sqlalchemy, pytz, python-dotenv, emoji, werkzeug.
