Skip to content

Documentation / Moving to calmo.cloud

Migrating from Odoo.sh

Move an existing Odoo.sh project to calmo.cloud: export the backup, connect your repository, set up server and service, restore the database.

A migration from Odoo.sh brings your database, your filestore (attachments, images, documents) and the custom addons you deploy from GitHub over to calmo.cloud. The steps below start with the backup export on Odoo.sh and end with your domain pointing at the new instance.

Before you start #

Make sure you have:

  • Access to your Odoo.sh project and the GitHub repository it deploys from
  • S3-compatible storage (e.g. AWS S3, Backblaze B2, MinIO) for a backup destination
  • A server to migrate to, or a cloud provider connected so calmo.cloud can order one
  • An SSH key registered with your team, so you can push the backup archive to the server

calmo.cloud runs Odoo 18.0, 19.0 and 20.0. If your Odoo.sh database is on an older version, upgrade it first (for example with Odoo's upgrade service) and migrate the upgraded database.

Odoo.sh includes Odoo Enterprise hosting in its subscription. When you leave Odoo.sh, ask Odoo or your Odoo partner to switch your Enterprise subscription to self-hosting, so your subscription code stays valid on calmo.cloud.

Step 1: Export a backup from Odoo.sh #

On Odoo.sh, open your project's Backups tab, select the production branch and download a backup that includes the filestore. The download is a standard Odoo backup archive (.zip) with the database dump and the filestore, the format calmo.cloud imports.

For the freshest state, create a manual backup on Odoo.sh right before downloading.

Step 2: Connect your addon repository #

Connect the GitHub repository your Odoo.sh project deploys from, so calmo.cloud can deploy the same addons. Follow Addon Repositories to install the calmo.cloud GitHub App and add the repository.

Two Odoo.sh specifics:

  • Branch names — Odoo.sh repositories usually name branches after environments (production, staging), while calmo.cloud by default looks for a branch named after the Odoo version (18.0). Enter your Odoo.sh production branch in the Branch names per Odoo version section on the repository.
  • Submodules — if your Odoo.sh project pulls in other addon repositories (OCA repositories, for example) as git submodules, connect each of those to calmo.cloud as well.

Step 3: Set up your backup storage #

Under Infrastructure Settings → Backup Destinations, create a destination pointing at your S3-compatible storage. Any S3-compatible provider works; see Multiple Backup Destinations.

The import in step 6 stores the archive at the service's backup destination. Without one configured, you cannot import your Odoo.sh backup.

Step 4: Add a server and create the Odoo service #

  1. Add a server: register it under Servers, check reachability, install Docker, and enable Postgres and Traefik.
  2. Create the Odoo service: under Projects → Odoos, create a new Odoo on that server. The version must match your Odoo.sh database; a backup can only be restored into a service running the same Odoo version.
  3. In the service's Backup Settings, add the backup destination from step 3 and mark it as Primary.

A provisioning template does all of this in one click: it orders the server from your cloud provider, sets up Postgres and Traefik, creates the Odoo service and attaches your backup destinations.

Step 5: Deploy your addons #

A restored database expects every module it has installed to be present on the service. Open the service's Addons tab and deploy all custom addons your Odoo.sh database uses before you restore.

Step 6: Import and restore the backup #

Push the archive from step 1 to your new server and import it. Importing Backups describes the full flow:

  1. Copy the archive to the server, e.g. scp backup.zip root@203.0.113.10:/tmp/import_backup.zip. The Import Backup dialog shows this command prefilled for your server.
  2. On the service, open the Backups tab and click Import Backup.
  3. Enter the path and choose Restore into this service after import. The freshly created service holds no data yet, so you can enable skip safety backup.

calmo.cloud stops the service, replaces the database and filestore with your Odoo.sh data, starts the service again and stores the archive at your backup destination. web.base.url is set to the service's URL automatically, so links and redirects keep working. To script the migration instead, use the API, which offers the same flow.

Step 7: Verify and go live #

  • Log in via the service's platform domain with your existing Odoo users; accounts and passwords come along with the database.
  • Open Settings → Apps in Odoo and verify your custom modules are active.
  • Add your custom domain and update its DNS record. calmo.cloud issues the SSL certificate automatically.
  • Set up an automatic backup schedule so the new instance is backed up from the start.

Keep your Odoo.sh project (or at least its backups) until the migrated instance has run without problems for a few days, then cancel the Odoo.sh subscription.

What's next? #