Deploy

Free credit available Limited time

Odoo self hosted. The open source ERP on a dedicated server we run.

Odoo is an open source ERP and business suite covering CRM, accounting, inventory, manufacturing and more. This template deploys Odoo 18 Community with its own PostgreSQL 16 onto a dedicated server that Selfhost.dev provisions, secures and runs for you. It wants 8 GB, which is $0.03 an hour in our EU locations, about $23 a month if you leave it running. Users are free.

Launch Odoo

One click. Two containers, a dedicated Postgres, TLS and a domain.

+$5.00 added at signup · deployment choice preserved · no card

Odoo 18 Community, one click/PostgreSQL 16 included, dedicated/Custom domain and SSL, automatic/8 GB server, $0.03/hr in the EU

What is Odoo self hosted?

The ERP you own.
On hardware you control.

What it is. Odoo self hosted means running Odoo Community on your own server rather than on Odoo's SaaS. You get the full application, your database, and the file store, all on infrastructure you control. The software is free and open source. What you pay for here is a server that arrives already configured to run it properly.

Who it is for. Teams who want their operational data on a server they control, who need custom modules that Odoo Online does not allow, or whose per-user Odoo bill has started scaling faster than the value of the seats.

When to use it. From the first paid user, once you compare a flat server rate against a per-user subscription. And immediately, if you need custom addons, since Odoo Online does not permit them at all.

One-click template (live today). Odoo 18 Community with its own PostgreSQL 16.

Odoo self hosted requirements

What Odoo needs, and what we already provide.

Odoo self hosted means two containers, the application and a PostgreSQL database, behind a reverse proxy with TLS. The template ships all of it on one server, so the only requirement you choose is the server size.

What Odoo needsThis deployment
Odoo version18 Community
DatabasePostgreSQL 16, included and dedicated
ContainersOdoo, PostgreSQL
Recommended server8 GB RAM
Architecturex86 or ARM, both supported
FilestorePersistent volume, attachments and generated PDFs
Custom modulesSupported, via a mounted addons volume
EmailSMTP is not configured. Set it inside Odoo
Enterprise modulesNot included. This is Community edition
What Selfhost.dev providesDetail
LocationsFalkenstein, Nuremberg, Helsinki, Ashburn, Hillsboro, Singapore
HTTPSAutomatic, on a generated hostname or your own domain
BackupsOptional daily whole-server backups, +20% of the server price
BandwidthIncluded, no egress charges
MonitoringHealth checked every 60 seconds, metrics and logs in the console
MCP tools189 across 31 modules

Specifications current as of September 2026.

What's in the Odoo deployment

Two containers. One click.

Two containers on one project server, deployed together, with a dedicated database rather than a shared one.

ComponentVersionWhat it does
Odooodoo:18.0-20260817The ERP application: CRM, accounting, inventory, manufacturing, website and the rest of the suite
PostgreSQLpostgres:16-alpineOdoo's own database. Odoo connects as superuser and creates its databases itself
TLS and routingManaged by Selfhost.devPublic HTTPS URL, certificate provisioned and renewed automatically

Your own Postgres, not a shared one

Odoo gets a dedicated PostgreSQL 16 container on your project server. Not a database on a cluster shared with other customers. It is included in the server price with no separate fee.

Three volumes that outlive the containers

odoo-web-data holds the filestore, which is every attachment and every generated PDF. odoo-extra-addons is where your custom modules live. postgresql-data holds the database. All three survive a redeploy.

Custom modules are supported

The odoo-extra-addons volume is mounted and on the addons path from the first boot. Odoo Online does not allow custom modules at all, and most low-cost Odoo hosting is a locked panel that does not either.

What we configure before Odoo starts

The four settings that break a DIY install.

Odoo behind a reverse proxy needs specific configuration or it fails in ways that are hard to diagnose. Selfhost.dev writes all of it into /etc/odoo/odoo.conf before the first boot.

SettingWhy it matters
admin_passwdYour master password, set before first boot. Odoo has no command-line flag for this, so it can only be done by writing the config file
proxy_mode = TrueWithout it, Odoo builds every absolute URL wrong behind a proxy: broken links, broken redirects, broken password resets
list_db = TrueKeeps the database manager available, which is Odoo's own backup, restore and duplicate interface
data_dir, addons_pathPoints the filestore and custom addons at the persistent volumes rather than the container
Database credentialsHost, user and password wired to your dedicated Postgres container

