Install multiple Odoo instances on a single machine

In this tutorial, we will explain, how to install multiple Odoo instances on a single Ubuntu 16.04, using a python virtual environment. This guide should work on other Linux VPS systems as well but was tested and written for an Ubuntu 16.04 VPS.

1. Log in to your VPS via SSH

ssh [email protected]_IP

2. Update the system and install all necessary packages

sudo apt-get update && apt-get -y upgrade
sudo apt-get install git wkhtmltopdf python-pip python-dev \
    python-virtualenv libevent-dev gcc libjpeg-dev libxml2-dev \
    libssl-dev libsasl2-dev node-less libldap2-dev libxslt-dev

3. Install PostgreSQL

Installing PostgreSQL with apt is quick and easy:

apt install postgresql-9.5 postgresql-server-dev-9.5
systemctl enable postgresql.service
systemctl start postgresql.service

4. Create Odoo users

We will install two Odoo instances, Odoo version 10 and Odoo version 9. To create system users for both instances run:

sudo adduser --system --group odoo10 --home /opt/odoo10
sudo adduser --system --group odoo9 --home /opt/odoo9

Create PostgreSQL database users, odoo10 and odoo9:

su - postgres -c "createuser --createdb --username postgres --no-createrole --no-superuser --no-password odoo10"
su - postgres -c "createuser --createdb --username postgres --no-createrole --no-superuser --no-password odoo9"

5. Install Odoo

First, we will install Odoo version 10. To switch to user odoo10 run:

sudo su - odoo10 -s /bin/bash

Clone the Odoo 10.0 branch from github:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 10.0 --single-branch /opt/odoo10

Create python virtual environment and install all requirements:

cd /opt/odoo10
virtualenv ./venv
source ./venv/bin/activate
pip install -r requirements.txt

Switch back your user:

exit

To install Odoo version 9, switch to user odoo9:

sudo su - odoo9 -s /bin/bash

Clone the Odoo 9.0 branch from github:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 9.0 --single-branch /opt/odoo9

Create python virtual environment and install all requirements:

cd /opt/odoo9
virtualenv ./venv
source ./venv/bin/activate
pip install -r requirements.txt

Switch back your user:

exit

6. Configure Odoo

We will configure Odoo 10 to listen on port 8010 and Odoo 9 to port 8009 and set the master admin password. You can also set the ports numbers according to your liking.

>sudo nano /etc/odoo10.conf
[options]
admin_passwd = your_strong_admin_password
db_host = False
db_port = False
db_user = odoo10
db_password = False
addons_path = /opt/odoo10/addons
logfile = /var/log/odoo10.log
xmlrpc_port = 8010
sudo nano /etc/odoo9.conf
[options]
admin_passwd = your_strong_admin_password
db_host = False
db_port = False
db_user = odoo9
db_password = False
addons_path = /opt/odoo9/addons
logfile = /var/log/odoo9.log
xmlrpc_port = 8009

Create SystemD scripts:

sudo nano /lib/systemd/system/odoo10.service
[Unit]
Description=Odoo 10
Requires=postgresql.service
After=postgresql.service

[Service]
Type=simple
PermissionsStartOnly=true
User=odoo10
Group=odoo10
SyslogIdentifier=odoo10
ExecStart=/opt/odoo10/venv/bin/python2 /opt/odoo10/odoo-bin -c /etc/odoo10.conf

[Install]
WantedBy=multi-user.target
sudo nano /lib/systemd/system/odoo9.service
[Unit]
Description=Odoo 10
Requires=postgresql.service
After=postgresql.service

[Service]
Type=simple
PermissionsStartOnly=true
User=odoo9
Group=odoo9
SyslogIdentifier=odoo9
ExecStart=/opt/odoo9/venv/bin/python2 /opt/odoo9/openerp-server -c /etc/odoo9.conf

[Install]
WantedBy=multi-user.target

7. Final steps

Enable both Odoo instances to start on boot:

sudo systemctl enable odoo10.service
sudo systemctl enable odoo9.service

To start both Odoo 10 and Odoo 9 instances, run:

sudo systemctl start odoo10.service
sudo systemctl start odoo9.service

You can now access your Odoo 10 installation at http://your_ip_address:8010 and Odoo 9 installation at http://your_ip_address:8009.

That’s it. You have successfully installed both Odoo version 10 and version 9 on your Ubuntu VPS. Now open your browser, type the address of your installation and create a database and admin user. For more information about how to manage your Odoo installation, please refer to the Odoo documentation. If you want to make your Odoo faster, check our tutorial on how to Speed up Odoo


Of course you don’t have to install multiple Odoo instances on a single machine, if you use one of our Odoo VPS Hosting services, in which case you can simply ask our expert Linux admins to setup this for you. They are available 24×7 and will take care of your request immediately.

