install.sh et make lançaient todo.py par son hashbang, donc par le python3 du PATH, sans rien garantir de sa version : une syntaxe plus récente l'arrête en SyntaxError au chargement, et le poste hors d'âge perd tout moyen de lancer l'installation qui l'en sortirait. L'ordre est désormais le venv d'outillage, sinon le python3 du PATH s'il suffit, sinon l'installation. TODO lui-même se relance dans le venv, vérifie version et modules avant ses imports, et propose l'installation en terminal — ce que « make » sur un clone neuf promet depuis toujours sans le tenir. Vérifié : venv à jour, venv périmé, systèmes en 3.10, 3.14 et 3.15 vont chacun où il faut ; un import du module ne relance rien et lève comme avant. --- EN --- install.sh and make ran todo.py through its hashbang, so through the python3 of the PATH, with no guarantee about its version: a newer syntax stops it with a SyntaxError at load, and the ageing machine loses every way to start the install that would rescue it. The order is now the tools venv, else the python3 of the PATH when it suffices, else the install. TODO itself relaunches in the venv, checks version and modules before its imports, and offers the install in a terminal — what "make" on a fresh clone has always promised without keeping. Checked: fresh venv, stale venv, systems on 3.10, 3.14 and 3.15 each go where they should; importing the module relaunches nothing and raises as before. Assisted-by: Claude Opus 5
478 lines
16 KiB
Markdown
478 lines
16 KiB
Markdown
<!---------------------------->
|
|
<!-- 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] -->
|
|
|
|
ERPLibre est une plateforme CRM/ERP incluant l'installation, la maintenance et le développement automatisés de modules
|
|
open source de la version communautaire d'Odoo. C'est un "soft-fork" de l'Odoo Community Edition (OCE), ce qui signifie
|
|
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.
|
|
|
|
<!-- [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] -->
|
|
|
|
# Fonctionnalités
|
|
|
|
- **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
|
|
|
|
<!-- [en] -->
|
|
|
|
# Supported Odoo versions
|
|
|
|
<!-- [fr] -->
|
|
|
|
# Versions Odoo supportées
|
|
|
|
<!-- [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.
|
|
|
|
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.
|
|
|
|
<!-- [fr] -->
|
|
|
|
Changez de version avec `make switch_odoo_18`, `make switch_odoo_16`, etc.
|
|
|
|
Le Python de ce tableau est celui de l'environnement virtuel Odoo.
|
|
L'environnement virtuel d'outillage `.venv.erplibre` (TODO, `repo`, formateurs)
|
|
tourne sur son propre interpréteur, **3.14.7**, fixé par
|
|
`conf/python-erplibre-version`. Là où une distribution ne le porte pas, pyenv
|
|
le compile.
|
|
|
|
<!-- [en] -->
|
|
|
|
# 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)
|
|
|
|
<!-- [fr] -->
|
|
|
|
# Plateformes supportées
|
|
|
|
- **Ubuntu** : 24.04, 25.10, 26.04 — 20.04 et 22.04 sont retirées, pikepdf réclamant un qpdf 12.2 bâti en C++20
|
|
- **Linux Mint** : 22.3
|
|
- **Debian** : 12 (bookworm) et 13 (trixie)
|
|
- **Fedora** : 41 et suivantes
|
|
- **AlmaLinux, Rocky Linux** : 9 et 10 — RHEL et CentOS Stream empruntent le même chemin
|
|
- **openSUSE** : Leap 16.0 et Tumbleweed
|
|
- **Arch Linux** : rolling release
|
|
- **NixOS** : 25.11 — les dépendances y sont DÉCLARÉES dans `conf/nixos/erplibre.nix` puis appliquées par `nixos-rebuild`, là où les quatre autres familles les installent commande par commande
|
|
- **macOS** : par mise ou pyenv
|
|
- **Windows** : par WSL ou Docker
|
|
- **Architectures** : amd64, arm64 et s390x (mainframe IBM Z)
|
|
|
|
<!-- [en] -->
|
|
|
|
# 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.
|
|
|
|
<!-- [fr] -->
|
|
|
|
# Installation en production
|
|
|
|
## Installation facile sur Ubuntu ou Debian avec Docker
|
|
|
|
Ceci a été testé sur Debian 12 et Ubuntu 24.04 LTS.
|
|
|
|
**Note** : Ceci est prévu pour un environnement de test, sur un réseau local ou un environnement similaire non exposé
|
|
directement à Internet.
|
|
|
|
<!-- [en] -->
|
|
|
|
1. Make sure Docker and nginx web server are installed:<BR>
|
|
`sudo apt install docker.io docker-compose-v2 nginx`
|
|
1. Get the latest ERPLibre Docker compose file:<BR>
|
|
`wget https://raw.githubusercontent.com/ERPLibre/ERPLibre/master/docker-compose.yml`
|
|
1. Install and run ERPLibre with Docker running as a daemon (web server):<BR>
|
|
`sudo docker compose up -d`
|
|
1. Open the final installation step at this web page :<BR>
|
|
`http://[server IP]:8069/web/database/manager`<BR>
|
|

|
|
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] -->
|
|
|
|
1. Assurez-vous que Docker et le serveur web nginx sont installés :<BR>
|
|
`sudo apt install docker.io docker-compose-v2 nginx`
|
|
1. Obtenez le dernier fichier Docker compose d'ERPLibre :<BR>
|
|
`wget https://raw.githubusercontent.com/ERPLibre/ERPLibre/master/docker-compose.yml`
|
|
1. Installez et lancez ERPLibre avec Docker en mode daemon (serveur web) :<BR>
|
|
``sudo docker compose up -d`
|
|
1. Ouvrez l'étape finale d'installation à cette page web :<BR>
|
|
`http://[server IP]:8069/web/database/manager`<BR>
|
|

