Skip to content
SHC Docs

shc move

move a deployment to another node

Move a deployment to another node, environment, or tenant. Falls back to an in-place rename when only the name changes.

—presumed-dead moves a deployment OFF A DEAD NODE, reusing its surviving volumes (RWO block volumes are fenced and rebound to the target; shared-fs data stays on the share). DANGER: if the source node is NOT actually dead, this force-detaches storage out from under a live writer — the command refuses unless the node’s registry state is ‘unreachable’ AND a fresh probe fails right now. The deployment is rebuilt from replicated state: ingress hosts, integrations, vault-backed secrets and posture are replayed; published —port mappings, —var overrides, and any local-only mount data are NOT recoverable (local mounts are refused unless you also pass —discard-local). NO pre-move backup is taken — the dead source cannot be read. When unsure whether the data survives, prefer ‘shc recover’ from an off-host backup. If the dead node later returns, stop its stale compose project there (‘docker compose down’); its containers otherwise restart against fenced-off or stale data. Swarm deployments re-pin to the target automatically.

shc move <source> <target> [flags]
shc move myblog myblog --node node-2 --yes
shc move myblog blog-renamed
shc move myblog myblog -n node-2 --dry-run
shc move myblog myblog -n node-2 --presumed-dead --discard-local --yes
-a, --all-connections moved entire integration graph
--discard-local with --presumed-dead: abandon local-only persistent mounts whose data lives only on the dead node (DATA LOSS for those mounts)
--dry-run show what would be moved without executing
-h, --help help for move
-n, --node string target node for the moved stack
--presumed-dead move off a DEAD node reusing surviving volumes (refused unless the node is registry-unreachable AND a fresh probe fails; no pre-move backup)
-q, --quiet suppress progress output
-r, --rename string rename dependencies (comma-separated old:new pairs)
--runtime string target runtime (compose|swarm|podman)
--storage string storage provider name
--target-environment string target environment
--target-tenant string target tenant
-y, --yes skip confirmation prompt
--config stringArray extra YAML config file to layer on top of auto-discovered config; repeatable, later files win
-d, --debug enable debug mode (default: $SHC_DEBUG)
-e, --environment string environment name (default: $SHC_ENVIRONMENT)
--exclude string comma-separated dotted paths to drop
--fields string comma-separated columns/keys to show (and their order)
--filter string comma-separated dotted paths to keep (drops everything else)
-o, --output string output format: tty|text|json|yaml (default: $SHC_OUTPUT)
-s, --stack string stack name (default: $SHC_STACK)
-t, --tenant string tenant name (default: $SHC_TENANT)
-v, --verbose verbose output (default: $SHC_VERBOSE)
  • shc - Selfhosted Cloud CLI