Dokploy Installation & Uninstallation#
Dokploy provides a single automated shell script for installation (and updates) but has no equivalent uninstallation script — teardown requires running a sequence of manual Docker commands.
Installation#
The canonical install command (run as root on Linux) is:
curl -sSL https://dokploy.com/install.sh | sh
The script is served from apps/website/public/install.sh and performs these steps in order :
- Preflight checks — must be root, Linux (not macOS or inside a container), and ports 80, 443, and 3000 must be free .
- Docker install — installs Docker
28.5.0viaget.docker.comif absent; on apt-based distros, holds the packages to prevent unintended upgrades . - Docker Swarm init — leaves any existing swarm, then initializes a new one with the detected advertise address .
- Overlay network — creates the
dokploy-networkoverlay network . - Secrets — generates and stores a random Postgres password and auth secret as Docker Secrets .
- Services — deploys
dokploy-postgres(Postgres 16) anddokployapp services viadocker service create. - Traefik — starts
dokploy-traefik(Traefik v3.6.7) as a plaindocker run --restart alwayscontainer on ports 80/443 .
Version selection — the script auto-detects the latest stable GitHub release tag. Override with DOKPLOY_VERSION:
# Canary
export DOKPLOY_VERSION=canary && curl -sSL https://dokploy.com/install.sh | sh
# Specific version
export DOKPLOY_VERSION=v0.29.10 && curl -sSL https://dokploy.com/install.sh | sh
Key environment variables :
| Variable | Purpose |
|---|---|
DOKPLOY_VERSION | Image tag: latest, canary, or a specific version |
ADVERTISE_ADDR | Override auto-detected swarm advertise IP |
DOCKER_SWARM_INIT_ARGS | Extra args for docker swarm init (e.g., custom CIDR) |
ENDPOINT_MODE=dnsrr | Force DNS round-robin (required on kernels without IPVS, e.g. ZimaOS; auto-applied on Proxmox LXC) |
Proxmox LXC is detected automatically and --endpoint-mode dnsrr is applied .
Updating reuses the same script with an update argument :
curl -sSL https://dokploy.com/install.sh | sh -s update
Uninstallation#
There is no automated uninstall script. The official uninstall docs require five manual steps :
Step 1 — Remove Swarm services and the Traefik container:
docker service remove dokploy dokploy-traefik dokploy-postgres dokploy-redis
docker container remove -f dokploy-traefik
Step 2 — Remove volumes:
docker volume remove -f dokploy dokploy-postgres dokploy-redis
Step 3 — Remove networks:
docker network remove -f dokploy-network
docker network remove -f ingress
Step 4 — Docker-wide cleanup (removes all unused images, containers, volumes, and build cache):
docker container prune --force
docker image prune --all --force
docker volume prune --all --force
docker builder prune --all --force
docker system prune --all --volumes --force
⚠️ Step 4 is a full Docker system prune. It will remove all unused Docker resources on the host, not just Dokploy's. Skip or scope these commands if other workloads share the host.
Step 5 — Remove config files:
sudo rm -rf /etc/dokploy
Key Source Files#
| File | Purpose |
|---|---|
apps/website/public/install.sh | Full installation & update script |
apps/docs/content/docs/core/uninstall.mdx | Official uninstall documentation source |
| docs.dokploy.com/docs/core/uninstall | Published uninstall guide |