Files
wiki/Catalogue-Self-Hosted/apps/app-dokku.md
T
2026-06-09 18:40:21 +02:00

116 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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, Lets 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]]