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 user@vps_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.

Need a fast and easy fix?
✔ Unlimited Managed Support
✔ Supports Your Software
✔ 2 CPU Cores
✔ 2 GB RAM
✔ 50 GB PCIe4 NVMe Disk
✔ 1854 GeekBench Score
✔ Unmetered Data Transfer
NVME 2 VPS

Now just $43 .99
/mo

GET YOUR VPS
>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.

35 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?

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

      Reply
  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.

    Reply
  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?

    Reply
      • Okay so do i skip ssh user@vps_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?

        Reply
        • 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.

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

      Reply
      • 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

        Reply
  4. 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

    Reply
  5. Hi,

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

    Reply
    • Hi Jorge,

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

      Reply
  6. 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.

    Reply
  7. 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.

    Reply
  8. 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)

    Reply
    • 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.

      Reply
    • 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.

      Reply
  9. 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

    Reply
    • 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.

      Reply
  10. I got 3 odoo12 and 1 odoo 11 instances in my one vps. But the problem is, under HTTP, it is fine. Under HTTPS, I got a problem connecting other ports, only one of the ports is good.
    Any detailed instructions about it? please.

    Reply
    • You should check your web server configuration or log files for more information about this issue.

      You can also create a reverse proxy configuration and access each of your Odoo instances using a different domain or subdomain. You can check some of our newer tutorials on how to configure this with either Apache or Nginx.

      Reply
  11. Can you tell me about the limited memory soft and hard calculation, in details.
    how to decide, how much ram needed for the light user and heavy user?

    Reply

Leave a Comment