|
|
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
|
|
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
|
|
|
|
### Installation automatisée
|
|
|
|
<!-- [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] -->
|
|
|
|
Suivez les instructions du script suivant, il essaiera de détecter votre environnement.
|
|
|
|
<!-- [common] -->
|
|
|
|
```bash
|
|
make
|
|
```
|
|
|
|
<!-- [en] -->
|
|
|
|
`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 goes
|
|
straight to the install rather than stopping on a syntax error. 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.
|
|
|
|
<!-- [fr] -->
|
|
|
|
`make` et `./install.sh` lancent TODO par l'interpréteur capable de le lire :
|
|
`.venv.erplibre` quand il porte la bonne version, sinon le `python3` du système
|
|
s'il est assez récent, sinon l'installation elle-même — un système plus ancien
|
|
que `conf/python-erplibre-version` ne sait pas analyser le code, donc on va
|
|
droit à l'installation plutôt que de s'arrêter sur une erreur de syntaxe. Quand
|
|
l'environnement manque mais que le Python du système suffit, TODO propose de
|
|
lancer `./script/install/install_erplibre.sh` (dans un terminal) ou affiche
|
|
cette commande. L'installation bâtit l'environnement par
|
|
`EL_PYTHON_PROVIDER` (mise ou pyenv) ; un `.venv.erplibre` existant sur une
|
|
autre version de Python est SUPPRIMÉ puis rebâti, et ce qu'on y avait posé à la
|
|
main part avec lui.
|
|
|
|
<!-- [en] -->
|
|
|
|
### Manually
|
|
|
|
Into Ubuntu, minimal dependency:
|
|
|
|
<!-- [fr] -->
|
|
|
|
### Manuellement
|
|
|
|
Sous Ubuntu, dépendance minimale :
|
|
|
|
<!-- [common] -->
|
|
|
|
```bash
|
|
sudo apt install make git curl
|
|
```
|
|
|
|
<!-- [en] -->
|
|
|
|
Into Ubuntu, developer dependency:
|
|
|
|
<!-- [fr] -->
|
|
|
|
Sous Ubuntu, dépendance développeur :
|
|
|
|
<!-- [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] -->
|
|
|
|
`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.
|
|
|
|
<!-- [fr] -->
|
|
|
|
`make install_os` détecte la distribution et choisit le bon script de dépendances : apt pour Ubuntu, Linux Mint et Debian, dnf pour Fedora et la famille RHEL, zypper pour openSUSE, pacman pour Arch, et un module déclaratif pour NixOS. Voir les plateformes supportées ci-dessus.
|
|
|
|
<!-- [common] -->
|
|
|
|
```bash
|
|
make install_os
|
|
make install_odoo_18
|
|
```
|
|
|
|
<!-- [en] -->
|
|
|
|
Install a specific Odoo version:
|
|
|
|
<!-- [fr] -->
|
|
|
|
Installez une version spécifique d'Odoo :
|
|
|
|
<!-- [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] -->
|
|
|
|
Mettez à jour votre configuration si vous devez exécuter depuis une autre interface que 127.0.0.1, fichier `config.conf`
|
|
|
|
<!-- [common] -->
|
|
|
|
```
|
|
xmlrpc_interface = 0.0.0.0
|
|
```
|
|
|
|
<!-- [en] -->
|
|
|
|
Show version :
|
|
|
|
<!-- [fr] -->
|
|
|
|
Afficher la version :
|
|
|
|
<!-- [common] -->
|
|
|
|
```bash
|
|
make version
|
|
```
|
|
|
|
<!-- [en] -->
|
|
|
|
Ready to execute:
|
|
|
|
<!-- [fr] -->
|
|
|
|
Prêt à exécuter :
|
|
|
|
<!-- [common] -->
|
|
|
|
```bash
|
|
make run
|
|
```
|
|
|
|
<!-- [en] -->
|
|
|
|
# Test
|
|
|
|
Execute ERPLibre test with his code generator.
|
|
|
|
<!-- [fr] -->
|
|
|
|
# Test
|
|
|
|
Exécutez les tests ERPLibre avec son générateur de code.
|
|
|
|
<!-- [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 |
|
|
|-------|-------------|
|
|
| [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 |
|
|
| [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).
|