Skip to main content

Install Odoo 19 on Ubuntu

This guide explains how to install and configure Odoo 19 on an Ubuntu 24.04 LTS server. Odoo 19 brings many functional and technical improvements to simplify your business processes.

Electronic invoicing compliance (France)

Odoo 19 is ready for mandatory electronic invoicing in France: from 1 September 2026, VAT-registered companies must receive (and, depending on their size, issue) electronic invoices in structured format (Factur-X, UBL, CII) and, where applicable, signed PDFs with probative value. Odoo can generate compliant PDF invoices and integrate with approved platforms.

Order a Server

To host your Odoo instance, HostMyServers offers several suitable options:

Prerequisites

  • SSH access as root or user with sudo
  • Ubuntu 24.04 LTS 64-bit system
  • x64 processor
  • Minimum 2 GB RAM (4 GB recommended for Odoo + PostgreSQL)
  • About 10 GB free disk space (SSD recommended)
  • Port 8069 accessible (Odoo web interface)

Required Configuration

ComponentMinimumRecommended
RAM2 GB4-8 GB
CPU2 cores4 cores
Storage10 GB SSD20 GB SSD
Network100 Mbps1 Gbps
Default port

Odoo listens on port 8069 (HTTP). Remember to open this port in your firewall.

Connect to the Server

Make sure you are connected to your Ubuntu server before starting. Depending on your environment:

Connect with username and IP (default port)

If the server uses the standard SSH port (22):

ssh user@server_ip_address
  • user: server login name
  • server_ip_address: IP address assigned to your server

Connect with a custom port

If the server uses an SSH port other than 22:

ssh -p port_number user@server_ip_address

Connect with a PEM key

If PEM key authentication is required:

ssh -i /path/to/your/key.pem user@server_ip_address

Choose the method that matches your setup. Once connected, you can proceed with the installation.

System Update

Update your Ubuntu server before installing Odoo 19:

sudo apt-get update
sudo apt-get upgrade -y

Server Security

Harden your server security before continuing.

OpenSSH Server

For remote management:

sudo apt-get install -y openssh-server

Fail2Ban

Fail2Ban protects against brute-force login attempts by temporarily blocking offending IPs:

sudo apt-get install -y fail2ban
sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Verify Fail2Ban is active:

sudo systemctl status fail2ban

Install Packages and Libraries

Odoo 19 requires several system packages. Install them with the following commands.

Pip and Python Dependencies

sudo apt-get install -y python3-pip
sudo apt-get install -y python3-dev libxml2-dev libxslt1-dev zlib1g-dev libsasl2-dev libldap2-dev build-essential libssl-dev libffi-dev libpq-dev libjpeg-dev libjpeg8-dev liblcms2-dev libblas-dev libatlas-base-dev

Node.js and NPM

Node.js is used for some Odoo frontend tasks:

sudo apt-get install -y npm

If the node command does not exist, create a symbolic link:

sudo ln -sf /usr/bin/nodejs /usr/bin/node

Less and CSS Plugins

Odoo uses Less as a CSS preprocessor:

sudo npm install -g less less-plugin-clean-css
sudo apt-get install -y node-less

Install and Configure PostgreSQL

Odoo 19 uses PostgreSQL for its database.

Install PostgreSQL

sudo apt-get install -y postgresql

Create Odoo Database User

Switch to the PostgreSQL user and create a dedicated user:

sudo su - postgres
createuser --createdb --username postgres --no-createrole --superuser --pwprompt odoo19
exit
  • createdb: allows the user to create databases
  • odoo19: name of the PostgreSQL user for Odoo
Password

Choose a strong password for the odoo19 user and note it for the configuration file.

Create Odoo System User

Create a dedicated system user to run Odoo:

sudo adduser --system --home=/opt/odoo19 --group odoo19
  • --system: creates a system user (low UID)
  • --home=/opt/odoo19: Odoo installation directory
  • --group odoo19: group with the same name

Get Odoo 19 (Community) from GitHub

Install Git

sudo apt-get install -y git

Clone Odoo 19 Repository

Log in as the odoo19 user and clone the repository into the home directory:

sudo su - odoo19 -s /bin/bash
cd /opt/odoo19
git clone https://github.com/odoo/odoo.git --depth 1 --branch 19.0 --single-branch .
exit
Branch

--branch 19.0 fetches the stable Odoo 19 branch. For a development version, use master.

Install Python Packages and Dependencies

Python Virtual Environment

sudo apt-get install -y python3-venv
sudo python3 -m venv /opt/odoo19/venv

Activate Environment and Install Dependencies

sudo -s
cd /opt/odoo19
source venv/bin/activate
pip install -r requirements.txt

wkhtmltopdf (PDF Generation)

