Odoo hosting: Odoo.sh, cloud or on-premise, and which one fits
Odoo Online, Odoo.sh and a server you run yourself differ on custom code, shell access, staging, backups, upgrade control and where the data sits. Brainvire settles which one fits before anything is deployed.
Where an Odoo database runs, and who operates it. Odoo documents three answers: Odoo Online, hosted and managed by Odoo; Odoo.sh, its own cloud platform built around a Git repository; and on-premise, which covers your own hardware and your own AWS or Azure account.
Teams choosing a platform before a build starts, and teams already on one that no longer fits — usually because a custom module, a residency clause or an upgrade forced it.
A version upgrade alone runs 3 to 8 weeks. A hosting move inside an implementation follows it: 8 to 12 weeks for small rollouts, 12 to 24 weeks for mid-market, 6 to 12 months for enterprise.
A solution architect, an Odoo technical consultant and a DevOps engineer, plus a data lead where a database moves. On your side, whoever owns it after go-live.
/ Before you pick a platform
Which hosting decision is still open?
Almost every hosting regret we are called to fix traces back to one of these four.
Nobody has said whether you will write modules
Odoo Online runs no custom modules and no Apps Store modules. One developer with one module removes an option outright, so ask before you pick.
There is no way to test against real data
Without a neutralized copy of production, a change is tested in production or not tested. That is a platform capability, not a process you add later.
No one has named the country the data sits in
A clause or a regulator eventually asks. The answer is fixed the day you choose, and changing it means a full database transfer.
It is not clear who gets paged at two in the morning
Backups, restore tests, patching and the upgrade calendar belong to someone. On two of the four options, that someone works for you.




Trusted by enterprise Odoo teams worldwide












