
Odoo is a suite of open source business applications. It offers a range of modules that can be installed within a single application, which makes Odoo so popular these days. The latest version of Odoo makes the ERP system more responsive to modern business needs, easier to use, and better prepared to face operational and regulatory challenges. The new features in Odoo 18 are not just “minor improvements” but significant changes in many areas: better UI & UX, more flexible e-commerce & websites, more modern inventory & supply chain in tracking & packaging, expanded accounting & compliance, and sustainability (ESG) is starting to be taken into account. In this article, we will show you how to install Odoo 18 on a Ubuntu 26.04 server.
Table of Contents
Prerequisites
- An Ubuntu 26.04 VPS with at least 2GB of RAM
- SSH root access or a regular system user with sudo privileges
Conventions
# – given commands should be executed with root privileges either directly as a root user or by use of sudo command
$ – given commands should be executed as a regular user
Step 1. Update the System
First of all, to keep our system updated, we need to log in to our Ubuntu 26.04 VPS through SSH:
ssh master@IP_Address -p Port_number
Replace “master” with a user that has sudo privileges or root if necessary. Additionally, replace “IP_Address” and “Port_Number” with your server’s respective IP address and SSH port number. Next, let’s make sure that we’re on Ubuntu 26.04. You can verify it with this command:
$ lsb_release -a
You should get this as the output:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu Resolute Raccoon
Release: 26.04
Codename: resolute
Then, run the following command to make sure that all installed packages on the server are updated to their latest available versions:
$ sudo apt update
That’s it, the system package information should be updated now.
Step 2. Add a System User
In this step, we will install Odoo 18 under a system user account. So, in this step, we will create a new system account. This user will be called ‘odoo18’ you can use any other name.
$ sudo /usr/sbin/adduser \
--system \
--shell /bin/bash \
--gecos 'Odoo user' \
--group \
--home /opt/odoo18 \
odoo18
Done, a new system user named ‘odoo18’ has been added, and its home directory is /opt/odoo18.
Step 3. Install Dependencies
Odoo 18 requires at least Python 3.10. And, Ubuntu Resolute Raccoon ships with Python 3.13. So, we can install it from the default Ubuntu repository by running the command below.
$ 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
Step 4. Install PostgreSQL
PostgreSQL is the only database engine that Odoo supports to store its data. Odoo 18 requires at least PostgreSQL 12, and Ubuntu has PostgreSQL 18 in its repository. Let’s execute the command below to install the PostgreSQL server on our Ubuntu 26.04 server.
$ sudo apt install postgresql
After this, we can add a new PostgreSQL user for our Odoo 18, run this command:
$ sudo su - postgres -c "createuser -s odoo18"
Step 5. Install Wkhtmltopdf
The package wkhtmltopdf is available in the Ubuntu repository, but it is not the patched version. The patched QT version of wkhtmltopdf offers better compatibility and more features than the stock version you usually get from default repositories. If you need reliable PDF generation with advanced CSS and JavaScript support, we need to install it this way.
$ cd /tmp
$ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
We downloaded the installation package file. Let’s install it now.
$ sudo apt install ./wkhtmltox_0.12.6.1-2.jammy_amd64.deb
Once installed, you can check its version by running this command
$ wkhtmltopdf --version
You will see an output like this:
wkhtmltopdf 0.12.6.1 (with patched qt)
Step 6. Install Odoo
On an Ubuntu 26.04 machine, we can install Odoo using the default Ubuntu repository, but this will install Odoo version 18. In this article, we will install Odoo 18 under a Python virtual environment. In the previous step, we already created a system user, let’s switch to that system user ‘odoo18’, then install Odoo under that username.
$ sudo su - odoo18
This ‘odoo18’ home directory is /opt/odoo18. We will be under this directory after switching to the odoo18 user. Next, proceed with downloading Odoo 18 from GitHub now.
$ git clone https://www.github.com/odoo/odoo --depth 1 --branch 18.0 odoo18
We have cloned Odoo 18 to the /opt/odoo18/odoo18 directory. Now, let’s create a Python virtual environment. With a Python virtual environment, we can install multiple Odoo installations on a single machine.
Let’s execute the following command to create a new Python virtual environment.
$ python3 -m venv odoo18-venv
We have installed the virtual environment; it is now time to activate it by running this command.
$ source odoo18-venv/bin/activate
Once executed, your shell prompt would look like this:
(odoo18-venv) odoo18@ubuntu26:~$
Next, let’s install Odoo
(odoo18-venv) odoo18@ubuntu26:~$ pip3 install wheel
(odoo18-venv) odoo18@ubuntu26:~$ pip3 install -r odoo18/requirements.txt
It will take some time for the Odoo installation to complete.
(odoo18-venv) odoo18@ubuntu26:~$ deactivate
We can create a new directory to store our custom Odoo addons.
$ mkdir /opt/odoo18/odoo18/custom-addons
Now, exit from ‘odoo18’ user and create the Odoo configuration file.
$ exit
$ sudo nano /etc/odoo18.conf
Paste the following contents into the file.
[options]
admin_passwd = m0d1fyth15
db_host = False
db_port = False
db_user = odoo18
db_password = False
addons_path = /opt/odoo18/odoo18/addons,/opt/odoo18/odoo18/custom-addons
http_port = 8069
Make sure to replace the ‘m0d1fyth15’ value above with a stronger password. This is your Odoo master password; you need it to create or delete databases.
Step 7. Create an Odoo Systemd Unit file
In this step, we will create a systemd unit file to start/stop/restart Odoo.
$ sudo nano /etc/systemd/system/odoo18.service
Paste the following content into the systemd unit file above.
[Unit]
Description=odoo18
Requires=postgresql.service
After=network.target postgresql.service
[Service]
Type=simple
SyslogIdentifier=odoo18
PermissionsStartOnly=true
User=odoo18
Group=odoo18
ExecStart=/opt/odoo18/odoo18-venv/bin/python3 /opt/odoo18/odoo18/odoo-bin -c /etc/odoo18.conf
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
That’s it. We can now reload systemd and run Odoo.
$ sudo systemctl daemon-reload
$ sudo systemctl start odoo18
Check if Odoo is starting by running this command:
$ sudo systemctl status odoo18
Open your web browser and navigate to http://YOUR_SERVER_IP_ADDRESS:8069 to see the Odoo page.

