$docker.recipes

CapRover Application Platform

intermediate

Easy-to-use PaaS to deploy applications with one-click apps.

[i]Overview

CapRover is an open-source Platform-as-a-Service (PaaS) built on Docker that transforms any Linux server into a powerful application hosting platform. Created to simplify the deployment process for developers and small teams, CapRover provides a web-based dashboard for managing applications, databases, and services without requiring deep DevOps expertise. It automatically handles container orchestration, load balancing, and SSL certificate management through integrated NGINX reverse proxy and Certbot automation. This stack combines CapRover's application management capabilities with NGINX's proven performance for HTTP routing and SSL termination, while Certbot ensures automatic certificate provisioning and renewal from Let's Encrypt. The platform excels at bridging the gap between simple shared hosting and complex orchestration platforms like Kubernetes, offering one-click deployments for popular applications while maintaining the flexibility to deploy custom Docker images. Development teams, startups, and individual developers benefit from this combination when they need reliable application hosting with minimal infrastructure management overhead, making it particularly valuable for rapid prototyping, staging environments, and production workloads that don't require enterprise-scale orchestration complexity.

[*]Key Features

  • [+]Web-based dashboard for application lifecycle management with real-time deployment logs
  • [+]One-click marketplace apps including WordPress, Ghost, MongoDB, Redis, and PostgreSQL
  • [+]Automatic NGINX reverse proxy configuration with custom domain mapping
  • [+]Built-in Let's Encrypt integration via Certbot for automatic SSL certificate management
  • [+]Docker registry support for private image deployments with authentication
  • [+]Application clustering and zero-downtime deployments with health checks
  • [+]Built-in monitoring dashboard with container resource usage and application metrics
  • [+]CLI tool for CI/CD pipeline integration and automated deployments

[#]Common Use Cases

  • [1]Rapid prototyping environment for development teams testing multiple microservices
  • [2]Small to medium business hosting platform for WordPress sites and web applications
  • [3]Staging and testing infrastructure for software development workflows
  • [4]Personal cloud platform for self-hosted alternatives to SaaS applications
  • [5]Startup MVP deployment platform requiring quick iteration and scaling
  • [6]Educational environment for teaching containerization and deployment concepts
  • [7]Remote team collaboration platform hosting development tools and databases

[!]Prerequisites

  • [!]Linux server with Docker and Docker Compose installed (Ubuntu 18+ recommended)
  • [!]Minimum 1GB RAM and 10GB storage (2GB+ RAM recommended for multiple applications)
  • [!]Domain name with DNS access for subdomain configuration and SSL certificates
  • [!]Ports 80, 443, and 3000 available and accessible from the internet
  • [!]SERVER_IP environment variable configured with your server's public IP address
  • [!]Basic understanding of Docker concepts and command line interface
[!]

WARNING: For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

[$]docker-compose.yml

[docker-compose.yml]
1services:
2 caprover:
3 image: caprover/caprover:latest
4 container_name: caprover
5 environment:
6 - CAPTAIN_IS_DEBUG=0
7 - MAIN_NODE_IP_ADDRESS=${SERVER_IP}
8 volumes:
9 - /var/run/docker.sock:/var/run/docker.sock
10 - caprover-data:/captain
11 ports:
12 - "80:80"
13 - "443:443"
14 - "3000:3000"
15 networks:
16 - caprover-network
17 restart: unless-stopped
18
19volumes:
20 caprover-data:
21
22networks:
23 caprover-network:
24 driver: bridge

[$].env Template

[.env]
1# CapRover
2SERVER_IP=your_server_ip
3
4# Initial captain password: captain42
5# Change immediately after first login

[i]Usage Notes

  1. [1]Dashboard at http://captain.your-domain:3000
  2. [2]Default password: captain42
  3. [3]One-click app deployment
  4. [4]Automatic SSL certificates
  5. [5]Use CLI: npm i -g caprover

[>]Quick Start

[terminal]
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 caprover:
5 image: caprover/caprover:latest
6 container_name: caprover
7 environment:
8 - CAPTAIN_IS_DEBUG=0
9 - MAIN_NODE_IP_ADDRESS=${SERVER_IP}
10 volumes:
11 - /var/run/docker.sock:/var/run/docker.sock
12 - caprover-data:/captain
13 ports:
14 - "80:80"
15 - "443:443"
16 - "3000:3000"
17 networks:
18 - caprover-network
19 restart: unless-stopped
20
21volumes:
22 caprover-data:
23
24networks:
25 caprover-network:
26 driver: bridge
27EOF
28
29# 2. Create the .env file
30cat > .env << 'EOF'
31# CapRover
32SERVER_IP=your_server_ip
33
34# Initial captain password: captain42
35# Change immediately after first login
36EOF
37
38# 3. Start the services
39docker compose up -d
40
41# 4. View logs
42docker compose logs -f

[>]One-Liner

Run this command to download and set up the recipe in one step:

[terminal]
1curl -fsSL https://docker.recipes/api/recipes/caprover-paas/run | bash

[?]Troubleshooting

  • [!]CapRover dashboard shows 'Cannot connect to Docker daemon': Ensure Docker service is running and user has Docker group permissions
  • [!]SSL certificate generation fails: Verify domain DNS points to server IP and ports 80/443 are not blocked by firewall
  • [!]Application deployment stuck at 'Building': Check Docker daemon has sufficient disk space and memory for image builds
  • [!]Captain.domain:3000 not accessible: Confirm SERVER_IP environment variable matches actual server IP and port 3000 is open
  • [!]One-click apps fail to install: Verify Docker Hub connectivity and check CapRover logs for registry authentication issues
  • [!]NGINX proxy errors after domain changes: Restart CapRover container to reload NGINX configuration with updated domain mappings

Community Notes

Loading...
Loading notes...

## Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license