Initial vault setup
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
---
|
||||
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]]
|
||||
Reference in New Issue
Block a user