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

119 lines
5.4 KiB
Markdown

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