No description
Find a file
Mathieu Benoit 6bd73c2a7e Merge branch 'dev/odoo_reverse_proxy'
[ADD] reverse proxy: dev front for Odoo 18, HTTPS, started from TODO

6 commits. Opened on its web port, an Odoo running with workers fails to
bind its websocket, which only the bus port serves. The proxy routes both
from one address, sets X-Forwarded-* for proxy_mode and relays bytes
unchanged, so an upgraded WebSocket stays open; it serves HTTPS with a
local authority, logs each request, bounds waits except the relay, and
names the Odoo port that does not answer. TODO Network starts it from
config.conf and issues the certificates. Checked: 48 tests; against a
live Odoo 18 over HTTPS, a wss ping returns its pong.

--- FR ---

[ADD] reverse proxy : façade de dev pour Odoo 18, HTTPS, lancée de TODO

6 commits. Ouvert sur son port web, un Odoo à workers n'arrive pas à lier
sa websocket, que seul le port du bus sert. Le mandataire route les deux
depuis une adresse, pose les X-Forwarded-* de proxy_mode et relaie les
octets tels quels : une WebSocket montée reste ouverte ; il sert en HTTPS
avec une autorité locale, journalise chaque requête, borne les attentes
sauf le relais et nomme le port d'Odoo muet. TODO Network le lance depuis
config.conf et émet les certificats. Vérifié : 48 tests ; face à un Odoo
18 réel en HTTPS, un ping wss rend son pong.

