--- title: Dokku created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, deployment, paas, docker, heroku-alternative] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Deployment, https://github.com/dokku/dokku] --- # 🚀 Dokku > **Le mini-Heroku qui a fait ses preuves** — PaaS self-hosted en ligne de commande, basé sur Docker, mature depuis 2013, idéal pour les développeurs puristes du terminal. ## 📋 Informations Générales | Champ | Valeur | | :--- | :--- | | **Site web** | [dokku.com](https://dokku.com/) | | **GitHub** | [dokku/dokku](https://github.com/dokku/dokku) | | **License** | MIT | | **Langage** | Shell / Ruby | | **Étoiles GitHub** | 31 919 ⭐ | | **Catégorie** | [[cat-deployment\|Deployment & PaaS]] | ## 📝 Description **Dokku** est le **doyen** des PaaS self-hosted — né en 2013, c'est un mini-Heroku en conteneurs Docker pilotable en CLI. Sa philosophie : **`git push dokku@server:app-name`**, et l'app est buildée, déployée, exposée avec HTTPS automatique. Pas d'UI web pour la gestion des apps — tout passe par SSH + commandes `dokku`. C'est **volontaire** : Dokku s'adresse aux développeurs à l'aise avec le terminal, pas aux no-code enthusiasts. Sous le capot, Dokku orchestre **Docker** + **Nginx** + **Let's Encrypt** + un système de **plugins** très riche. Le **buildpack system** reprend celui d'Heroku : Herokuish détecte le langage, installe les dépendances, build l'app. Les **plugins officiels** couvrent PostgreSQL, MySQL, Redis, Elasticsearch, MariaDB, Let’s Encrypt, backup, cron, etc. La communauté fournit des centaines de plugins tiers. **Maturité** : Dokku est **utilisé en production** par des milliers d'équipes (du solo dev aux startups série A). L'API et les conventions sont stables depuis des années. Pour un projet de plus de 8 ans, la documentation est excellente, les breaking changes sont rares, et le **mode debug** est précis. **Public cible** : **développeurs backend** qui veulent le workflow Heroku sans payer Heroku, **équipes petites** qui déploient 5-20 services, **sysadmins** qui préfèrent SSH à une UI web. Pour une UI web moderne, voir [[app-coolify]] / [[app-dokploy]] ; pour un app store, [[app-runtipi]] ; pour du Swarm, [[app-caprover]]. ## 🚀 Installation ### Installation manuelle (recommandé — un script) ```bash # Sur Debian/Ubuntu (un seul binaire + dépendances) wget -NP . https://dokku.com/bootstrap.sh sudo DOKKU_TAG=v0.34.5 bash bootstrap.sh # Après install : configurer l'utilisateur dokku, le virtualhost, le domaine echo "export DOKKU_DOMAIN=dokku.example.com" | sudo tee -a /etc/profile.d/dokku.sh ``` ### Via Docker (mode "test" ou pour évaluer) ```yaml # docker-compose.yml — usage éphémère uniquement services: dokku: image: dokku/dokku:latest container_name: dokku privileged: true ports: - "22:22" # SSH (git push) - "80:80" - "443:443" volumes: - /var/lib/dokku:/var/lib/dokku ``` > ⚠️ Le mode Docker est **limité** (pas de systemd, plugins restreints). **Pour de la prod, installez Dokku nativement** sur l'hôte (Debian/Ubuntu 22.04+). ## ⚙️ Configuration 1. **Installer les plugins essentiels** : `sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git postgres` 2. **Créer une app** : `dokku apps:create mon-app` 3. **Ajouter un domaine** : `dokku domains:add mon-app mon-app.example.com` 4. **Créer une base** : `dokku postgres:create mon-app-db && dokku postgres:link mon-app-db mon-app` 5. **Configurer les variables d'env** : `dokku config:set mon-app DATABASE_URL=...` 6. **Activer HTTPS** : `dokku letsencrypt:enable mon-app` (auto-renouvellement) 7. **Premier déploiement** : `git remote add dokku dokku@server:mon-app && git push dokku main` 8. **Scaling** : `dokku ps:scale mon-app web=2 worker=1` (multi-processus par dyno) ## 🔗 Alternatives - **Coolify** — PaaS UI moderne, plus accessible, plus de features intégrées - **Dokploy** — concurrent direct avec UI web, basé sur Traefik - **CapRover** — PaaS sur Swarm avec UI web, plus ancien - **Heroku** — l'original, payant (mais générateur d'idées pour Dokku) - **Fly.io** — PaaS managé multi-région, Dockerfile-only - **Render** — PaaS managé simple, gratuit pour les services statiques - **Hatchet / OpenFaaD** — alternatives FaaS/self-hosted ## 🔒 Sécurité - **SSH key auth** : Dokku repose sur SSH, **désactiver le password auth** sur l'hôte - **Mettre à jour régulièrement** : `sudo dokku update` (mensuel minimum) - **Limiter l'accès SSH** par groupe/AllowUsers (Dokku crée un user dédié) - **Activer Let's Encrypt** sur toutes les apps (HSTS, TLS 1.3) - **Ne pas exposer le port 22** directement : passer par WireGuard/Cloudflare Tunnel - **Surveiller les logs** : `/var/log/dokku/` + plugin `dokku-logging-supervisord` ## 📚 Ressources - [Documentation officielle](https://dokku.com/docs/) - [Dépôt GitHub dokku/dokku](https://github.com/dokku/dokku) - [Plugin registry](https://dokku.com/docs/community/plugins/) - [Dokku vs Coolify vs CapRover](https://www.dokku.com/blog/) (blog officiel) - [Awesome Dokku](https://github.com/dokku/awesome-dokku) ## 🔗 Pages Liées - [[cat-deployment]] - [[app-coolify]] - [[app-dokploy]] - [[app-caprover]] - [[app-traefik]] - [[cat-docker]] - [[securisation-home-lab]] - [[recettes-docker-compose]]