wodby migrate wodby1 server
Preview, apply, or verify every app migration from a Wodby 1 server
Migrate every application hosted on one Wodby 1 server. The default command is a read-only preview; --apply performs the resumable migrations and --verify validates them after testing and DNS cutover. Each application has an isolated resume-state file and is processed sequentially. Runtime failures are reported per app while remaining apps continue. A shared --target-git-integration-id searches that integration for every source repository by name; use --target-repository-map for per-app integrations or repository-name overrides. A missing repository match falls back to unlinked Custom CI. Use --skip-code only to omit code migration intentionally. By default, the newest successful file for each required backup component is selected. Use repeatable --source-backup APP/INSTANCE=BACKUP_UUID values to override individual snapshots, or --skip-data to omit data. Changes after each selected backup completed are not migrated. Test the migrated apps before changing DNS, then use --verify. When per-app state exists, --apply preserves the aggregate saved plan and continues completed work; --apply --restart replaces the saved plan after showing and confirming removal of only resources recorded as created by these migrations. Pre-existing target apps and reused resources are preserved. Restart is refused after successful verification or while any target operation remains ambiguous. --rollback deletes the Wodby 2 resources this migration created and discards its state; it refuses once --verify has succeeded, because DNS then points at Wodby 2.
Usage
wodby migrate wodby1 server SOURCE_SERVER_UUID [flags]
Examples
export WODBY1_SOURCE_TOKEN=...
export WODBY_API_KEY=...
wodby migrate wodby1 server SERVER_UUID --target-cluster CLUSTER [target and mapping options]
wodby migrate wodby1 server SERVER_UUID --target-cluster CLUSTER [same options] --apply
wodby migrate wodby1 server SERVER_UUID --target-cluster CLUSTER [same options] --verify
Options
| Flag | Description | Default |
|---|---|---|
--add-missing-services |
Add mapped services missing from the target stack when an exact Wodby 2 service is available | true |
--allow-unsupported-drupal |
Allow Drupal 8/9 when the nginx preset does not identify Drupal 10 or newer and you have independently confirmed the application was upgraded | false |
--apply |
Create the target and import data using the displayed plan | false |
--exclude-app stringArray |
Exclude an app by exact UUID or name (repeatable) | [] |
--exclude-instance stringArray |
Exclude an instance by UUID or APP/INSTANCE (repeatable) | [] |
-h, --help |
help for server | false |
-o, --output string |
Output format: text or json | text |
--poll-interval duration |
Target operation polling interval | 2s |
--restart |
Replace the saved plan, safely removing migration-created target resources first when necessary (requires --apply) | false |
--retry-ambiguous string |
Retry exactly one inspected ambiguous operation ID | - |
--rollback |
Delete the Wodby 2 resources this migration created and discard its resume state | false |
--skip-code |
Intentionally omit repository/build-source migration | false |
--skip-data |
Intentionally omit database and files imports | false |
--source-backup stringArray |
Select a successful backup by APP/INSTANCE=BACKUP_UUID or INSTANCE_UUID=BACKUP_UUID (repeatable) | [] |
--source-base-url string |
Wodby 1 API base URL | https://api.wodby.com |
--source-token string |
Wodby 1 API token (defaults to WODBY1_SOURCE_TOKEN) | - |
--state-file string |
Base path for secure per-app resume-state files (defaults to the system temporary directory) | - |
--target-ci-integration-id int |
Wodby 2 CI integration ID override (otherwise Wodby CI with a linked repository, or automatic Custom CI fallback) | 0 |
--target-cluster string |
Wodby 2 cluster ID or exact name | - |
--target-code-service string |
Target connect-build service name when the stack has more than one | - |
--target-env-map stringArray |
Source-to-target environment mapping (SOURCE=TARGET) | [] |
--target-git-integration-id int |
Optional Wodby 2 Git integration ID used to find and link the source repository | 0 |
--target-git-ref string |
Git branch, tag, or commit to build (defaults to the source ref) | - |
--target-git-ref-type string |
Git ref type: branch, tag, or commit | - |
--target-import-map stringArray |
Backup-to-import mapping ([APP/][INSTANCE/]COMPONENT=SERVICE:IMPORT) | [] |
--target-project string |
Wodby 2 project ID or exact name (defaults to a project-owned cluster's owner; otherwise organization-owned) | - |
--target-repository-map stringArray |
Per-app Git target (APP=GIT_INTEGRATION_ID[:REPOSITORY_NAME[:SERVICE]]) | [] |
--target-repository-name string |
Exact repository name in the selected Wodby 2 Git integration (defaults to the name derived from the Wodby 1 repository URL) | - |
--target-service-map stringArray |
Source-to-target service mapping ([APP/][INSTANCE/]SOURCE=TARGET) | [] |
--target-stack-id int |
Existing Wodby 2 stack ID override (managed Drupal/WordPress apps get a new catalog stack by default) | 0 |
--target-stack-map stringArray |
Source-to-target stack ID mapping ([APP/][INSTANCE/]SOURCE=TARGET_STACK_ID) | [] |
--target-version-map stringArray |
Source-service version override ([APP/][INSTANCE/]SOURCE_SERVICE=TARGET_VERSION) | [] |
--verify |
Verify the applied migration after testing and DNS cutover | false |
--wait-timeout duration |
Timeout for each target operation | 30m0s |
-y, --yes |
Approve a new migration plan without an interactive prompt | false |
Options inherited from parent commands
| Flag | Description | Default |
|---|---|---|
--access-token string |
Access token | - |
--api-base-url string |
Public REST API base URL | https://apiv2.wodby.com/v1 |
--api-key string |
API key | - |
--ci-config-path string |
Path to CI config | /tmp/.wodby-ci.json |
--verbose |
Verbose output | false |