CapRover — Self-Hosted PaaS with One-Click Apps
## Overview
Best use case
CapRover — Self-Hosted PaaS with One-Click Apps is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
## Overview
Teams using CapRover — Self-Hosted PaaS with One-Click Apps should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/caprover/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How CapRover — Self-Hosted PaaS with One-Click Apps Compares
| Feature / Agent | CapRover — Self-Hosted PaaS with One-Click Apps | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
## Overview
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# CapRover — Self-Hosted PaaS with One-Click Apps
## Overview
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.
## Instructions
### Installation
```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 Applications
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"
}
```
### One-Click Apps
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
```
### API for Automation
```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,
});
}
```
### Persistent Storage
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
```
### Multi-Server Cluster
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
```
## Examples
### Example 1: Setting up Caprover for a microservices project
**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.
### Example 2: Troubleshooting deploy applications issues
**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.
## Guidelines
1. **Wildcard DNS first** — Point `*.apps.yourdomain.com` to your server IP before installation; SSL won't work without it
2. **Use captain-definition** — Version the deployment config with your code; don't rely on dashboard settings
3. **Enable HTTPS everywhere** — CapRover auto-provisions Let's Encrypt certificates; click "Enable HTTPS" for each app
4. **Persistent data for databases** — Always configure persistent directories for databases; container restarts lose data otherwise
5. **Resource limits** — Set memory limits per app in the dashboard to prevent one app from consuming all server resources
6. **Use one-click apps for infra** — Don't manually configure PostgreSQL or Redis; use the one-click templates
7. **Automated backups** — CapRover doesn't back up automatically; set up cron jobs for database dumps and volume backups
8. **Monitor with built-in NetData** — CapRover includes NetData for server monitoring; access at captain URL + port 19999Related Skills
clickup-webhooks-events
Create and manage ClickUp webhooks for real-time event notifications. Use when setting up webhook listeners for task/list/space events, implementing two-way sync, or handling ClickUp event payloads. Trigger: "clickup webhook", "clickup events", "clickup notifications", "clickup real-time", "clickup event listener", "clickup webhook create".
clickup-upgrade-migration
Migrate between ClickUp API versions (v2 to v3) and handle breaking changes. Use when upgrading API versions, adapting to endpoint changes, or migrating between ClickUp plan tiers. Trigger: "upgrade clickup API", "clickup v2 to v3", "clickup breaking changes", "clickup API migration", "clickup deprecation".
clickup-security-basics
Secure ClickUp API tokens, implement least-privilege access, and audit usage. Use when securing API keys, rotating tokens, configuring per-environment credentials, or auditing ClickUp API access patterns. Trigger: "clickup security", "clickup secrets", "secure clickup token", "clickup API key rotation", "clickup access audit".
clickup-sdk-patterns
Production-ready ClickUp API v2 client patterns with typed wrappers, error handling, caching, and multi-tenant support. Trigger: "clickup client wrapper", "clickup SDK patterns", "clickup best practices", "clickup typescript client", "clickup API wrapper", "production clickup code".
clickup-reference-architecture
Production architecture for ClickUp API v2 integrations with layered design, custom fields, time tracking, goals, and two-way sync patterns. Trigger: "clickup architecture", "clickup design", "clickup project structure", "clickup custom fields", "clickup time tracking", "clickup goals API".
clickup-rate-limits
Handle ClickUp API rate limits with backoff, queuing, and header monitoring. Use when hitting 429 errors, implementing retry logic, or optimizing API throughput against ClickUp's per-plan rate limits. Trigger: "clickup rate limit", "clickup 429", "clickup throttling", "clickup retry", "clickup backoff", "clickup request queue".
clickup-prod-checklist
Production readiness checklist for ClickUp API v2 integrations covering auth, rate limits, error handling, monitoring, and rollback. Trigger: "clickup production", "clickup go-live", "clickup launch checklist", "clickup prod ready", "deploy clickup to production".
clickup-performance-tuning
Optimize ClickUp API v2 performance with caching, pagination, connection pooling, and request batching patterns. Trigger: "clickup performance", "optimize clickup", "clickup latency", "clickup caching", "clickup slow", "clickup batch requests", "clickup pagination".
clickup-observability
Monitor ClickUp API integrations with metrics, tracing, structured logging, and alerting using Prometheus, OpenTelemetry, and Grafana. Trigger: "clickup monitoring", "clickup metrics", "clickup observability", "monitor clickup", "clickup alerts", "clickup tracing", "clickup dashboard".
clickup-multi-env-setup
Configure ClickUp API access across dev, staging, and production environments with per-environment tokens and workspace isolation. Trigger: "clickup environments", "clickup staging", "clickup dev prod", "clickup environment setup", "clickup config by env", "clickup multi-env".
clickup-migration-deep-dive
Migrate to ClickUp from other project management tools (Jira, Asana, Trello) or migrate data between ClickUp workspaces using API v2. Trigger: "migrate to clickup", "clickup migration", "jira to clickup", "asana to clickup", "trello to clickup", "clickup data migration", "move tasks to clickup", "clickup import".
clickup-local-dev-loop
Set up local development for ClickUp API integrations with testing, mocking, and hot reload. Trigger: "clickup dev setup", "clickup local development", "clickup dev environment", "develop with clickup", "clickup testing setup", "mock clickup API".