After a new database is created, you will be brought to the backend.

Step 8. Configure Reverse Proxy
If compared to Apache, Odoo performs better when running together with Nginx as the reverse proxy. In this tutorial, we will install and configure Nginx. Run the following command to install it
$ sudo apt -y install nginx
Upon installation, Nginx will automatically run. It is also configured to start automatically upon reboot.
Now, let’s create an Nginx server block for the domain name you will use for accessing Odoo. For example, we will use yourdomain.com
$ sudo nano /etc/nginx/sites-enabled/yourdomain.com
Insert the following into that file
upstream odoo18 {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}
server {
listen 80;
server_name yourdomain.com;
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
proxy_buffers 16 64k;
proxy_buffer_size 128k;
location / {
proxy_pass http://odoo18;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
location /websocket {
proxy_redirect off;
proxy_pass http://odoochat;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
location ~* /web/static/ {
proxy_cache_valid 200 60m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo18;
}
}
Save the file and restart the web server for the changes to take effect
$ sudo systemctl restart nginx
Conclusion
Congratulations! You have followed this article and successfully installed Odoo 18 on your Ubuntu 26.04 server.
Of course, you don’t have to install Odoo 18 on Ubuntu 26.04 if you use one of our Odoo VPS Hosting services, in which case you can simply ask our expert Linux admins to install Odoo 18 on Ubuntu 26.04 for you. Our expert administrators are available 24×7 and will handle your request immediately. Simply log in to the client area, then submit a ticket, and your Odoo 18 install should be up and running in no time. Managing Odoo instances is not just about the installation; we can help you optimize your Odoo installation if you have an active service with us.
If you liked this post on how to install Odoo 18 on Ubuntu 26.04, please share it with your friends or leave a comment below.