Dokploy is an open-source, self-hosted deployment platform, an alternative to Heroku, Vercel or Netlify that runs on your own server. It deploys applications from Git (or Docker images), runs Docker Compose stacks, manages databases with scheduled backups, and routes domains with automatic HTTPS through Traefik. Under the hood it uses Docker Swarm, which makes adding more servers straightforward.
Comparison: Coolify (more features and one-click services) and CapRover.
Requirements
- A fresh Ubuntu or Debian VPS (other distributions are supported by the script).
- At least 2 GB RAM and 30 GB disk. Add what your apps and builds need.
- Ports 80, 443 and 3000 free (3000 is the initial dashboard).
Install
curl -sSL https://dokploy.com/install.sh | sh
The script installs Docker, initialises Swarm, and starts Dokploy, Traefik, PostgreSQL and Redis as services. Open http://<server-ip>:3000 and create the admin account immediately.
Initial setup
- Dashboard domain: Settings → Server → set a domain (A record to the server) with Let’s Encrypt. Then use only HTTPS, and close port 3000 in your firewall. See UFW.
- Git providers: connect GitHub, GitLab, Bitbucket or Gitea for private repositories and auto-deploy.
- Registry (optional, needed for multi-server): images built on one node are pushed so other nodes can pull them.
- Notifications: Slack, Discord, Telegram or email for build and backup status.
Deploy an application
Create a project, then add an application:
- Source: a Git repository and branch, a Docker image, or a raw Dockerfile.
- Build type: Nixpacks (auto-detect), Dockerfile, Heroku/Paketo buildpacks, or static.
- Environment variables for configuration and secrets.
- Domains: add
app.example.com, set the container port, and enable HTTPS. Traefik requests the certificate. - Auto deploy: enable it, and every push to the branch redeploys (via webhook or the Git provider integration).
Logs, a container terminal, and resource graphs are available per app. Use rollbacks to return to a previous deployment.
Docker Compose apps
Paste or link a docker-compose.yml, and Dokploy deploys it as a stack. Assign domains to services from the UI. This is the easiest way to run existing self-hosted apps. Templates for popular apps are included.
Databases and backups
Create PostgreSQL, MySQL, MariaDB, MongoDB or Redis. Configure scheduled backups to S3-compatible storage (AWS S3, Backblaze B2, MinIO, R2), and test a restore. Don’t expose database ports publicly unless needed, and use strong passwords. See MinIO and database backup automation.
Multi-server and scaling
- Remote servers: add servers over SSH, and deploy apps to them. The Dokploy server can stay small.
- Swarm nodes: join workers to the cluster, and run replicas of a service for more capacity.
For most small projects, one VPS is plenty. Upgrade the plan when builds or apps outgrow it.
Security
- HTTPS on the dashboard, a strong password, and 2FA enabled.
- Close port 3000 once the domain works. Keep only 22, 80 and 443 open.
- Protect SSH (key-only login). Dokploy uses SSH keys for remote servers. See SSH keys and Fail2ban.
- Update Dokploy from the dashboard regularly, and keep base images updated.
Maintenance
- Clean up old images and build cache (there’s a built-in cleanup). See Docker disk cleanup.
- Monitor disk. Builds fill it faster than you’d expect. See disk full troubleshooting.
- Back up
/etc/dokployand the Dokploy database along with your app data.
Quick reference
| Item | Value |
|---|---|
| Install | curl -sSL https://dokploy.com/install.sh | sh |
| Initial dashboard | http://<ip>:3000 |
| Proxy | Traefik (automatic Let’s Encrypt) |
| Orchestration | Docker Swarm |
| Data | /etc/dokploy |
Related: Docker Swarm basics and Docker VPS hosting.