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.

OdooGold Partner
2,000+Brands served
95%Client retention
14+Years of experience
What it is

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.

Who it is for

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.

Typical timeline

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.

Typical team

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.

Custom code

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.

Staging

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.

Residency

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.

Operations

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.

Odoo Gold PartnerBest Partner North America 2025 FinalistOutstanding Customer SatisfactionOdoo 19

Trusted by enterprise Odoo teams worldwide

Bay Alarm MedicalTentAndTableFood Bank SingaporeAmerican Tire DepotEden TextileCadarPuma EnergySuper Asia FoodsUltimate ToysAjmal PerfumesPan HomeNike

/ 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 questionWhat the documentation saysWhat 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 itOne 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 yourselfA 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 yoursRestore 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 wroteRecovery 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 itWho 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 namedA 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) + 1Capacity 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.

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.

01020304

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.

Code

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.

Data

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.

People

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.

Integrations

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.

/ 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.

CriterionOdoo OnlineOdoo.sh
Custom modulesNot supported — Odoo Apps Store modules includedInstalled from a Git repository you own; Odoo.sh finds the module folders
Shell and server accessOdoo runs the platform; you work in the applicationA web shell and SSH access are listed platform features
Testing on production dataDuplicate from the database manager; the testing option is on by default and copies expire after 15 daysNeutralized duplicates of production, deleted after a month unless the branch is rebuilt
BackupsDaily, downloadable from the database managerSeven daily, four weekly, three monthly — dump, filestore, logs and sessions
Upgrades, and getting out againMandatory on a published cadence; intermediary versions are unsupported elsewhere, so an upgrade precedes any moveWired 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.

Fox SportsSouthwestNikeDisneyMcAfeeUnder ArmourSesame WorkshopInsomnia CookiesPan Emirates Home

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.”
Mr. Kevin ClorCIO - Tent and Table

Book a working session

Tell us what you run today and where the data has to sit.

    Ten characters minimum. An NDA can be signed before we hear any detail.