Documentation / Moving to calmo.cloud
AI-assisted migration
Let an AI assistant move your Odoo to calmo.cloud: it inventories the old server, plans the move with you, prepares everything without downtime and runs the switch when you give the go.
Moving an Odoo is mostly careful bookkeeping: which domains does the old server answer for, which addons are installed and where is their code, how big are the database and the filestore, which settings must come along. An AI assistant connected to calmo.cloud can do that bookkeeping and the move itself, while you keep every decision.
The assistant works with two connections:
- the calmo.cloud MCP server, for everything on the calmo.cloud side: registering the server, installing Docker, PostgreSQL and Traefik, creating the Odoo service, deploying addons, importing the backup, adding domains;
- SSH to your old server, to look around, take the database dump and hand the data over. For Odoo.sh, Odoo Online and hosters that don't give you a shell, a downloaded backup with filestore takes its place.
It works for Odoo in Docker, a package or source install, Odoo.sh, Odoo Online and other hosters. The steps are the same as in the manual guides (another host, Odoo.sh, Odoo Online). The difference is who types them.
What you need #
- An AI assistant that can call MCP tools and run shell commands, for example Claude Code in a terminal. Chat-only assistants can plan with you but cannot reach your old server.
- A calmo.cloud API token for your team, connected as described in AI Assistants (MCP). Create one token just for the migration and revoke it afterwards.
- Root SSH access to the old server from the machine the assistant runs on, if your Odoo runs on a server you control. For Odoo.sh and Odoo Online, the right to download a backup with filestore.
- Your addons in a GitHub repository that calmo.cloud can read (see Addon Repositories), and a backup destination.
- An Odoo Enterprise 18.0, 19.0 or 20.0 database. Older versions have to be upgraded first.
The assistant works with root access on your old server and full access to your calmo.cloud team. Run it on a machine you trust, read what it proposes before you confirm, and revoke the token when the move is done.
How a move runs #
1. Inventory #
The assistant looks at the old server without changing anything and reports back:
- the Odoo version, the size of the database and the filestore, and the free disk space;
- every domain the old server answers for, including the domains of all your Odoo websites and any redirects, and where their DNS is hosted;
- the state of your addon code: commits that were never pushed, local changes, modules that are installed but missing from the repository;
- the Odoo settings worth keeping, such as workers, time and memory limits and job queue channels;
- mail servers, the Enterprise subscription and integrations that might depend on the server's IP address.
It also times a trial dump and a trial restore, so the downtime estimate is based on your data rather than a guess.
2. Plan and decisions #
The assistant writes a plan and asks you what only you can decide:
- Same server or a new one. Moving in place keeps the IP address and DNS, but needs a short hard switch. A new server can be tested in parallel, but DNS has to change and suppliers who allow-list your IP have to be told.
- When the switch happens. By default the assistant prepares everything and waits for your go.
- Who gets SSH access to the server. Every SSH key attached to a server grants root access, so the assistant asks instead of attaching all of your team's keys.
- Whether you want a test copy right away or after the move.
3. Preparation without downtime #
While your old Odoo keeps running, the assistant registers the server with calmo.cloud, connects the addon repository and waits until its addons are discovered, downloads the container images and prepares the domain list. At the end it gives you a go/no-go list: what is ready, the expected downtime, and how to go back.
4. The switch #
When you give the go, the assistant:
- stops the old Odoo and takes the final database dump;
- sets up Docker, PostgreSQL and Traefik on the server and creates the Odoo service with your settings and backup schedule;
- deploys your addons and restores the database;
- brings the filestore over;
- makes sure the database keeps its identity (so the Enterprise subscription stays linked) and its URL;
- adds all domains and redirects. calmo.cloud issues the SSL certificates.
The old system is stopped, not deleted, and stays on the server as a fallback.
5. Checks #
Before it reports back, the assistant checks every domain and redirect, the login, the installed modules, mail servers, scheduled actions and the job queue, and sets up an uptime monitor.
6. Cleaning up #
Only when you say so does it remove the old system, free the disk space and set up a test copy. Until then you can switch back to the old system at any time. Anything entered on calmo.cloud since the switch would have to be exported first.
Starting the migration #
With Claude Code: install the plugin #
The calmo.cloud plugin for Claude Code connects the MCP server and brings the migration skill: the step-by-step procedure the assistant follows, including the checks that caught problems in real moves. In Claude Code:
/plugin marketplace add havmedia/calmo-cloud-plugin
/plugin install calmo@calmo-cloud
Claude Code asks for your API token once and keeps it in your system's credential store. You don't need to add the MCP server by hand as well.
With another assistant #
Connect the MCP server as described in AI Assistants (MCP). The assistant then works from this page and the manual guides.
The first request #
One sentence is enough to start. Tell the assistant where the old Odoo runs, and that it should prepare and wait for your go before switching:
Move the Odoo on root@erp.example.com to calmo.cloud. Inventory the server first,
then show me the plan and ask me before anything goes offline.
Good to know #
- Wildcard domains. calmo.cloud routes each domain explicitly. If your old server answered for
*.example.com, the assistant adds one domain per website. A website you create later needs its domain added under Hostnames (or by the assistant) as well. - Large filestores. Every backup packs the whole filestore on the server first, so the server needs free space of at least the filestore size plus the database. The assistant tells you if the first backups will only work after the cleanup.
- What stays manual. Attaching SSH keys to a server, and installing or upgrading modules, happen in the panel.