Dokploy is a self-hosted deployment platform that lets you deploy applications and databases from a web dashboard. It uses Docker Swarm under the hood, so you get production-grade container orchestration on a single server. Everything runs as Docker Swarm services managed by Dokploy itself.
Access your dashboard
Your Dokploy dashboard is available at:
http://YOUR_IP_ADDRESS:3000
Dokploy takes around 3-5 minutes to be ready after first boot. The install script runs on startup and needs to pull Docker images and initialise Docker Swarm before the dashboard becomes available. If you see a connection error right after the server starts, wait a moment and try again.
On first access you'll be prompted to create an admin account. Set your email and password to complete setup.
Secure your dashboard
After completing initial setup, restrict access to port 3000 using the firewall in your LumaDock control panel. Allow only your own IP address. The Dokploy dashboard exposes Docker management and should not be left open to the public internet.
Once you have a domain configured, Dokploy can serve the dashboard itself over HTTPS on port 443 instead.
Deploy an application
From a Git repository:
Step 1 – Create a project
Go to Projects in the sidebar and create a new project.
Step 2 – Add a service
Inside the project, click Create Service and select Application.
Step 3 – Connect your repository
Choose your provider (GitHub, GitLab, Bitbucket or Gitea), then select your repository and branch.
Step 4 – Configure and deploy
Set your build method (Nixpacks, Heroku buildpacks, Dockerfile or Docker Compose) and click Deploy.
To deploy from a Docker image instead, select Docker Image when adding a service, enter the image name and tag, configure ports and environment variables, then deploy. For a Compose file, select Docker Compose and paste your docker-compose.yml directly into the editor.
Add a database
Dokploy provisions databases as managed services alongside your apps.
Step 1 – Add a database service
Inside a project, click Create Service and select Database.
Step 2 – Choose your database
Pick from MySQL, PostgreSQL, MongoDB, MariaDB or Redis, set a name and credentials, then deploy.
The database is accessible to your other services within the same Dokploy network using the service name as the hostname.
Configure domains and SSL
Dokploy uses Traefik to handle routing and SSL automatically via Let's Encrypt.
Step 1 – Open application settings
Go to your application and open the Domains tab.
Step 2 – Add your domain
Enter your domain (e.g. app.yourdomain.com) and save.
Step 3 – Point DNS to your server
Make sure your domain's A record points to your server IP. Traefik handles the certificate automatically once DNS resolves.
Set environment variables
Open your application settings and go to the Environment tab. You can paste a .env file directly or add variables one by one.
Mount persistent storage
Open your application settings and go to the Mounts tab. Specify the container path and Dokploy creates a persistent volume for it.
Auto-deploy on git push
Step 1 – Copy the webhook URL
Go to your application's Deployments tab and copy the webhook URL shown there.
Step 2 – Add it to your repository
Paste it as a webhook in your GitHub or GitLab repository settings. Every push to the configured branch triggers a new deployment automatically.
Update Dokploy
curl -sSL https://dokploy.com/install.sh | sh -s update
The update script detects the existing installation and updates in place with no downtime.
Useful commands
docker service ls # Check running Dokploy services docker ps # Check all containers docker service logs dokploy --follow # Dokploy application logs docker service logs dokploy-traefik --follow # Traefik logs docker node ls # Docker Swarm node status df -h # Disk usage free -h # Memory usage
Common issues
Dashboard not loading after boot
The install script runs on first boot and takes 2-4 minutes. Check whether the containers are up:
docker ps
You should see containers for dokploy, traefik, postgres and redis.
Deployment build failing
Check the build logs inside the Dokploy dashboard. Common causes are missing environment variables, insufficient RAM during the build phase (a minimum of 2 GB RAM is recommended) or a misconfigured Dockerfile.
SSL certificate not issuing
Make sure your domain's DNS A record has propagated and points to the server IP. Traefik requests certificates automatically once the domain resolves.
Port 3000 not accessible
Check that the Dokploy container is running and that port 3000 is open in your LumaDock firewall. If you have ufw enabled on the server as well, make sure port 3000 is allowed there too.