On every deployment we run

A default-deny firewall with only ports 22, 80 and 443 open. A Let's Encrypt certificate per hostname, renewed automatically. Per-service DNS names, so no two stacks on the platform can resolve each other's database. One virtual machine per project, one customer per machine.

No default password, ever

Odoo's master password is generated and injected before the container starts. If that seeding ever fails, the instance boots locked on a random secret rather than open. Locked beats open, deliberately.

How to self host Odoo in 5 steps

From zero to live.
No server to set up.

No Docker Compose, no Postgres to install, no certificate to renew.

1

1. Create a project

Name it and pick a server. Odoo runs two containers including its own Postgres, so 8 GB is what we recommend. We provision it. There is no cloud account to connect.

2

2. Add the Odoo template · about 8 minutes

Add service → Template → Odoo. Both containers deploy together. You can watch the six provisioning stages and the live log. We do not report it as deployed until the URL actually answers.

3

3. Create your first database · do it now

Odoo ships with no database. Open the URL, enter the master password from your console, and create one. The first person to do this owns the instance, so do it immediately, before you share the address.

4

4. Configure SMTP · before you invite anyone

Email is not set up. Add your mail provider in Odoo's settings, or invitations and password resets will not send.

5

5. Point your domain

Keep the generated hostname or add your own. Set DNS, verify a TXT record, and HTTPS provisions and renews automatically.

An 8 GB server runs Odoo for about $23 a month in our EU locations, whatever your headcount.

Deploy Odoo

What we run, and what you run

The honest split.

We manage the infrastructure. You own what happens inside Odoo. This is managed hosting, not managed ERP administration.

We runYou run
Server provisioning and capacityYour databases, records and workflows
The PostgreSQL 16 containerYour Odoo users and access rights
Reverse proxy, TLS and renewalsYour custom modules and addons
Firewall and network rulesYour SMTP configuration
Optional daily whole-server backupsWhen to move to a bigger server
Metrics and logsOdoo version upgrades

What size server does Odoo need?

Odoo is a heavy app. Here is what that means.

The platform classes Odoo as a heavy workload, which means it wants more free memory and disk available before it will deploy. We recommend 8 GB. That is a recommendation rather than a hard floor, so you can choose 4 GB, but Odoo runs its application and its own Postgres on the same box and 4 GB is tight for both.

ServerWhat fits alongside Odoo
4 GBOdoo and one light app, and it will be tight
8 GB (recommended)Odoo plus two more heavy apps, or Odoo with room to grow
16 GB and aboveUp to five workloads, which is the per-project cap

An 8 GB server has 6,656 MB available after the host reserves memory for the operating system, Docker and the proxy. A heavy workload reserves 2,048 MB of that, a light one 512 MB. A project holds at most five workloads whatever its size.

Odoo self hosted cost

One server rate. No seats to count.

You pay for the server and nothing else. The Odoo template, its PostgreSQL container, HTTPS and your custom domain add nothing to the bill, and adding users never changes it.

ServerCoresRAMDiskWhereRateMonthly at 730 hrs
cx33 (recommended)48 GB80 GBEU$0.03/hr$23.36
cax21 (ARM)48 GB80 GBEU$0.04/hr$29.20
cpx3148 GB160 GBEU$0.07/hr$47.89
cpx3148 GB160 GBSingapore$0.12/hr$90.08
ccx132 dedicated8 GB80 GBUS$0.16/hr$119.28

Monthly figures assume 730 hours. Europe is Falkenstein, Nuremberg and Helsinki. The console picks the cheapest server in stock that clears Odoo's memory floor in your nearest location; bigger sizes and every other location are priced live in the calculator.

What else you pay forCost
Odoo template and PostgreSQL 16$0
HTTPS and custom domain$0
Users$0, no per-user fee
Bandwidth$0, traffic included
Daily whole-server backupsOptional, +20% of the server price

If your balance runs out

Your server is powered off, not deleted, and you get 24 hours and an email. Topping up inside that window restarts the project. After 24 hours at zero the resources are destroyed, and because backups live with the server they go too. Keep a card on file, and keep a recent export of your own, the same as you would anywhere.

Every size in every location is priced in the pricing calculator, with no signup.

What every Odoo deployment gets

Five commitments, all of them built into the platform.

Health checked every 60 seconds

