2026-02-15 01:07:25 -05:00
<!-- - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- multilingual suffix: en, fr -->
<!-- no suffix: en -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- [common] -->
# ERPLibre
<!-- [en] -->
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.
<!-- [fr] -->
2026-03-07 00:29:49 -05:00
ERPLibre est une plateforme CRM/ERP incluant l'installation, la maintenance et le développement automatisés de modules
2026-02-15 01:07:25 -05:00
open source de la version communautaire d'Odoo. C'est un "soft-fork" de l'Odoo Community Edition (OCE), ce qui signifie
2026-03-07 00:29:49 -05:00
qu'il vise à contribuer en amont.
Il est basé sur un ensemble de modules prêts pour la production, supportés par l'Odoo Community Association (OCA) et un
écosystème d'entreprises spécialisées. Cette solution assure la souveraineté numérique dans un environnement local tout
en intégrant des Transformers Génératifs Pré-entraînés (GPT), apportant une dimension supplémentaire à la gestion des
données et à l'automatisation.
2026-02-15 01:07:25 -05:00
<!-- [en] -->
Follow us on Mastodon : https://fosstodon.org/@erplibre
<!-- [fr] -->
Suivez-nous sur Mastodon : https://fosstodon.org/@erplibre
<!-- [en] -->
# 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
<!-- [fr] -->
2026-03-07 00:29:49 -05:00
# Fonctionnalités
2026-02-15 01:07:25 -05:00
2026-03-07 00:29:49 -05:00
- **Support multi-version Odoo** : exécutez Odoo 12.0, 13.0, 14.0, 15.0, 16.0, 17.0 et 18.0 dans le même espace de travail, avec des environnements virtuels Python indépendants (`.venv.erplibre` et `.venv.odooXX` )
- **CLI interactif (TODO.py)** : outil interactif guidé pour l'installation, l'exécution, la gestion de bases de données, le formatage de code, la compilation mobile, et plus encore. Lancez-le avec `make`
- **Générateur de code** : générez des modules Odoo automatiquement avec support des vues, portail, snippets, héritage, i18n et JavaScript
- **Automatisation Selenium** : tests web et automatisation avec Selenium Grid, enregistrement vidéo et automatisation de connexion
- **Application mobile** : ERPLibre Home Mobile (Owl + Capacitor), compilée et déployée via TODO.py
- **Déploiement Docker** : images Docker prêtes pour la production avec PostgreSQL 18 et PostGIS
- **Outils de déploiement** : Nginx, Apache, Cloudflare DDNS, Certbot SSL, services systemd
- **Outils de base de données** : sauvegarde, restauration, clonage, migration entre versions, migration production vers développement
- **Outils de performance** : mesure de requêtes par seconde, exécution de tests en parallèle, analyse de couverture
2026-02-15 01:07:25 -05:00
<!-- [en] -->
# Supported Odoo versions
<!-- [fr] -->
2026-03-07 00:29:49 -05:00
# Versions Odoo supportées
2026-02-15 01:07:25 -05:00
<!-- [common] -->
| 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 |
<!-- [en] -->
Switch between versions with `make switch_odoo_18` , `make switch_odoo_16` , etc.
<!-- [fr] -->
Changez de version avec `make switch_odoo_18` , `make switch_odoo_16` , etc.
<!-- [en] -->
# Supported platforms
[UPD] support: drop Ubuntu 20.04/22.04, add AlmaLinux and Rocky
Ubuntu 20.04 and 22.04 leave EVERY architecture, not just s390x. pikepdf
needs qpdf 12.2, whose build requires C++20, while focal ships GCC 9 and
publishes no g++-10 for s390x at all. Python 3.8, node 10, cargo 0.67 and
OpenSSL 1.1.1 each had a workaround; the pile of them did not. 18.04
follows, already off the lists. The refusal lands before any apt, this
script also serving existing machines.
AlmaLinux 9 and 10, Rocky 9 and 10 join the catalog on all four
architectures: the twelve "latest" URLs were opened, with no index to
parse unlike Fedora. They would have booted unreachable though -- the
cloud-config forced "groups: users, sudo", but the RHEL family has no
sudo group, only wheel, and an unknown group makes useradd fail, hence no
password and no key. The very trap already known for Debian, repeated
elsewhere. Host side, EPEL and CRB are enabled: without them most -devel
packages are missing, silently.
The server / graphical choice gains Cinnamon, the Linux Mint desktop,
from the distribution's own repositories. Mint's repository is set aside:
plain HTTP, and i386/amd64 only, which would rule out arm64 and s390x.
Along the way, dnf now installs an ENVIRONMENT rather than a group --
"gnome-desktop" brings gdm and gnome-shell but not base-x, hence no X
server.
--- FR ---
Ubuntu 20.04 et 22.04 partent de TOUTES les architectures, pas seulement
de s390x. pikepdf réclame qpdf 12.2, dont la compilation exige C++20,
quand focal livre GCC 9 et ne publie même pas de g++-10 pour s390x.
Python 3.8, node 10, cargo 0.67 et OpenSSL 1.1.1 avaient chacun leur
contournement ; leur accumulation, non. 18.04 suit, déjà hors des
listes. Le refus tombe avant tout apt, ce script servant aussi les
machines existantes.
AlmaLinux 9 et 10, Rocky 9 et 10 entrent au catalogue, sur les quatre
architectures : les douze URL « latest » ont été ouvertes, aucun index à
analyser contrairement à Fedora. Elles auraient pourtant démarré
inaccessibles — le cloud-config imposait « groups: users, sudo », or la
famille RHEL n'a pas de groupe sudo mais wheel, et un groupe inconnu fait
échouer useradd, donc ni mot de passe ni clé. C'est le piège déjà connu
pour Debian, reproduit ailleurs. Côté hôte, EPEL et CRB sont activés :
sans eux la plupart des -devel manquent, en silence.
Le choix serveur / graphique gagne Cinnamon, le bureau de Linux Mint,
depuis les dépôts de la distribution. Le dépôt de Mint lui-même est
écarté : il est en HTTP nu et ne publie que i386 et amd64, ce qui
exclurait arm64 et s390x. Au passage, dnf installe désormais un
ENVIRONNEMENT et non un groupe — « gnome-desktop » apporte gdm et
gnome-shell mais pas base-x, donc pas de serveur X.
Assisted-by: Claude Opus 5
2026-08-11 18:46:11 -04:00
- **Linux** : Ubuntu 24.04, 25.10, 26.04; Debian 12; AlmaLinux 9+; Rocky Linux 9+; Arch Linux
[ADD] install: mise as Python provider, pyenv as fallback
mise lays down a precompiled CPython where pyenv builds one: seconds
against one to three minutes, with no -dev package at all. The choice
lives in EL_PYTHON_PROVIDER -- auto, mise or pyenv -- and in a single
file, lib_python_provider.sh. The rest of the repository only knows venv
paths and needs to know none of this.
In auto mode an ALREADY installed interpreter wins, whichever provider put
it there. mise is never installed on its own, "curl | sh" commits too much
for a script to decide -- make install_mise carries that decision.
MISE_PYTHON_COMPILE=false forbids it from quietly compiling: without that
guard it would fall back to pyenv's own engine, giving us the slowness
without the tooling. That is also what stopped gcc from collapsing while
building CPython on a low-memory s390x guest, for nothing.
One real bug falls along the way: a failed venv did not stop the install,
which then went on and failed further down, far from the cause.
--- FR ---
mise pose un CPython précompilé là où pyenv en compile un : des secondes
contre une à trois minutes, et aucun paquet -dev. Le choix vit dans
EL_PYTHON_PROVIDER — auto, mise ou pyenv — et dans un seul fichier,
lib_python_provider.sh. Le reste du dépôt ne connaît que des chemins de
venv et n'a rien à savoir de tout cela.
En mode auto, un interpréteur DÉJÀ posé l'emporte, quel qu'en soit le
fournisseur. mise n'est jamais installé de lui-même, « curl | sh » engage
trop pour qu'un script en décide — make install_mise porte cette décision.
MISE_PYTHON_COMPILE=false lui interdit de compiler en silence : sans ce
garde, il retomberait sur le moteur de pyenv, et nous aurions sa lenteur
sans son outillage. C'est aussi ce qui a évité que gcc s'écroule en
bâtissant CPython sur une VM s390x à faible mémoire, inutilement.
Un vrai défaut tombe au passage : un venv raté n'arrêtait pas
l'installation, qui continuait et échouait plus loin, loin de la cause.
Assisted-by: Claude Opus 5
2026-08-11 22:03:40 -04:00
- **macOS** : via mise ou pyenv
2026-02-15 01:07:25 -05:00
- **Windows** : via WSL or Docker
- **Mainframe** : 390x architecture
<!-- [fr] -->
2026-03-07 00:29:49 -05:00
# Plateformes supportées
2026-02-15 01:07:25 -05:00
[UPD] support: drop Ubuntu 20.04/22.04, add AlmaLinux and Rocky
Ubuntu 20.04 and 22.04 leave EVERY architecture, not just s390x. pikepdf
needs qpdf 12.2, whose build requires C++20, while focal ships GCC 9 and
publishes no g++-10 for s390x at all. Python 3.8, node 10, cargo 0.67 and
OpenSSL 1.1.1 each had a workaround; the pile of them did not. 18.04
follows, already off the lists. The refusal lands before any apt, this
script also serving existing machines.
AlmaLinux 9 and 10, Rocky 9 and 10 join the catalog on all four
architectures: the twelve "latest" URLs were opened, with no index to
parse unlike Fedora. They would have booted unreachable though -- the
cloud-config forced "groups: users, sudo", but the RHEL family has no
sudo group, only wheel, and an unknown group makes useradd fail, hence no
password and no key. The very trap already known for Debian, repeated
elsewhere. Host side, EPEL and CRB are enabled: without them most -devel
packages are missing, silently.
The server / graphical choice gains Cinnamon, the Linux Mint desktop,
from the distribution's own repositories. Mint's repository is set aside:
plain HTTP, and i386/amd64 only, which would rule out arm64 and s390x.
Along the way, dnf now installs an ENVIRONMENT rather than a group --
"gnome-desktop" brings gdm and gnome-shell but not base-x, hence no X
server.
--- FR ---
Ubuntu 20.04 et 22.04 partent de TOUTES les architectures, pas seulement
de s390x. pikepdf réclame qpdf 12.2, dont la compilation exige C++20,
quand focal livre GCC 9 et ne publie même pas de g++-10 pour s390x.
Python 3.8, node 10, cargo 0.67 et OpenSSL 1.1.1 avaient chacun leur
contournement ; leur accumulation, non. 18.04 suit, déjà hors des
listes. Le refus tombe avant tout apt, ce script servant aussi les
machines existantes.
AlmaLinux 9 et 10, Rocky 9 et 10 entrent au catalogue, sur les quatre
architectures : les douze URL « latest » ont été ouvertes, aucun index à
analyser contrairement à Fedora. Elles auraient pourtant démarré
inaccessibles — le cloud-config imposait « groups: users, sudo », or la
famille RHEL n'a pas de groupe sudo mais wheel, et un groupe inconnu fait
échouer useradd, donc ni mot de passe ni clé. C'est le piège déjà connu
pour Debian, reproduit ailleurs. Côté hôte, EPEL et CRB sont activés :
sans eux la plupart des -devel manquent, en silence.
Le choix serveur / graphique gagne Cinnamon, le bureau de Linux Mint,
depuis les dépôts de la distribution. Le dépôt de Mint lui-même est
écarté : il est en HTTP nu et ne publie que i386 et amd64, ce qui
exclurait arm64 et s390x. Au passage, dnf installe désormais un
ENVIRONNEMENT et non un groupe — « gnome-desktop » apporte gdm et
gnome-shell mais pas base-x, donc pas de serveur X.
Assisted-by: Claude Opus 5
2026-08-11 18:46:11 -04:00
- **Linux** : Ubuntu 24.04, 25.10, 26.04; Debian 12; AlmaLinux 9+; Rocky Linux 9+; Arch Linux
[ADD] install: mise as Python provider, pyenv as fallback
mise lays down a precompiled CPython where pyenv builds one: seconds
against one to three minutes, with no -dev package at all. The choice
lives in EL_PYTHON_PROVIDER -- auto, mise or pyenv -- and in a single
file, lib_python_provider.sh. The rest of the repository only knows venv
paths and needs to know none of this.
In auto mode an ALREADY installed interpreter wins, whichever provider put
it there. mise is never installed on its own, "curl | sh" commits too much
for a script to decide -- make install_mise carries that decision.
MISE_PYTHON_COMPILE=false forbids it from quietly compiling: without that
guard it would fall back to pyenv's own engine, giving us the slowness
without the tooling. That is also what stopped gcc from collapsing while
building CPython on a low-memory s390x guest, for nothing.
One real bug falls along the way: a failed venv did not stop the install,
which then went on and failed further down, far from the cause.
--- FR ---
mise pose un CPython précompilé là où pyenv en compile un : des secondes
contre une à trois minutes, et aucun paquet -dev. Le choix vit dans
EL_PYTHON_PROVIDER — auto, mise ou pyenv — et dans un seul fichier,
lib_python_provider.sh. Le reste du dépôt ne connaît que des chemins de
venv et n'a rien à savoir de tout cela.
En mode auto, un interpréteur DÉJÀ posé l'emporte, quel qu'en soit le
fournisseur. mise n'est jamais installé de lui-même, « curl | sh » engage
trop pour qu'un script en décide — make install_mise porte cette décision.
MISE_PYTHON_COMPILE=false lui interdit de compiler en silence : sans ce
garde, il retomberait sur le moteur de pyenv, et nous aurions sa lenteur
sans son outillage. C'est aussi ce qui a évité que gcc s'écroule en
bâtissant CPython sur une VM s390x à faible mémoire, inutilement.
Un vrai défaut tombe au passage : un venv raté n'arrêtait pas
l'installation, qui continuait et échouait plus loin, loin de la cause.
Assisted-by: Claude Opus 5
2026-08-11 22:03:40 -04:00
- **macOS** : via mise ou pyenv
2026-02-15 01:07:25 -05:00
- **Windows** : via WSL ou Docker
- **Mainframe** : architecture 390x
<!-- [en] -->
2026-03-07 00:06:40 -05:00
# Installation in production
2026-02-15 01:07:25 -05:00
## 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.
<!-- [fr] -->
2026-03-07 00:06:40 -05:00
# Installation en production
2026-02-15 01:07:25 -05:00
## Installation facile sur Ubuntu ou Debian avec Docker
2026-03-07 00:29:49 -05:00
Ceci a été testé sur Debian 12 et Ubuntu 24.04 LTS.
2026-02-15 01:07:25 -05:00
2026-03-07 00:29:49 -05:00
**Note** : Ceci est prévu pour un environnement de test, sur un réseau local ou un environnement similaire non exposé
directement à Internet.
2026-02-15 01:07:25 -05:00
<!-- [en] -->
1. Make sure Docker and nginx web server are installed:< BR >
2026-03-07 00:06:40 -05:00
`sudo apt install docker.io docker-compose-v2 nginx`
2026-02-15 01:07:25 -05:00
1. Get the latest ERPLibre Docker compose file:< BR >
2026-03-07 00:06:40 -05:00
`wget https://raw.githubusercontent.com/ERPLibre/ERPLibre/master/docker-compose.yml`
2026-02-15 01:07:25 -05:00
1. Install and run ERPLibre with Docker running as a daemon (web server):< BR >
2026-03-07 00:06:40 -05:00
`sudo docker compose up -d`
2026-02-15 01:07:25 -05:00
1. Open the final installation step at this web page :< BR >
2026-03-07 00:06:40 -05:00
`http://[server IP]:8069/web/database/manager` < BR >
2026-02-15 01:07:25 -05:00

