How to Install Odoo 18 on AlmaLinux 10

How to install Odoo 18 on AlmaLinux 10

Odoo, which was previously called OpenERP, is a comprehensive suite of open-source business applications. It is a popular open-source enterprise resource planning (ERP) software choice. Odoo includes many modules that can be integrated into one application, enhancing its appeal. The newest version, Odoo 17, offers new features that boost its ease of use. The redesigned interface now supports keyboard shortcuts, facilitating the selection of records and enabling multiple selections with ease. This tutorial will show you how to install Odoo 18 on Almalinux 10 with nginx or Apache as a reverse proxy.

Prerequisites

  • An AlmaLinux 10 VPS with at least 2GB of RAM
  • SSH root access, or a 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. Install Dependencies

First, let’s install the dependencies before proceeding to the next steps; otherwise, we will encounter an issue when installing Odoo.

$ sudo dnf install bzip2-devel freetype gcc git openldap-devel libxslt-devel python3 python3-devel libjpeg-devel redhat-rpm-config xorg-x11-fonts-75dpi xorg-x11-fonts-Type1 -y

Step 2. Add System User

It is not recommended to install an Odoo instance under the root user. In this article, we will install the Odoo 18 instance under a new system user called odoo18. So, we need to create a new system account.

$ sudo useradd -md /opt/odoo18 -Urs /bin/bash odoo18

The command above adds a new system user called odoo18 with /opt/odoo18 as its home directory. Odoo 18 will be installed in this directory.

Step 3. Install PostgreSQL

Odoo supports only PostgreSQL as the database engine. Let’s install it directly from the repository.

$ sudo dnf install postgresql-server postgresql-devel postgresql-server-devel -y

In Almalinux, we need to initialize the database by executing this command before starting the PostgreSQL service:

$ sudo postgresql-setup --initdb --unit postgresql

Without initializing the database, we cannot start the PostgreSQL server.

Now, we can start it and enable it on boot.

$ sudo systemctl enable --now postgresql

Now that the PostgreSQL installation is finished, we can add a new PostgreSQL user for our Odoo 18, run this command:

$ sudo su - postgres -c "createuser -s odoo18"

The command above will create a new PostgreSQL user. We will not give the user a password, as the user can only log in locally.

Step 4. Install wkhtmltopdf

The wkhtmltopdf package for AlmaLinux 10 has not been released yet. However, we can use the package for AlmaLinux 9. You can go to their page and check the download link.

After getting the download link, let’s download the package.

$ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm -O wkhtmltox.rpm

Once downloaded, we can install it by running this command:

$ sudo rpm -Uvh wkhtmltox.rpm

That’s it, it should be installed now. We can check the version.

$ wkhtmltopdf --version

It will print you an output like this:

wkhtmltopdf 0.12.6.1 (with patched qt)

Step 5. Install Odoo

In the previous step, we created a new system user called odoo18. We will use this user to install Odoo 18. Let’s switch to this user and install Odoo.

$ su - odoo18

Now, it’s time to download Odoo 18 from Github.

$ git clone https://www.github.com/odoo/odoo --depth 1 --branch 18.0 odoo18

It is best to install Odoo in a virtual environment. To do so, let’s execute the following command to create a new Python virtual environment.

$ python3 -m venv odoo18-venv

The virtual environment is now installed; it is 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@rh ~]$

Next, we can install Odoo

(odoo18-venv) [odoo18@rh ~]$ pip3 install wheel
(odoo18-venv) [odoo18@rh ~]$ pip3 install -r odoo18/requirements.txt

Once the Odoo installation is completed, we can create a new directory to store our custom Odoo addons.

(odoo18-venv) [odoo18@rh ~]$ deactivate
[odoo18@rh ~]$ mkdir /opt/odoo18/odoo18/custom-addons
(odoo18-venv) [odoo18@rh ~]$ exit

Step 6. Create Odoo Configuration File

Now, let’s create the Odoo 18 configuration file.

$ 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

You can replace the password m0d1fyth15 with a stronger one. Save it, then exit.

Step 7. Create Odoo Systemd Unit file

