---
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]]
