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.
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:
workersturns on multi-process mode. A common starting point is (CPU cores x 2) + 1, then tune based on memory.list_db = Falsehides the database manager from the public. Do this on every production server.proxy_mode = Trueis 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
Odoo Hosting Options: Online vs Odoo.sh vs Self-Hosted
Comparing Odoo Online, Odoo.sh and self-hosting on cloud or on-premise servers: custom modules, control, performance, backups, upgrades and which suits which business.
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.
Is Odoo Free? Licences, Free Plans and Real Costs
Is Odoo really free? Odoo Community's open-source licence, the one-app-free plan, what Enterprise costs, and the costs every edition has.
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.