Assisted-by: Claude Opus 5.5
2026-09-26 02:17:34 -04:00
.claude [UPD] commit rule: English subject first, French title under --- FR --- 2026-09-25 01:31:27 -04:00
.github [UPD] dependabot: group aiobotocore, botocore and boto3 updates 2026-09-25 03:53:14 -04:00
conf [UPD] commit rule: English subject first, French title under --- FR --- 2026-09-25 01:31:27 -04:00
contracts [UPD] version : porter la version déclarée d'ERPLibre à 1.7.0 2026-09-04 05:34:45 -04:00
doc [REM] doc : retirer la recette libssl1.1 de la FAQ 2026-09-24 13:56:57 -04:00
docker [UPD] install : le venv d'outillage passe en Python 3.14.7 2026-09-24 13:56:57 -04:00
long_test [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
manifest [ADD] manifestes : détecter un dépôt absent d'un palier de migration 2026-08-29 02:11:04 -04:00
mobile [FIX] mobile: the bundle check refused a real build 2026-08-25 03:28:39 -04:00
private [ADD] private : ignorer les préréglages VPN propres à un site 2026-09-04 06:26:34 -04:00
requirement [UPD] requirement: pin requests 2.32.4 over the 2.31.0 of Odoo 18 2026-09-25 04:14:51 -04:00
script [IMP] todo network: HTTPS for the reverse proxy, local certificates 2026-09-26 02:17:19 -04:00
test [IMP] todo network: HTTPS for the reverse proxy, local certificates 2026-09-26 02:17:19 -04:00
.editorconfig [UPD] format with script format.sh 2023-12-02 14:14:23 -05:00
.erplibre-semver-version [ADD] release : publier 1.8.0, section de changelog et version déclarée 2026-09-04 05:57:20 -04:00
.flake8 [ADD] maintainer-tools to autopep8, flake8 and pylint-odoo 2021-06-27 00:36:52 -04:00
.gitignore [UPD] gitignore : tasks/ et .erplibre-state.json 2026-09-24 13:56:57 -04:00
.prettierignore [ADD] makefile: prettier format code_generator 2023-01-01 02:59:33 -05:00
.ruff.toml [IMP] format : un formateur par contexte, ruff pour l'outillage 2026-09-24 13:30:08 -04:00
AI_POLICY.base.md [ADD] doc: adopt the OCA generative AI policy 2026-08-07 01:16:20 -04:00
AI_POLICY.fr.md [ADD] doc: adopt the OCA generative AI policy 2026-08-07 01:16:20 -04:00
AI_POLICY.md [ADD] doc: adopt the OCA generative AI policy 2026-08-07 01:16:20 -04:00
CHANGELOG.base.md [UPD] changelog: Odoo 18 dev reverse proxy, HTTPS, TODO Network entries 2026-09-26 02:17:19 -04:00
CHANGELOG.fr.md [UPD] changelog: Odoo 18 dev reverse proxy, HTTPS, TODO Network entries 2026-09-26 02:17:19 -04:00
CHANGELOG.md [UPD] changelog: Odoo 18 dev reverse proxy, HTTPS, TODO Network entries 2026-09-26 02:17:19 -04:00
CLAUDE.md [ADD] release : publier 1.8.0, section de changelog et version déclarée 2026-09-04 05:57:20 -04:00
coverage_run.sh [IMP] refactoring to support multiple version of Odoo 2025-10-31 01:32:11 -04:00
docker-compose-dev.yml [ADD] docker : new hierchical layout 2020-09-30 20:52:04 -04:00
docker-compose.yml [UPD] docker odoo 18 2026-02-05 02:07:47 -05:00
env_var.sh [FIX] install nixos : l'amorçage, les en-têtes, les manuels écartés 2026-09-16 21:31:03 -04:00
install.sh [IMP] install.sh: ask y/N before installing the tooling venv 2026-09-25 01:29:53 -04:00
LICENSE Initial commit 2020-04-12 21:20:13 -04:00
Makefile [FIX] format : trouver les addons et leur appliquer la norme OCA 2026-09-24 13:56:57 -04:00
odoo_bin.sh [FIX] odoo_bin : lire le config.conf du dépôt, pas le ~/.odoorc 2026-08-29 02:11:04 -04:00
package-lock.json [ADD] release : publier 1.8.0, section de changelog et version déclarée 2026-09-04 05:57:20 -04:00
package.json [ADD] release : publier 1.8.0, section de changelog et version déclarée 2026-09-04 05:57:20 -04:00
poetry.toml [UPD] poetry: version 1.1.12 2022-01-24 17:56:10 -05:00
README.base.md [IMP] install.sh: ask y/N before installing the tooling venv 2026-09-25 01:29:53 -04:00
README.fr.md [IMP] install.sh: ask y/N before installing the tooling venv 2026-09-25 01:29:53 -04:00
README.md [IMP] install.sh: ask y/N before installing the tooling venv 2026-09-25 01:29:53 -04:00
run.sh [ADD] qemu : NixOS déployable, de son image à ses dépendances 2026-09-16 21:31:03 -04:00
source_repo_addons.csv [ADD] repo JayVora-SerpentCS SerpentCS_Contributions 2024-05-03 23:27:06 -04:00
test.sh [IMP] support multi version odoo on same workspace 2025-10-31 01:36:26 -04:00
TODO.base.md [ADD] Multilingual translation of all documentation (EN/FR) 2026-03-04 22:23:52 -05:00
TODO.fr.md [ADD] Multilingual translation of all documentation (EN/FR) 2026-03-04 22:23:52 -05:00
TODO.md [ADD] Multilingual translation of all documentation (EN/FR) 2026-03-04 22:23:52 -05:00
todo.sh [ADD] todo: todo.sh launcher, shown by make instead of install.sh 2026-09-25 01:29:53 -04:00

ERPLibre

ERPLibre is a CRM/ERP platform including automated installation, maintenance, and development of open source modules of the Odoo community version. It is a "soft-fork" of the Odoo Community Edition (OCE), meaning it aims at contributing back upstream. It is based on a set of production-ready modules, supported by the Odoo Community Association (OCA) and an ecosystem of specialized companies. This solution ensures digital sovereignty in a local environment while integrating pre-trained Generative Transformers (GPT), bringing an additional dimension to data management and automation.

Follow us on Mastodon : https://fosstodon.org/@erplibre

Features

  • Multi-version Odoo support : run Odoo 12.0, 13.0, 14.0, 15.0, 16.0, 17.0 and 18.0 in the same workspace, with independent Python virtual environments (.venv.erplibre and .venv.odooXX)
  • Interactive CLI (TODO.py) : guided interactive tool for installation, execution, database management, code formatting, mobile compilation, and more. Launch it with make
  • Code generator : generate Odoo modules automatically with support for views, portal, snippets, inheritance, i18n, and JavaScript
  • Selenium automation : web testing and automation with Selenium Grid, video recording, and login automation
  • Mobile application : ERPLibre Home Mobile (Owl + Capacitor), compiled and deployed via TODO.py
  • Docker deployment : production-ready Docker images with PostgreSQL 18 and PostGIS
  • Deployment tools : Nginx, Apache, Cloudflare DDNS, Certbot SSL, systemd services
  • Database tools : backup, restore, clone, migration between versions, production-to-dev migration
  • Performance tools : request-per-second measurement, parallel test execution, coverage analysis

Supported Odoo versions

Odoo version Python Status
18.0 3.12.10 Active
17.0 3.10.18 Inactive
16.0 3.10.18 Inactive
15.0 3.8.20 Deprecated
14.0 3.8.20 Deprecated
13.0 3.7.17 Deprecated
12.0 3.7.17 Deprecated

Switch between versions with make switch_odoo_18, make switch_odoo_16, etc.

The Python in that table is the one of the Odoo virtual environment. The tooling virtual environment .venv.erplibre (TODO, repo, formatters) runs its own interpreter, 3.14.7, set by conf/python-erplibre-version. Where a distribution does not carry it, pyenv compiles it.

Supported platforms

  • Ubuntu : 24.04, 25.10, 26.04 — 20.04 and 22.04 are dropped, pikepdf requiring a qpdf 12.2 built in C++20
  • Linux Mint : 22.3
  • Debian : 12 (bookworm) and 13 (trixie)
  • Fedora : 41 and later
  • AlmaLinux, Rocky Linux : 9 and 10 — RHEL and CentOS Stream take the same path
  • openSUSE : Leap 16.0 and Tumbleweed
  • Arch Linux : rolling release
  • NixOS : 25.11 — the dependencies are DECLARED in conf/nixos/erplibre.nix and applied by nixos-rebuild, where the four other families install them one command at a time
  • macOS : through mise or pyenv
  • Windows : through WSL or Docker
  • Architectures : amd64, arm64 and s390x (IBM Z mainframe)

Installation in production

Easy installation on Ubuntu or Debian using Docker

This has been tested in Debian 12 and Ubuntu 24.04 LTS.

Note : This is meant for a test environment, on a local network or similar environment not directly exposed to the Internet.

  1. Make sure Docker and nginx web server are installed:
    sudo apt install docker.io docker-compose-v2 nginx

  2. Get the latest ERPLibre Docker compose file:
    wget https://raw.githubusercontent.com/ERPLibre/ERPLibre/master/docker-compose.yml

  3. Install and run ERPLibre with Docker running as a daemon (web server):
    sudo docker compose up -d

  4. Open the final installation step at this web page :
    http://[server IP]:8069/web/database/manager
    odoo_first_installation.png

  5. Finish the installation by providing a database name, email and password. then click on Create Database. Depending on your system resources this may take more than 2 minutes without feedback ! Check your browser loading indicator.

  6. Next, the web page will reload itself, and you should see the Applications list in ERPLibre:
    odoo_application_list.png

    You can now personalize your ERPLibre installation.

For more information, read Docker guide.

Install from source code

Automated installation

For Debian/Ubuntu

sudo apt install make python3

Clone the project:

git clone https://github.com/ERPLibre/ERPLibre.git
cd ERPLibre

Follow the instruction on the following script, it will try to detect your environment.

make

make and ./install.sh start TODO through the interpreter that can read it: .venv.erplibre when it carries the right version, otherwise the system python3 when it is recent enough, otherwise the install itself — a system older than conf/python-erplibre-version cannot parse the code, so it offers the install rather than stopping on a syntax error. The install runs only on a yes typed in a terminal (o, oui, y or yes); Enter alone, or no terminal, means no. When the environment is missing but the system Python suffices, TODO offers to run ./script/install/install_erplibre.sh (in a terminal) or prints that command. The install builds the environment through EL_PYTHON_PROVIDER (mise or pyenv); an existing .venv.erplibre on another Python version is DELETED and rebuilt, and whatever was installed in it by hand goes with it.

Manually

Into Ubuntu, minimal dependency:

sudo apt install make git curl

Into Ubuntu, developer dependency:

sudo apt install make build-essential libssl-dev zlib1g-dev libreadline-dev libsqlite3-dev curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev liblzma-dev libbz2-dev libldap2-dev libsasl2-dev

Clone the project:

git clone https://github.com/ERPLibre/ERPLibre.git
cd ERPLibre

make install_os detects the distribution and picks the right dependency script: apt for Ubuntu, Linux Mint and Debian, dnf for Fedora and the RHEL family, zypper for openSUSE, pacman for Arch, and a declarative module for NixOS. See the supported platforms above.

make install_os
make install_odoo_18

Install a specific Odoo version:

make install_odoo_16
make install_odoo_17
make install_odoo_18

Update your configuration if you need to run from another interface than 127.0.0.1, file config.conf

xmlrpc_interface = 0.0.0.0

Show version :

make version

Ready to execute:

make run

Test

Execute ERPLibre test with his code generator.

time make test_full_fast

Documentation

Guide Description
DISCOVER Learn and explore ERPLibre
DEVELOPMENT Development environment setup
PRODUCTION Production server deployment
RUN Execution modes and use cases
CODE_GENERATOR Odoo module code generation
MIGRATION Database migration between versions
GIT_REPO Git repository management
POETRY Python dependency management
FAQ Frequently asked questions
HOWTO How-to guides
WINDOWS_INSTALLATION Windows installation

Contributing

See CONTRIBUTION.md for guidelines.

License

This project is licensed under the GNU Affero General Public License v3.0.