Skip to content
ERP Builders
Odoo

How to Install Odoo Community (Docker and Ubuntu)

Step-by-step Odoo Community installation using Docker for testing and Ubuntu for production, with the configuration, reverse proxy and backup steps most guides leave out.

By ERP Builders Architecture Group2 min read

This guide gets you from nothing to a working Odoo Community instance. Part one uses Docker, which is the fastest way to try Odoo. Part two covers a production-style install on Ubuntu, with the steps people tend to forget.

Replace 19.0 with the current stable version when you follow along.

Part 1: Try Odoo with Docker in ten minutes

You need Docker and Docker Compose installed. Create a folder and add a docker-compose.yml:

services:
  db:
    image: postgres:16
    environment:
      POSTGRES_USER: odoo
      POSTGRES_PASSWORD: change-me
      POSTGRES_DB: postgres
    volumes:
      - db-data:/var/lib/postgresql/data

  odoo:
    image: odoo:19.0
    depends_on: [db]
    ports:
      - "8069:8069"
    environment:
      HOST: db
      USER: odoo
      PASSWORD: change-me
    volumes:
      - odoo-data:/var/lib/odoo
      - ./addons:/mnt/extra-addons

volumes:
  db-data:
  odoo-data:

Run docker compose up -d, open http://localhost:8069 and create a database. Tick "demo data" if you want sample records to explore. Leave it unticked if you plan to load your own.

The addons folder is where you'll put any extra modules, such as OCA modules or your own.

Part 2: A production-style install on Ubuntu

This is a sketch of what a sensible production setup looks like. Adapt it to your environment.

Install system packages and PostgreSQL

sudo apt update && sudo apt upgrade -y
sudo apt install -y git python3-venv python3-dev build-essential \
  libpq-dev libxml2-dev libxslt1-dev libldap2-dev libsasl2-dev \
  libjpeg-dev zlib1g-dev postgresql nginx
sudo -u postgres createuser -s odoo
sudo adduser --system --group --home /opt/odoo odoo

Get the code and a virtual environment

sudo -u odoo git clone --depth 1 --branch 19.0 \
  https://github.com/odoo/odoo.git /opt/odoo/odoo
sudo -u odoo python3 -m venv /opt/odoo/venv
sudo -u odoo /opt/odoo/venv/bin/pip install -r /opt/odoo/odoo/requirements.txt

For PDF reports, install the version of wkhtmltopdf that Odoo's documentation recommends for your release. The distribution package often produces broken headers and footers.

Configuration file

Create /etc/odoo.conf:

[options]
admin_passwd = a-long-random-master-password
db_user = odoo
addons_path = /opt/odoo/odoo/addons,/opt/odoo/custom-addons
data_dir = /opt/odoo/.local/share/Odoo
proxy_mode = True
workers = 4
max_cron_threads = 1
list_db = False
logfile = /var/log/odoo/odoo.log

A few notes:

  • workers turns on multi-process mode. A common starting point is (CPU cores x 2) + 1, then tune based on memory.
  • list_db = False hides the database manager from the public. Do this on every production server.
  • proxy_mode = True is needed when Odoo runs behind Nginx.

Then add a systemd service that runs /opt/odoo/venv/bin/python /opt/odoo/odoo/odoo-bin -c /etc/odoo.conf as the odoo user, and enable it.

Nginx in front

Nginx handles HTTPS and passes traffic to Odoo. You need two locations: normal requests to port 8069, and the /websocket path to the gevent port (8072 by default), which powers live chat and real-time updates. Use Let's Encrypt for the certificate.

Backups, and testing them

A complete Odoo backup is two things: the PostgreSQL database and the filestore (attachments, images). Back up both every night, copy them off the server, and keep several days.

pg_dump -Fc mydb > /backups/mydb-$(date +%F).dump
tar czf /backups/filestore-$(date +%F).tgz /opt/odoo/.local/share/Odoo/filestore/mydb

Once a month, restore a backup to a separate server and log in. A backup you've never restored is a hope, not a backup.

What next

Once it's running, the real work starts: chart of accounts, warehouses, products and users. The Odoo implementation guide covers those decisions. If you'd rather not run servers at all, see Odoo hosting options compared.

And if you get stuck, our Odoo support team deals with installs like this every week.

Frequently asked questions

What server size do I need for Odoo Community?

For a test system, 2 vCPUs and 4 GB of RAM are enough. For production with a few dozen users, start around 4 vCPUs and 8 GB and adjust based on monitoring.

Should I use Docker in production?

You can. Many teams do. The important parts are persistent volumes for the database and filestore, and a tested backup routine, whichever method you choose.

Which Odoo version should I install?

The latest stable release, unless you rely on community modules that haven't been ported yet. Check that every module you need exists for that version first.

ERP Builders Architecture Group

The engineers responsible for integration design, data migration tooling and performance work across ERP Builders projects.

Related articles

Odoo2 min read

Odoo Pricing Explained: What You'll Really Pay

How Odoo pricing works across Community, Standard and Custom plans, Odoo Online vs Odoo.sh vs self-hosting, and the implementation, hosting and support costs to budget for.

Next step

Turn the plan into a working system.

Book a consultation with an ERP consultant. No sales script — just an honest look at your situation.