Odoo Build

Docker pullsopen in new window

This is the Mint Systemopen in new window Odoo development environment.

This projects provides a highly opinionated way to develop Odoo modules. It features:

  • Odoo Source: Checkout the Odoo Community and Enterprise Edition and start editing the source code.
  • Docker Compose: Spin up a Odoo, Postgres and pgAdmin Docker container and experiment locally.
  • Native: Start an Odoo server directly from the source.
  • Import and Export Database: Use Odoo scripts to copy and restore a customer database to the local environment. Investigate issues and deploy the database at ease.
  • Community Modules: The most common community modules are checked out when setting up the project.
  • Customizing Snippets: Create snippets and push them to an Odoo database.
  • Odoo Scripts: Develope scripts to patch Odoo code.
  • Odoo Revisions: Snapshot the Odoo source at a specific date. See revisions for details.
  • Odoo Image: Build and publish a custom Odoo Docker image. See README for details.
  • Kubernetes: Deploy Odoo and Postgres to a Kubernetes cluster.
  • Develop Modules: Scaffold a new module, develop new Odoo features locally and much more.
  • Credentials: Setup credentials to log into Odoo.
  • Import Data: Import Odoo records from CSV.


The Odoo development environment has the following requirements:

You can also use Nixopen in new window to setup the development requirements.


The usage section is a set of workflows. See task help or task for details about the project commands.

Clone this repository.

git clone git@github.com:Mint-System/Odoo-Build.git
cd Odoo-Build

When working with Nix, run the nix-shell.


Checkout the Odoo version.

task checkout 13.0
# or
task checkout 14.0
# or
task checkout 15.0
# or
task checkout 16.0
# or
task checkout 17.0

Install Odoo scriptsopen in new window.

task install-odoo-scripts


Run Odoo from source. Currently supported OS: Ubuntu, Debian, Pop!_OS, Darwin

Install Odoo native requirements

Pull the odoo submodule and install the python dependencies.

git submodule update odoo
task install-native

Initialize and start Odoo from source

Run database container only.

task start db

Initialize database.

task init-db

Start Odoo from source.

task start native

The browser will be opened automatically.

Create a new module from source

Scaffold a new module.

task create-module addons/project_report

Load modules from thirdparty folder

Clone thirdparty repos into the thirdparty folder.

To load modules from a thirdparty folder, set this env var in your .env file


The paths will be appended to the Odoo config.


Run Odoo with Docker container.

Start and initialize Odoo with Docker

Run docker compose.

task start

Initialize database. The parameter -d specifies the name of the parameter and is mandatory.

Use docker-odoo-init help to show all options.

docker-odoo-init -d odoo -i web

Open browser to http://localhost:8069open in new window and login with admin:admin.

Install custom module

docker-odoo-install -m show_db_name


Instructions that are true for Docker and native usage paths.

Change log level

To change the log level of Odoo set this env var in your .env file:


Manage database with Docker

Open database manager http://localhost:8000/open in new window and login with admin@example.com:admin.

Remove Docker containers

This removes containers and volumes.

task down

Stop all Docker containers

task stop

Remove database

task drop-db


To build the Docker image setup these .env vars:


Checkout the Odoo revision.

task checkout-revision

Build the Odoo image.

task build

Publish the Odoo image.

task publish


Start mail server.

task start mail

Setup mail server config for Odoo.

task setup-mail


Remove tracked submodule folders


The checkout command fails tue to unregistered submdoules.


Remove the submodule with git rm, f.e. git rm oca/dms.

inotify instance limit reached


While starting the native server this error is thrown:

OSError: [Errno 24] inotify instance limit reached


Increase inotify watch limit.

sudo vi /etc/sysctl.conf
sudo sysctl -p

ImportError libldap


Instance with auth_ldap does not start.

ImportError: libldap_r-2.4.so.2: cannot open shared object file: No such file or directory


Reinstall with pip flags.

pip install python-ldap --force-reinstall --no-binary python-ldap