Migrate from Odoo.sh¶
Two steps: import the project from your Git repo, then restore the database from the backup ZIP you download from Odoo.sh. Each step is straightforward.
Honest expectation
A full Odoo.sh migration is two steps, not one click. We don't do live sync. We don't promise zero downtime during cutover. Restore time depends on dump size — budget 10–30 minutes for a typical customer database.
Prerequisites¶
- Your project's Git URL (find it on the Odoo.sh dashboard).
- A backup ZIP from Odoo.sh.
- An IncubaCloud account with at least a Starter plan.
- A host (yours or hired).
Step 1 — import the project from Git¶
- On the Odoo.sh dashboard, copy your project's Git URL (HTTPS with a token, or SSH).
- In IncubaCloud, click New Project. Paste the URL.
- We auto-detect the Odoo.sh layout via
.gitmodulesand reconstruct the project structure: submodules, branches, Odoo version (from the project'srequirements.txtor pinned image). - Save. The project shows up with the detected branches and version pre-filled.
Private repos need credentials
HTTPS with a personal access token works (https://<token>@github.com/...).
SSH needs the platform's deploy key added to your repo.
Step 2 — restore the database¶
- Download a backup from Odoo.sh. From the project's Backups tab, pick the
most recent ZIP. The format is the standard Odoo dump (
dump.sql + filestore/). - In IncubaCloud, deploy a fresh instance under your new project, with the same Odoo version. Don't worry about the data — you're about to overwrite it.
- Open the instance → Restore Database.
- Upload the ZIP if it's under 2 GB, or rsync it to the host first (see the restore docs).
- The restore job runs and replaces the empty database with your real one.
Step 3 — cut over¶
Point your DNS to the IncubaCloud instance:
DNS propagation usually takes a few minutes. Once it's through, your customers land on the new instance. Old Odoo.sh instance can stay running until you're confident, then cancel.
Restored DB is not neutralized
Your restored database keeps the original cron jobs, mail servers, and admin users. If you restore to a staging instance for testing, disable mail and crons before running scenarios that send emails or trigger automations. Or: use the neutralized backup download on the Odoo.sh side first and import that.
Verify it worked¶
- You can log in to the restored instance with the original admin credentials.
- The data matches what you had on Odoo.sh at the time of the dump.
- Your custom modules from the imported repo are installed and visible.
- DNS resolves to the IncubaCloud instance with HTTPS.
Troubleshooting¶
Project import failed: \"layout not detected\"
We expect either .copier-answers.yml (doodba) or .gitmodules (Odoo.sh)
in the repo root. Older Odoo.sh projects sometimes lack .gitmodules in
the default branch. Check the branch you're importing has it.
Restore is slow
Most of the time is spent unzipping the filestore. Large filestores (10+ GB) can take an hour. Do the migration during a maintenance window.
Custom modules from Odoo.sh not loading
Odoo.sh sometimes pulls modules via submodules from private repos.
Check Project → Settings → Repository and ensure the deploy key has
access to all submodule repos, not just the main one.
I want to keep both running for a few days
Don't change DNS yet. Test the IncubaCloud instance via its
auto-generated subdomain (<random>.incubacloud.host). When confident,
flip DNS in your registrar.