Dokploy est un PaaS open-source basé sur Traefik. Cette variante permet de gérer plusieurs apps sur un même serveur, avec une UI web (logs, backups, push-to-deploy Git).
| Mode | Quand l'utiliser |
|---|---|
Standalone (docker-compose.yml + Caddy) |
Une seule app sur le serveur, contrôle total |
Dokploy (docker-compose.dokploy.yml + Traefik) |
Plusieurs apps sur le serveur, UI de gestion, push-to-deploy |
bash
curl -sSL https://dokploy.com/install.sh | sh
80 et 443 ouverts publiquement (gérés par Traefik via Dokploy)
example.com A <IP_serveur>
*.example.com A <IP_serveur>
À faire une fois sur l'hôte avant le premier déploiement (en SSH root) :
echo "vm.overcommit_memory = 1" > /etc/sysctl.d/99-redis-overcommit.conf
sysctl --system
sysctl vm.overcommit_memory
# vm.overcommit_memory = 1
Non-bloquant : Redis fonctionne sans, mais un warning persiste dans les logs.
Dans l'UI Dokploy :
ekylibre
ekylibre-prod
Onglet General de la compose app :
| Champ | Valeur |
|---|---|
| Source Type | Git |
| Repository URL | https://github.com/ekylibre/ekylibre.git |
| Branch |
5.0-beta (ou main selon votre cible) |
| Compose Path | docker/prod/docker-compose.dokploy.yml |
Dokploy clonera le repo à chaque déploiement.
Onglet Environment de la compose app — coller le contenu adapté de docker/prod/.env.dist :
# === Application ===
RAILS_ENV=production
EKYLIBRE_IMAGE_TAG=latest
HOST_DOMAIN_NAME=example.com
ADMIN_USERNAME=admin
ADMIN_PASSWORD=<mot de passe fort>
SECRET_KEY_BASE=<openssl rand -hex 64>
RAILS_SERVE_STATIC_FILES=true
RAILS_LOG_TO_STDOUT=true
# === Database ===
DB_HOST=db
DB_NAME=eky_production
DB_USERNAME=ekylibre
DB_PASSWORD=<mot de passe fort>
DB_PORT=5432
# === Redis ===
REDIS_URL=redis://redis:6379/0
# === Traefik (Dokploy) ===
# Le wildcard et la racine doivent matcher votre DNS
TRAEFIK_HOST=example.com
TRAEFIK_WILDCARD_HOST=*.example.com
Secrets : utiliser l'UI Dokploy → Environment Secrets (chiffrés au repos) pour
SECRET_KEY_BASE,ADMIN_PASSWORD,DB_PASSWORD.
Dans l'onglet Domains de la compose app, configurer un domaine pour chaque sous-domaine que vous voulez exposer (au moins example.com et *.example.com).
Dokploy déclenche automatiquement Traefik pour provisionner les certificats Let's Encrypt à chaque hostname interrogé.
Différence clé avec Caddy standalone : Dokploy/Traefik s'attend à connaître les hostnames à l'avance via les labels Docker. Pour le wildcard multi-tenant, configurer Traefik avec un certificat DNS-01 wildcard plutôt que HTTP-01 (nécessite un provider DNS supporté : Cloudflare, OVH, Route53…). Voir la doc Traefik.
Cliquer sur Deploy dans l'UI Dokploy.
Dokploy va :
docker-compose.dokploy.yml)Au premier démarrage, le container app charge le lexicon — 5 à 10 minutes.
Suivre dans l'onglet Logs de Dokploy.
Activer dans General → Auto Deploy pour redéployer automatiquement à chaque push sur la branche déclarée.
Pour un déploiement manuel ponctuel, le bouton Deploy force un re-clone + restart.
Ouvrir un shell sur le container app via l'UI Dokploy (onglet Terminal) :
./docker/prod/scripts/tenant-init.sh acme admin@acme.com 'MotDePasseFort!'
Onglet Backups :
db
Dokploy fournit out-of-the-box :
Si EKYLIBRE_IMAGE_TAG=latest : redéployer pour tirer la dernière image (cliquer Deploy dans l'UI).
Pour pinner une version :
EKYLIBRE_IMAGE_TAG=v5.0.0 dans l'onglet EnvironmentVoir Résolution de problèmes — Dokploy hérite des erreurs Docker Compose. Spécifiques à Dokploy :
traefik.* dans docker-compose.dokploy.yml et le mapping de domaine dans l'UIdocker/prod/DOKPLOY.md dans le repo EkylibreCette documentation est open-source. Aidez-nous à l'améliorer en ouvrant une issue ou une pull request.