1. 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.
1. Next, the web page will reload itself, and you should see the Applications list in ERPLibre:< BR >

You can now personalize your ERPLibre installation.
<!-- [fr] -->
2026-03-07 00:29:49 -05:00
1. Assurez-vous que Docker et le serveur web nginx sont installés :< BR >
2026-03-07 00:06:40 -05:00
`sudo apt install docker.io docker-compose-v2 nginx`
2026-02-15 01:07:25 -05:00
1. Obtenez le dernier fichier Docker compose d'ERPLibre :< BR >
2026-03-07 00:06:40 -05:00
`wget https://raw.githubusercontent.com/ERPLibre/ERPLibre/master/docker-compose.yml`
2026-02-15 01:07:25 -05:00
1. Installez et lancez ERPLibre avec Docker en mode daemon (serveur web) :< BR >
2026-03-07 00:06:40 -05:00
``sudo docker compose up -d`
2026-03-07 00:29:49 -05:00
1. Ouvrez l'étape finale d'installation à cette page web :< BR >
2026-03-07 00:06:40 -05:00
`http://[server IP]:8069/web/database/manager` < BR >
2026-02-15 01:07:25 -05:00

2026-03-07 00:29:49 -05:00
1. Terminez l'installation en fournissant un nom de base de données, un courriel et un mot de passe, puis cliquez sur **Create Database** .
Selon les ressources de votre système, **cela peut prendre plus de 2 minutes sans retour visuel !** Vérifiez
2026-02-15 01:07:25 -05:00
l'indicateur de chargement de votre navigateur.
1. Ensuite, la page web se rechargera automatiquement et vous devriez voir la liste des applications dans ERPLibre :< BR >

