Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Expert guidance for CapRover, the open-source PaaS that turns any Linux server into a Heroku-like platform with automatic HTTPS, one-click app deployment, and Docker-based containerization. Helps developers deploy applications, configure custom domains, and manage the CapRover cluster.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 144% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 99% | 0% |
| case-20 | ✓→✓ | = Same ✓ | 29% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 107% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 73% | 0% |
CapRover, the open-source PaaS that turns any Linux server into a Heroku-like platform with automatic HTTPS, one-click app deployment, and Docker-based containerization. Helps developers deploy applications, configure custom domains, and manage the CapRover cluster.
bash# Prerequisites: Ubuntu 20.04+, Docker installed, ports 80/443/3000 open # Install CapRover docker run -p 80:80 -p 443:443 -p 3000:3000 \ -e ACCEPTED_TERMS=true \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /captain:/captain \ caprover/caprover # Install CLI npm install -g caprover # Set up server (interactive) caprover serversetup # → Enter: IP address, root domain (*.apps.myserver.com), email for SSL, password # Login caprover login # → URL: https://captain.apps.myserver.com
Deploy via CLI, Git, or Dockerfile:
bash# Method 1: CLI deploy from current directory caprover deploy -a my-api # Method 2: Deploy with a captain-definition file cat > captain-definition << 'EOF' { "schemaVersion": 2, "dockerfilePath": "./Dockerfile" } EOF caprover deploy -a my-api
json// captain-definition — Deployment configuration // Option A: Dockerfile-based { "schemaVersion": 2, "dockerfilePath": "./Dockerfile" } // Option B: Image-based (pre-built) { "schemaVersion": 2, "imageName": "ghcr.io/myorg/my-api:v1.2.3" } // Option C: Docker Compose (multi-container) { "schemaVersion": 2, "dockerComposeFileLocation": "./docker-compose.yml" }
Deploy popular software instantly through the web UI:
markdown## Available One-Click Apps (examples) - **Databases**: PostgreSQL, MySQL, MongoDB, Redis, MariaDB - **CMS**: WordPress, Ghost, Strapi, Directus - **DevOps**: GitLab, Drone CI, Jenkins, Portainer - **Monitoring**: Grafana, Prometheus, Uptime Kuma, Plausible - **Communication**: Mattermost, Rocket.Chat, n8n - **Storage**: MinIO, Nextcloud, Filebrowser - **Analytics**: Matomo, PostHog, Umami
typescript// scripts/caprover-api.ts — CapRover API client const CAPROVER_URL = "https://captain.apps.myserver.com"; async function caproverApi(path: string, data?: any) { const token = process.env.CAPROVER_TOKEN!; const response = await fetch(`${CAPROVER_URL}/api/v2${path}`, { method: data ? "POST" : "GET", headers: { "Content-Type": "application/json", "x-captain-auth": token, }, body: data ? JSON.stringify(data) : undefined, }); const result = await response.json(); if (result.status !== 100) throw new Error(result.description); return result.data; } // Create a new app async function createApp(appName: string) { return caproverApi("/user/apps/appDefinitions/register", { appName, hasPersistentData: false, }); } // Update environment variables async function setEnvVars(appName: string, envVars: { key: string; value: string }[]) { return caproverApi("/user/apps/appDefinitions/update", { appName, envVars, }); } // Enable SSL for app async function enableSsl(appName: string) { return caproverApi("/user/apps/appDefinitions/enablecustomdomainssl", { appName, customDomain: `${appName}.apps.myserver.com`, }); } // Scale app async function scaleApp(appName: string, instanceCount: number) { return caproverApi("/user/apps/appDefinitions/update", { appName, instanceCount, }); } // Add custom domain async function addCustomDomain(appName: string, domain: string) { return caproverApi("/user/apps/appDefinitions/customdomain", { appName, customDomain: domain, }); }
Configure volumes for stateful applications:
bash# Via CLI or captain-definition, define persistent directories # In CapRover dashboard: App → App Configs → Persistent Directories # Example persistent paths: # /app/uploads → Store user-uploaded files # /app/data → Application data directory # /var/log/app → Log files
Scale beyond a single server:
bash# On the main server: get join token # Dashboard → Cluster → Add Worker Node # On the worker server: docker swarm join --token SWMTKN-xxx manager-ip:2377 # CapRover automatically distributes containers across nodes # Use placement constraints for specific workloads: # Dashboard → App → App Configs → Node Placement
User request:
I have a Node.js API and a React frontend running in Docker. Set up Caprover for monitoring/deployment.The agent creates the necessary configuration files based on patterns like # Prerequisites: Ubuntu 20.04+, Docker installed, ports 80/4, sets up the integration with the existing Docker setup, configures appropriate defaults for a Node.js + React stack, and provides verification commands to confirm everything is working.
User request:
Caprover is showing errors in our deploy applications. Here are the logs: [error output]The agent analyzes the error output, identifies the root cause by cross-referencing with common Caprover issues, applies the fix (updating configuration, adjusting resource limits, or correcting syntax), and verifies the resolution with appropriate health checks.
*.apps.yourdomain.com to your server IP before installation; SSL won't work without itOther measured skills in the registry, with their headline benchmark lift.