Migrate from CapRover to Temps
To move from CapRover to Temps, give the Temps import wizard your CapRover URL and admin password, pick the app to move, review the plan, and execute it. Temps reads the CapRover API, recreates the app as a Temps project with its build config, environment variables and custom domains, creates managed services for the one-click databases it uses, copies their data when the database publishes a host port, and deploys the app. CapRover keeps serving traffic until you move DNS.
Comparing the two platforms before you move? See Temps vs CapRover.
What Temps discovers from CapRover
CapRover has no project grouping: every workload is a flat app definition. So the import works one app at a time:
- The app you pick, whether it's deployed from Git, built from a Dockerfile, or running a plain image. Its Git source comes from the app's webhook repository settings; the repository password is treated as a secret and never copied into the plan.
- One-click databases (apps running a
postgres,mysql,mariadb,mongoorredisimage), which become Temps-managed services. Connection details are rebuilt from the database app's environment variables and published port. - The app's environment variables.
- The app's custom domains, imported as custom domains.
Will my data come across?
PostgreSQL, MySQL/MariaDB and MongoDB data is copied by a one-off dump/restore during the import only if the database app publishes a host port (a port mapping in CapRover), because that is the only way Temps can reach it from outside the CapRover server. Without one, the plan marks the data as not migrated and tells you to either add a port mapping before importing or dump the database on the CapRover server (docker exec) and restore it into the new Temps service. Remove the port mapping once the copy is done.
What the CapRover importer does not move:
- Other one-click apps. Only database one-click apps are recognised as services. Import each other app on its own, or recreate it as a Temps project.
- CapRover-generated subdomains (
<app>.<your root domain>). They are planned as skipped; Temps gives the project its own address instead. - Redis data. The Redis service is created empty, which is fine for a cache. If you keep data in Redis that you need, copy it yourself.
- Files in persistent directories. Temps app containers have no persistent volumes, so move uploads and other file data to object storage such as Temps managed S3 before you cut over.
Before you start
Temps authenticates with the CapRover admin password (the install default is captain42 until you change it) and exchanges it for a short-lived session token. The password is sent per request and never stored.
To keep the password out of your shell history when you use the CLI, read it from an environment variable, as the commands below do (--token "$CAPROVER_PASSWORD"). If your instance still uses captain42, change it once the migration is done.
You'll also need your CapRover instance's URL (e.g. http://your-caprover-server:3000).
Step 1: Connect and discover
Discover what's running on CapRover
- 1
In the Temps dashboard, go to Projects, then click Import.
- 2
Select CapRover as the source.
- 3
Enter the instance URL and the admin password.
- 4
Click Discover Workloads.
Temps queries the CapRover API directly — nothing is created on this step.
Step 2: Review the plan
Pick the app to import and Temps shows the plan it will execute: the project name, build configuration, every environment variable it found (secrets masked), the databases it will create as managed services with what will happen to each one's data, and the domains it will import or skip.
Linking a Temps-tracked Git repository at this step is optional. Temps' own discovery already picks up the app's Git source (if CapRover has one configured), so linking is for future git-push auto-deploys, not a requirement to proceed.
Step 3: Execute the import
Run the import end to end
- 1
Review the plan and click Execute Import.
- 2
Temps creates the project, its services, and deploys the app.
- 3
Wait for the deployment to reach a healthy state — Temps verifies the app actually answers before reporting the import complete.
Your CapRover instance keeps running the whole time — the import only reads from it. Verify the imported app on its Temps-provided address before touching DNS.
After the import
Once you've confirmed the imported app behaves correctly, point DNS for its domains at the Temps server; Temps issues the TLS certificates once the records resolve. To add a domain the import didn't bring over, use the dashboard or bunx @temps-sdk/cli custom-domains create --project-id <id> -d app.example.com -y, as shown in moving the production domain. Keep the CapRover app running until you've verified normal traffic on Temps, and change the CapRover admin password if you shared it for the import.
For the general import flow that applies across every supported platform, see Import an Existing Platform.