--- 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](https://caprover.com/) | | **GitHub** | [caprover/caprover](https://github.com/caprover/caprover) | | **License** | MIT | | **Langage** | TypeScript / Angular / Node.js | | **Étoiles GitHub** | 15 056 ⭐ | | **Catégorie** | [[cat-deployment\|Deployment & PaaS]] | ## 📝 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é) ```yaml # 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: true`** requis pour piloter Swarm. Isoler CapRover sur un hôte dédié. ### Installation manuelle (script officiel) ```bash # 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 1. **Changer le mot de passe captain** dès la première connexion 2. **Définir le root domain** (ex : `captain.example.com`) — wildcard DNS `*.captain.example.com` vers l'IP 3. **Activer HTTPS** : CapRover demande un cert wildcard via Let's Encrypt (DNS-01 challenge) 4. **Déployer une app** : onglet "Apps" → "Create" → choisir le source (Dockerfile, buildpack, one-click) 5. **Ajouter des workers** : onglet "Cluster" → générer le token → exécuter la commande join sur un autre hôte 6. **Persistance** : monter un volume pour `/var/lib/mysql` ou `/var/lib/postgresql` (sinon perte au restart) 7. **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](https://caprover.com/docs/) - [Dépôt GitHub caprover/caprover](https://github.com/caprover/caprover) - [Blog CapRover](https://caprover.com/blog/) - [Tutoriels vidéo](https://www.youtube.com/results?search_query=caprover+tutorial) - [CapRover vs Coolify (Reddit)](https://www.reddit.com/r/selfhosted/) ## 🔗 Pages Liées - [[cat-deployment]] - [[app-coolify]] - [[app-dokploy]] - [[app-dokku]] - [[app-portainer]] - [[cat-docker]] - [[securisation-home-lab]] - [[recettes-docker-compose]]