ABN
FR

Client project · Sep – Oct 2026

One deploy panel for 13 production servers

Put 13 servers and their apps under one self-hosted Dokploy panel, then moved 11 live apps over in two days with zero downtime.

Role
Infrastructure lead (for a client)
Period
Sep – Oct 2026

Results

Public figures and figures from the codebase, checked October 2026.

  • 13servers attached to one panelfrom the codebase
  • 11live apps moved in two days, with no downtimefrom the codebase
  • 24commands in the fleet CLIfrom the codebase
  • 402automated tests for the toolingfrom the codebase

The situation

A client’s products were spread over 13 servers at four hosting providers, each set up by hand: nginx here, Caddy there, apps started with pm2 or systemd. Deploying meant SSH and memory.

What I did

  • Read before installing. Dokploy’s stock installer would have stopped on busy ports, left the servers’ cluster, and let its proxy grab ports 80 and 443 at boot — taking every site down. Instead I attached each server alongside its existing web server, with the panel’s proxy bound to a local port and guards so it can never take the public ports.
  • A fleet CLI. 24 commands for snapshots, before/after diffs, external port probes, attaching servers and moving apps.
  • Safe app moves. Each app is deployed side by side, tested against the running copy for every domain, and only then switched over; the old copy stays for seven days and rollback takes seconds. Secrets are compared by hash and never printed.
  • Real client IPs. I fixed IP handling through the extra proxy hop so rate limits and logs stay correct.

Result

All 13 servers sit in one panel, and 11 production apps — SaaS backends, Next.js sites and APIs — moved over in two days, with responses checked identical before and after. Along the way I found and logged an expired certificate and a system updater that had been stuck for 165 days.

Stack

  • Dokploy
  • Docker Swarm
  • Traefik
  • nginx
  • Caddy
  • Bash
  • bats
All work

Have a product to build or fix?

Tell me what you're working on. I'll reply with questions or a first plan.

Start a project