Dokploy VPS Setup Guide 2026: Open-Source Vercel Alternative
Deploy Dokploy on your VPS for a self-hosted deployment platform. Complete setup guide with Docker, Traefik, and automatic SSL.
Dokploy VPS Setup Guide: Self-Hosted Deployment Platform
Dokploy is an open-source PaaS that makes deploying applications dead simple. Think of it as your personal Vercel/Railway that runs on any VPS.
What is Dokploy?
Dokploy handles the boring parts of deployment:
- Git-based deployments — Push to deploy
- Automatic SSL — Let's Encrypt integration
- Docker native — Run any containerized app
- Database templates — One-click PostgreSQL, MySQL, Redis
- Traefik routing — Automatic domain management
- Real-time logs — Monitor deployments live
Dokploy vs Other Platforms
| Feature | Dokploy | Coolify | Vercel |
|---|---|---|---|
| Price | Free (VPS cost) | Free (VPS cost) | $20+/mo |
| Self-hosted | ✅ | ✅ | ❌ |
| Docker Compose | ✅ | ✅ | ❌ |
| Multi-server | ✅ | ✅ | ❌ |
| UI Simplicity | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Features | Growing | Mature | Most |
Dokploy is newer but has a cleaner UI and faster setup.
VPS Requirements
Minimum:
- 1 vCPU, 2GB RAM
- 25GB storage
- Ubuntu 22.04+
Recommended:
- 2 vCPU, 4GB RAM
- 50GB storage
- Ubuntu 22.04 or Debian 12
Best VPS for Dokploy
| Provider | Plan | Specs | Price |
|---|---|---|---|
| Hostinger | KVM1 | 1 vCPU, 4GB RAM | $4.99/mo |
| Hetzner | CX21 | 2 vCPU, 4GB RAM | €5.39/mo |
| Vultr | VC2 | 1 vCPU, 2GB RAM | $12/mo |
Installation
Step 1: Create VPS
Step 2: DNS Setup
Point your domain before installation:
A dokploy.yourdomain.com → your-server-ip
A *.dokploy.yourdomain.com → your-server-ip
The wildcard lets each app get a subdomain.
Step 3: Connect to Server
ssh root@your-server-ip
# Update system
apt update && apt upgrade -y
Step 4: Install Dokploy
One command does everything:
curl -sSL https://dokploy.com/install.sh | sh
This installs:
- Docker
- Dokploy application
- Traefik reverse proxy
- PostgreSQL (for Dokploy data)
Takes about 3-5 minutes.
Step 5: Access Dashboard
http://your-server-ip:3000
Create your admin account. Use a strong password.
Step 6: Configure Domain & SSL
- Go to Settings
- Set Server Domain:
dokploy.yourdomain.com - Enable SSL/TLS
- Enter email for Let's Encrypt
- Save
Now access via https://dokploy.yourdomain.com
Deploying Applications
Deploy from GitHub
- Projects → New Project
- Add Application
- Select source: GitHub
- Authorize GitHub access
- Choose repository
- Click Deploy
Dokploy auto-detects:
- Node.js (package.json)
- Python (requirements.txt)
- Go (go.mod)
- Dockerfile
Deploy with Docker Compose
For existing compose projects:
- Create Application → Docker Compose
- Paste your compose file or select from repo
- Deploy
Example compose:
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
Deploy Dockerfile
- Create Application → Dockerfile
- Point to repo with Dockerfile
- Dokploy builds and deploys
Database Setup
PostgreSQL
- Projects → Select project
- Add Service → PostgreSQL
- Set database name and password
- Deploy
Connection string shows in dashboard:
postgresql://postgres:password@postgres-xxx:5432/dbname
MySQL
Same process:
- Add Service → MySQL
- Configure credentials
- Deploy
Redis
- Add Service → Redis
- Deploy
- Use
redis://redis-xxx:6379
Custom Domains
Add Domain to App
- Select application
- Domains tab
- Add:
app.yourdomain.com - SSL automatically provisioned
Redirect www to non-www
Add both domains, Dokploy handles redirects:
yourdomain.com
www.yourdomain.com
Environment Variables
Application Variables
- Select app → Environment
- Add variables:
DATABASE_URL=postgresql://...
SECRET_KEY=your-secret
NODE_ENV=production
Secrets (Encrypted)
For sensitive data:
- Settings → Secrets
- Create secret
- Reference in apps:
{{SECRET_NAME}}
Deployments & Rollbacks
Automatic Deployments
Enable webhooks:
- App settings → Build
- Enable Auto Deploy
- Push to main triggers rebuild
Manual Deploy
Click Deploy button anytime.
Rollback
- Deployments tab
- Find previous deployment
- Click Rollback
Monitoring
Real-time Logs
- Select application
- Logs tab
- Stream logs in real-time
Resource Usage
Dashboard shows:
- CPU usage per app
- Memory consumption
- Disk usage
- Network traffic
Health Checks
Configure in app settings:
Health Check Path: /health
Interval: 30s
Timeout: 5s
Backups
Database Backups
- Select database
- Backups → Enable
- Set schedule
- Configure destination (S3, local)
Manual Backup
# On VPS
docker exec dokploy-postgres pg_dump -U postgres > backup.sql
Volume Backups
For apps with persistent data:
docker run --rm \
-v app_data:/data \
-v /backup:/backup \
alpine tar czf /backup/data.tar.gz /data
Multi-Server Setup
Dokploy supports multiple servers:
- Servers → Add Server
- Install Dokploy agent on new VPS:
curl -sSL https://dokploy.com/install-agent.sh | sh - Add server token to Dokploy
- Deploy apps to specific servers
Use cases:
- Separate staging/production
- Geographic distribution
- Resource isolation
Common Deployments
Next.js
- Create app → GitHub → Select repo
- Build command:
npm run build - Start command:
npm start - Port: 3000
FastAPI
Dockerfile:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Static Sites
- Create app → GitHub
- Build:
npm run build - Publish directory:
distorbuild - Dokploy serves static files
WordPress
- Add Service → WordPress
- One-click setup includes MySQL
- Configure domain
- Done
Troubleshooting
Deployment Fails
Check logs:
- App → Deployments → Failed deployment
- View build logs
- Common issues:
- Missing dependencies
- Port mismatch
- Build command wrong
SSL Not Working
- Verify DNS points to server
- Wait for propagation
- Check ports 80/443 open
- Restart Traefik:
docker restart dokploy-traefik
Out of Memory
- Check with
docker stats - Add swap:
fallocate -l 2G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile - Reduce concurrent apps
Container Won't Start
# Check container logs
docker logs container-name
# Common fixes:
# - Wrong port exposed
# - Missing env variables
# - Healthcheck failing
Performance Optimization
Enable Swap
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile swap swap defaults 0 0' >> /etc/fstab
Docker Cleanup
# Remove unused images
docker system prune -a
# Schedule weekly cleanup
echo "0 3 * * 0 docker system prune -af" | crontab -
Resource Limits
Set per-app in compose:
services:
app:
deploy:
resources:
limits:
memory: 512M
cpus: '0.5'
API Access
Dokploy has a REST API:
# Get auth token from settings
# List projects
curl -X GET https://dokploy.yourdomain.com/api/projects \
-H "Authorization: Bearer YOUR_TOKEN"
# Trigger deployment
curl -X POST https://dokploy.yourdomain.com/api/application/deploy \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{"applicationId": "xxx"}'
FAQ
How many apps can Dokploy handle?
On 4GB VPS: 5-15 lightweight apps comfortably. More with proper resource limits.
Is Dokploy production-ready?
Yes, it's actively maintained and used in production. v0.8+ is stable.
Dokploy vs Coolify?
Both are excellent. Dokploy has simpler UI, Coolify has more features. Try both.
Can I migrate from Heroku?
Yes! Add your repo, configure buildpacks or Dockerfile, deploy.
How do I update Dokploy?
curl -sSL https://dokploy.com/install.sh | sh
Same command updates to latest.
Summary
Dokploy turns a $5 VPS into a powerful deployment platform:
| What You Get | Cost |
|---|---|
| Unlimited apps | VPS cost only |
| Automatic SSL | Included |
| Git deployments | Included |
| Databases | Included |
| Custom domains | Unlimited |
Recommended Setup:
- Get Hostinger VPS ($4.99/mo)
- Install Dokploy
- Connect GitHub
- Deploy everything
That's $5/month for your own Vercel. No limits, no vendor lock-in, full control.
Ready to get started?
Get the best VPS hosting deal today. Hostinger offers 4GB RAM VPS starting at just $4.99/mo.
Get Hostinger VPS — $4.99/mo// up to 75% off + free domain included
// related topics
fordnox
Expert VPS reviews and hosting guides. We test every provider we recommend.
// last updated: February 8, 2026. Disclosure: This article may contain affiliate links.