Odoo20

Odoo20

Official

Docker app from Eurotimmy's Repository

Overview

Odoo is an open-source suite of integrated business applications that includes various modules for different business functions such as accounting, project management, inventory management, human resources, and more. It provides a comprehensive and modular solution for businesses to manage and streamline their processes.

Odoo is the world's easiest all-in-one management software.

It includes hundreds of business apps:
CRM | e-Commerce | Accounting | Inventory | PoS | Project management | MRP

:: IMPORTANT NOTES ::
*** BETA - NOT YET TESTED ON Unraid ***
Do NOT use with production data without testing first. Provided as-is with no warranty; use at your own risk. The template author accepts no responsibility for any loss of data. Keep backups and do your own due diligence.

Odoo 20 requires PostgreSQL 16 or later. A separate PostgreSQL container is required.
See the README.md file at https://github.com/Eurotimmy/Unraid-templates/blob/main/Odoo20/README.md

Notes for using Odoo20 on an Unraid server via the CA installation

[!CAUTION] BETA – NOT YET TESTED ON UNRAID. DO NOT USE WITH PRODUCTION DATA WITHOUT TESTING FIRST.

This Odoo20 template is new and has not been fully tested on Unraid. It is based on the Odoo19 template and the official Odoo 20 Docker image. Test it on a separate, non-production setup first, and keep backups of your PostgreSQL database and filestore.

These templates and notes are provided as-is, free of charge, with no warranty of any kind. You use them at your own risk. I accept no responsibility for any loss of data, downtime or other issues arising from their use, or for any due diligence you choose not to do beforehand.

Please report anything that does or doesn't work in the support thread.

  • Installing the Odoo container in Unraid... the template defaults are expected to work as-is, but this has not yet been confirmed for Odoo20
  • Odoo20 requires PostgreSQL 16 or later (Odoo 19 only needed 13). Check your PostgreSQL container version before installing; many existing Unraid setups run an older version
  • Odoo20 also connects to the default postgres database for some shared background tasks (the new db_system option). With the standard PostgreSQL container from CA this just works. If your database user can only access a single database, either grant it access to postgres or set db_system in odoo.conf to a database it can use
  • Installing PostgreSQL was also straight-forward and you'll only need to note down the settings you select here to transpose into the 'odoo.conf' file (detailed below)
  • The support thread for this container is located in the Unraid Forums here, please post any questions or contributions

#f03c15 IMPORTANT NOTE #f03c15

Permissions on the mapped volumes I needed to use the Extra Parameters in the Unraid template 'ADVANCED VIEW', with the value set as --user=100:101 due to having some issues with the container being able to write to the 3 mapped volumes

The process I followed was to check the uid and gid in the Odoo20 container with docker exec -it Odoo20 sh -c 'echo "uid=$(id -u) gid=$(id -g)"' which returned uid=100 gid=101
I then manually made the folder I had seen in the error logs with mkdir -p /mnt/user/appdata/odoo20/data/sessions
Then to CHOWN the folders with chown -R 100:101 /mnt/user/appdata/odoo20
And, finally CHMOD the folders with chmod -R 775 /mnt/user/appdata/odoo20
I was good from the next restart of the Odoo20 container

After installing Odoo, return to Unraid to view the container template in 'ADVANCED VIEW'
We will need to make a change to the Post Arguments section to avoid having a security exposure open via a default Admin account
The Post Arguments need to be removed after the initial first successful boot

  • I have used the -i base command as Odoo (17 & 18) wouldn't initialise its DB during its first startup without it
  • The -i base command must be removed to make for a safe environment

#f03c15 DEMO DATA (changed in Odoo20) #f03c15

  • Like Odoo19 (and unlike Odoo17 / Odoo18), Odoo20 does not install demo data by default, so the default -i base gives you a clean database
  • If you want demo data (handy for a test instance), change your Post Arguments to be
    -i base --with-demo --stop-after-init
  • This will initialise Odoo20 with the demo data, and then stop Odoo20 from running.
  • Please restart your container after removing -i base --with-demo --stop-after-init from your Post Arguments
  • Alternatively, set with_demo = True in odoo.conf before the first start-up