/ The comparison that matters
What actually differs between the Odoo hosting options?
Seven questions decide it, and every answer below is in Odoo’s documentation.
| The question | What the documentation says | What it decides |
|---|---|---|
| Can you install your own modules? | Odoo Online supports neither custom modules nor Apps Store modules. Odoo.sh installs them from a Git repository you own. A self-run server takes whatever you put on it | One custom module rules Odoo Online out |
| Is there a copy of production to test against? | Odoo.sh staging branches hold neutralized duplicates of production: no scheduled actions, no outgoing email, payment and shipping connectors in test mode. Self-run, you duplicate the database yourself | A rehearsal that cannot charge a real card |
| Who runs the backups? | Odoo backs Odoo Online up daily. Odoo.sh keeps seven daily, four weekly and three monthly production backups, each with the dump, filestore, logs and sessions. Self-run, they are yours | Restore is the half teams skip |
| What happens when a deploy breaks? | On Odoo.sh a failed production update reverts the server to the last good revision and rolls the database back. Self-run, that rollback is a runbook someone wrote | Recovery time is a platform property |
| Who decides when you upgrade? | Every major version is supported for three years. Odoo Online upgrades are mandatory and run automatically at the due date. On-premise you can stay put indefinitely, though Odoo advises against it | Who owns the upgrade calendar |
| Which region holds the data? | Odoo.sh asks for a hosting location when the project is created; Odoo Online asks during a transfer. Run it yourself and the database sits in your account, in a country you named | A residency clause needs the third answer |
| How does it scale? | Odoo Online and Odoo.sh size the platform for you. Self-run, you size the worker pool: Odoo’s deployment guide puts the rule of thumb at (CPU × 2) + 1 | Capacity planning has to have an owner |
Feature names follow the Odoo 18 documentation. Delivery ranges are Brainvire estimates.
/ The four options
Odoo Online, Odoo.sh, your own cloud or on-premise?
Odoo documents two hosted options and one you run yourself. Your own AWS or Azure account is that third under a different name, listed separately because operating it is nothing like operating a rack.
Odoo Online, if you stay standard
A private database hosted and managed by Odoo, reached from a browser with nothing installed locally. Configuration and Studio work are fine, because Studio changes are stored as data. Custom modules are not supported at all.
Odoo.sh, if you are going to write code
Odoo’s own cloud platform, built around a Git repository: production, staging and development branches, a web shell, SSH access and continuous integration. Staging holds a neutralized duplicate of production, so a change meets real data before it merges.
AWS or Azure, if the account has to be yours
Odoo classes this as on-premise even though the machine is an instance in your own cloud account. You pick the region, the network, the PostgreSQL setup and the backups, and own every one. Take this route when a contract names the country.
Your own hardware, if it must not leave the site
The same software on machines you can walk to. Odoo documents the production setup in detail: the database filter, PostgreSQL over SSL, the worker pool, HTTPS hardening and locking down the database manager. All of it is your team’s.
Platform descriptions follow the Odoo 18 documentation: Odoo Online, Odoo.sh, on-premise and its deployment guide. See also what Odoo is and how Odoo is licensed.
/ How the work runs
How does a move onto Odoo.sh or your own cloud run?
Four stages, a named owner at each, and a rollback written down before the cut-over starts.
Decide the platform
The four questions that settle it — custom modules, staging, data residency and who operates the platform — get answered in writing, with the risk each carries.
Prepare the database
Odoo Online refuses non-standard apps and its intermediary versions are unsupported elsewhere, so the database is brought to a supported major version and the module list cleaned first.
Deploy and rehearse
The target is stood up: a repository with branch stages on Odoo.sh, or the server, database, proxy, TLS and backups on your own infrastructure. Then a copy is restored and the cut-over rehearsed.
Cut over and operate
The move happens in a planned window against a written rollback. Afterwards backups, restore tests, patching and the upgrade calendar have a named owner — your team, ours, or both.
/ What decides it
What pushes the decision one way or the other?
Four inputs move the answer more than the rest. Settle them and the platform names itself.
How much of it is yours
One custom module removes Odoo Online from the list. Studio changes are configuration stored as data, so they travel to any of the four.
Where it has to sit
A clause naming a country, or an auditor who wants to see the account the database lives in, points at infrastructure you hold.
Who is actually on call
Odoo Online and Odoo.sh hand the platform to Odoo. Running it yourself needs someone who knows PostgreSQL and restores at two in the morning.
What has to reach the database
A machine, a warehouse controller or a finance system that exists only inside your network is easier to reach from a server inside it.
Self-run registration, duplication and neutralization sit under on-premise; the hardening checklist is in the system configuration guide. See also how we run an Odoo implementation and Odoo in Docker.
/ Odoo, on the record
Where have we done this before?
Each card is one client, on the record.
Fuel Cell Power Company
An American fuel cell power company. Brainvire moved it from Odoo SaaS 14 onto Odoo.sh, then built the material shortage report, SolidWorks 3D integration and multi-rule approvals the platform now allowed.
Read the case →
700+sites targeted across 12 countries, going live on a rolling basisPuma Energy
Downstream retail standardized on one Odoo 18 ERP and POS core, with a point of sale that keeps selling through a network outage — a requirement that decides a hosting topology.
Read the case →
CURE International
CURE International runs children’s hospitals in several countries. Brainvire upgraded them to Odoo 16 and put eight sites on one system, with centralized inventory, purchasing and approval workflows.
Read the case →
/ Head to head
Odoo Online or Odoo.sh?
Both are hosted by Odoo, which is why they get confused. The differences are the ones a development team cares about.
| Criterion | Odoo Online | Odoo.sh |
|---|---|---|
| Custom modules | Not supported — Odoo Apps Store modules included | Installed from a Git repository you own; Odoo.sh finds the module folders |
| Shell and server access | Odoo runs the platform; you work in the application | A web shell and SSH access are listed platform features |
| Testing on production data | Duplicate from the database manager; the testing option is on by default and copies expire after 15 days | Neutralized duplicates of production, deleted after a month unless the branch is rebuilt |
| Backups | Daily, downloadable from the database manager | Seven daily, four weekly, three monthly — dump, filestore, logs and sessions |
| Upgrades, and getting out again | Mandatory on a published cadence; intermediary versions are unsupported elsewhere, so an upgrade precedes any move | Wired into the upgrade platform: the upgraded backup restores onto a branch, so custom modules can be tested |
Choose Odoo Online if nobody will write a module. Choose Odoo.sh the moment code enters the picture. Choose your own infrastructure when the account, region or network has to be yours. Odoo documents transfers between all three, so no answer is permanent. See also Odoo ERP migration.
/ Questions we are asked
Odoo hosting FAQs.
What are the hosting options for Odoo?
Odoo documents three. Odoo Online is a private database that Odoo hosts and manages. Odoo.sh is Odoo's own cloud platform, built around a Git repository. On-premise covers anything you run yourself, including an instance in your own AWS or Azure account.
What is the difference between Odoo Online and Odoo.sh?
Custom code, shell access, staging and database access. Odoo Online is incompatible with custom modules and Apps Store modules, and Odoo runs the platform. Odoo.sh deploys from a Git repository you own, offers a web shell and SSH access, and gives you staging branches.
Can I run custom modules on Odoo Online?
No. The Odoo 18 documentation states that Odoo Online is incompatible with custom modules or Apps Store modules. You can still configure the apps and change them with Studio, because those are stored as data. Once a developer writes a module, Odoo Online is out.
Can I host Odoo on AWS or Azure?
Yes. Odoo classes a server in your own cloud account as on-premise, so the standard installation and deployment documentation applies. You choose the region, the network, the PostgreSQL setup and the backup regime, and your team owns all of them. That is usually the point.
Does Odoo.sh give me a staging environment?
Yes. Odoo.sh branches sit in three stages: production, staging and development. Staging branches create neutralized duplicates of production, which stops scheduled actions and outgoing email and puts payment and shipping connectors in test mode. They are deleted after a month unless rebuilt.
Who is responsible for backups on each hosting option?
Odoo backs Odoo Online databases up daily and you can download one from the database manager. Odoo.sh keeps seven daily, four weekly and three monthly production backups, each with the dump, filestore, logs and sessions. Run Odoo yourself and every backup is yours.
Can we move from Odoo Online to Odoo.sh later?
Yes, with conditions. Odoo Online intermediary versions are not supported by Odoo.sh or on-premise, so a database on one must be upgraded to the next major version first. Going the other way means uninstalling every non-standard app before Odoo accepts the database.
Who decides when an Odoo database gets upgraded?
It depends where it runs. Each major version is supported for three years. On Odoo Online an upgrade is mandatory on a published cadence and runs automatically at the due date. On-premise you can stay on a version indefinitely, though Odoo advises against it.
Is on-premise Odoo more secure than hosted Odoo?
Not automatically. It is more controllable. Running it yourself means you own the database filter, PostgreSQL access, HTTPS configuration, brute-force protection, the master password and the database manager screens, all documented by Odoo. Control becomes security only when someone maintains it.
How long does an Odoo hosting migration take?
A version upgrade alone runs 3 to 8 weeks. A hosting move inside an implementation follows the implementation: 8 to 12 weeks for small rollouts, 12 to 24 weeks for mid-market, 6 to 12 months for enterprise. These ranges are Brainvire estimates, not Odoo's.
/ Next step
Let’s settle where your Odoo should actually run.
- A senior architect replies within one business day
- Your details are never shared or sold
- An NDA can be signed before we hear any detail
US +1 (631) 897-7276 · Gulf +971-54-737-4253 · Singapore +65-9086-0319 · India +91-22-6116-3300.









Trusted by 2,000+ brands worldwide
“Brainvire has helped our business grow. We feel like it’s a true partnership. They’re always present. It’s been seven great years, looking forward to more.”
Book a working session
Tell us what you run today and where the data has to sit.