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

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: true requis 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

  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

🔗 Pages Liées