#f03c15 INSTALLATION STEPS #f03c15

  1. The odoo.conf file needs to be copied in to the Config Location path on Unraid server
    The Config Location path is selected by you in the Odoo20 settings when installing in Unraid CA
    Your typical Config Location path may be at /mnt/user/appdata/odoo20/config

  2. My odoo.conf file if you'd like to use it
    For my path (above), within the Unraid Shell / CLI:

  •     cd /mnt/user/appdata/odoo20/config
  •     wget https://raw.githubusercontent.com/Eurotimmy/unraid-templates/main/Odoo20/odoo.conf
  •     nano odoo.conf
  1. The odoo.conf file needs to be edited and then your Odoo Docker container needs to be started / restarted:
  admin_passwd = (This password will become hashed on first start-up, for security reasons)
  db_host = (Use the IP address assigned to the PostgreSQL container, in the 'Docker' tab)
  db_port = (Enter what your PostgreSQL 'Container Port' is set to, from your PostgreSQL install)
  db_user = (Enter what your PostgreSQL 'POSTGRES_USER' is set to, from your PostgreSQL install)
  db_password = (Enter what your PostgreSQL 'POSTGRES_PASSWORD' is set to, from your PostgreSQL install)
  db_name = (Enter what your PostgreSQL 'POSTGRES_DB' is set to, from your PostgreSQL install)
  1. Once your container starts, open the Odoo Web UI from your Odoo icon
    Change the admin password straight away (Settings > Users)
  •    Username: admin
  •    Password: admin

#f03c15 NPM (Nginx Proxy Manager) - Reverse Proxy settings #f03c15

I am using NPM to reverse proxy my Odoo instance via my own domain name
You will need to edit your odoo.conf file (in your Config Location) to include proxy_mode = True
In NPM on my odoo.example.com domain I use the following in my location settings (within the 'Advanced' tab)

    proxy_pass $forward_scheme://$server:$port;
    proxy_set_header X-Forwarded-Host $http_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;
    proxy_redirect off;
}

If you run Odoo20 with workers above 0 (multi-process mode), the live chat / notification websocket is served on port 8072. Map the Live Chat / WebSocket Port in the template (ADVANCED VIEW) and add a second location in NPM:

location /websocket {
    proxy_pass $forward_scheme://$server:8072;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Forwarded-Host $http_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;
}

With workers = 0 (the default) you don't need this.

#f03c15 Upgrading from Odoo19 #f03c15

  • Odoo major versions cannot be upgraded by just changing the image tag. Pointing an Odoo19 database at Odoo20 will not work
  • Install Odoo20 as a separate container with its own appdata folders and its own (new) database
  • To migrate existing data use the official Odoo Upgrade service or the community OpenUpgrade project, then restore into Odoo20
  • Any custom / community addons in extra-addons must be Odoo 20 compatible versions
  • Back up your PostgreSQL database and filestore before trying any upgrade

#f03c15 Additional Resources #f03c15

Theres a great GitHub Gist here with well documented options you can use in the odoo.conf file if you want greater control

Requirements

PostgreSQL 16 or later (e.g. postgresql16 / postgresql17) from Community Applications

Download Statistics

53,736,765
Total Downloads
685,189
This Month
814,196
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Details

Repository
odoo:20
Last Updated2026-09-09
First Seen2024-01-09

Runtime arguments

Web UI
http://[IP]:[PORT:8069]
Network
bridge
Shell
bash
Privileged
false
Extra Params
--user=100:101

Template configuration

WebUI PortPorttcp

Port to access the Odoo web interface

Target
8069
Default
8069
Value
8069
Live Chat / WebSocket PortPorttcp

Only needed if you set workers above 0 in odoo.conf (multi-process mode). Route /websocket to this port in your reverse proxy.

Target
8072
Default
8072
Data LocationPathrw

Odoo filestore (attachments, sessions, etc.)

Target
/var/lib/odoo
Default
/mnt/user/appdata/odoo20/data
Value
/mnt/user/appdata/odoo20/data
Config LocationPathrw

Directory containing odoo.conf

Target
/etc/odoo
Default
/mnt/user/appdata/odoo20/config
Value
/mnt/user/appdata/odoo20/config
Addons LocationPathrw

Custom/community addons (must be Odoo 20 compatible)

Target
/mnt/extra-addons
Default
/mnt/user/appdata/odoo20/extra-addons
Value
/mnt/user/appdata/odoo20/extra-addons