Ce que tu vas apprendre
Préparer le système
Installer toutes les dépendances système nécessaires à Odoo 19 sur Ubuntu 24.04.
PostgreSQL 16
Installer et configurer le serveur de base de données utilisé par Odoo.
Environnement Python
Cloner les sources Odoo 19, créer un venv isolé et installer les dépendances pip.
Service systemd
Configurer Odoo en tant que service Linux qui démarre automatiquement au boot.
- Ubuntu 24.04 LTS (Noble Numbat) — serveur ou desktop
- Un accès sudo (ou root)
- Connexion internet (pour télécharger les sources et les paquets)
- Minimum 2 Go de RAM (4 Go recommandés pour le développement)
Cet article couvre l'installation depuis les sources (git clone). C'est la méthode recommandée pour le développement, car elle te donne un contrôle total sur le code et te permet de travailler sur plusieurs versions en parallèle grâce aux environnements virtuels Python.
Architecture d'une installation Odoo
Odoo repose sur trois composants principaux. Toute installation, qu'elle soit de développement ou de production, suit cette architecture :
PostgreSQL stocke les données, odoo-bin traite la logique métier, le navigateur affiche l'interface.
Étape 1 — Mettre à jour le système et installer les dépendances
Commence par mettre à jour la liste des paquets et installer les mises à jour de sécurité :
sudo apt update && sudo apt upgrade -y
Ensuite, installe les paquets système nécessaires à la compilation des dépendances Python d'Odoo. Cette commande couvre toutes les librairies requises :
sudo apt install -y git python3-dev python3-pip python3-venv \
build-essential libxml2-dev libxslt1-dev libldap2-dev libsasl2-dev \
libpq-dev libjpeg-dev libfreetype6-dev libtiff5-dev libopenjp2-7-dev \
liblcms2-dev libwebp-dev libharfbuzz-dev libfribidi-dev libxcb1-dev \
zlib1g-dev node-less npm
-dev), l'installation pip échouera.
Si ton application doit supporter les langues écrites de droite à gauche (arabe, hébreu), installe
également rtlcss :
sudo npm install -g rtlcss
Étape 2 — Installer et configurer PostgreSQL 16
Odoo utilise exclusivement PostgreSQL comme système de gestion de base de données. Ubuntu 24.04 embarque PostgreSQL 16 par défaut :
sudo apt install -y postgresql postgresql-client
Vérifie que le service est actif :
sudo systemctl status postgresql
Tu devrais voir active (exited) — c'est normal, PostgreSQL est géré par
pg_ctlcluster en arrière-plan.
Crée maintenant un utilisateur PostgreSQL dédié à Odoo. Son nom doit correspondre à l'utilisateur système que l'on va créer à l'étape 4 :
sudo -u postgres createuser -d -R -S odoo19
-d: le rôle peut créer des bases de données (nécessaire pour Odoo)-R: le rôle ne peut PAS créer d'autres rôles-S: le rôle n'est PAS superutilisateur (bonne pratique de sécurité)
Étape 3 — Installer wkhtmltopdf
Odoo utilise wkhtmltopdf pour convertir les rapports QWeb (factures, bons de livraison, devis...) en fichiers PDF. La version recommandée est 0.12.6.1.
Sur Ubuntu 24.04, la méthode la plus fiable est d'installer le paquet .deb
depuis les releases officielles :
# Télécharger le paquet (version Jammy, compatible Noble)
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.jammy_amd64.deb
# Installer le paquet
sudo apt install -y ./wkhtmltox_0.12.6.1-3.jammy_amd64.deb
Vérifie l'installation :
wkhtmltopdf --version
# Attendu : wkhtmltopdf 0.12.6.1 (with patched qt)
apt install wkhtmltopdf ?
Le paquet Ubuntu standard ne contient pas les patches Qt nécessaires pour le rendu
des en-têtes et pieds de page dans les rapports PDF. Utilise toujours la version
patchée depuis le dépôt officiel wkhtmltopdf.
Étape 4 — Créer un utilisateur système dédié
Pour des raisons de sécurité, Odoo ne doit jamais tourner sous root ni sous ton compte utilisateur personnel. On crée un utilisateur système dédié :
sudo useradd -m -d /opt/odoo19 -U -r -s /bin/bash odoo19
-m: crée le répertoire home (/opt/odoo19)-d /opt/odoo19: définit le répertoire home-U: crée un groupe du même nom-r: compte système (pas de login interactif par défaut)-s /bin/bash: shell bash (nécessaire poursu - odoo19)
Cet utilisateur possède son propre répertoire /opt/odoo19 où l'on va stocker
les sources Odoo, l'environnement virtuel et les modules custom.
Étape 5 — Télécharger Odoo 19 et créer l'environnement virtuel
Bascule sur l'utilisateur odoo19 pour que tous les fichiers
appartiennent au bon propriétaire :
sudo su - odoo19
Clone le dépôt officiel Odoo 19 Community depuis GitHub :
git clone https://github.com/odoo/odoo.git --depth 1 --branch 19.0 --single-branch /opt/odoo19/odoo
--depth 1 ne télécharge que le dernier commit.
Cela réduit le temps de téléchargement de plusieurs minutes à ~30 secondes et économise
environ 3 Go d'espace disque.
Crée l'environnement virtuel Python :
python3 -m venv /opt/odoo19/venv
Active l'environnement virtuel et installe les dépendances :
source /opt/odoo19/venv/bin/activate
pip install wheel
pip install -r /opt/odoo19/odoo/requirements.txt
L'installation pip peut prendre 2 à 5 minutes selon ta connexion.
Certains paquets compilent du code C (lxml, Pillow, psycopg2) — c'est pour cela
qu'on a installé les paquets -dev à l'étape 1.
Crée un répertoire pour tes futurs modules custom :
mkdir /opt/odoo19/custom-addons
Quitte l'utilisateur odoo19 :
deactivate
exit
sudo /opt/odoo19/odoo/setup/debinstall.sh.
C'est une alternative valide si tu préfères éviter pip.
Étape 6 — Configurer Odoo (odoo.conf)
Crée le fichier de configuration :
sudo nano /etc/odoo19.conf
Colle le contenu suivant :
[options]
; Mot de passe maître — protège la création/suppression de bases
admin_passwd = change_moi_en_production
; Connexion PostgreSQL (valeurs par défaut pour une install locale)
db_host = False
db_port = False
db_user = odoo19
db_password = False
; Répertoires des modules
addons_path = /opt/odoo19/odoo/addons, /opt/odoo19/custom-addons
; Port HTTP (8069 par défaut)
http_port = 8069
; Fichier de log
logfile = /var/log/odoo19/odoo.log
log_level = info
admin_passwd: mot de passe maître (page/web/database/manager). Change-le impérativement en production.db_host = False: connexion via socket Unix local (plus rapide, pas de mot de passe).addons_path: sépare les modules Odoo officiels et tes modules custom par une virgule.logfile: centralise les logs dans un fichier dédié.
Crée le répertoire de log et attribue les bons droits :
sudo mkdir -p /var/log/odoo19
sudo chown odoo19:odoo19 /var/log/odoo19
Étape 7 — Premier lancement manuel
Avant de créer le service systemd, vérifie que tout fonctionne en lançant Odoo manuellement :
sudo -u odoo19 /opt/odoo19/venv/bin/python3 /opt/odoo19/odoo/odoo-bin -c /etc/odoo19.conf
Tu devrais voir les logs défiler dans le terminal. Quand la ligne suivante apparaît, Odoo est prêt :
INFO ? odoo.modules.loading: Modules loaded.
Ouvre ton navigateur à l'adresse http://localhost:8069
(ou http://IP_DU_SERVEUR:8069 si tu es sur un serveur distant).
La page de création de base de données s'affiche. Remplis les champs :
- Master Password : le mot de passe défini dans
admin_passwd - Database Name : le nom de ta base (ex :
odoo19_dev) - Email : ton adresse email (sera le login admin)
- Password : mot de passe de l'utilisateur admin
- Language : Français
- Country : ton pays
Clique sur Create Database. Après quelques secondes, tu arrives sur la page d'accueil d'Odoo avec la liste des applications à installer.
Arrête le processus avec Ctrl+C une fois le test réussi.
Étape 8 — Créer un service systemd
Pour que Odoo démarre automatiquement au boot du serveur, crée un fichier service :
sudo nano /etc/systemd/system/odoo19.service
Colle le contenu suivant :
[Unit]
Description=Odoo 19
Requires=postgresql.service
After=network.target postgresql.service
[Service]
Type=simple
SyslogIdentifier=odoo19
User=odoo19
Group=odoo19
ExecStart=/opt/odoo19/venv/bin/python3 /opt/odoo19/odoo/odoo-bin -c /etc/odoo19.conf
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
Requires=postgresql.service: garantit que PostgreSQL est lancé avant Odoo.User=odoo19: le service tourne sous l'utilisateur dédié, pas sous root.ExecStart: utilise le Python du venv, pas celui du système.
Active et démarre le service :
sudo systemctl daemon-reload
sudo systemctl enable --now odoo19
Vérifie que le service tourne :
sudo systemctl status odoo19
Tu devrais voir active (running). Voici les commandes utiles
pour gérer le service au quotidien :
# Arrêter Odoo
sudo systemctl stop odoo19
# Démarrer Odoo
sudo systemctl start odoo19
# Redémarrer Odoo (après modification de code ou config)
sudo systemctl restart odoo19
# Consulter les logs en temps réel
sudo journalctl -u odoo19 -f
- Python 3.12 minimum : Odoo 19 est testé sur Python 3.12 (Ubuntu 24.04) et 3.13 (Debian Trixie). Python 3.10 reste supporté mais n'est plus la cible principale.
- lxml-html-clean : depuis lxml 5.2, le module
html_cleanest dans un paquet séparé (lxml-html-clean). Lerequirements.txtle gère automatiquement pour Python ≥ 3.12. - PyPDF2 → PyPDF : sur Python 3.13+, Odoo utilise
PyPDF(successeur de PyPDF2). Sur Python 3.12,PyPDF2reste utilisé.
Récapitulatif
Voici la checklist complète de ce que tu as mis en place :
| Composant | Détail |
|---|---|
| OS | Ubuntu 24.04 LTS (Noble Numbat) |
| Python | 3.12 (venv dans /opt/odoo19/venv) |
| PostgreSQL | 16, utilisateur odoo19 |
| wkhtmltopdf | 0.12.6.1 (patched Qt) |
| Sources Odoo | /opt/odoo19/odoo (branche 19.0) |
| Modules custom | /opt/odoo19/custom-addons |
| Configuration | /etc/odoo19.conf |
| Logs | /var/log/odoo19/odoo.log |
| Service | odoo19.service (systemd, auto-start) |
| Port HTTP | 8069 |
Structure finale des répertoires
/opt/odoo19/
├── odoo/ # Sources Odoo 19 (git clone)
│ ├── addons/ # Modules officiels
│ ├── odoo/ # Framework Python
│ ├── odoo-bin # Point d'entrée
│ └── requirements.txt # Dépendances pip
├── venv/ # Environnement virtuel Python
│ ├── bin/python3
│ └── lib/
└── custom-addons/ # Tes modules personnalisés
/etc/odoo19.conf # Configuration Odoo
/etc/systemd/system/odoo19.service # Service systemd
/var/log/odoo19/odoo.log # Fichier de log
Pour aller plus loin
Cette installation est parfaite pour le développement. Pour un environnement de production, il faudra ajouter :
- Nginx en reverse proxy (SSL/TLS, compression, cache des assets statiques)
- Certificat SSL via Let's Encrypt (gratuit)
- Workers : passer de
workers = 0(mono-thread, mode dev) àworkers = N(multi-process, mode production) - Sauvegardes automatiques de la base PostgreSQL (pg_dump cron)
- Logrotate pour le fichier de log
Ces sujets seront couverts dans de futurs articles de la série.
Liens utiles
Télécharge le Guide Technique Odoo 19
Architecture, pièges v19, checklist premier module — tout dans un PDF gratuit.
Télécharger le guideArticle suivant de la série :
Installer Odoo 19 sur Windows →