PS. If you liked this post, on how to install multiple Odoo instances on a single machine,  please share it with your friends on the social networks using the buttons on the left or simply leave a reply below. Thanks.

31 thoughts on “Install multiple Odoo instances on a single machine”

  1. Hi,

    Thanks! Your tutorial was quite helpful for me.

    However, on installation, I’m getting an error”Database creation error: Access denied” in all instances, even when using ‘admin’ as the Master password.

    What could be the issue?

    • Please closely follow the instructions. If you do everything as described in our tutorial, you shouldn’t have any issues with your database.

  2. Hi
    Thanks for your tutorial.
    I followed everything but when I try to connect to xxx.xxx.xx.xx:8010 I’ve got a 500 internal server error and a unable to connect on the 8009. The only things I changed where the users, group users and the folders. I also installed odoo 10 on both folders.

    • Please check the Odoo logs for more information.

    • I am getting the same issue with error 500
      in the log it shows
      psycopg2.OperationalError: FATAL: Peer authentication failed for user “odoo10”

  3. if i am right your tutorial is to install it on a virtual server, how do i go about it if i want to install it directly on my ubuntu 16?

    • You can install multiple Odoo instances on your server using the same steps provided in our tutorial.

      Thanks

      • Okay so do i skip ssh [email protected]_IP and Create python virtual environment and install all requirements?

        Also if i want to enable printing in odoo what command am i supposed to include, and at what stage of the installation do i include it?

        • Hi Ebi,

          Yes, if you want to install Odoo on your local Ubuntu machine, you can skip that step.

          As for the printing, please check Odoo’s official documentation for more details.

  4. Hi,
    Good job, your tutorial was very helpful. it work for me. I have installed v8.0 and v11.0 on ubuntu 17.04.

    • Hi Mohamed, how you managed to run odoo11 as i know it require python 3 instead of python 2
      Did you modified the script

      • solved by changing the below steps

        cd /opt/odoo11
        virtualenv –python=python3 ./venv
        source ./venv/bin/activate
        pip3 install -r requirements.txt

        also worked with odoo12

  5. It was indeed a good step by step tutorial.

    Please let me know can we have two instances of same version of Odoo like version 10.

    Or Do we need some other step.

    Please reply

  6. You can use the same steps for same Odoo version.

  7. Hi,

    I have a question, this method doesn’t install Nginx? What if I need to enable longpolling or make another modification in Nginx?

  8. Hi, follow your instructions odoo works fine, but dont save log, can you help me to find the log file please

    • Hi Jorge,

      The path of the log file is defined by the ‘logfile’ option in the Odoo configuration file. Did you check the path?

  9. Will this be updated for the Odoo 12 version, as it uses Python 3. Hope to see that soon, thanks in advance and great tutorial.

    • Yes, we have plans to publish a blog post for Odoo 12. Thanks

  10. use pip2 install -r requirements.txt instead of pip install -r requirements.txt. pip install does not work in my server. I am not using virtual environment.

  11. Hi ,

    I have a server with 6 instances of odoo(6 processes )
    But now I am facing speed issues.
    I need to tune it for multiprocessor. For example, Worker, limit memory hard and soft, etc…

    I have checked many blogs and url all provide ideal configure for a single instance,

    I like to know how can I set up these parameters for multiple instanes (6 in my case)

    • You can enable multiprocessing on your Odoo instances and tune each Odoo instance separately by editing the respective Odoo configuration file. The number of CPU workers, memory limit etc. can be different, depending on the server resources you want to allocate to each Odoo instance.

  12. don`t see log :(

    • Edit your Odoo configuration file and set a logfile location, e.g.:

      logfile = /var/log/odoo10.log

      If /var/log/odoo10.log is not created, create it, set proper permissions, then restart the Odoo instance.

  13. what is the password of user odoo10?

    • There is no password while creating a new system user. You can set it using the passwd odoo10 command

      • When I try to change the password I must write the current password that I don’t have. What is the current password ?

        • The current mater admin password is set in your Odoo configuration file in /etc/odoo10.conf

          admin_passwd = your_strong_admin_password

  14. hi there! Thanks to this great tutorial!
    Worked for me so far. I created 3 instances for different development stages (demo, testing, productive). However, I’m facing the issue that I’m getting error 400 bad request while login in (CSRF token expired).
    And from my demo instance I get “errno 98: server address in use.

    Seems that I need to change the server port somewhere else?

    Thanks so far for the great tutorial!

    Regards, Todoo

    • Correct, you need to configure your Odoo instances to run on their own port. You need to edit the xmlrpc_port in your Odoo conf file then restart the service.

Leave a Comment

To prove you are human please solve the following *