Migrate

Migrate from CapRover to Levelrail

Read-only import of apps, databases, environment variables, domains and volumes. CapRover keeps serving traffic until you switch DNS.

Start with a dry run

You need: The CapRover login password, exchanged for a session token. That login is the one POST the importer makes to CapRover. Everything else is a read.

Pass the token through the environment so it stays out of your shell history, then read what would be created. Nothing is created in a dry run.

export APP_IMPORT_SOURCE_TOKEN=...
levelrail-cli import platform caprover --url https://caprover.example.com --dry-run

When the report looks right, run the same command without --dry-run, and add --only web,api to import a subset. Apply is safe to re-run: finished items are skipped.

The dashboard does the same in Settings, Import from another platform, with a plan, per-item fixes and a saved cutover checklist.

The four steps

  1. ImportRead the source and create the matching apps and databases here, empty. Start with a dry run that shows what would be created.
  2. Copy dataCopy each database and check the row counts match.
  3. Copy volumes and run in parallelMove volumes, then run the app here while the source keeps serving traffic.
  4. Cut overCheck each domain, then switch DNS one domain at a time. The source stays untouched until you stop it.

Specific to CapRover

  • CapRover builds images locally, so there is no image to recover. Connect a repository, or push an image to a registry and set it as the source.
  • Apps are created stopped, so nothing serves traffic here until you start them.

Not migrated from any platform

  • Databases the copy step does not support (ClickHouse, KeyDB, Dragonfly), and any database you did not run the copy for. They stay empty.
  • Volume contents move only when you run the generated copy commands. Bind mounts need the same host path on the target node and the root ability.
  • Health checks that are shell commands, pre and post deploy commands, extra ports and raw host port mappings. They are called out as needing attention.
  • TLS certificates, DNS records, deploy history, logs and metrics. Certificates are issued here on first use.
  • Cron jobs are reported with their schedule and command so you can recreate them as scheduled tasks.

Undoing it

The importer only adds resources and never touches CapRover. To undo an import, delete the apps and databases the apply report listed. Keep DNS pointing at CapRover until the cutover check says go.

CapRover migration questions

Does the importer change my CapRover instance?

No. It only reads from CapRover and creates things on the Levelrail side. That login is the one POST the importer makes to CapRover. Everything else is a read.

Do I have to stop CapRover first?

No. Keep CapRover running through the import, the data copy and the parallel run, and switch DNS one domain at a time once the cutover check says go.

What does not migrate from CapRover?

CapRover builds images locally, so there is no image to recover. Connect a repository, or push an image to a registry and set it as the source. Apps are created stopped, so nothing serves traffic here until you start them.

Levelrail is pre-release and multi-node is in beta. See feature status before you retire anything.

Related