Appearance
Migrating from Dokploy
- Get the compose file from the Dokploy UI (Compose, General) or the server (
/etc/dokploy/compose/<app>/code/). For Swarm applications, rebuild a compose file fromdocker service inspect. - Clean it. Drop
dokploy-network, Traefik labels, and isolated-deployment suffixes. Keep volume names. - Routing. Domains to
x-yoho.proxy.hostsandport. - Secrets. Move sensitive env into your password manager and
.yoho/secrets; declare inx-yoho.secrets. - Databases.
stateful: trueplusx-yoho.backup; configure a Backup Target inyoho.ymlinstead of Dokploy's S3 backup. - Builds. Dokploy builds on the server; use
builder.location: serverto keep that, or build locally. yoho init,yoho config check,yoho setup. For a compose app reusing its volumes, add amigrateblock to the production Destination:from: dokploy,stop.compose_project(thecom.docker.compose.projectlabel of the Dokploy containers), the reused volumes underclaim.volumes, andtunnel.hostnameswhen a Cloudflare Tunnel fronts the app.yoho migrate planchecks it without changing anything;yoho deploythen stops the Dokploy containers after the build, checks that nothing else mounts the volumes, deploys and switches the tunnel ingress;yoho rollback --cutoverundoes it. Without a tunnel, move DNS after the deploy. Turn off Dokploy auto-deploy first so it does not restart the containers. Swarm applications are not supported bymigrate: stop them by hand beforeyoho deploy.
Rehearse first
For an App that matters, deploy to a second Destination before the real cutover: its own servers (a LAN box works), an overlay that points data at a restored copy, side-effect Services (schedulers, off-Server Backups, the tunnel) replaced with sleep, and test-mode payment keys. The rehearsal Destination has no migrate block, so it never touches the Dokploy stack or the ingress. Set proxy: {tunnel: null} in its overlay (yoho.rehearsal.yml): it would otherwise inherit proxy.tunnel.token_secret and join the live tunnel. For a cold start, stop only the rehearsal App's containers (by the yoho.app and yoho.destination labels) and run yoho deploy -d rehearsal.