To manage Odoo 18 service, we will create a systemd unit file in this step.

$ sudo nano /etc/systemd/system/odoo18.service

Paste the following 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

Save the file, then exit from the file editor.

That’s it. We can now reload systemd and run Odoo. The systemctl service should be reloaded every time we modify a systemd file.

$ sudo systemctl daemon-reload
$ sudo systemctl enable --now odoo18

Check if Odoo is starting by running this command:

$ sudo systemctl status odoo18

The command above will give you an output like this:

● odoo18.service - Odoo18
Loaded: loaded (/etc/systemd/system/odoo18.service; enabled; preset: disabled)
Active: active (running) since Mon 2025-04-01 21:58:30 CDT; 21min ago
Invocation: 69fc34cc6fae434fb2bd3eeb1f7db594
Main PID: 2755 (python3)
Tasks: 4 (limit: 23175)
Memory: 90M (peak: 92.1M)
CPU: 4.348s
CGroup: /system.slice/odoo18.service
└─2755 /opt/odoo18/odoo18-venv/bin/python3 /opt/odoo18/odoo18/odoo-bin -c /etc/odoo18.conf

Open your web browser and navigate to http://YOUR_SERVER_IP_ADDRESS:8069, and you will see the Odoo page.

how to install Odoo on AlmaLinux 10

Step 7. Install and Configure Reverse Proxy

At this point, you should be able to access your Odoo 18 installation at http://YOUR_SERVER_IP_ADDRESS:8069. To access it using your domain/subdomain, we can install a web server and configure it as a reverse proxy.

Install and Configure Nginx

It is straightforward, let’s run this command:

$ sudo dnf install nginx

Upon installation, nginx will not start automatically. Let’s run the command below to enable nginx and run it on boot.

$ sudo systemctl enable --now nginx

Nginx should be up and running now. Let’s proceed to the next step and create an nginx server block.

$ sudo nano /etc/nginx/conf.d/odoo.conf

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/odoo18.access.log;
error_log /var/log/nginx/odoo18.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 /longpolling {
proxy_pass http://odoochat;
}


location ~* /web/static/ {
proxy_cache_valid 200 60m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo18;
}
}

Replace yourdomain.com with your actual domain name or subdomain name pointing to your server IP address. Then, save the file and exit from the file editor.

To apply the changes, we need to restart nginx.

$ sudo systemctl restart nginx

That’s it. You should now be able to access Odoo 18 at http://yourdomain.com.

Install and Configure Apache

If you prefer Apache to nginx, or you already have Apache installed on your system, you can follow this step and skip the previous one.

$ sudo dnf install httpd

Once Apache is installed, we can create a new virtual host.

$ sudo nano /etc/httpd/conf.d/odoo.conf

Insert the following into the odoo.conf file.

<VirtualHost *:80>
ServerName yourdomain.com
ServerAlias www.yourdomain.com

ErrorLog ${APACHE_LOG_DIR}/yourdomain-error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

ProxyRequests Off
<Proxy *>
Order deny,allow
Require all granted
</Proxy>

ProxyPass / http://127.0.0.1:8069/
ProxyPassReverse / http://127.0.0.1:8069/
<Location />
Order allow,deny
Require all granted
</Location>
</VirtualHost>


Replace yourdomain.com with your domain name, save the file, and restart Apache.

$ sudo systemctl restart httpd

That’s it! You should be able to access your Odoo instance at your domain.

Congratulations! You have followed this article and successfully installed Odoo 18 on your AlmaLinux 10 server. You can now add a new database and start customizing your Odoo website.

Of course, you don’t have to install Odoo 18 on AlmaLinux 10 if you use one of our Odoo VPS Hosting services. In that case, you can simply ask our expert Linux admins to install Odoo 18 on AlmaLinux 10 for you. Our expert administrators are available 24×7 and will take care of your request immediately. Simply log in to the client area and submit a ticket. Your Odoo 18 install should be up and running in no time.

If you liked this post on how to install Odoo 18 on AlmaLinux 10, please share it with your friends or leave a comment below.

Leave a Comment