Vous pouvez maintenant personnaliser votre installation ERPLibre.
<!-- [en] -->
For more information, read [Docker guide ](./docker/README.md ).
## Install from source code
### Automated installation
<!-- [fr] -->
Pour plus d'informations, consultez le [guide Docker ](./docker/README.md ).
## Installation depuis le code source
2026-03-07 00:29:49 -05:00
### Installation automatisée
2026-02-15 01:07:25 -05:00
<!-- [en] -->
For Debian/Ubuntu
<!-- [fr] -->
Pour Debian/Ubuntu
<!-- [common] -->
```bash
sudo apt install make python3
```
<!-- [en] -->
Clone the project:
<!-- [fr] -->
Clonez le projet :
<!-- [common] -->
```bash
git clone https://github.com/ERPLibre/ERPLibre.git
cd ERPLibre
```
<!-- [en] -->
Follow the instruction on the following script, it will try to detect your environment.
<!-- [fr] -->
2026-03-07 00:29:49 -05:00
Suivez les instructions du script suivant, il essaiera de détecter votre environnement.
2026-02-15 01:07:25 -05:00
<!-- [common] -->
```bash
make
```
<!-- [en] -->
### Manually
Into Ubuntu, minimal dependency:
<!-- [fr] -->
### Manuellement
2026-03-07 00:29:49 -05:00
Sous Ubuntu, dépendance minimale :
2026-02-15 01:07:25 -05:00
<!-- [common] -->
```bash
sudo apt install make git curl
```
<!-- [en] -->
Into Ubuntu, developer dependency:
<!-- [fr] -->
2026-03-07 00:29:49 -05:00
Sous Ubuntu, dépendance développeur :
2026-02-15 01:07:25 -05:00
<!-- [common] -->
```bash
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
```
<!-- [en] -->
Clone the project:
<!-- [fr] -->
Clonez le projet :
<!-- [common] -->
```bash
git clone https://github.com/ERPLibre/ERPLibre.git
cd ERPLibre
```
<!-- [en] -->
[UPD] support: drop Ubuntu 20.04/22.04, add AlmaLinux and Rocky
Ubuntu 20.04 and 22.04 leave EVERY architecture, not just s390x. pikepdf
needs qpdf 12.2, whose build requires C++20, while focal ships GCC 9 and
publishes no g++-10 for s390x at all. Python 3.8, node 10, cargo 0.67 and
OpenSSL 1.1.1 each had a workaround; the pile of them did not. 18.04
follows, already off the lists. The refusal lands before any apt, this
script also serving existing machines.
AlmaLinux 9 and 10, Rocky 9 and 10 join the catalog on all four
architectures: the twelve "latest" URLs were opened, with no index to
parse unlike Fedora. They would have booted unreachable though -- the
cloud-config forced "groups: users, sudo", but the RHEL family has no
sudo group, only wheel, and an unknown group makes useradd fail, hence no
password and no key. The very trap already known for Debian, repeated
elsewhere. Host side, EPEL and CRB are enabled: without them most -devel
packages are missing, silently.
The server / graphical choice gains Cinnamon, the Linux Mint desktop,
from the distribution's own repositories. Mint's repository is set aside:
plain HTTP, and i386/amd64 only, which would rule out arm64 and s390x.
Along the way, dnf now installs an ENVIRONMENT rather than a group --
"gnome-desktop" brings gdm and gnome-shell but not base-x, hence no X
server.
--- FR ---
Ubuntu 20.04 et 22.04 partent de TOUTES les architectures, pas seulement
de s390x. pikepdf réclame qpdf 12.2, dont la compilation exige C++20,
quand focal livre GCC 9 et ne publie même pas de g++-10 pour s390x.
Python 3.8, node 10, cargo 0.67 et OpenSSL 1.1.1 avaient chacun leur
contournement ; leur accumulation, non. 18.04 suit, déjà hors des
listes. Le refus tombe avant tout apt, ce script servant aussi les
machines existantes.
AlmaLinux 9 et 10, Rocky 9 et 10 entrent au catalogue, sur les quatre
architectures : les douze URL « latest » ont été ouvertes, aucun index à
analyser contrairement à Fedora. Elles auraient pourtant démarré
inaccessibles — le cloud-config imposait « groups: users, sudo », or la
famille RHEL n'a pas de groupe sudo mais wheel, et un groupe inconnu fait
échouer useradd, donc ni mot de passe ni clé. C'est le piège déjà connu
pour Debian, reproduit ailleurs. Côté hôte, EPEL et CRB sont activés :
sans eux la plupart des -devel manquent, en silence.
Le choix serveur / graphique gagne Cinnamon, le bureau de Linux Mint,
depuis les dépôts de la distribution. Le dépôt de Mint lui-même est
écarté : il est en HTTP nu et ne publie que i386 et amd64, ce qui
exclurait arm64 et s390x. Au passage, dnf installe désormais un
ENVIRONNEMENT et non un groupe — « gnome-desktop » apporte gdm et
gnome-shell mais pas base-x, donc pas de serveur X.
Assisted-by: Claude Opus 5
2026-08-11 18:46:11 -04:00
Support Ubuntu 24.04, 25.10, 26.04, AlmaLinux 9+, Rocky Linux 9+ and OSX.
2026-02-15 01:07:25 -05:00
<!-- [fr] -->
[UPD] support: drop Ubuntu 20.04/22.04, add AlmaLinux and Rocky
Ubuntu 20.04 and 22.04 leave EVERY architecture, not just s390x. pikepdf
needs qpdf 12.2, whose build requires C++20, while focal ships GCC 9 and
publishes no g++-10 for s390x at all. Python 3.8, node 10, cargo 0.67 and
OpenSSL 1.1.1 each had a workaround; the pile of them did not. 18.04
follows, already off the lists. The refusal lands before any apt, this
script also serving existing machines.
AlmaLinux 9 and 10, Rocky 9 and 10 join the catalog on all four
architectures: the twelve "latest" URLs were opened, with no index to
parse unlike Fedora. They would have booted unreachable though -- the
cloud-config forced "groups: users, sudo", but the RHEL family has no
sudo group, only wheel, and an unknown group makes useradd fail, hence no
password and no key. The very trap already known for Debian, repeated
elsewhere. Host side, EPEL and CRB are enabled: without them most -devel
packages are missing, silently.
The server / graphical choice gains Cinnamon, the Linux Mint desktop,
from the distribution's own repositories. Mint's repository is set aside:
plain HTTP, and i386/amd64 only, which would rule out arm64 and s390x.
Along the way, dnf now installs an ENVIRONMENT rather than a group --
"gnome-desktop" brings gdm and gnome-shell but not base-x, hence no X
server.
--- FR ---
Ubuntu 20.04 et 22.04 partent de TOUTES les architectures, pas seulement
de s390x. pikepdf réclame qpdf 12.2, dont la compilation exige C++20,
quand focal livre GCC 9 et ne publie même pas de g++-10 pour s390x.
Python 3.8, node 10, cargo 0.67 et OpenSSL 1.1.1 avaient chacun leur
contournement ; leur accumulation, non. 18.04 suit, déjà hors des
listes. Le refus tombe avant tout apt, ce script servant aussi les
machines existantes.
AlmaLinux 9 et 10, Rocky 9 et 10 entrent au catalogue, sur les quatre
architectures : les douze URL « latest » ont été ouvertes, aucun index à
analyser contrairement à Fedora. Elles auraient pourtant démarré
inaccessibles — le cloud-config imposait « groups: users, sudo », or la
famille RHEL n'a pas de groupe sudo mais wheel, et un groupe inconnu fait
échouer useradd, donc ni mot de passe ni clé. C'est le piège déjà connu
pour Debian, reproduit ailleurs. Côté hôte, EPEL et CRB sont activés :
sans eux la plupart des -devel manquent, en silence.
Le choix serveur / graphique gagne Cinnamon, le bureau de Linux Mint,
depuis les dépôts de la distribution. Le dépôt de Mint lui-même est
écarté : il est en HTTP nu et ne publie que i386 et amd64, ce qui
exclurait arm64 et s390x. Au passage, dnf installe désormais un
ENVIRONNEMENT et non un groupe — « gnome-desktop » apporte gdm et
gnome-shell mais pas base-x, donc pas de serveur X.
Assisted-by: Claude Opus 5
2026-08-11 18:46:11 -04:00
Support Ubuntu 24.04, 25.10, 26.04, AlmaLinux 9+, Rocky Linux 9+ et OSX.
2026-02-15 01:07:25 -05:00
<!-- [common] -->
```bash
make install_os
make install_odoo_18
```
<!-- [en] -->
Install a specific Odoo version:
<!-- [fr] -->
2026-03-07 00:29:49 -05:00
Installez une version spécifique d'Odoo :
2026-02-15 01:07:25 -05:00
<!-- [common] -->
```bash
make install_odoo_16
make install_odoo_17
make install_odoo_18
```
<!-- [en] -->
Update your configuration if you need to run from another interface than 127.0.0.1, file `config.conf`
<!-- [fr] -->
2026-03-07 00:29:49 -05:00
Mettez à jour votre configuration si vous devez exécuter depuis une autre interface que 127.0.0.1, fichier `config.conf`
2026-02-15 01:07:25 -05:00
<!-- [common] -->
```
xmlrpc_interface = 0.0.0.0
```
<!-- [en] -->
Show version :
<!-- [fr] -->
Afficher la version :
<!-- [common] -->
```bash
make version
```
<!-- [en] -->
Ready to execute:
<!-- [fr] -->
2026-03-07 00:29:49 -05:00
Prêt à exécuter :
2026-02-15 01:07:25 -05:00
<!-- [common] -->
```bash
make run
```
<!-- [en] -->
# Test
Execute ERPLibre test with his code generator.
<!-- [fr] -->
# Test
2026-03-07 00:29:49 -05:00
Exécutez les tests ERPLibre avec son générateur de code.
2026-02-15 01:07:25 -05:00
<!-- [common] -->
```bash
time make test_full_fast
```
<!-- [en] -->
# Documentation
| Guide | Description |
|-------|-------------|
| [DISCOVER ](doc/DISCOVER.md ) | Learn and explore ERPLibre |
| [DEVELOPMENT ](doc/DEVELOPMENT.md ) | Development environment setup |
| [PRODUCTION ](doc/PRODUCTION.md ) | Production server deployment |
| [RUN ](doc/RUN.md ) | Execution modes and use cases |
| [CODE_GENERATOR ](doc/CODE_GENERATOR.md ) | Odoo module code generation |
| [MIGRATION ](doc/MIGRATION.md ) | Database migration between versions |
| [GIT_REPO ](doc/GIT_REPO.md ) | Git repository management |
| [POETRY ](doc/POETRY.md ) | Python dependency management |
| [FAQ ](doc/FAQ.md ) | Frequently asked questions |
| [HOWTO ](doc/HOWTO.md ) | How-to guides |
| [WINDOWS_INSTALLATION ](doc/WINDOWS_INSTALLATION.md ) | Windows installation |
<!-- [fr] -->
# Documentation
| Guide | Description |
|-------|-------------|
2026-03-07 00:29:49 -05:00
| [DISCOVER ](doc/DISCOVER.md ) | Découvrir et explorer ERPLibre |
| [DEVELOPMENT ](doc/DEVELOPMENT.md ) | Configuration de l'environnement de développement |
| [PRODUCTION ](doc/PRODUCTION.md ) | Déploiement du serveur de production |
| [RUN ](doc/RUN.md ) | Modes d'exécution et cas d'utilisation |
| [CODE_GENERATOR ](doc/CODE_GENERATOR.md ) | Génération de code de modules Odoo |
| [MIGRATION ](doc/MIGRATION.md ) | Migration de base de données entre versions |
| [GIT_REPO ](doc/GIT_REPO.md ) | Gestion des dépôts Git |
| [POETRY ](doc/POETRY.md ) | Gestion des dépendances Python |
2026-02-15 01:07:25 -05:00
| [FAQ ](doc/FAQ.md ) | Foire aux questions |
| [HOWTO ](doc/HOWTO.md ) | Guides pratiques |
| [WINDOWS_INSTALLATION ](doc/WINDOWS_INSTALLATION.md ) | Installation sous Windows |
<!-- [en] -->
# Contributing
See [CONTRIBUTION.md ](doc/CONTRIBUTION.md ) for guidelines.
<!-- [fr] -->
# Contribution
Consultez [CONTRIBUTION.md ](doc/CONTRIBUTION.md ) pour les directives.
<!-- [en] -->
# License
This project is licensed under the [GNU Affero General Public License v3.0 ](LICENSE ).
<!-- [fr] -->
# Licence
Ce projet est sous licence [GNU Affero General Public License v3.0 ](LICENSE ).