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 :

  1. GitLab construit l’image Docker.
  2. L’image est poussĂ©e vers mon registre privĂ©.
  3. GitLab déclenche le webhook Dokploy.
  4. 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:
    - main

Aucun 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.

Screenshot%20From%202025-10-26%2014-46-17

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.

Screenshot%20From%202025-10-26%2014-52-19

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.