Pendant longtemps, jâai tout hĂ©bergĂ© sur un seul serveur bare metal chez OVH. Il hĂ©bergeait mon GitLab auto-hĂ©bergĂ©, les GitLab runners, les images Docker et toutes mes charges de production. CâĂ©tait puissant, fiable et prĂ©visible, mais avec le temps, cela devenait coĂ»teux et rigide. Je voulais quelque chose de plus flexible, plus simple Ă faire Ă©voluer et moins cher Ă exĂ©cuter. Câest Ă ce moment-lĂ que jâai dĂ©couvert Dokploy.
Dans cet article, je partage comment je suis passĂ© de cette configuration monolithique Ă une infrastructure multi-VPS propulsĂ©e par Dokploy. Aujourdâhui, le tout est plus simple, plus rapide et bien moins cher, tout en restant entiĂšrement auto-hĂ©bergĂ©.
LâAncienne Configuration : Un Serveur pour les Gouverner Tous
Mon ancienne configuration était classique : un seul serveur puissant faisait tout.
- Les runners GitLab construisaient mes images Docker.
- Les runners se connectaient ensuite en SSH sur la mĂȘme machine ou sur un autre hĂŽte Docker.
- Chaque déploiement tirait la derniÚre image et redémarrait les conteneurs.
Cela fonctionnait, mais avec plusieurs inconvénients :
- Coût : les serveurs bare metal chez OVH sont excellents, mais surdimensionnés (et chers) pour de petits projets.
- Complexité : gérer les runners, les clés SSH et les pulls manuels ajoutait de la friction.
- Scalabilité : tout était étroitement lié à une seule machine.
- Zéro Downtime : difficile à mettre en place.
Chaque fois que je voulais ajouter un environnement de staging ou tester une nouvelle stack, je devais jongler manuellement avec les ports, les conteneurs et les rĂšgles du pare-feu.
Pourquoi Quitter le Bare Metal
La principale motivation Ă©tait la flexibilitĂ© et le coĂ»t. Jâai rĂ©alisĂ© que je nâavais pas besoin dâun seul grand serveur pour tout. Ă la place, je pouvais exĂ©cuter plusieurs petits VPS, chacun pour un rĂŽle spĂ©cifique :
- Un VPS pour GitLab
- Un pour le staging
- Un pour la production
Chaque VPS est moins cher, isolĂ© et plus simple Ă maintenir. Et puisquâils tournent tous sous Docker, la cohĂ©rence reste totale.
Mettre Ă jour le kernel dâun serveur bare metal complet impliquait de louer un nouveau serveur et dâespĂ©rer migrer tous les projets en un mois pour Ă©viter de payer les deux. Ici, il est bien plus simple de dĂ©placer les projets individuellement vers de nouveaux VPS.
Mais il me fallait un moyen simple dâorchestrer les dĂ©ploiements entre toutes ces machines. Câest lĂ quâentre en jeu Dokploy.
Découvrir Dokploy
Dokploy est une plateforme auto-hĂ©bergĂ©e pour dĂ©ployer et gĂ©rer des applications basĂ©es sur Docker. Câest un peu un mĂ©lange entre CapRover, Coolify et Portainer, mais avec un accent sur la simplicitĂ© et le CI/CD moderne.
Ce qui mâa tout de suite plu, câest la facilitĂ© dâintĂ©gration avec les pipelines externes. Au lieu de laisser Dokploy construire les images, je laisse GitLab CI le faire, pousser lâimage vers mon registre privĂ©, puis dĂ©clencher un webhook Dokploy pour dĂ©ployer la nouvelle version.
Cela me permet de conserver toute ma configuration GitLab existante tout en déléguant la logique de déploiement à Dokploy.
La Nouvelle Configuration : Un Dokploy tout gérer
Dans ma nouvelle configuration, jâai maintenant un seul VPS exĂ©cutant Dokploy, aux cĂŽtĂ©s dâautres outils comme Grafana et n8n. Dokploy est responsable du dĂ©ploiement de plusieurs environnements :
- Il dĂ©ploie GitLab lui-mĂȘme sur un autre VPS.
- Il déploie mon environnement de staging sur un deuxiÚme VPS.
- Il déploie mon environnement de production sur un troisiÚme VPS.
Ces autres VPS ne font pas tourner Dokploy : lâinstance principale gĂšre tout Ă distance via son systĂšme de dĂ©ploiement.
Voici le workflow global :
- GitLab construit lâimage Docker.
- Lâimage est poussĂ©e vers mon registre privĂ©.
- GitLab déclenche le webhook Dokploy.
- Dokploy tire la nouvelle image et redéploie le service correspondant.
Voici un extrait simplifié du fichier .gitlab-ci.yml :
deploy:
  stage: deploy
  script:
    - curl -X POST https://dokploy.example.com/webhook/PROJECT_ID?token=$DOKPLOY_TOKEN
  only:
    - mainAucun script SSH, aucun pull manuel, aucun temps dâarrĂȘt. Juste un webhook propre par environnement.
