[{"data":1,"prerenderedAt":213},["ShallowReactive",2],{"seo-verification":3,"blog-deployer-avec-dokku-ma-fr":6,"promo-bar-likely":212},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-deployer-avec-dokku-ma-fr",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":156,"ctaBody":157,"ctaButton":158,"ctaUrl":159,"relatedPosts":160},34,"deployer-avec-dokku",{"fr":10,"en":12,"ar":13,"es":14},"deploy-your-applications-with-dokku-on-a-vps","انشر-تطبيقاتك-باستخدام-dokku-على-خادم-vps","desplegar-aplicaciones-con-dokku-en-un-vps","Déployer vos applications avec Dokku sur un VPS","Guide complet Dokku v0.35 : installation, buildpacks, variables d'env, rollback, plugins postgres\u002Fredis\u002Fletsencrypt et dépannage des erreurs courantes.",11,1,false,"2026-05-17T00:00:00+00:00","2026-10-18T21:57:59+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},3,"Déploiement","deploiement","bg-success\u002F10 text-success",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-avec-dokku-poster.svg","Dokku se présente comme « le plus petit PaaS au monde ». Construit autour de Docker et des buildpacks Heroku, il offre une expérience de déploiement par `git push` sur un VPS modeste, sans interface lourde ni orchestrateur embarqué. Ce guide va au-delà de l'installation de base : il couvre les variables d'environnement, le rollback zero-downtime, les plugins essentiels et le dépannage des erreurs les plus fréquentes.",[34,38,50,53,75,78,81,84,147,150,153],{"type":35,"title":36,"body":37},"h2","Pourquoi choisir Dokku pour votre VPS","Là où d'autres PaaS embarquent une interface web et un orchestrateur complet, Dokku reste volontairement minimaliste : il s'agit d'un ensemble de scripts shell qui pilotent Docker. Vous poussez votre code avec `git push dokku main`, Dokku détecte le langage via les buildpacks Heroku ou un Dockerfile, construit l'image et met l'application en ligne. Tout se gère en ligne de commande, ce qui le rend extrêmement léger et prévisible.\n\nComparés à Dokku, CapRover, Coolify et Easypanel proposent tous une interface graphique, mais au prix d'une empreinte mémoire bien plus lourde. CapRover réserve Docker Swarm et son daemon de supervision ; il recommande 2 Go de RAM en configuration minimale et impose un sous-domaine dédié pour son panneau de contrôle. Coolify 4 s'appuie sur Nixpacks et une base PostgreSQL embarquée : comptez 2 Go de RAM au repos. Easypanel intègre Traefik et un builder Nixpacks, ce qui demande lui aussi 2 Go de RAM dès qu'un build est actif. Dokku, lui, tourne confortablement à partir de 512 Mo de RAM pour une application légère, et n'ajoute aucun composant de contrôle permanent. C'est le choix naturel pour les développeurs qui veulent un workflow Heroku-like sur un petit VPS, sans surcharge mémoire et sans consommer des ressources pour un tableau de bord qu'ils n'utiliseront que quelques minutes par semaine. Son écosystème de plugins officiels (PostgreSQL, Redis, Let's Encrypt, MongoDB) couvre l'essentiel des besoins.",{"type":39,"title":40,"items":41},"ul","Les atouts concrets de Dokku",[42,43,44,45,46,47,48,49],"Empreinte mémoire minimale : tourne à partir de 512 Mo de RAM pour une app légère, 1 Go confortablement.","Déploiement par `git push`, comme sur Heroku, avec détection automatique du langage via les buildpacks.","Support natif des buildpacks Heroku (Node, Python, Ruby, Go, PHP…) et des Dockerfiles, au choix.","Plugins officiels pour PostgreSQL, MySQL, Redis et MongoDB, gérés entièrement en CLI.","Plugin Let's Encrypt pour HTTPS automatique, renouvellement inclus via cron.","Zero-downtime deploys grâce aux checks de santé configurables avant bascule du conteneur.","Rollback instantané via `dokku tags` et `dokku deploy` sur une image antérieure.","Injection automatique des variables de connexion (DATABASE_URL, REDIS_URL) lors d'un `plugin:link`.",{"type":35,"title":51,"body":52},"Prérequis chiffrés pour Dokku","Dokku est le PaaS le plus économe en ressources de cette série.\n\n**RAM.** 512 Mo suffisent pour une application légère sans build actif. Prévoyez 1 Go de RAM pour un usage courant et 2 Go dès que vos builds utilisent des buildpacks (Node, Ruby, Python compilent en mémoire pendant la construction de l'image) ou que vous hébergez une base de données sur le même VPS. Pour plusieurs applications en parallèle avec PostgreSQL, visez 4 Go.\n\n**CPU.** 1 vCPU est suffisant pour des applications légères. Les phases de build buildpack sont CPU-intensives et se déroulent à la volée lors de chaque `git push` : un vCPU partagé peut ralentir le déploiement mais ne bloque pas.\n\n**Disque.** Comptez 20 Go de SSD minimum. Les images Docker des buildpacks peuvent peser plusieurs centaines de mégaoctets ; ajoutez l'espace pour vos volumes de données (base de données, uploads).\n\n**Swap.** Sur un VPS d'1 ou 2 Go de RAM, ajoutez systématiquement 2 Go de swap. Sans swap, l'OOM killer du noyau Linux peut tuer un build Node ou Ruby en cours de compilation. La commande de référence : `fallocate -l 2G \u002Fswapfile && chmod 600 \u002Fswapfile && mkswap \u002Fswapfile && swapon \u002Fswapfile`.\n\n**Système.** Ubuntu 22.04 LTS ou 24.04 LTS fraîchement installé, sans Docker ni Nginx préinstallés. Dokku installe ses propres versions. Les ports 22 (SSH), 80 et 443 doivent être ouverts.\n\n**DNS.** Configurez soit un domaine par application (`mon-app.votre-domaine.com`), soit un domaine wildcard `*.votre-domaine.com` pointant vers l'IP du VPS — ce dernier simplifie l'ajout de nouvelles applications sans retouche DNS à chaque fois.",{"type":54,"title":55,"steps":56},"steps","Installer Dokku v0.38.x et déployer une première application",[57,60,63,66,69,72],{"title":58,"body":59},"Télécharger et exécuter le script d'amorçage officiel","Sur un Ubuntu 22.04 ou 24.04 LTS fraîchement installé, récupérez le script d'installation de la branche stable et lancez-le :\n\n```\nwget -NP . https:\u002F\u002Fdokku.com\u002Fbootstrap.sh\nsudo DOKKU_TAG=v0.38.x bash bootstrap.sh\n```\n\nLe script installe Docker (si absent), Nginx et Dokku lui-même. L'opération prend deux à cinq minutes selon la vitesse du VPS. À la fin, Dokku est fonctionnel mais non encore configuré.",{"title":61,"body":62},"Configurer le domaine global et ajouter votre clé SSH","Définissez le domaine racine que Dokku utilisera pour construire les sous-domaines applicatifs :\n\n```\ndokku domains:set-global votre-domaine.com\n```\n\nAjoutez ensuite votre clé SSH publique pour autoriser les déploiements depuis votre poste local :\n\n```\ncat ~\u002F.ssh\u002Fid_ed25519.pub | ssh root@votre-domaine.com \"dokku ssh-keys:add admin\"\n```\n\nSi vous préférez finaliser depuis le navigateur, visitez `http:\u002F\u002FIP-du-VPS` juste après l'installation : une page de configuration s'affiche pour coller la clé publique.",{"title":64,"body":65},"Créer une application et configurer le remote Git","Sur le serveur, créez l'application cible :\n\n```\ndokku apps:create mon-app\n```\n\nSur votre poste local, ajoutez Dokku comme remote Git dans votre dépôt :\n\n```\ngit remote add dokku dokku@votre-domaine.com:mon-app\n```\n\nDokku créera automatiquement le sous-domaine `mon-app.votre-domaine.com` (ou `mon-app.IP-du-VPS.sslip.io` si aucun domaine global n'est défini). Vérifiez avec `dokku domains:report mon-app`.",{"title":67,"body":68},"Provisionner une base de données PostgreSQL","Installez le plugin officiel PostgreSQL (une seule fois, sur le serveur) :\n\n```\ndokku plugin:install https:\u002F\u002Fgithub.com\u002Fdokku\u002Fdokku-postgres.git\n```\n\nCréez une base et reliez-la à l'application :\n\n```\ndokku postgres:create ma-base\ndokku postgres:link ma-base mon-app\n```\n\nLe `link` injecte automatiquement la variable d'environnement `DATABASE_URL` dans le conteneur de l'application. Vérifiez avec `dokku config:show mon-app`.",{"title":70,"body":71},"Déployer l'application pour la première fois","Depuis votre dépôt local, poussez vers Dokku :\n\n```\ngit push dokku main\n```\n\nDokku détecte le langage (via `Procfile`, `package.json`, `requirements.txt`, `go.mod`…), télécharge le buildpack correspondant, construit l'image Docker, puis démarre le conteneur. Le processus s'affiche en temps réel dans le terminal. À la fin, l'URL de l'application est affichée.",{"title":73,"body":74},"Activer HTTPS avec Let's Encrypt","Installez le plugin Let's Encrypt (une fois par serveur) :\n\n```\ndokku plugin:install https:\u002F\u002Fgithub.com\u002Fdokku\u002Fdokku-letsencrypt.git\n```\n\nDéfinissez l'adresse e-mail pour les notifications d'expiration, puis activez le certificat pour l'application :\n\n```\ndokku letsencrypt:set mon-app email admin@votre-domaine.com\ndokku letsencrypt:enable mon-app\n```\n\nActivez enfin le renouvellement automatique via une tâche cron :\n\n```\ndokku letsencrypt:cron-job --add\n```\n\nSans ce cron, le certificat expirera après 90 jours sans alerte.",{"type":35,"title":76,"body":77},"Gérer plusieurs applications et leurs variables d'environnement","Dokku gère chaque application dans un conteneur isolé. Vous pouvez héberger autant d'applications que votre VPS peut en porter, chacune sur son propre sous-domaine ou domaine personnalisé.\n\n**Variables d'environnement.** Utilisez `dokku config:set` pour injecter des secrets ou des paramètres de configuration :\n\n```\ndokku config:set mon-app NODE_ENV=production \\\n  SECRET_KEY=changeme \\\n  MAIL_HOST=smtp.votre-domaine.com\n```\n\nChaque `config:set` redémarre le conteneur par défaut. Pour regrouper plusieurs modifications sans redémarrage intermédiaire, ajoutez `--no-restart` et déclenchez manuellement `dokku ps:restart mon-app` à la fin.\n\n**Staging vs production.** La pratique courante consiste à créer deux applications sur le même serveur :\n\n```\ndokku apps:create mon-app-staging\ndokku apps:create mon-app-production\n```\n\nChaque remote Git pointe vers sa propre application. Les variables d'environnement sont définies séparément. Les bases de données peuvent être partagées (via des services différents du même plugin) ou distinctes.\n\n**Domaines personnalisés.** Pour associer un domaine existant à une application :\n\n```\ndokku domains:add mon-app mondomaine.com\ndokku domains:add mon-app www.mondomaine.com\n```\n\nAssurez-vous que les enregistrements DNS A de ces domaines pointent vers l'IP du VPS avant d'activer Let's Encrypt.",{"type":35,"title":79,"body":80},"Mises à jour zero-downtime et rollback","Dokku gère le zero-downtime via un mécanisme de checks de santé avant bascule. Par défaut, il attend que le nouveau conteneur réponde sur le port applicatif avant de rediriger le trafic. Vous pouvez affiner ce comportement avec un fichier `CHECKS` à la racine de votre projet :\n\n```\nWAIT=10\nTIMEOUT=60\n\u002Fhealthz Application is up\n```\n\nCe fichier indique à Dokku d'attendre 10 secondes, puis de vérifier que `https:\u002F\u002Fmon-app.votre-domaine.com\u002Fhealthz` retourne une réponse contenant « Application is up » dans les 60 secondes. Si le check échoue, Dokku conserve l'ancienne version en production.\n\n**Tags et rollback.** Dokku conserve les images Docker des déploiements précédents sous forme de tags. Listez-les :\n\n```\ndokku tags:list mon-app\n```\n\nPour revenir à une version antérieure, déployez le tag souhaité :\n\n```\ndokku tags:deploy mon-app v3\n```\n\nCette commande rebascule le trafic vers l'image taguée `v3` sans aucun rebuild — le rollback est quasi-instantané. Pour créer explicitement un tag de sauvegarde avant un déploiement risqué :\n\n```\ndokku tags:create mon-app stable-avant-migration\n```\n\n**Processus.** Vous pouvez également gérer l'échelle des processus (workers, schedulers) séparément de l'application web :\n\n```\ndokku ps:scale mon-app web=1 worker=2\n```",{"type":35,"title":82,"body":83},"Plugins essentiels","Dokku tire sa richesse de son écosystème de plugins officiels. Voici les plus couramment utilisés.\n\n**PostgreSQL.** Le plus utilisé, déjà présenté. Commandes utiles supplémentaires : `dokku postgres:backup ma-base` pour un dump manuel, `dokku postgres:connect ma-base` pour un accès psql interactif.\n\n**Redis.** Même logique que PostgreSQL :\n\n```\ndokku plugin:install https:\u002F\u002Fgithub.com\u002Fdokku\u002Fdokku-redis.git\ndokku redis:create mon-cache\ndokku redis:link mon-cache mon-app\n```\n\nInjecte la variable `REDIS_URL` dans le conteneur.\n\n**Let's Encrypt.** Déjà couvert à l'étape 6. Pour voir l'état des certificats et leurs dates d'expiration :\n\n```\ndokku letsencrypt:list\n```\n\n**Cron (scheduler).** Dokku peut exécuter des tâches planifiées via son scheduler intégré. Créez un fichier `app.json` à la racine de votre projet :\n\n```json\n{\n  \"cron\": [\n    { \"command\": \"php artisan schedule:run\", \"schedule\": \"* * * * *\" }\n  ]\n}\n```\n\nDokku 0.26+ lit ce fichier et crée automatiquement une tâche cron dans le conteneur.\n\n**MySQL.** Pour les applications qui requièrent MySQL :\n\n```\ndokku plugin:install https:\u002F\u002Fgithub.com\u002Fdokku\u002Fdokku-mysql.git\ndokku mysql:create ma-db-mysql\ndokku mysql:link ma-db-mysql mon-app\n```\n\nInjecte `DATABASE_URL` au format `mysql2:\u002F\u002Fuser:password@host:3306\u002Fdb`.",{"type":85,"title":86,"headers":87,"rows":92},"comparison","Dokku vs Caprover vs Easypanel — comparatif 2026",[88,89,90,91],"Critère","Dokku 0.35","CapRover 1.x","Easypanel 2.x",[93,98,103,108,113,118,123,128,133,137,142],[94,95,96,97],"RAM au repos","~100 Mo (Nginx + daemon)","~400 Mo (Swarm + superviseur)","~350 Mo (Traefik + API)",[99,100,101,102],"Interface graphique","Non — CLI uniquement","Oui (tableau de bord web)","Oui (tableau de bord moderne)",[104,105,106,107],"Buildpacks","Heroku buildpacks (CNB inclus)","captain-definition \u002F Docker","Nixpacks ou Dockerfile",[109,110,111,112],"Déploiement Git","git push natif","CLI caprover + webhook","Webhook GitHub \u002F GitLab",[114,115,116,117],"Plugins \u002F marketplace","~100 plugins officiels","Catalogue One-Click (~150 apps)","Marketplace intégrée (~200 apps)",[119,120,121,122],"Zero-downtime","Oui (fichier CHECKS)","Oui (rolling Docker Swarm)","Oui (Traefik labels)",[124,125,126,127],"Rollback","dokku tags:deploy","Rebuild depuis l'image","Redéploiement depuis Git",[129,130,131,132],"Multi-serveur","Non natif (SSH multi-remote)","Oui (Docker Swarm multi-nœuds)","Oui (agents distants)",[134,135,136,135],"Kubernetes","Non","Non (Docker Swarm seulement)",[138,139,140,141],"Licence","MIT","Apache 2.0","Propriétaire (plan gratuit)",[143,144,145,146],"Courbe d'apprentissage","Faible (CLI simple)","Modérée (interface + DNS captain)","Faible (interface intuitive)",{"type":148,"body":149},"tip","**Swap recommandé dès 1 Go de RAM.** Sur un VPS léger, ajoutez 2 Go de swap avant toute chose : un build Node ou Python sans swap est régulièrement tué par l'OOM killer.\n\n**Fichier CHECKS.** Sans ce fichier, Dokku bascule dès que le conteneur démarre, avant même que l'application soit prête à répondre. Un CHECKS minimal évite des coupures de quelques secondes lors de chaque déploiement.\n\n**Rotation des logs.** Les logs Docker grossissent sans limite par défaut. Configurez la rotation dans `\u002Fetc\u002Fdocker\u002Fdaemon.json` :\n\n```json\n{\n  \"log-driver\": \"json-file\",\n  \"log-opts\": { \"max-size\": \"50m\", \"max-file\": \"3\" }\n}\n```\n\nRedémarrez ensuite Docker (`systemctl restart docker`) pour appliquer les paramètres. Les logs applicatifs restent accessibles via `dokku logs mon-app -t`.",{"type":35,"title":151,"body":152},"Dépannage des erreurs fréquentes","**`error: failed to push some refs to 'dokku@votre-domaine.com:mon-app'` — permission denied.**\nVérifiez que votre clé SSH est bien enregistrée : `dokku ssh-keys:list`. Si elle est absente, ajoutez-la avec `dokku ssh-keys:add admin \u003C ~\u002F.ssh\u002Fid_ed25519.pub`. Assurez-vous également que le port 22 n'est pas filtré par le pare-feu du VPS.\n\n**`! [remote rejected] main -> main (pre-receive hook declined)`.**\nCette erreur indique un échec du build côté Dokku. Consultez les logs détaillés avec `dokku logs mon-app` ou relisez la sortie du `git push` ligne par ligne — le buildpack affiche l'erreur précise (dépendance manquante, `npm install` échoué, etc.).\n\n**L'application répond 502 Bad Gateway.**\nNginx reçoit la requête mais le conteneur ne répond pas. Vérifiez l'état du processus : `dokku ps:report mon-app`. Si le statut est `exited`, consultez les logs : `dokku logs mon-app`. Cause fréquente : l'application n'écoute pas sur le port déclaré dans le `Procfile` ou la variable `PORT` injectée par Dokku.\n\n**`letsencrypt:enable` échoue — challenge HTTP-01 timeout.**\nLe défi ACME requiert que le domaine soit résolu vers l'IP du VPS **avant** l'activation. Vérifiez la propagation DNS (`dig +short mon-app.votre-domaine.com`). Si vous êtes derrière un proxy (Cloudflare), désactivez temporairement le proxy (DNS-only) le temps de l'émission du certificat, puis réactivez-le.\n\n**Le build est tué par le noyau (OOM) — `Killed`.**\nL'OOM killer est intervenu faute de mémoire. Ajoutez du swap (voir le bloc conseil ci-dessus) ou migrez vers un VPS avec 2 Go de RAM. Pendant un build actif, la commande `free -m` permet de surveiller la mémoire disponible en temps réel.",{"type":35,"title":154,"body":155},"Pour aller plus loin","Dokku couvre le déploiement d'applications à conteneur unique sur un VPS. Si votre architecture évolue vers plusieurs services interdépendants, plusieurs alternatives de la même famille complètent cette approche. CapRover ajoute une interface graphique et un mode cluster Docker Swarm pour les équipes qui préfèrent un tableau de bord. Easypanel simplifie la gestion multi-services avec Nixpacks et une marketplace d'applications. Pour un reverse proxy autonome sans PaaS complet, Caddy ou Nginx Proxy Manager s'intègrent nativement avec Docker. Chacun de ces outils fonctionne sur un VPS Cloud ServOrbit sous Ubuntu LTS.","Mettez Dokku en production sur votre VPS","Un VPS Cloud ServOrbit sous Ubuntu LTS, léger et abordable, est le terrain idéal pour Dokku et son workflow de déploiement par git push.","Démarrer avec un VPS Cloud","\u002Fvps-cloud",[161,180,196],{"id":162,"slug":163,"slugs":164,"title":168,"excerpt":169,"readTime":170,"views":171,"isPinned":19,"noindex":19,"publishedAt":172,"updatedAt":173,"category":174,"categories":175,"featuredImage":29,"bgImage":30,"posterImage":177,"relatedSolution":178},33,"deployer-avec-caprover",{"fr":163,"en":165,"ar":166,"es":167},"deploy-your-applications-with-caprover-on-a-vps","انشر-تطبيقاتك-باستخدام-caprover-على-خادم-vps","desplegar-aplicaciones-con-caprover-en-un-vps","Déployer vos applications avec CapRover sur un VPS","Guide complet CapRover : installation, captain-definition, CI\u002FCD GitHub Actions, cluster multi-nœuds, sauvegardes et dépannage.",10,2,"2026-05-18T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[176],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-caprover-poster.svg",{"categorySlug":25,"appSlug":179},"caprover",{"id":181,"slug":182,"slugs":183,"title":187,"excerpt":188,"readTime":170,"views":18,"isPinned":19,"noindex":19,"publishedAt":189,"updatedAt":173,"category":190,"categories":191,"featuredImage":29,"bgImage":30,"posterImage":193,"relatedSolution":194},35,"deployer-avec-portainer",{"fr":182,"en":184,"ar":185,"es":186},"deploy-your-applications-with-portainer-on-a-vps","انشر-تطبيقاتك-باستخدام-portainer-على-خادم-vps","desplegar-aplicaciones-con-portainer-en-un-vps","Déployer vos applications avec Portainer sur un VPS","Pilotez Docker visuellement avec Portainer sur votre VPS : conteneurs, stacks, volumes et réseaux gérés depuis une interface web claire.","2026-05-16T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[192],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-portainer-poster.svg",{"categorySlug":25,"appSlug":195},"portainer",{"id":197,"slug":198,"slugs":199,"title":203,"excerpt":204,"readTime":170,"views":205,"isPinned":19,"noindex":19,"publishedAt":206,"updatedAt":207,"category":208,"categories":209,"featuredImage":29,"bgImage":30,"posterImage":211,"relatedSolution":29},36,"deployer-avec-easypanel",{"fr":198,"en":200,"ar":201,"es":202},"deploy-your-applications-with-easypanel-on-a-vps","انشر-تطبيقاتك-باستخدام-easypanel-على-خادم-vps","desplegar-con-easypanel","Déployer vos applications avec Easypanel sur un VPS","Guide complet Easypanel : prérequis chiffrés, installation, Traefik, TLS, bases de données, sauvegardes, dépannage et comparatif Coolify \u002F Dokploy.",4,"2026-05-15T00:00:00+00:00","2026-11-08T01:13:13+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[210],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-easypanel-poster.svg",true,1794270692590]