Requirements
The official minimum accounts for Docker build overhead. Use more CPU, RAM, and storage for concurrent builds, several databases, large images, or high-traffic services. A 4-vCPU, 8-GB RAM server (
cvm.small) is a more practical starting point for multiple production workloads.
Install Dokploy
1
Deploy Ubuntu 24.04
Deploy a server, select a plan for the control plane plus your applications, and choose Ubuntu 24.04.
2
Connect over SSH
Find the server IP address in the Arct Cloud console, then connect:See Connect via SSH for key and username help.
3
Prepare DNS and a protected bootstrap path
Create an The installer fails if another process already uses
A record such as dokploy.example.com that points to the server’s public IPv4 address. Add an AAAA record only when IPv6 is configured and reachable.Dokploy requires these TCP ports to be available:Check listeners and DNS before installing:
80, 443, or 3000. A port can be free for Dokploy to bind without being reachable from the internet.Before running the installer, attach a network-level firewall or ACL in front of the VPS with this inbound policy:Attach and verify the policy before installation. Docker and Swarm published ports can bypass ordinary UFW rules. If no upstream firewall is available, preinstall Docker and establish a
DOCKER-USER policy by following Docker’s official packet-filtering guidance before running the Dokploy installer; a plain UFW deny rule is not a safe bootstrap boundary.4
Run the official stable installer
Become root and run Dokploy’s documented installation command. The installer selects the latest stable release and installs Docker when it is absent.Do not select the
canary channel for a production control plane. If the script cannot detect the correct address on a multi-interface server, use Dokploy’s documented ADVERTISE_ADDR option rather than reinitializing Swarm manually.5
Create the administrator
From your local computer, create an SSH tunnel and leave it running:Confirm that
http://YOUR_SERVER_IP:3000 is unreachable without the tunnel, then open http://127.0.0.1:3000 through the tunnel. Complete the administrator setup with a long, unique password and enable two-factor authentication from the account settings.Do not continue if port 3000 is reachable directly from a non-allowlisted network. Do not connect Git providers, registries, or production secrets until the panel is protected with HTTPS.6
Configure the panel domain and HTTPS
Confirm
dokploy.example.com resolves to this VPS. In the Dokploy panel’s domain settings, create the panel domain with:Wait for Traefik to issue the certificate, then verify login at
https://dokploy.example.com.7
Remove direct access to port 3000
Only after the HTTPS panel works, remove the public IP-and-port publication recommended by Dokploy:Keep ports
80 and 443 public for Traefik and certificate renewal, keep the upstream firewall deny for port 3000, and close the SSH tunnel. Restrict SSH to trusted addresses where possible.8
Verify the installation
Confirm the Swarm services, proxy, and public endpoint are healthy:Deploy a small test application, attach a test domain, and confirm HTTPS routing and logs work before adding production data.
Persistent Data, Secrets, and Firewall Safety
Dokploy’s control-plane state includes its internal PostgreSQL database and files under/etc/dokploy. The official control-plane backup combines both. Do not remove the Dokploy Docker volumes, Docker secrets, Swarm state, or /etc/dokploy during routine maintenance.
Prefer Dokploy’s domain routing through Traefik instead of direct Advanced > Ports mappings. A domain’s container-port field routes internally and does not publish that port on the host. When a database or service must be externally reachable, allow only the exact source IPs or place it behind a VPN.
Back Up and Restore
Configure and test all three recovery layers:- Add an S3-compatible destination in Dokploy.
- Open Web Server > Backups, create a scheduled control-plane backup, run one immediately, and confirm the
.zipobject exists remotely. It contains the Dokploy PostgreSQL database and/etc/dokploy. - Schedule backups for every managed database and test each backup job.
- Configure volume backups for named volumes. Enable Turn off Container when the application writes to the volume and consistency matters.
- Keep a record of the running Dokploy release with each recovery checkpoint.
/etc/dokploy content and internal database; you may need to sign in again and restart Traefik afterward.
If the server IP changed, update it in Web Server > Server, update DNS, and reconfigure IP-based Git provider callbacks. Restore application databases and volumes separately because they are not part of the control-plane archive.
Test recovery on a separate VPS. A backup is not verified until you can sign in, see projects, deploy, resolve domains, and restore representative database and volume data.
Update and Roll Back Safely
Before an update:- Run and verify a control-plane backup plus all application database and volume backups.
- Review the Dokploy releases for breaking changes.
- Let active builds and deployments finish.
-
Record the current service image:
Troubleshooting
The installer reports that a required port is already in use
The installer reports that a required port is already in use
Run
sudo ss -lntp | grep -E ':(80|443|3000) ' and stop or move the conflicting service. Dokploy’s Traefik must own ports 80 and 443; do not install a second host reverse proxy on those ports.The panel domain returns 404 or has no certificate
The panel domain returns 404 or has no certificate
Confirm DNS points to this VPS before creating the domain, ports
80 and 443 are reachable, HTTPS is enabled, and Let’s Encrypt is selected. Check the Dokploy Traefik logs for routing or ACME errors.The panel became unreachable after port 3000 was removed
The panel became unreachable after port 3000 was removed
Use SSH or the Arct Cloud VNC console to restore the port publication while keeping the upstream firewall deny in place:Access it through the SSH tunnel, fix and verify the HTTPS route, then remove the publication again. Never reopen the bootstrap installer port to the public internet.
A Dokploy service is stuck or repeatedly rejected
A Dokploy service is stuck or repeatedly rejected
Inspect
sudo docker service ps SERVICE_NAME --no-trunc, sudo docker service logs SERVICE_NAME --tail 100, and sudo docker node ls. Address the first Swarm error rather than deleting volumes or reinitializing the cluster.Builds freeze the server or fail unexpectedly
Builds freeze the server or fail unexpectedly
Check
free -h, df -h, sudo docker system df, and service logs. Increase RAM or storage, reduce concurrent builds, or move builds off the control-plane host. Never prune named volumes as a generic disk-space fix.Official Resources
Dokploy Installation
Official requirements, supported distributions, ports, and installer.
Dokploy on GitHub
Source code, security policy, and issue tracker.
Dokploy Releases
Stable releases, fixes, and upgrade notes.
Dokploy is developed by the Dokploy project. Arct Cloud is an independent infrastructure provider and is not affiliated with, sponsored by, or endorsed by Dokploy.