Staging avec Basic Auth
Une des petites fonctionnalitĂ©s bien pratiques de Dokploy, câest la facilitĂ© dâactiver une authentification Basic Auth pour un projet.
Il suffit dâaller dans Advanced Settings > Security > Add Security > Create.

Ainsi, les visites aléatoires ou le scraping susceptible de marquer votre site comme un duplicata sont évités.
Zéro Downtime avec Docker Swarm
Dokploy utilise Docker Swarm en interne, ce qui permet des mises Ă jour sans interruption.
Lorsquâune nouvelle image est dĂ©ployĂ©e, Dokploy effectue une mise Ă  jour progressive : lâancien conteneur est arrĂȘtĂ© uniquement lorsque le nouveau est sain. Pas besoin de rĂšgles de load balancer compliquĂ©es ni de coordination manuelle. Pour moi, câest un Ă©norme progrĂšs par rapport Ă  mes anciens scripts docker-compose.
Pour cela, certaines options dans Advanced > Cluster Settings doivent ĂȘtre configurĂ©es. Il faut une route de Healthcheck disponible sur le serveur. Elle est appelĂ©e localement et, dĂšs quâelle renvoie un succĂšs, le trafic est redirigĂ© vers le nouveau conteneur tandis que lâancien est arrĂȘtĂ©. Ici, la route debest.fr/uptime est utilisĂ©e pour cela.

On peut Ă©galement dĂ©finir les limites de ressources, les variables dâenvironnement et le nombre de rĂ©plicas directement depuis lâinterface, ce qui rend la gestion de multiples services plus prĂ©visible.
Sauvegardes Automatiques avec MinIO
Autre point fort : la simplicitĂ© pour planifier des sauvegardes de volumes et de bases de donnĂ©es. Dans le tableau de bord Dokploy, jâai configurĂ© des sauvegardes pĂ©riodiques automatiques vers mon instance MinIO exĂ©cutĂ©e sur mon NAS local.
Chaque projet peut avoir sa propre planification, et Dokploy gĂšre automatiquement la compression et lâenvoi. Cela me rassure dâavoir un contrĂŽle total sur mes sauvegardes sans dĂ©pendre dâAWS.
Supervision et Alertes avec Dokploy et Grafana
Le mĂȘme VPS qui exĂ©cute Dokploy hĂ©berge Ă©galement Grafana. Grafana surveille chaque VPS et collecte des mĂ©triques comme lâutilisation du CPU, de la RAM et du disque. Lorsquâun seuil est dĂ©passĂ©, Grafana envoie une alerte sous forme de message sur mon serveur Discord.
Cette configuration lĂ©gĂšre me permet de garder une vue en temps rĂ©el sur tous mes VPS et dâĂȘtre alertĂ© immĂ©diatement en cas de problĂšme.
Dokploy est aussi configurĂ© pour envoyer des messages sur Discord lorsquâun dĂ©ploiement rĂ©ussit ou Ă©choue, ou lorsquâune sauvegarde de volume ou de base de donnĂ©es a eu lieu.
Je prévois de détailler cette configuration de monitoring dans un prochain article.
Coûts et Simplicité
Depuis que je suis passĂ© du bare metal aux VPS, jâai considĂ©rablement rĂ©duit mes coĂ»ts dâhĂ©bergement. Chaque VPS a dĂ©sormais un rĂŽle bien dĂ©fini, et si lâun dâeux tombe, les autres continuent de fonctionner.
Conclusion
Dokploy sâest rĂ©vĂ©lĂ© ĂȘtre un excellent compromis entre la gestion Docker manuelle et les grandes plateformes PaaS. Il est suffisamment simple pour ĂȘtre compris en une journĂ©e, mais assez puissant pour gĂ©rer de vrais dĂ©ploiements avec zĂ©ro interruption et des sauvegardes automatiques.
Si vous utilisez encore un gros serveur bare metal, essayez cette approche : une instance Dokploy qui gÚre plusieurs petits VPS. Combinez cela avec des outils comme Grafana pour la supervision, et vous obtiendrez un environnement entiÚrement auto-hébergé, automatisé et surveillé, à coût minimal.
Restez Ă lâĂ©coute pour le prochain article, oĂč je dĂ©taillerai comment jâutilise Grafana, n8n et les alertes Discord pour surveiller mon infrastructure.
Dennis de Best
 
                                         
                                         
                                         
                                         
                                         
                                        
Commentaires