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​