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