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.
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:
- Performance VPS - Ideal for small businesses
- NVMe VPS - Excellent value for money
- Eco Dedicated Servers - For deployments with high load
- Performance Dedicated Servers - Maximum performance
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
| Component | Minimum | Recommended |
|---|---|---|
| RAM | 2 GB | 4-8 GB |
| CPU | 2 cores | 4 cores |
| Storage | 10 GB SSD | 20 GB SSD |
| Network | 100 Mbps | 1 Gbps |
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
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 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
| Parameter | Description |
|---|---|
admin_passwd | Password for database management interface (create, backup, etc.) |
db_host | PostgreSQL host (often localhost) |
db_user | PostgreSQL user created for Odoo |
db_password | PostgreSQL user password |
addons_path | Path to Odoo addons |
logfile | Log 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
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.
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
| Command | Description |
|---|---|
sudo systemctl start odoo19 | Start Odoo |
sudo systemctl stop odoo19 | Stop Odoo |
sudo systemctl restart odoo19 | Restart Odoo |
sudo systemctl status odoo19 | Service status |
sudo tail -f /var/log/odoo/odoo19.log | Follow logs in real time |
File Structure
| Path | Description |
|---|---|
/opt/odoo19/ | Odoo installation (source code, venv) |
/opt/odoo19/addons/ | Official addons |
/etc/odoo19.conf | Configuration file |
/var/log/odoo/odoo19.log | Log 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_passwordanddb_portin/etc/odoo19.conf - Test connection:
sudo -u postgres psql -c "\du"(list users) - Verify user
odoo19exists 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