Skip to content
Back to Cloud Services

CapRover (Self-Host PaaS)

Open-source PaaS on Docker Swarm with a CLI, one-click apps marketplace, Netlify-like deploys, and managed databases.

VPS & Self-HostedIntermediate

Why

CapRover runs on Docker Swarm (single or multi-node), giving you a PaaS with cluster scaling, a one-click app marketplace (WordPress, Metabase, etc.), and 'caprover deploy' from CLI. It auto-provisions TLS via Let's Encrypt and supports Netlify-style tarball deploys.

When

Use CapRover when you want Docker Swarm-based scaling and the one-click marketplace. Compare with Coolify/Dokploy (newer, Compose-native); CapRover is older and stable.

Choose based on whether you prefer Swarm (CapRover) or Compose (Coolify/Dokploy).

How

1. Run the CapRover installer on a fresh Ubuntu VPS. 2. caprover serversetup to initialize. 3. Open the dashboard at captain.<root-domain> and set a root domain. 4. Create an app, set its domain, and connect a Git repo or deploy via CLI. 5. Add a database from the one-click marketplace. 6. caprover deploy from your local machine to push a tarball. ```bash curl -fsSL https://raw.githubusercontent.com/caprover/caprover/master/install | bash caprover serversetup # then install the CLI: npm i -g caprover ```

Example

// vps-caprover — configuration example const config = { provider: "vps" }; Deploy a Node.js app via the CapRover CLI (Netlify-style tarball): ```bash # in your app dir with a Dockerfile (or Procfile) caprover deploy # select your server, app, and tarball source (./) # CapRover uploads, builds, and deploys with auto-TLS ``` Or deploy from a one-click template (Postgres): ```bash # in the dashboard: One-Click Apps > PostgreSQL > Deploy # CapRover creates the DB, exposes a connection string env var, # and you can link it to your app in the app's Env Vars tab ```

Common Problems

  • ⚠Root domain wildcard DNS required — CapRover needs *.rootdomain to point to the server; add a wildcard A record or use the CLI's per-app domain feature.
  • ⚠Swarm mode not initialized — the installer should set it up; if not, run 'docker swarm init' before 'caprover serversetup'.
  • ⚠Configuration drift between environments — use infrastructure-as-code (Terraform/Pulumi) to keep dev/staging/prod identical

Best Practices

  • ✓Use the CLI (caprover deploy) for deploys so they are scriptable in CI, rather than uploading via the dashboard.
  • ✓Pin app image tags and database versions in the one-click template to avoid surprise upgrades on redeploy.
  • ✓For multi-node, add workers via 'docker swarm join' and label them so CapRover places apps on the right nodes (e.g., DB on labeled nodes with volumes).

FAQ

What is CapRover (Self-Host PaaS) and what problem does it solve?

Open-source PaaS on Docker Swarm with a CLI, one-click apps marketplace, Netlify-like deploys, and managed databases. It lets developers deploy, store, and scale without self-managing infrastructure — a core reference for cloud service selection.

How do I get started with CapRover (Self-Host PaaS) in 5 minutes?

Two steps to run it: (1) Run the CapRover installer on a fresh Ubuntu VPS.; (2) caprover serversetup to initialize.. Validate on the free tier first, then wire into production.

What is the #1 pitfall with CapRover (Self-Host PaaS)?

The most frequent issue is: Root domain wildcard DNS required — CapRover needs *.rootdomain to point to the server; add a wildcard A record or use the CLI's per-app domain feature.. Run a pre-launch checklist item by item, and add policy/config scanning in CI.

What are the best practices for CapRover (Self-Host PaaS)?

Best practices for CapRover (Self-Host PaaS) include: Use the CLI (caprover deploy) for deploys so they are scriptable in CI, rather than uploading via the dashboard.; Pin app image tags and database versions in the one-click template to avoid surprise upgrades on redeploy.; For multi-node, add workers via 'docker swarm join' and label them so CapRover places apps on the right nodes (e.g., DB on labeled nodes with volumes).. The first one — "Use the CLI (caprover deploy) for deploys so they are scriptable in CI, rather than uploading via the dashboard." — should be a team default baked into your IaC templates.

How do I control cost and avoid bill surprises with CapRover (Self-Host PaaS)?

Three ways to prevent overspend: (1) tag every resource with env/team and enable billing alarms; (2) set budget thresholds to trigger Slack/email alerts; (3) review idle resources in Cost Explorer regularly and clean them up. Most CapRover (Self-Host PaaS) options offer a free tier — validate within free quota before scaling.