Odoo gives a small business three ways to run it, and the marketing makes them sound like three sizes of the same thing. They are not. They differ in which modules you may install, which edition you must license and who holds the database. This post follows an operations manager comparing them for a 25-user distributor, with the self-hosted option on MassiveGRID PaaS, which is built on Virtuozzo Application Platform, formerly Jelastic.

The company is a regional wholesale distributor we will call Harrow & Vale, with 25 users across sales, warehouse and accounting. It needs CRM, sales, inventory with barcode scanning, invoicing and a custom module that talks to its logistics carrier. The Odoo Community Edition package on the marketplace installs Odoo with its PostgreSQL database in one click.

The three options in one paragraph each

Odoo Online is Odoo's own SaaS. It runs the Enterprise edition, is priced per user per month, upgrades itself, and does not allow custom or third-party modules: you configure within what Odoo ships. Odoo.sh is Odoo's PaaS for Enterprise customers: it allows custom modules, gives you Git-based staging branches, and is priced on top of an Enterprise subscription by workers and storage. Self-hosted Odoo Community is the free LGPL edition, on infrastructure you choose, with any module you can write or download from the Odoo Community Association (OCA), and with the operational work on you.

Where Harrow & Vale's requirements land

RequirementOdoo OnlineOdoo.shSelf-hosted Community on PaaS
CRM, sales, inventory, invoicingYesYesYes (Community modules)
Custom carrier integration moduleNo custom modulesYesYes
OCA modules (e.g. stock and accounting extensions)NoYesYes
Enterprise-only features (studio, some accounting reports)IncludedIncludedNot available without an Enterprise licence
Database export in full, any timeVia Odoo's toolsYesYes, it is your PostgreSQL
Choice of data centre locationOdoo's regionsOdoo's regionsNew York, London, Frankfurt or Singapore
Staging environmentNoBranch-based, includedClone the environment, hourly cost

Two rows deserve a second look. Staging exists in all three, but only Odoo.sh includes it without extra thought; on the PaaS it is a clone of the production environment that costs cents an hour and can be deleted after testing, which for a company that changes its ERP a few times a year is a better fit than a permanent branch. And the data-centre row is not academic for a distributor with customer records: choosing Frankfurt or London settles the residency question in the contract.

The carrier module removes Odoo Online from the shortlist immediately. Odoo.sh solves it, but only with an Enterprise subscription for all 25 users, and the operations manager's honest assessment is that the Enterprise features the team would actually use are the accounting localisation reports, for which OCA has Community equivalents her accountant already knows.

What self-hosting costs, in the platform's units

Odoo is a Python application with a PostgreSQL database, and for 25 users it is not heavy. Odoo's own sizing guidance suggests a worker per two CPU cores plus one, and each worker uses a few hundred megabytes, so a 25-user instance is comfortable with three or four workers in about 2 to 3 GiB of RAM, with PostgreSQL needing 1 to 2 GiB for a database that will take years to reach 10 GB.

On the platform that is two containers with vertical scaling. The manager sets the Odoo node's limit at 32 cloudlets (a cloudlet is 128 MiB of RAM plus 400 MHz of CPU) and PostgreSQL at 16, and the containers use what they need each hour: perhaps 20 and 8 cloudlets during the working day, far less at night and at weekends. At MassiveGRID's published rate of $0.003372 per cloudlet-hour, an average of about 20 cloudlets across the month is roughly $49 before discounts, plus disk. For comparison, any per-user plan for 25 users at even a modest per-seat price exceeds that several times over, and the gap grows with every user added.

The operational work, priced honestly

The catch with self-hosting is the work, so the manager listed it. Backups: the Database Backup/Restore add-on dumps PostgreSQL nightly to a backup storage node on a schedule set in the dashboard; the filestore (attachments) sits on persistent container storage. Upgrades: Odoo major versions arrive yearly; the team clones the environment, upgrades the clone, and tests the carrier module before touching production, which is a morning's work. Monitoring: the platform's default load alerts email when the Odoo or PostgreSQL node approaches its limits. TLS and domain: the Let's Encrypt add-on issues and renews the certificate for erp.harrowvale.example.

What she did not need to list was anything about servers: kernels, disks, failed hosts. Containers run on separate physical hosts with anti-affinity, the platform migrates a container off a failing host live, and the provider carries a 100% uptime SLA.

The decision and the exit door

Harrow & Vale chose self-hosted Community on the Frankfurt region, kept the door to Enterprise open (an Enterprise licence can be applied to a self-hosted instance later if the team wants those features), and hired a local Odoo partner for the carrier module. The deciding argument was not price, though price was clear. It was that the database, the modules and the environment belong to the company in a way that survives a change of vendor: environment export produces a portable copy, and PostgreSQL dumps restore anywhere.

Frequently Asked Questions

Can we start on Community and move to Odoo Enterprise later without migrating?

Yes. Odoo Enterprise is a set of additional modules on top of the same core, licensed per user. It can be installed on a self-hosted instance with a valid subscription, and Odoo provides a Community-to-Enterprise upgrade path for the database. Your PaaS environment stays where it is.

How many users can the one-click Odoo package handle?

The package is a single Odoo node plus PostgreSQL, which handles dozens to a few hundred users depending on how heavily they use reporting and inventory operations. Raise the cloudlet limits as usage grows; for high concurrency, add workers and consider a PostgreSQL primary-secondary cluster for reporting reads.

Is Odoo Community Edition really free to use commercially?

Yes. It is released under the LGPL v3 licence, which permits commercial use without fees. You pay for hosting and for any development or support you buy. OCA modules are likewise open source, mostly under AGPL or LGPL.

Your ERP, your database, your region

The Odoo Community Edition package installs Odoo with PostgreSQL in one click on MassiveGRID PaaS, in Frankfurt, London, New York or Singapore, billed per cloudlet-hour with a 100% uptime SLA. Free 14-day trial, no credit card.

Odoo Community on MassiveGRID PaaS

Further Reading