GERBELOTBARILLON.COM

Parce qu'il faut toujours un commencement...

Odoo, ERP opensource

Odoo, qu'est-ce ?


Odoo est un ERP OpenSource permettant aux sociétés de taille moyenne (TPE, PME) de disposer de l'ensemble des services de gestion des grandes entreprises : CRM, Facturation, ... Ce logiciel peut facilement s'auto héberger sur un environnement de type Linux et c'est ce que nous allons voir avec Ubuntu 24.04 ainsi qu'une variante avec Docker.

Installation classique sur Ubuntu

Une fois que vous avez une installation Ubuntu serveur fonctionnelle, voici les différentes étapes à suivre pour installer Odoo.


# mise à jour du système
sudo apt-get update -y && sudo apt-get upgrade -y

# installation des dépendances Odoo : python3 notamment
sudo apt-get install -y python3-pip python3-dev python3-venv libxml2-dev libxslt1-dev zlib1g-dev libsasl2-dev libldap2-dev build-essential libssl-dev libffi-dev libmysqlclient-dev libjpeg-dev libpq-dev libjpeg8-dev liblcms2-dev libblas-dev libatlas-base-dev -y

# installation de npm et node-less pour la gestion des css
sudo apt-get install -y npm

sudo ln -s /usr/bin/nodejs /usr/bin/node

sudo npm install -g less less-plugin-clean-css

sudo apt-get install -y node-less

# téléchargement du logiciel htmltopdf pour générer des rapports
sudo wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb

# installation de dépendances spécifiques à wkhtmltopdf
sudo apt install fontconfig xfonts-75dpi xfonts-base
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb
sudo dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb

sudo dpkg -i wkhtmltox_0.12.6-1.bionic_amd64.deb

# correction des dépendances manquantes
sudo apt install -f

# installation de postgresql puisque Odoo se sert de ce service de bases de données
sudo apt-get install postgresql -y

sudo systemctl start postgresql && sudo systemctl enable postgresql

sudo systemctl status postgresql

# Création d'un utilisateur dédié pour la gestion de Odoo. C'est un utilisateur système car défini avec l'option -r de useradd.
# Il n'y aura donc pas de forçage du changement de mot de passe (aging).
# Un groupe du même nom que l'utilisateur est créé et l'utilisateur est automatiquement ajouté à ce groupe.
# 
sudo useradd -m -U -r -d /opt/odooadmin -s /bin/bash odooadmin

sudo passwd odooadmin

# Création d'un utilisateur Odoo pour Postgresql.
# On décide de lui donner le même nom que l'utilisateur système
sudo su - postgres -c "createuser -s odooadmin"

# On télécharge Odoo depuis Github (avec l'identité odooadmin)
su - odooadmin

git clone https://www.github.com/odoo/odoo --depth 1 --branch 17.0 /opt/odooadmin/odoo17

cd /opt/odooadmin

# Création d'un environnement virtuel Python pour recevoir le téléchargement des fichiers requis pour Odoo
python3 -m venv odoo17-venv

source odoo17-venv/bin/activate

pip install --upgrade pip

pip3 install wheel

pip3 install -r odoo17/requirements.txt

deactivate

# Création d'un dossier pour les add-ons de Odoo
mkdir /opt/odooadmin/odoo17-custom-addons

chown -R odooadmin:odooadmin /opt/odooadmin/odoo17-custom-addons

exit


sudo mkdir -p /var/log/odoo17

sudo touch /var/log/odoo17.log

sudo chown -R odooadmin:odooadmin /var/log/odoo17

# Création du fichier de configuration de Odoo version 17
sudo touch /etc/odoo17.conf

sudo nano /etc/odoo17.conf

# Remplacer le mot de passe par un mot de passe fort de votre choix
[options]
admin_passwd = Password$
db_host = False
db_port = False
db_user = odooadmin
db_password = False
xmlrpc_port = 8069
logfile = /var/log/odoo17/odoo17.log
addons_path = /opt/odooadmin/odoo17/addons,/opt/odooadmin/odoo17-custom-addons 


# Création d'un fichier de service système afin de démarrer Odoo automatiquement à la mise en route du serveur Ubuntu
sudo touch /etc/systemd/system/odoo17.service

sudo nano /etc/systemd/system/odoo17.service

[Unit]
Description=odoo17
After=network.target postgresql@14-main.service

[Service]
Type=simple
SyslogIdentifier=odoo17
PermissionsStartOnly=true
User=odooadmin
Group=odooadmin
ExecStart=/opt/odooadmin/odoo17-venv/bin/python3 /opt/odooadmin/odoo17/odoo-bin -c /etc/odoo17.conf
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target


# Démarrage du service Odoo manuellement la première fois
sudo systemctl daemon-reload

sudo systemctl start odoo17 && sudo systemctl enable odoo17

sudo systemctl status odoo17

# Pour se connecter à Odoo, pointez sur l'IP de votre serveur et sur le port 8069
http://IP:8069
Lors de la première connexion, vous serez invité à saisir le mot de passe de votre compte principal, celui qui a été défini dans le fichier de configuration Odoo17 (/etc/odoo17.conf), ainsi que le nom de la base de donnée qui sera créée pour Odoo. Saisissez une adresse email et un mot de passe, ce seront les identifiants de connexion à Odoo.

Connectez-vous ensuite avec l'utilisateur déclaré dans la page précédente. La connexion se fait avec l'adresse email saisie précédemment.

Vous êtes maintenant prêt à utiliser ce bel outil open source pour la gestion de votre entreprise.

Remarque : comme tout outil offrant la possibilité d'être utilisé localement et à distance, il est recommandé d'utiliser un reverse proxy (comme nginx) afin de pouvoir gérer le domaine et le certificat externe qui va avec afin de pouvoir vous connecter en toute sécurité depuis l'extérieur.

Installation par Docker

Il nous faudra disposer d'une machine Docker. Pour installer Docker sur Ubuntu, consultez https://www.gerbelotbarillon.com/docker.php

Pour Odoo nous allons créer un container Postgresql qui disposera d'un environnement persistant pour stocker les données de la base. Un second container contiendra l'installation de l'application Odoo.

Sur le serveur nous allons créer un fichier docker compose compose.yaml pour ces différentes installations.

version: '3'
services:
   db:
      image: postgres:17
      user: root
      environment:
         - POSTGRES_USER=odoo
         - POSTGRES_PASSWORD=odoo
         - POSTGRES_DB=postgres
      volumes:
         - ./postgresql:/var/lib/postgresql/data

   odoo18:
      image: odoo:18
      user: root
      depends_on:
         - db
      ports:
         - "8069:8069"
      environment:
         - HOST=db
         - USER=odoo
         - PASSWORD=odoo
      volumes:
         - ./etc:/etc/odoo
         - ./addons:/mnt/extra-addons

Pour réaliser la mise en place, il faut simplement lancer

$ sudo docker compose up

Maintenant que l'installation est réalisée, il suffit d'ouvrir une connexion sur le service web par http://@ip-odoo:8069. A la première ouverture il faudra renseigner les champs de l'administrateur d'Odoo. Ensuite c'est comme pour la configuration en on-premise.

Si par la suite vous avez besoin de vous connecter sur le container :

$ sudo docker exec -it container_id bash