If you've outgrown shared hosting and want to deploy web applications on your own VPS without wrestling with server configuration files, you've probably heard about self-hosted Platform-as-a-Service (PaaS) tools. Three popular open-source options—Dokploy, Coolify, and CapRover—promise to turn a bare Linux server into a Heroku-like deployment platform. This guide walks you through what each tool does, how they differ, and which one makes the most sense for your first self-hosted deployment.
What Is a Self-Hosted PaaS?
A Platform as a Service (PaaS) sits between your application code and your server's operating system. Instead of manually installing Node.js, setting up Nginx reverse proxies, configuring SSL certificates, and writing systemd service files, a PaaS gives you a web interface or CLI where you can:
- Connect a Git repository
- Click "Deploy"
- Get a running application with HTTPS
Commercial examples include Heroku, Render, and Railway. A self-hosted PaaS runs on your own VPS or dedicated server, giving you full control and avoiding monthly per-app fees. You pay only for the underlying server.
All three tools in this guide—Dokploy, Coolify, and CapRover—use Docker under the hood to isolate applications into containers. You don't need to understand Docker deeply to use them, but knowing it's there helps when troubleshooting.
Prerequisites for All Three Platforms
Before choosing a platform, make sure you have:
- A fresh VPS running Ubuntu 22.04 or 24.04 (or Debian 11+). A server with 2 GB RAM and 1 CPU core is the practical minimum for testing; production workloads need more.
- A domain name with access to DNS settings. You'll point an A record at your server's IP address.
- SSH root access to your server.
- Basic comfort with the Linux command line—copying and pasting commands is enough to start.
All three platforms handle Docker installation for you during their setup process.
CapRover: The Original One-Click PaaS
CapRover is the oldest of the three, launched in 2017. It pioneered the idea of a simple self-hosted PaaS for developers who don't want to learn Kubernetes.
What Makes CapRover Different
- Mature and stable: Years of production use and a large community.
- One-click apps: Pre-configured templates for WordPress, MySQL, Redis, MongoDB, and dozens of other services.
- CLI-first workflow: After initial setup, you deploy apps by running
caprover deployin your project folder. - Simpler architecture: Built on Docker Swarm (single-node mode), which is lighter than Kubernetes but less flexible for complex multi-server setups.
CapRover First Deployment
-
Point your domain's wildcard DNS to your server:
Type: A Name: * Value: your.server.ip.address TTL: 300This lets CapRover automatically create subdomains for each app (e.g.,myapp.yourdomain.com). -
SSH into your server and run the installation command:
bash docker run -p 80:80 -p 443:443 -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -v /captain:/captain caprover/caprover -
Wait two minutes for initialization, then open
http://your.server.ip.address:3000in your browser. -
Log in with the default password
captain42and immediately change it in the settings. -
Enable HTTPS: Go to Settings → CapRover Root Domain, enter your domain (e.g.,
yourdomain.com), and click "Enable HTTPS." CapRover uses Let's Encrypt automatically. -
Install the CLI on your local machine:
bash npm install -g caprover -
Deploy your first app:
bash cd /path/to/your/nodejs-app caprover deployFollow the prompts to select your server and app name. CapRover detects your app type (Node.js, Python, static site) from your project structure and builds it.
Your app is live at https://yourappname.yourdomain.com within minutes.
When to Choose CapRover
- You want the most battle-tested option with extensive documentation.
- You prefer deploying from the command line after initial setup.
- You need one-click databases and services without writing Docker Compose files.
- You're running a single server and don't need multi-node orchestration.
Coolify: The Modern All-in-One Dashboard
Coolify arrived in 2021 as a more polished, UI-focused alternative. It markets itself as a self-hosted Vercel/Netlify/Heroku replacement.
What Makes Coolify Different
- Beautiful web UI: Everything—Git connections, environment variables, logs, metrics—lives in a modern dashboard.
- Git-native: Connect GitHub, GitLab, or Bitbucket repositories and deploy on every push without a CLI.
- Resource management: Built-in monitoring shows CPU, memory, and disk usage per container.
- Team features: Role-based access control for multiple users on the same server.
- Docker Compose support: Deploy complex multi-container apps by providing a compose file.
Coolify First Deployment
- Point your domain's root and wildcard DNS to your server: ``` Type: A Name: @ Value: your.server.ip.address
Type: A Name: * Value: your.server.ip.address ```
-
SSH into your server and run:
bash curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bashThe script installs Docker and Coolify, then prints the dashboard URL. -
Open the dashboard at
http://your.server.ip.address:8000and create your admin account. -
Add your server: Coolify auto-detects the local server. Click "Validate & Save."
-
Create a project: Projects group related applications. Click "+ New Project" and name it.
-
Add a resource: Click "+ New Resource" → "Public Repository" (or connect your GitHub account for private repos). Paste your Git URL.
-
Configure build settings: Coolify auto-detects the framework (Next.js, Laravel, static site, etc.). Adjust the build command and environment variables if needed.
-
Set the domain: Enter
myapp.yourdomain.comin the domain field. Coolify provisions an SSL certificate automatically. -
Deploy: Click "Deploy." Watch real-time logs in the browser as Coolify clones the repo, builds the Docker image, and starts the container.
Your app is live with zero terminal commands after the initial install script.
When to Choose Coolify
- You want a visual, browser-based workflow for everything.
- You're deploying directly from Git and want automatic redeploys on push.
- You need resource monitoring and team access controls out of the box.
- You're comfortable with a newer project (active development means frequent updates but occasional breaking changes).
Dokploy: The Lightweight Newcomer
Dokploy is the newest option, emerging in 2024. It aims to be simpler and faster than Coolify while keeping a modern UI.
What Makes Dokploy Different
- Minimal resource footprint: Uses less RAM and CPU than Coolify, suitable for smaller VPS instances.
- Docker Compose first-class: Built around deploying compose stacks, not just single apps.
- Faster setup: Installs in under a minute on a fresh server.
- Traefik integration: Uses Traefik as the reverse proxy instead of Nginx, giving more flexibility for advanced routing.
- Template marketplace: Community-contributed templates for common stacks (similar to CapRover's one-click apps but defined as compose files).
Dokploy First Deployment
-
Point DNS exactly like Coolify (root and wildcard A records).
-
SSH into your server and run:
bash curl -sSL https://dokploy.com/install.sh | sh -
Access the dashboard at
http://your.server.ip.address:3000and set your admin password. -
Create a project: Click "New Project" and provide a name.
-
Add an application: Click "New Application" inside your project. Choose Git or Docker Image as the source.
-
Connect your repository: Paste the Git URL and select the branch. Dokploy auto-detects the buildpack.
-
Configure the domain: Enter your subdomain in the Domains tab. Dokploy requests a Let's Encrypt certificate.
-
Deploy: Click "Deploy" and monitor the build logs.
Dokploy's interface feels faster and lighter than Coolify, with fewer clicks to reach build logs and settings.
When to Choose Dokploy
- You're running a small VPS (1-2 GB RAM) and need every megabyte.
- You work primarily with Docker Compose for multi-container apps.
- You want a modern UI but don't need advanced team features yet.
- You're willing to use a very new tool with a smaller community but rapid feature development.
Side-by-Side Comparison
| Feature | CapRover | Coolify | Dokploy |
|---|---|---|---|
| Maturity | Oldest (2017) | Established (2021) | Newest (2024) |
| Primary interface | CLI + web dashboard | Web dashboard | Web dashboard |
| Git integration | Via CLI or webhooks | Native GitHub/GitLab | Native Git |
| Resource usage | Low | Medium-high | Low |
| One-click services | Extensive library | Built-in templates | Growing marketplace |
| Monitoring | Basic | Advanced (CPU/RAM graphs) | Basic |
| Multi-user teams | No | Yes | Planned |
| Learning curve | Moderate (CLI required) | Low (all GUI) | Low (all GUI) |
| Best for | Developers comfortable with CLI | Teams needing visibility | Solo devs on tight resources |
Which Should a Beginner Choose?
If you've never self-hosted before:
- Start with Coolify if you want the smoothest experience and don't mind a slightly heavier resource footprint. The UI guides you through every step, and the documentation is excellent.
- Choose CapRover if you're comfortable with terminal commands and want a proven solution that thousands of users run in production.
- Try Dokploy if you have a small VPS (under 2 GB RAM) or already work with Docker Compose files.
Common Pitfalls and Troubleshooting
DNS Propagation Takes Time
After adding DNS records, wait 5-10 minutes before accessing your domain. Use dig yourdomain.com to verify the A record points to your server IP.
Firewall Blocking Ports
All three platforms need ports 80 and 443 open. On Ubuntu with UFW:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw enable
SSL Certificate Failures
Let's Encrypt rate-limits certificate requests. If you see "too many certificates" errors, wait an hour and ensure your DNS is correct before retrying.
Out of Memory Errors
Docker builds can exhaust RAM on small VPS instances. Add swap space:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Application Won't Start
Check the build logs in the dashboard (or caprover logs for CapRover). Common issues:
- Wrong build command or start command
- Missing environment variables (database URL, API keys)
- Port mismatch (your app must listen on the port the platform expects)
Conclusion
Dokploy, Coolify, and CapRover each solve the same core problem—making VPS deployment accessible without deep DevOps knowledge—but they approach it differently. CapRover brings maturity and CLI power, Coolify offers the richest dashboard experience, and Dokploy delivers speed and lightness. For your first self-hosted PaaS, pick the one whose workflow matches how you prefer to work, deploy a test project, and expand from there. You can always switch later, and the skills you learn—DNS configuration, environment variables, Docker basics—transfer across all three platforms and into deeper server administration work.