Every service on your project server, continuously, with metrics and logs in your console.

A stalled deploy is retried, not abandoned

If a deployment hangs, the platform re-queues it automatically with a fresh window rather than leaving it stuck.

Deployed means the URL answers

We do not call a deployment live because a container reports itself healthy. We fetch your public address, re-wire the proxy if it needs it, wait out the certificate, and only then mark it done.

Retrying never bills you twice

A retried create adopts the resource that already exists instead of building a second one alongside it.

Your version never moves on its own

Every image is pinned to an exact tag, so a restart, a redeploy or a platform update always brings back the same Odoo 18. A new template build applies to new deployments; yours stays where you put it.

Odoo's template deploys in about eight minutes. That is the platform's own budget, not an estimate.

Sizing sheet

Working out what a self hosted ERP costs?

Tell us your team size and which Odoo apps you need, and we will send back the server size, the monthly cost, and what it replaces on your current bill. One email, no newsletter.

Odoo self hosted vs Odoo Online and Odoo.sh

Where the two models cross over.

Odoo sells two hosted options. Odoo Online is the SaaS, priced per user per month. Odoo.sh is their managed platform, which carries hosting fees on top of the subscription. Both run Odoo Enterprise. Self hosting runs Community, on one flat server rate.

Odoo Online, StandardOdoo self hosted here (8 GB, EU)
Pricing modelPer user, per monthPer server hour
EditionEnterpriseCommunity
Free tierOne app, unlimited users, on Odoo Online onlyNone. You pay for the server from the first hour
List price$31.10/user/mo, billed yearly$0.03/hr, about $23/mo in the EU
1 user$31.10/mo$23.36/mo
5 users$155.50/mo$23.36/mo
20 users$622/mo$23.36/mo
Adding a userIncreases the billNo change
Custom modulesNot permittedSupported
Enterprise-only appsIncludedNot available
Where data livesOdoo's infrastructureYour dedicated server

Odoo Online list prices as published on yearly billing, checked 8 September 2026. First-year pricing is discounted to $24.90 per user on initial users; the figures above are the renewal rate. Source: Odoo pricing.

Odoo.sh alternative

Odoo.sh is a development platform: staging branches, GitHub integration, and Odoo's own build pipeline, with hosting billed on top of a Custom-tier subscription. If what you actually need is a place to run Odoo rather than a place to build it, a project server is the simpler alternative. You get root SSH, a dedicated Postgres and a mounted addons volume at a flat hourly rate, without the subscription underneath it.

Odoo self hosted on a VPS, versus here

Same hardware. Different amount of your evening.

We run on Hetzner and we say so, which lets us be specific about the difference. It is the same machine in the same datacentre. What you are paying for is that it is already wired up.

Doing it yourselfHere
Provision a VPS, harden it, configure a firewallDone at provisioning
Install Docker, write a compose file, pin versionsTwo pinned containers, deployed
Install and secure PostgreSQLDedicated Postgres 16, credentials wired
Set proxy_mode, or debug broken URLs for an hourWritten before first boot
Install a reverse proxy, get a certificate, automate renewalTraefik and Let's Encrypt, automatic
Write the master password into a config file Odoo will not accept from the CLIInjected before the container starts

When Odoo Online is the better choice

One case where you should buy from Odoo instead.

If you need Enterprise apps, buy from Odoo. This template runs Odoo Community, and Enterprise-only modules are licence-gated: no hosting arrangement, ours or anyone's, unlocks them. Studio, some accounting localisations and a handful of apps only exist on a paid Odoo subscription. Check whether a module you depend on is Enterprise-only before you move, because that is the one thing a server cannot fix. Everything else that pushes people towards Odoo Online, the setup, the database, the certificate, the proxy configuration, is what this page is about.

Odoo self hosted limitations

Six things worth knowing before you deploy.

Real constraints, easier to plan around than to discover.

  • Community edition. Enterprise-only Odoo modules are licence-gated and not included.
  • Claim the instance immediately. Odoo ships with no database and no pre-set login. The first person to open the URL with the master password becomes the owner, so create your database before you share the address.
  • SMTP is not configured. Add a mail provider inside Odoo before you invite anyone, or invitations and password resets will not send. This is true of self hosted Odoo anywhere, not just here.
  • Your version is pinned, which cuts both ways. A restart or a redeploy never moves you to a new Odoo, which is the point. It also means upgrades and in-container security updates are yours to run, on your schedule.
  • Pick your size at the start. A server cannot be resized in place, so moving to a bigger box means a new project and a data migration. Odoo and its Postgres share one machine, and 8 GB is what we recommend.
  • Five workloads per project, counting apps and databases together, and only one heavy template fits on a 4 GB server.

