Enable Dark Mode!
By: Shijin

How to Install Odoo 16 on Ubuntu 20.04 LTS

Technical Odoo 16

This blog will guide you through the step-by-step procedure on how to install Odoo 16 on the Ubuntu 20.04 system. The whole configuration process will explained in this guide.

How to Install Odoo 16 on Ubuntu 20.04 LTS

Step 1: Log in to the Ubuntu server via SSH

The first step is to connect to your server via ssh. You can simply enter into the server using ssh:

ssh username@IP_Address -p Port_number
e.g. ssh root@ -p 22

Step 2: Update your Server

Then log in to your server and make sure the server is up-to-date.
sudo apt-get update
sudo apt-get upgrade

Step 3: Secure your server.

Make sure the system is protected against ssh assaults; using Fail2ban will aid in ssh attack prevention.
sudo apt-get install openssh-server fail2ban

Step 4: Create a system user

Next, let's create a system user for security and to fulfill Odoo roles.
This user will only have limited access to certain files and locations within Odoo.
After that, we'll restrict this user's access to all files and directories linked to Odoo.
sudo adduser --system --home=/opt/odoo16 --group odoo16

Step 5: Installing Packages and libraries

Install the necessary Odoo Python packages:
Install pip3:
sudo apt-get install -y python3-pip
Install Packages and libraries:
sudo apt-get install python-dev python3-dev libxml2-dev libxslt1-dev zlib1g-dev libsasl2-dev libldap2-dev build-essential libssl-dev libffi-dev libmysqlclient-dev libjpeg-dev libpq-dev libjpeg8-dev liblcms2-dev libblas-dev libatlas-base-dev
Install Web web dependencies:
sudo apt-get install -y npm
sudo ln -s /usr/bin/nodejs /usr/bin/node
sudo npm install -g less less-plugin-clean-css
sudo apt-get install -y node-less

Step: 6: Configure Postgresql

PostgreSQL serves as the database server for Odoo. To install and configure the database server for Odoo, follow these steps:
sudo apt-get install postgresql
Create a Postgres user to manage the database in the following step. Later, the conf file requires the user and the provided password.
To carry out the tasks, Postgres utilizes a separate system user named "Postgres." So the following command will change the Postgres user:
sudo su - postgres
Do the following to create the user Odoo16.
Additionally, you must change the password for the user Odoo16 at that time. You must enter the new password in the Odoo configuration file at the very end of the installation process.
createuser --createdb --username postgres --no-createrole --no-superuser --pwprompt odoo16
The user must then be designated as a superuser in order to receive further privileges.
Exit from psql and Postgres user:

Step 7: Get Odoo 16 community from git

We now need to upload the Odoo source file to our server, We can directly clone the Community Edition source code from the Odoo GitHub repository.  Once the installation is complete, you can add the Enterprise edition add-ons.
First, install git to the server:
sudo apt-get install git
To make the Odoo system more secure, we must now change the system user to Odoo (which is created in Step 3), prior to cloning.
sudo su - odoo16 -s /bin/bash
The dot (.) operator is used at the end of the command to copy the files to the current user's home directory, which is /opt/odoo and is the same home directory that was specified when the user was created:
git clone https://www.github.com/odoo/odoo --depth 1 --branch 16.0 --single-branch .
After that, exit from the user and carry out the installation:

Step 8: Install Required Python Packages

Odoo utilizes a variety of Python packages and libraries for various tasks. We must use pip3 to install them in order to run Odoo. Additionally, the requirement.txt file included in the Odoo folder has a list of the necessary requirements. Consequently, we can pass this file as a parameter to the pip install command, which will cause each package listed in requirement.txt to be installed automatically.
sudo pip3 install -r /opt/odoo16/requirements.txt
All the packages must be correctly installed for Odoo to function properly, and you should make sure of that.
Install Wkhtmltopdf
Reports can be printed as PDF files using Odoo. Wkhtmltopdf makes it easier to create PDF reports from HTML data. The Qweb template reports are converted to HTML by the report engine, and the PDF report is produced by Wkhtmltopdf:
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 install -f

Step 9: Setup Conf file

