Prerequisites
| Component | Minimum | Recommended |
|---|---|---|
| CPU | 2-core (2.0 GHz) | 4 cores+ |
| RAM | 2 GB (barely) | 4 GB+ for smooth operation |
| Disk | 20 GB free (SSD preferred) | 50–100 GB+ SSD |
⚙️Step 1: Update the Server
First, connect to your server via SSH and update package lists:
ssh username@ip_address -p portnumber
sudo apt update && sudo apt upgrade -y
Verifying your Ubuntu version is also useful:
lsb_release -a
You should see Ubuntu 24.04 as the release.
⚙️Step 2: Create an Odoo System User
Create a dedicated system user to run Odoo:
sudo useradd -m -d /opt/odoo19 -U -r -s /bin/bash odoo19
This keeps the Odoo installation separate and secure.
⚙️Step 3: Install Dependencies
Odoo runs on Python, so we need various build tools and libraries:
sudo apt install build-essential wget git python3-pip python3-dev python3-venv python3-wheel \
libfreetype6-dev libxml2-dev libzip-dev libsasl2-dev python3-setuptools libjpeg-dev \
zlib1g-dev libpq-dev libxslt1-dev libldap2-dev libtiff5-dev libopenjp2-7-dev -y
These packages support Odoo’s core features.
⚙️Step 4: Install PostgreSQL
Odoo uses PostgreSQL to store data:
sudo apt install postgresql -y
Now create a PostgreSQL role for Odoo:
sudo su - postgres -c "createuser -s odoo19"
This role will manage the Odoo database.
Alter postgres user password
sudo su - postgres psql alter user odoo19 with password 'password_we_need'; exit
⚙️Step 5: Install wkhtmltopdf
Odoo uses wkhtmltopdf to generate PDFs (reports, invoices, etc.). The Ubuntu repo version isn’t fully compatible, so download the patched release:
cd /tmp
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
sudo apt install ./wkhtmltox_0.12.6.1-2.jammy_amd64.deb
You can verify installation:
wkhtmltopdf --version
You should see version 0.12.6.1 confirmed.
⚙️Step 6: Install Odoo 19
Switch to the Odoo user:
sudo su - odoo19
Clone the Odoo 19 source code:
git clone https://github.com/odoo/odoo --depth 1 --branch 19.0 odoo19
Create a Python virtual environment and activate:
python3 -m venv odoo19-venv
source odoo19-venv/bin/activate
Install odoo requirements
pip install wheel
pip install -r odoo19/requirements.txt
deactivate virtual environment
deactivate
Then prepare a directory for custom modules:
mkdir /opt/odoo19/odoo19/custom-addons
Exit back to sudo user:
exit
Now create the Odoo config file:
sudo nano /etc/odoo19.conf
Paste this configuration:
[options]
admin_passwd = <YOUR_STRONG_MASTER_PASSWORD>
db_user = odoo19
db_password = password_we_need
addons_path = /opt/odoo19/odoo19/addons,/opt/odoo19/odoo19/custom-addons
http_port = 8069
⚠️ Replace <YOUR_STRONG_MASTER_PASSWORD> with a secure password.
⚙️ Step 7: Create a Systemd Service
Create a Systemd unit file so you can manage Odoo like a service:
sudo nano /etc/systemd/system/odoo19.service
Paste:
[Unit]
Description=Odoo 19 Requires=postgresql.service After=network.target postgresql.service [Service] Type=simple User=odoo19 Group=odoo19 ExecStart=/opt/odoo19/odoo19-venv/bin/python3 /opt/odoo19/odoo19/odoo-bin -c /etc/odoo19.conf StandardOutput=journal+console [Install] WantedBy=multi-user.target
To exit from nano (ctrl + x, y and Enter)
Then reload and start:
sudo systemctl daemon-reload
sudo systemctl start odoo19
sudo systemctl enable odoo19
You can check status with:
sudo systemctl status odoo19
Odoo should now be running on http://<YOUR_SERVER_IP>:8069.