Dokploy - Technical Overview
Overview
Dokploy is a free, open-source, self-hostable Platform as a Service (PaaS) that simplifies the deployment and management of applications and databases. Created by developer Mauricio Suárez and launched in April 2024, it serves as an alternative to platforms like Heroku, Vercel, and Netlify, leveraging Docker and Traefik for container orchestration and traffic management.
Key Value Propositions:
- Self-hosted - Full control over your infrastructure with no vendor lock-in
- Docker-native - Built around Docker, Docker Compose, and Docker Swarm
- Zero-config SSL - Automatic Let's Encrypt certificate management
- Multi-server - Scale across multiple nodes with Docker Swarm support
- Open Source - Apache 2.0 license, free to use
High-Level Architecture
Core Components
1. Next.js Application
The main Dokploy application built with Next.js, providing:
- Server-side rendered UI dashboard
- tRPC API for type-safe communication
- Backend logic for deployments and management
2. PostgreSQL Database
Primary data store for:
- User accounts and permissions
- Project and application configurations
- Deployment history and logs
- Domain and certificate settings
3. Redis Queue
Manages deployment job queue to:
- Prevent simultaneous deployments
- Handle async build processes
- Manage server load during deployments
4. Traefik Reverse Proxy
Handles all incoming traffic:
- Dynamic routing to containers
- Automatic SSL termination
- Load balancing across replicas
- HTTP/3 support for improved performance
Deployment Workflow
Build Options
| Build Type | Best For | Features |
|---|---|---|
| Nixpacks | Most apps | Auto-detects language, zero config |
| Dockerfile | Custom builds | Full control over build process |
| Buildpack | Heroku migrations | Compatible with Heroku apps |
| Docker Compose | Multi-service apps | Complex architectures, microservices |
Multi-Server Architecture (Docker Swarm)
Cluster Configuration Steps
- Configure a Docker registry (DockerHub, GHCR, etc.)
- Initialize Docker Swarm on the manager node
- Add worker nodes using the join command
- Deploy applications with replica settings
- Traefik handles load balancing across nodes
Database Support
Database Features
- One-click deployment for all supported databases
- Automated backups to external storage (S3, etc.)
- External connection URLs for database management tools
- Resource monitoring per database container
SSL/TLS Certificate Management
Certificate Options
| Type | Use Case | Configuration |
|---|---|---|
| Let's Encrypt | Public domains | Automatic, free |
| Custom | Enterprise/specific needs | Upload cert + key |
| Cloudflare Origin | Cloudflare-proxied domains | Full (Strict) mode |
Monitoring & Observability
Monitoring Configuration
| Setting | Default | Description |
|---|---|---|
| Server Refresh Rate | 20 seconds | Metric collection frequency |
| Container Refresh Rate | 20 seconds | Per-container metrics |
| Retention Days | 2 days | How long metrics are kept |
| Metrics Port | 4500 | Port for metrics server |
Template System
Popular Templates
- Supabase - Open-source Firebase alternative
- Appwrite - Backend server for web/mobile apps
- Pocketbase - Backend in a single file
- Plausible - Privacy-focused analytics
- Cal.com - Scheduling & booking
- Grafana - Monitoring & visualization
- Directus - Headless CMS
- WordPress - Content management
- Nextcloud - File hosting & collaboration
CI/CD Integration
Auto-Deploy Setup
- Enable Auto Deploy in application settings
- Copy webhook URL from deployment logs
- Add webhook to repository settings
- Push code to trigger automatic deployment
Ecosystem & Integrations
Key Facts (2025)
Project Statistics
- GitHub Stars: ~24,000 (growing rapidly)
- First Release: April 2024
- License: Apache 2.0
- Created by: Mauricio Suárez
Technical Specs
- Stack: Next.js + tRPC + PostgreSQL + Redis
- Proxy: Traefik (with HTTP/3 support)
- Container Runtime: Docker + Docker Swarm
- Required Ports: 80, 443, 3000 (UI), 4500 (metrics)
Supported Languages & Frameworks
- Node.js, Python, Go, Ruby, PHP, Rust, Java
- React, Vue, Angular, Svelte, Next.js, Nuxt
- Django, Flask, Rails, Laravel, Spring
Deployment Options
| Feature | Dokploy | Vercel | Heroku |
|---|---|---|---|
| Self-hosted | Yes | No | No |
| Price | Free | $20+/mo | $25+/mo |
| Multi-server | Yes | N/A | N/A |
| Docker Compose | Yes | No | Limited |
| Database Management | Yes | Limited | Yes |
| SSL Certificates | Auto | Auto | Auto |
Use Cases
Ideal For
- Startups - Deploy MVPs without PaaS costs
- Agencies - Manage multiple client projects
- Enterprises - Self-hosted with compliance requirements
- Developers - Side projects with full control
- Heroku Refugees - Smooth migration path
Security Considerations
Strengths
- Container Isolation - Each app runs in isolated Docker container
- Automatic SSL - Let's Encrypt integration
- Network Isolation - Internal Docker network (dokploy-network)
- No Exposed Ports - Traefik handles all traffic routing
- Scoped Permissions - Role-based access control
Best Practices
- Keep Dokploy Updated - Regular security patches
- Firewall Configuration - Only expose required ports
- Strong Passwords - Use strong credentials for admin
- Backup Strategy - Configure automated database backups
- Monitoring Alerts - Set up threshold notifications
Considerations
- Self-hosted means you manage security
- Database external URLs need proper access control
- Docker Swarm doesn't migrate volumes automatically
- Traefik CE doesn't share ACME certificates across nodes
Comparison with Alternatives
| Feature | Dokploy | Coolify | CapRover |
|---|---|---|---|
| GitHub Stars | ~24K | ~45K | ~13K |
| First Release | 2024 | 2020 | 2018 |
| UI | Modern, Docker-focused | Beginner-friendly | Basic |
| Docker Compose | Native support | Supported | Limited |
| Multi-server | Docker Swarm | Yes | Yes |
| Resource Usage | Lower | Higher | Medium |
| Templates | 100+ | 150+ | 50+ |
| Build Options | Nixpacks, Buildpacks, Dockerfile | Nixpacks, Buildpacks | Dockerfile |
Installation
bash
# One-line installation (as root on Linux)
curl -sSL https://dokploy.com/install.sh | shRequirements
- Linux server (Ubuntu 20.04+ recommended)
- Root access
- Ports 80, 443, 3000 available
- 2GB+ RAM recommended
- Docker (installed automatically if missing)