Backups, exports and getting your data out

What is protected, and what is not.

Backups

Optional, daily, and they cover the whole server, which means every container, the database and every volume in one image. The last seven are kept. They cost 20% of the server price.

They do not survive deletion

Backup images live with the server. If the server is destroyed, they are destroyed with it. Backups protect you from mistakes, not from an unpaid bill.

Your own export, three ways

Odoo's database manager stays enabled, so you can back up, restore and duplicate databases from Odoo's own interface. You can add an SSH key and take a pg_dump directly. Or you can tar the volumes wholesale.

No lock-in

The database manager produces a portable Odoo backup any time you want one, and root SSH gives you everything byte for byte. Nothing here is designed to make leaving hard.

Moving an existing Odoo here

Odoo's own backup and restore, still switched on.

Your existing Odoo moves in through Odoo's own database manager. Take a backup from your current instance, restore it here through the same interface, and the database and the filestore come across together. No export tickets, no support queue, no waiting on us. That works because we leave the database manager enabled. Odoo Online does not expose it, and most low-cost Odoo hosting is a locked panel that does not either. It is also why you can duplicate a database to make a staging copy whenever you want one.

One thing to check first

If you are coming from Odoo Online or Odoo.sh you are coming from Enterprise, and Enterprise-only modules will not load on Community. Confirm which of your installed apps are Enterprise before you move the database.

Frequently asked questions

Is Odoo Community enough, or do I need Enterprise?
Community covers CRM, sales, inventory, accounting, manufacturing, website and most of the suite. Enterprise adds studio customisation, some accounting localisations, and a set of apps that are licence-gated. If you are not certain, check whether a specific module you rely on is Enterprise-only before you move.
Can I install custom Odoo modules?
Yes. A dedicated addons volume is mounted and on the addons path from the first boot. Odoo Online does not allow custom modules at all, and most low-cost Odoo hosting is a locked panel that does not either.
Can I run more than one Odoo database on the same server?
Yes. The database manager stays enabled, so you can create, duplicate and restore multiple databases on the one instance, within the memory the server has.
Who updates Odoo?
Nobody, unless you do. The image is pinned to an exact version, so a restart or a redeploy always brings back the same Odoo. When we ship a newer build of the template it applies to new deployments; yours stays put until you move it. Security updates inside the container are yours to apply.
Do email invitations work out of the box?
No. SMTP is not configured on any template. Add your mail provider inside Odoo's settings before you invite anyone, or invitations and password resets will not send.
Is this Odoo.sh?
No. Odoo.sh is Odoo's own development platform, with staging branches and a build pipeline, billed on top of a Custom-tier subscription. This is a server we provision and run, with Odoo Community deployed onto it and root access if you want it.
Can I use Odoo just for the CRM?
Yes. Odoo installs apps individually, so you can enable the CRM and leave accounting, inventory and the rest switched off. The application underneath is the same either way, which is why it wants 8 GB whichever apps you use. We compared eight open source CRMs on what each one needs underneath it. Odoo is the pick when sales has to reach invoicing, stock or projects, and if it never does, EspoCRM does the same job without the rest of the suite.
What happens to my Odoo data if my credit balance reaches zero?
The server powers off and you get 24 hours and an email. Topping up in that window restarts it. After 24 hours the resources are destroyed, and server backups are destroyed with them, so take your own export if you plan to stop paying.
Can I start on 4 GB and move up later?
You can choose 4 GB, though it is tight for Odoo and its Postgres together. But servers cannot be resized in place, so moving up means a new project and a data migration. Pick the size you need. See pricing.

About Selfhost.dev

Selfhost.dev is a managed self hosting platform for developers and small teams. Open source apps and databases on dedicated servers you control, billed by the hour with no subscription tiers.

Best for: Odoo, Twenty CRM, n8n, Supabase and managed PostgreSQL, MySQL, Redis and ClickHouse.

Odoo self hosted. We will run the server.

Odoo 18 Community and PostgreSQL 16, one click
Custom domain and SSL, handled
Server rates only, nothing per app, nothing per user
Launch Odoo