116 lines
5.3 KiB
Markdown
116 lines
5.3 KiB
Markdown
---
|
||
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]]
|