Dokploy

Installation

Get Dokploy up and running on your server within minutes with this easy-to-follow installation guide.

Follow these steps in order to set up Dokploy locally and deploy it to your server, effectively managing Docker containers and applications:

You need to follow this steps in the same order:

  1. Virtual Private Server (VPS)

Virtual Private Server (VPS)

There are multiple VPS providers to choose from:

We have tested on the following Linux Distros:

  • Ubuntu 24.04 LTS
  • Ubuntu 23.10
  • Ubuntu 22.04 LTS
  • Ubuntu 20.04 LTS
  • Ubuntu 18.04 LTS
  • Debian 12
  • Debian 11
  • Debian 10
  • Fedora 40
  • Centos 9
  • Centos 8

Providers

Requirements

To ensure a smooth experience with Dokploy, your server should have at least 2GB of RAM and 30GB of disk space. This specification helps to handle the resources consumed by Docker during builds and prevents system freezes.

Suggestion: For cost efficiency with reliable service, we recommend Hetzner as the best value-for-money VPS provider.

Port Requirements

Before installing Dokploy, ensure the following ports are available on your server:

  • Port 80: HTTP traffic (used by Traefik)
  • Port 443: HTTPS traffic (used by Traefik)
  • Port 3000: Dokploy web interface

Important: The installation will fail if any of these ports are already in use. Make sure to stop any services using these ports before running the installation script.

Docker

Dokploy utilizes Docker, so it is essential to have Docker installed on your server. If Docker is not already installed, Dokploy's installation script will install it automatically. Use the following command to install Dokploy:

Dokploy Cloud: Use Dokploy directly without worrying about maintenance or updates. Enjoy a hassle-free experience with Dokploy Cloud. Sign up

curl -sSL https://dokploy.com/install.sh | sh

See Manual Installation if you want to customize your Dokploy installation.

Advanced Installation Options

The installation script automatically detects and installs the latest stable version from GitHub. However, you can customize the installation using environment variables:

Install Specific Versions

Install Canary Version (Development):

export DOKPLOY_VERSION=canary && curl -sSL https://dokploy.com/install.sh | sh

Install Latest Stable:

export DOKPLOY_VERSION=latest && curl -sSL https://dokploy.com/install.sh | sh

Install a Specific Version:

Every Dokploy release includes its own install.sh as a release asset, which installs exactly that version with the setup it expects. Replace the version tag in the URL with the one you want:

curl -sL https://github.com/Dokploy/dokploy/releases/download/v0.26.6/install.sh | sh

Don't use DOKPLOY_VERSION to install a specific version — the main script at dokploy.com/install.sh always targets the latest release, so its setup may not be compatible with older versions.

Custom Network Configuration

If you need to customize the Docker Swarm network configuration (useful to avoid CIDR conflicts with cloud provider VPCs):

export DOCKER_SWARM_INIT_ARGS="--default-addr-pool 172.20.0.0/16 --default-addr-pool-mask-length 24"
curl -sSL https://dokploy.com/install.sh | sh

Manual Advertise Address

If the script cannot detect your server's IP automatically, or you want the Swarm to use a specific interface (e.g. a VPN/WireGuard IP), specify it manually:

curl -sSL https://dokploy.com/install.sh | sudo ADVERTISE_ADDR=192.168.1.100 sh

If you run the installer with sudo, don't rely on export ADVERTISE_ADDR=... from your user shell — sudo resets the environment, so the variable never reaches the script and it falls back to auto-detection. Pass the variable inline as shown above, or use sudo -E sh to preserve your environment. The same applies to DOKPLOY_VERSION, DOCKER_SWARM_INIT_ARGS, and ENDPOINT_MODE.

Kernels Without IPVS Support

Docker Swarm's default service discovery requires IPVS support in the kernel. Some minimal or appliance-style distributions (e.g. ZimaOS and other Buildroot-based images) ship kernels without it. On those systems, install with DNSRR endpoint mode:

curl -sSL https://dokploy.com/install.sh | sudo ENDPOINT_MODE=dnsrr sh

See Services Can't Reach Each Other (Missing IPVS Kernel Modules) for how to detect this situation and its trade-offs.

Proxmox LXC Support

The installation script automatically detects Proxmox LXC containers and applies the necessary configurations (--endpoint-mode dnsrr) for compatibility.

Updating Dokploy

To update your Dokploy installation to the latest version:

curl -sSL https://dokploy.com/install.sh | sh -s update

Update to Specific Version:

Use the install.sh from that version's GitHub release:

curl -sL https://github.com/Dokploy/dokploy/releases/download/v0.26.6/install.sh | sh -s update

Completing the Setup

After running the installation script, Dokploy and its dependencies will be set up on your server. Here's how to finalize the setup and start using Dokploy:

Accessing Dokploy

Open your web browser and navigate to http://your-ip-from-your-vps:3000. You will be directed to the initial setup page where you can configure the administrative account for Dokploy.

Important: Ensure that your server's firewall allows traffic on port 3000 to access the Dokploy web interface.

Initial Configuration

  1. Create an Admin Account: Fill in the necessary details to set up your administrator account. This account will be the admin account for Dokploy.
home og image

Secure Your Installation

After setting up your admin account, it's crucial to secure your Dokploy installation by enabling HTTPS.

To configure a domain with SSL/TLS certificates for your Dokploy panel, please refer to the Domains section where you'll find detailed instructions for different SSL configurations including Let's Encrypt, Cloudflare, and custom certificates.

To enhance security, it's advisable to restrict access to Dokploy via the server's IP address and port.

Important: Before disabling IP:port access, make sure you have configured a domain with HTTPS working properly. Otherwise, you will lose access to your Dokploy installation. See the Domains section to set this up first.

Once you have verified that your domain is working correctly, you can disable IP:port access by running this command on the server:

docker service update --publish-rm "published=3000,target=3000,mode=host" dokploy

To further secure your installation, consider reading the Security recommendations section.

On this page