5.4 KiB
title: CapRover created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, deployment, paas, docker-swarm, heroku-alternative] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Deployment, https://github.com/caprover/caprover]
🚀 CapRover
Le PaaS self-hosted sur Docker Swarm — interface web simplifiée, multi-cluster, one-click apps, parfait pour ceux qui veulent Swarm sans la complexité.
📋 Informations Générales
| Champ | Valeur |
|---|---|
| Site web | caprover.com |
| GitHub | caprover/caprover |
| License | MIT |
| Langage | TypeScript / Angular / Node.js |
| Étoiles GitHub | 15 056 ⭐ |
| Catégorie | cat-deployment |
📝 Description
CapRover est un PaaS self-hosted créé en 2017, basé sur Docker Swarm (et non Docker Compose comme Coolify). Sa cible : les développeurs qui veulent l'expérience Heroku (git push = deploy) mais en contournant la complexité de Kubernetes ou les limitations de Compose mono-hôte.
L'interface web est simple et directe : on crée une app, on lui assigne un nom, CapRover provisionne un sous-domaine (mon-app.captain.example.com), build via Dockerfile ou buildpack Heroku, et expose via Nginx (reverse proxy intégré) avec Let's Encrypt automatique. Le one-click app store propose des dizaines d'apps pré-packagées (WordPress, Ghost, Plausible, Nextcloud, etc.) — utile pour les non-devs.
Force principale : le mode cluster Swarm est très simple à activer. Un capitaine (control plane) + N workers (captains supplémentaires) — Swarm répartit les services automatiquement. Pas besoin de connaître docker swarm init : CapRover orchestre tout depuis l'UI. On peut ainsi gérer plusieurs VPS hétérogènes (Hetzner, OVH, maison) depuis une seule interface.
Public cible : développeurs full-stack qui veulent déployer 10+ apps rapidement, PME/TPE qui hébergent leur stack (web + DB + cache) en quelques clics, homelabbers qui débutent avec Swarm. Pour un PaaS plus moderne, voir app-coolify ou app-dokploy ; pour un PaaS plus âgé type Heroku-CLI, app-dokku ; pour un app store orienté utilisateur, app-runtipi.
🚀 Installation
Via Docker (recommandé)
# docker-compose.yml
services:
caprover:
image: caprover/caprover:latest
container_name: caprover
restart: unless-stopped
ports:
- "80:80" # HTTP
- "443:443" # HTTPS
- "3000:3000" # UI Captain
- "2377:2377" # Swarm (entre noueds)
- "7946:7946" # Swarm gossip
- "4789:4789/udp" # Swarm overlay
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data:/captain/data
privileged: true
⚠️ Mode
privileged: truerequis pour piloter Swarm. Isoler CapRover sur un hôte dédié.
Installation manuelle (script officiel)
# Sur un hôte Debian/Ubuntu vierge
curl -sL https://caprover.com/self-host-captain.sh | bash
# UI sur http://IP:3000
# Login par défaut : captain / captain42 (à changer !)
⚙️ Configuration
- Changer le mot de passe captain dès la première connexion
- Définir le root domain (ex :
captain.example.com) — wildcard DNS*.captain.example.comvers l'IP - Activer HTTPS : CapRover demande un cert wildcard via Let's Encrypt (DNS-01 challenge)
- Déployer une app : onglet "Apps" → "Create" → choisir le source (Dockerfile, buildpack, one-click)
- Ajouter des workers : onglet "Cluster" → générer le token → exécuter la commande join sur un autre hôte
- Persistance : monter un volume pour
/var/lib/mysqlou/var/lib/postgresql(sinon perte au restart) - Activer le cluster build : onglet Cluster → choisir où builder l'image (captain ou worker)
🔗 Alternatives
- Coolify — PaaS moderne, UI plus riche, basé sur Docker (pas Swarm)
- Dokploy — concurrent récent, basé sur Traefik, UI Next.js
- Dokku — PaaS en CLI uniquement, pas Swarm
- Runtipi — app store self-hosted, plus simple, pas Swarm
- Portainer — GUI Docker générique, moins orienté "PaaS workflow"
- Rancher — orchestrateur Kubernetes, beaucoup plus complexe
- Heroku / Render / Fly.io — PaaS managés payants
🔒 Sécurité
- Changer le mot de passe par défaut (
captain42) immédiatement - Activer 2FA sur le compte captain
- Restreindre l'UI : CapRover expose
3000— mettre un reverse proxy (Caddy/Traefik) + Authelia devant - TLS forcé : CapRover signe des certs via Let's Encrypt, vérifier le renouvellement
- Backup du volume
./data(config captain, état Swarm) - Worker isolation : ne pas donner accès SSH aux workers depuis le captain, utiliser le token
📚 Ressources
- Documentation officielle
- Dépôt GitHub caprover/caprover
- Blog CapRover
- Tutoriels vidéo
- CapRover vs Coolify (Reddit)