To operate the system, Odoo needs to know some details like the database user, password, add-on locations, etc. These will also be available in the configuration file. Therefore, creating an Odoo configuration file should be our first priority. Additionally, a configuration sample file is accessible in the Odoo folder and may be copied to the desired location. /etc is where configuration files are often stored.
To copy the configuration file to /etc:
sudo cp /opt/odoo16/debian/odoo.conf /etc/odoo16.conf
The following step is to add the required information to the file.
sudo nano /etc/odoo16.conf
Update conf file same as shown in the code below:
   ; This is the password that allows database operations:
   admin_passwd = admin
   db_host = False
   db_port = False
   db_user = odoo16
   db_password = False
   addons_path = /opt/odoo16/addons
   logfile = /var/log/odoo/odoo16.log
The following parameters should be configured before the operations are conducted:
admin_passwd: This is the master password for Odoo, and it may be used to create, remove, duplicate, and many other types of database operations in database management.
db_host: the database host.
db_port:  the database port.
db_user: the database user name.
db_password: supply the password for the database user that was specified when it was created.
addons_path: give the path to the directories that hold the directories for Odoo addons.
Multiple directories may be mentioned, separated by commas:
Eg: addons_path = /opt/odoo16/addons,  /opt/odoo16/enterprise, /opt/odoo16/custom
logfile: the log file path.
Next, you should set the access right of the conf file for the system user Odoo
sudo chown odoo16: /etc/odoo16.conf
sudo chmod 640 /etc/odoo16.conf
Also, create a log directory of Odoo, which will help you to find Odoo-related issues and set permission to the log directory.
sudo mkdir /var/log/odoo
sudo chown odoo16:root /var/log/odoo

Step 10: Odoo service file

After configuring the conf file, we have to create a service to run Odoo. Let’s create a service file ‘odoo16.service’ in /etc/systemd/system:
sudo nano /etc/systemd/system/odoo16.service
Add the following aspects to the newly created service file
   # Ubuntu/Debian convention:
   ExecStart=/opt/odoo16/odoo-bin -c /etc/odoo16.conf
Finally set the root user's permissions for this service file.
sudo chmod 755 /etc/systemd/system/odoo16.service
sudo chown root: /etc/systemd/system/odoo16.service

Step 11: Run Odoo 16

After the successful completion of all the above steps, Let's run the Odoo instance with the following command:
sudo systemctl start odoo16.service
Check the status of the Odoo service by using the following command
sudo systemctl status odoo16.service
You can access the Odoo through the following URL.
If everything is configured successfully, this will reroute you to the page where you can create a database.
Check Odoo Logs
If you are having problems with the installation or for any other reason, you can use the following command to check the logs of the Odoo platform that you have set up. The following command will display the terminal's live logs:
sudo tail -f /var/log/odoo/odoo.log
Finally, use the following command to start the Odoo service automatically after restarting the server:
sudo systemctl enable odoo16.service
Use the following command to restart the Odoo service if you have made any modifications to the add-ons so that your instance will reflect the updates:
sudo systemctl restart odoo16.service
If you have successfully installed Odoo 16, you can access our Odoo Development Tutorial App from the Odoo Apps Page to learn more about Odoo Development and to launch a career in Odoo.

If you need any assistance in odoo, we are online, please chat with us.



sudo cp /opt/odoo16/debian/odoo.conf /etc/odoo16.conf cp: cannot stat '/opt/odoo16/debian/odoo.conf': No such file or directory





sudo pip3 install -r /opt/odoo16/requirements.txt should be changed to : sudo pip3 install -r /opt/odoo16/odoo/requirements.txt





dpkg: dependency problems prevent configuration of wkhtmltox: wkhtmltox depends on fontconfig; however: Package fontconfig is not installed. wkhtmltox depends on xfonts-75dpi; however: Package xfonts-75dpi is not installed. wkhtmltox depends on xfonts-base; however: Package xfonts-base is not installed. dpkg: error processing package wkhtmltox (--install): dependency problems - leaving unconfigured Processing triggers for man-db (2.9.1-1) ... Errors were encountered while processing: wkhtmltox




Radhames Fernandez

It worked as described. Thanks!




Kelvin Garcia

worked smoothly perfect, thanks!




Leave a comment




Cybrosys Technologies Pvt. Ltd.
Neospace, Kinfra Techno Park
Kakkancherry, Calicut
Kerala, India - 673635



Cybrosys Technologies Pvt. Ltd.
1st Floor, Thapasya Building,
Infopark, Kakkanad,
Kochi, India - 682030.



Cybrosys Techno Solutions
The Estate, 8th Floor,
Dickenson Road,
Bangalore, India - 560042

Send Us A Message