Install Odoo 19 Community with the method you can maintain.
For a normal Ubuntu 24.04 server, Odoo’s official Debian repository is the shortest supported package route. Use source when developers need explicit control; use the official Docker image when your team already operates containers. None of these basic starts is a production deployment by itself.

The direct answer: choose the official Odoo 19 Debian package for the simplest Linux service, a source checkout for development or multiple controlled versions, and the official odoo:19.0 Docker image for container operations. Production additionally needs PostgreSQL, persistent data, HTTPS, restricted database selection, monitoring, tested remote backups, and a deliberate update process.
Packages, source, or Docker?
| Method | Best fit | Main responsibility |
|---|---|---|
| Official Debian package/repository | Ubuntu 24.04 LTS or compatible Debian-based host; conventional service administration | OS repository updates, configuration, PostgreSQL, proxy, backups |
| Source checkout | Addon development, debugging, several Odoo versions, controlled Python environment | Dependencies, service unit, source revision, Python environment, all operations |
| Official Docker image | Teams with established Docker/Compose operations | Separate PostgreSQL, volumes, secrets, proxy, image updates, restore tests |
| Windows installer | Local testing or a single-user local instance | Odoo explicitly discourages Windows packaging for production |
Do not choose Docker only because the first command looks shorter. Containers move operational work into image pinning, volume lifecycle, networking, secrets, health checks, and backup automation. Likewise, a source install gives control but does not provide a production service automatically.
Decide these before installing
- Edition and version: this guide is for Odoo 19 Community. Keep custom addons on a compatible 19.0 branch.
- Supported platform: Odoo’s Odoo 19
debpackage currently supports Ubuntu Noble 24.04 LTS. Confirm the current documentation before deployment. - Database: Odoo requires PostgreSQL; Odoo 19 source documentation states PostgreSQL 13 or newer. The Odoo process must not connect as the PostgreSQL
postgresrole. - Network: prepare DNS, inbound 80/443 to a reverse proxy, restricted SSH, and no public PostgreSQL port.
- Recovery: choose remote backup storage and write a restore procedure before go-live. Database and filestore form one logical backup.
Avoid universal server-size claims. Worker count, RAM, CPU, attachment volume, reports, scheduled jobs, integrations, and concurrent workload all matter. Start from measured workload and monitor staging or a controlled pilot.
Install from Odoo’s Debian repository
On a clean supported Debian/Ubuntu host, install PostgreSQL first, then add Odoo’s signed nightly repository exactly as documented. Review any command downloaded from the internet before executing it.
sudo apt install postgresql -y
wget -q -O - https://nightly.odoo.com/odoo.key | sudo gpg --dearmor -o /usr/share/keyrings/odoo-archive-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/odoo-archive-keyring.gpg] https://nightly.odoo.com/19.0/nightly/deb/ ./' | sudo tee /etc/apt/sources.list.d/odoo.list
sudo apt-get update
sudo apt-get install odoo
The package installs Odoo as a service and its default setup expects PostgreSQL on the same host. Nightly packages can be difficult to keep current, so define a maintenance window, inspect proposed package changes, back up first, and verify on staging. Odoo also offers downloaded distribution packages; the official command is apt install <path_to_installation_package>.
PDF headers and footers require the supported wkhtmltopdf 0.12.6 build; Odoo notes that pip does not install it. Treat report rendering as a separate acceptance test.
Run Odoo 19 from source
Source is ideal when you need readable code and explicit version control. Odoo calls this “running directly from source,” not a packaged installation.
git clone --branch 19.0 --single-branch https://github.com/odoo/odoo.git
cd odoo
python3 --version
sudo ./setup/debinstall.sh
Odoo 19 requires Python 3.10 or later. Its Debian dependency script parses the project’s control file and installs distribution dependencies. Install PostgreSQL, create a non-superuser role as the official source guide describes, and keep custom addons outside the core checkout. A documented test launch is:
python3 odoo-bin --addons-path=addons -d mydb
That foreground command is for verification or development. For production, create a dedicated Unix user, controlled configuration, service manager, log handling, explicit addon paths, HTTPS proxy, worker and resource limits, and an update/restart procedure. Never run the application as root.
Use the official Odoo Docker base image
The image requires a separate running PostgreSQL server. Persist both /var/lib/odoo and PostgreSQL’s data directory. Pin at least the major/minor tag, such as odoo:19.0, and for reproducible production rollout pin a tested dated tag or digest. Do not use latest as production advice.
The official image documentation demonstrates named volumes and the HOST, USER, and PASSWORD connection variables. Its small launch examples explain image use; they omit the reverse proxy, hardening, resource policy, and remote backups required for production. For a guided test setup see the Odoo Docker install guide; for the production architecture see the hardened Compose checklist.
A successful login is not production readiness
- Terminate valid HTTPS at a maintained reverse proxy. Odoo warns authentication information is otherwise transmitted in cleartext.
- Enable
proxy_mode = Trueonly when Odoo is actually behind that trusted proxy. - Set a precise
dbfilteror database name, then uselist_db = False/--no-database-listand block database management routes. - Do not load demo data on an internet-facing database. Replace default/admin credentials and protect the master password.
- Use the production multi-process server and tune workers and memory/time limits from observed workload. Do not copy sizing numbers blindly.
- Keep PostgreSQL private, use a non-superuser application role, patch the OS and application, and review custom addon compatibility before updates.
- Monitor availability, errors, disk, database growth, memory, CPU, queues, cron jobs, certificate expiry, and backup completion.
Back up the database and filestore together
Odoo attachments live in the filestore while business records and attachment metadata live in PostgreSQL. A database-only dump can therefore be incomplete. Schedule coordinated database and filestore backups, encrypt them, copy them to remote storage that the Odoo host cannot erase, define retention, and alert on failures. Restore to an isolated environment regularly and verify login, attachments, reports, and critical workflows.
Restrict SSH to keys, use a firewall, avoid exposing port 8069 publicly, and isolate customer workloads where applicable. Back up configuration, custom addons, image/source revision, and secrets inventory separately so a replacement host can be rebuilt. Never claim recovery readiness from a green “backup completed” message alone.
Diagnose by layer
- Odoo cannot connect: verify PostgreSQL is running, host/port are reachable, credentials match, and the role is not
postgres. In Docker, service DNS names differ fromlocalhost. - Database selector appears: verify
db_name/dbfiltermatches the hostname before disabling database listing. - Redirects or secure cookies fail: confirm the proxy forwards the documented headers and only then enable proxy mode.
- Module is missing: inspect addon paths, filesystem permissions, 19.0 compatibility, dependencies, and logs; do not edit core files as a shortcut.
- PDF layout fails: test the supported wkhtmltopdf build and fonts independently.
Verify against current official documentation
FAQ
What is the easiest way to install Odoo 19 Community?
On supported Ubuntu 24.04, Odoo’s official Debian repository is generally the simplest conventional service installation. Docker is convenient only when you are already prepared to operate its database, volumes, proxy, secrets, updates, and backups.
Can Odoo 19 Community run on Windows?
Yes for testing or a single-user local instance, but Odoo’s official package documentation discourages Windows deployment for production because of its limitations and risks.
Is a basic Odoo Docker command production-ready?
No. It demonstrates how to launch the image. Production still requires persistent Odoo and PostgreSQL data, HTTPS reverse proxying, restricted database management, resource controls, monitoring, updates, and tested remote backups.
Continue planning the deployment
Want Odoo without becoming its operations team?
Odin offers transparent one-click and managed deployment options. We still explain the architecture, data location, backup scope, updates, and responsibilities before you choose.