SELF-HOSTING GUIDE

How to self-host Odoo without turning production into an experiment.

You can self-host Odoo 19 using official packages, source installation or Docker. Installing it is only the first step. A dependable production system also needs PostgreSQL discipline, HTTPS behind a reverse proxy, database isolation, off-server backups, patching, monitoring and a tested upgrade plan.

Odoo Community running on managed production infrastructure

The direct answer: self-host Odoo when infrastructure control, custom modules or data-location requirements justify owning operations. Do not choose it because “open source” sounds like “no work.” Odoo Community is LGPLv3 and has no Enterprise subscription or per-user licence requirement, but servers, administration, support and upgrades still consume time or money.

Odin sells managed Community deployments, so we have a commercial interest in the managed option. This guide also tells you when DIY is reasonable and links to Odoo’s own documentation so you can verify the operational facts.

Step 1

Choose an installation method you can maintain

Odoo’s package installer documentation covers supported Linux packages. Packages are the least surprising route for a conventional host because dependency and service integration follow the operating system.

The official source installation guide gives more control over branches, Python environments and addon paths. It also gives you more responsibility. Pin dependencies, isolate the runtime, record the exact revision and never develop directly on the production checkout.

Odoo also publishes an official Docker image and documents Docker under its on-premise installation options. Containers improve repeatability; they do not automatically provide durable PostgreSQL storage, backups, TLS, secrets management or upgrades. Treat Compose or an orchestrator as packaging, not an operations strategy.

Step 2

Design the production boundary before exposing a port

Put a reverse proxy in front

Terminate HTTPS at a maintained reverse proxy, redirect HTTP, pass the correct proxy headers and enable Odoo’s proxy mode only when the proxy boundary is trusted. The official Odoo 19 deployment guide provides production configuration and HTTPS examples.

Protect database selection

A public database manager can expose database names and administrative operations. Configure a restrictive dbfilter where appropriate, disable database listing or management on public production, and keep the master password secret. Hostnames and filters must be designed together, especially on multi-database systems.

Separate Odoo from PostgreSQL

Do not publish PostgreSQL to the internet. Use dedicated database credentials with only the required privileges. Keep application, custom addons and data paths explicit. The database and filestore are one logical backup set; either half alone can produce an incomplete restore.

Step 3

Size for the workload, then measure

There is no honest universal server size. Concurrent requests, reports, imports, scheduled jobs, website traffic, attachments and custom code matter more than the employee count. Begin with documented assumptions, leave memory and storage headroom, then observe worker saturation, request latency, queueing, PostgreSQL performance and disk growth.

Set CPU and real-time request limits deliberately. Separate cron capacity if long scheduled jobs compete with users. Use staging for load tests and migrations. A single small server can suit a modest office; high availability and strict recovery objectives require a different architecture. For an implementation-ready checklist, see Odoo self-hosted requirements.

Step 4

Back up for recovery, not reassurance

Keep automated, encrypted backups away from the application host and ideally in another failure domain. Capture PostgreSQL and the matching filestore, retain multiple generations, monitor backup jobs and document credentials needed to restore. Snapshots can help, but a snapshot on the same account is not your only disaster-recovery copy.

Run restoration drills into an isolated environment. Confirm users can sign in, attachments open and key transactions reconcile. Define recovery point and recovery time objectives before an incident. A backup that has never been restored is an assumption.

Step 5

Make patching and upgrades routine

Track operating-system, PostgreSQL, reverse-proxy, Python dependency and Odoo security updates. Test patches on staging, preserve rollback options and record changes. Monitor certificates, disk, memory, response health, failed cron jobs, database connections and backup freshness; route alerts to someone who is expected to act.

Major-version upgrades are projects, not package updates. Inventory custom and third-party addons, verify target-version support, rehearse on a copy, test business workflows and schedule a controlled cutover. Budget for this from day one. Self-hosting can create control, but it does not guarantee savings.

Decision

DIY, specialist or managed hosting?

DIY is credible for a simple deployment when your team already operates Linux, PostgreSQL, TLS, monitoring and tested backups. A partner is optional, not a prerequisite. Complexity changes the answer: regulated data, difficult migration, extensive custom code, localization, uptime commitments or integrations can justify experienced Odoo and infrastructure help.

Managed Community hosting sits between Odoo Enterprise hosting and doing everything yourself. Compare it with self-hosted versus cloud Odoo. If edition choice is unresolved, read Community versus Enterprise; this article does not duplicate that feature comparison.

Questions

FAQ

Can I self-host Odoo for free?

Odoo Community’s core is free and open source under LGPLv3, with no Enterprise subscription or per-user licence required. Infrastructure, administration, backups, support and upgrades still cost time or money.

What is the best way to install Odoo 19?

Official packages are a straightforward fit for a conventional Linux server; source offers more control; Docker offers repeatable packaging. The best method is the one your team can patch, back up, troubleshoot and upgrade reliably.

Do I need an Odoo partner to self-host?

No. A capable technical team can run a simple project. Complex migration, compliance, localization, integrations or custom modules may justify specialist help.

What must an Odoo backup contain?

Back up the PostgreSQL database and its matching filestore, store copies remotely, retain multiple versions and test full restores in an isolated environment.

Want Community control without becoming the on-call team?

Odin sells flat-fee Odoo Community deployment and management. That is our commercial interest; compare it with DIY on scope, ownership, recovery and upgrade responsibility.