Odoo uses wkhtmltopdf for PDF reports. Download and install the appropriate package:

# OpenSSL dependency for some wkhtmltopdf versions
sudo wget -q http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb -O /tmp/libssl1.1.deb
sudo dpkg -i /tmp/libssl1.1.deb 2>/dev/null || true

# Fonts for PDFs
sudo apt-get install -y xfonts-75dpi

# Download wkhtmltopdf (Bionic version compatible with Ubuntu 24)
cd /tmp
sudo wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.jammy_amd64.deb
sudo dpkg -i wkhtmltox_0.12.6.1-3.jammy_amd64.deb || sudo apt-get install -f -y

If the Jammy package is not available, you can use the Bionic version:

sudo wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb
sudo dpkg -i wkhtmltox_0.12.5-1.bionic_amd64.deb
sudo apt-get install -f -y

Deactivate Virtual Environment

deactivate
exit

Odoo Configuration File

Copy Default Configuration File

sudo cp /opt/odoo19/debian/odoo.conf /etc/odoo19.conf

Edit Configuration

sudo nano /etc/odoo19.conf

Example configuration:

[options]
; Password for database operations (create, backup, etc.)
admin_passwd = YOUR_ADMIN_PASSWORD

db_host = localhost
db_port = 5432
db_user = odoo19
db_password = YOUR_POSTGRESQL_PASSWORD

addons_path = /opt/odoo19/addons
logfile = /var/log/odoo/odoo19.log
ParameterDescription
admin_passwdPassword for database management interface (create, backup, etc.)
db_hostPostgreSQL host (often localhost)
db_userPostgreSQL user created for Odoo
db_passwordPostgreSQL user password
addons_pathPath to Odoo addons
logfileLog file

Permissions and Log Directory

sudo mkdir -p /var/log/odoo
sudo chown odoo19:root /var/log/odoo
sudo chown odoo19: /etc/odoo19.conf
sudo chmod 640 /etc/odoo19.conf

systemd Service

To manage Odoo 19 as a service (start, stop, start on boot).

Create Service File

sudo nano /etc/systemd/system/odoo19.service

Content:

[Unit]
Description=Odoo 19
Documentation=https://www.odoo.com

[Service]
Type=simple
User=odoo19
ExecStart=/opt/odoo19/venv/bin/python3 /opt/odoo19/odoo-bin -c /etc/odoo19.conf

[Install]
WantedBy=multi-user.target
Python version

If your venv uses a specific version (e.g. python3.12), adjust the path: /opt/odoo19/venv/bin/python3.12

Enable and Start Service

sudo systemctl daemon-reload
sudo systemctl enable odoo19.service
sudo systemctl start odoo19.service

Check Status

sudo systemctl status odoo19.service

View Logs

sudo tail -f /var/log/odoo/odoo19.log

Access Odoo

Open a browser and go to:

http://server_ip_or_domain:8069

On first access, Odoo will prompt you to create a new database: database name, email, password and language.

Port

The default port is 8069. If you changed the port in /etc/odoo19.conf (http_port parameter), use that port in the URL.

Firewall Configuration

Open port 8069 if you use UFW:

sudo ufw allow 8069/tcp
sudo ufw reload

Useful Commands

CommandDescription
sudo systemctl start odoo19Start Odoo
sudo systemctl stop odoo19Stop Odoo
sudo systemctl restart odoo19Restart Odoo
sudo systemctl status odoo19Service status
sudo tail -f /var/log/odoo/odoo19.logFollow logs in real time

File Structure

PathDescription
/opt/odoo19/Odoo installation (source code, venv)
/opt/odoo19/addons/Official addons
/etc/odoo19.confConfiguration file
/var/log/odoo/odoo19.logLog file

Troubleshooting

Service Won't Start

  • Check logs: sudo journalctl -u odoo19.service -n 100
  • Check config: sudo -u odoo19 /opt/odoo19/venv/bin/python3 /opt/odoo19/odoo-bin -c /etc/odoo19.conf --stop-after-init
  • Verify PostgreSQL is running: sudo systemctl status postgresql

Database Connection Error

  • Check db_host, db_user, db_password and db_port in /etc/odoo19.conf
  • Test connection: sudo -u postgres psql -c "\du" (list users)
  • Verify user odoo19 exists in PostgreSQL

Cannot Access Web Interface

  • Verify port 8069 is open: sudo ss -tlnp | grep 8069
  • Check firewall: sudo ufw status
  • Check Odoo logs for startup errors

Performance Issues

  • Increase server resources (RAM, CPU)
  • Configure a reverse proxy (Nginx/Apache) with cache and SSL
  • Use task workers by adjusting parameters in odoo19.conf

References