Odoo (anciennement connu sous le nom d'OpenERP) est une suite auto-hébergée de plus de 10 000 applications open source adaptées à une variété de besoins commerciaux, notamment le CRM, le commerce électronique, la comptabilité, l'inventaire, la gestion de projet et le point de vente. Ces applications sont entièrement intégrées et accessibles via une interface Web commune.
Dans ce tutoriel, nous allons apprendre à installer Odoo 14 Stack sur un serveur basé sur Ubuntu 20.04.
Prérequis
-
Un serveur basé sur Ubuntu 20.04 avec un minimum de 2 Go de RAM pour héberger Odoo Stack.
-
Un deuxième serveur basé sur Ubuntu 20.04 avec un minimum de 2 Go de RAM pour héberger la base de données PostgreSQL. Vous pouvez cependant installer la base de données sur le même serveur qu'Odoo mais pour les environnements de production, il est fortement recommandé de l'installer sur un serveur séparé. Vous pouvez également choisir l'une des options de base de données gérée disponibles auprès de n'importe quel fournisseur de votre choix.
-
La RAM requise dépendra du nombre d'utilisateurs simultanés qui utiliseront la pile. Un guide détaillé sur la façon de calculer la configuration système requise peut être trouvé dans la documentation d'Odoo.
-
Maintenez vos systèmes à jour.
$ sudo apt update $ sudo apt upgrade
-
Un utilisateur non root avec des privilèges sudo sur les deux serveurs.
Configurer les règles du pare-feu
Pour les besoins de ce tutoriel, nous supposerons que vous avez ufw
pare-feu installé sur les deux serveurs.
Sur le serveur Odoo, nous aurons besoin que les ports 22, 80, 443, 6010, 5432 et 8069 soient ouverts. 22 est utilisé pour SSH, 80 est pour HTTP, 443 est pour HTTPS, 6010 est utilisé pour la communication Odoo, 5432 est utilisé par PostgreSQL et 8069 est utilisé par l'application serveur Odoo.
Exécutez les commandes suivantes pour ouvrir les ports requis sur le serveur Odoo.
$ sudo ufw allow "OpenSSH"
$ sudo ufw allow 80,443,6010,5432,8069,8072/tcp
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw allow 6010/tcp
$ sudo ufw allow 5432/tcp
$ sudo ufw allow 8069/tcp
$ sudo ufw allow 8072/tcp
Sur le serveur PostgreSQL, nous devons ouvrir les ports 22, 6010 et 5432. Ouvrez-les à l'aide des commandes dont nous venons de parler.
Attribuer des noms d'hôte
Vous pouvez soit utiliser les adresses IP des serveurs, soit utiliser leurs noms de domaine complets (FQDN), s'ils sont disponibles. Pour notre tutoriel, nous utiliserons des FQDN et pour cela, nous devons définir des noms d'hôte sur les deux serveurs.
Sur le serveur Odoo, ouvrez le /etc/hosts
fichier.
$ sudo nano /etc/hosts
Assurez-vous qu'il ressemble à ce qui suit.
127.0.0.1 localhost
127.0.0.1 odoo.yourdomain.com odoo
10.1.1.10 postgresql.yourdomain.com postgresql
Sur le serveur PostgreSQL, ouvrez le fichier et assurez-vous qu'il ressemble à ce qui suit.
127.0.0.1 localhost
127.0.0.1 postgresql.yourdomain.com postgresql
10.1.2.10 odoo.yourdomain.com odoo
Appuyez sur Ctrl + X pour fermer l'éditeur et appuyez sur Y lorsque vous êtes invité à enregistrer le fichier.
Installer et configurer PostgreSQL
Ubuntu 20.04 est livré avec PostgreSQL 12 par défaut et nous allons l'installer. Exécutez la commande suivante sur le serveur PostgreSQL.
$ sudo apt install postgresql-12 postgresql-server-dev-12
Ensuite, nous devons créer un utilisateur de base de données odoo.
$ sudo -u postgres createuser odoo -U postgres -dP
L'option -u
exécute la commande en tant que postgres
utilisateur.
L'option -U
indiquez le nom d'utilisateur sous lequel se connecter.
L'option -d
accorde à l'utilisateur l'autorisation de créer des bases de données.
L'option -p
demande le mot de passe du nouvel utilisateur.
Configurer l'authentification basée sur l'hôte
Nous devons autoriser le service PostgreSQL à pouvoir se connecter au serveur Odoo.
Tout d'abord, arrêtez le service PostgreSQL.
$ sudo systemctl stop postgresql
Ouvrez le fichier /etc/postgresql/12/main/pg_hba.conf
pour l'édition.
$ sudo nano /etc/postgresql/12/main/pg_hba.conf
Collez la ligne suivante à la fin.
host all odoo odoo.yourdomain.com md5
Cette ligne accorde la permission à odoo
utilisateur pour se connecter à toutes les bases de données de ce serveur. Vous pouvez également spécifier le nom des bases de données au lieu d'utiliser all
mot-clé.
Appuyez sur Ctrl + X pour fermer l'éditeur et appuyez sur Y lorsque vous êtes invité à enregistrer le fichier.
Configurer l'adresse d'écoute PostgreSQL
Ensuite, nous devons autoriser le serveur de base de données à écouter les connexions distantes. Ouvrez le fichier /etc/postgresql/12/main/postgresql.conf
pour l'édition.
$ sudo nano /etc/postgresql/12/main/postgresql.conf
Changez la ligne listen_addresses
de
#listen_addresses = 'localhost' # what IP address(es) to listen on;
à.
#From CONNECTIONS AND AUTHENTICATION Section
listen_addresses = '*'
Le *
signifie qu'il écoutera toutes les adresses IP. Vous pouvez le remplacer par l'adresse IP de votre instance odoo.
Appuyez sur Ctrl + X pour fermer l'éditeur et appuyez sur Y lorsque vous êtes invité à enregistrer le fichier.
Activer et démarrer le service PostgreSQL
Puisque notre configuration est terminée, il est temps de démarrer et d'activer le service PostgreSQL.
$ sudo systemctl start postgresql && sudo systemctl enable postgresql
Installer Odoo
Installer les dépendances et préparer l'installation
Créez un nouvel utilisateur système pour gérer les processus Odoo sur le serveur Odoo.
$ sudo adduser --system --home=/opt/odoo --group odoo
Nous devons installer certaines dépendances système, mais nous devons d'abord activer les référentiels source. Pour ce faire, sauvegardez la liste des sources d'origine, puis activez tous les référentiels sources et mettez à jour la liste des référentiels.
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list~
$ sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
$ sudo apt update
Installez les dépendances système requises pour la configuration d'Odoo 14.
$ sudo apt install python3-pip python3-suds python3-all-dev python3-venv python3-dev python3-setuptools python3-tk libxml2-dev libxslt1-dev libevent-dev libsasl2-dev libldap2-dev pkg-config libtiff5-dev libjpeg8-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev liblcms2-utils libwebp-dev tcl8.6-dev tk8.6-dev libyaml-dev fontconfig xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils libpq-dev
$ sudo apt build-dep lxml
Installez Nodejs.
$ sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$ sudo apt install nodejs
Installez le package Less CSS à l'aide de Node.
$ sudo npm install -g less less-plugin-clean-css
Télécharger wkhtmltopdf
paquet de la version 0.12.6.
$ cd /tmp
$ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
Installez le paquet.
$ sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb
Pour s'assurer que wkhtmltopdf
fonctionne correctement, copiez les binaires dans /usr/bin
et donnez-leur les autorisations appropriées.
$ sudo cp /usr/local/bin/wkhtmlto* /usr/bin/
$ sudo chmod a+x /usr/bin/wk*
$ cd ~
Télécharger des fichiers Odoo
Clonez le dépôt Github d'Odoo sur votre système.
$ sudo git clone https://github.com/odoo/odoo.git --depth 1 --branch 14.0 --single-branch /opt/odoo
Pour notre propos, nous copions Odoo dans le /opt/odoo
répertoire à partir duquel il sera installé.
Configurer l'environnement Virtualenv Python
Cette étape est facultative mais recommandée car un environnement python virtuel pour Odoo aidera à éviter les conflits avec les modules Python du système d'exploitation, en particulier lors des mises à niveau du système d'exploitation.
Pour cela, nous utiliserons virtualenv
.
-
Créer un nouveau
virtualenv
environnement pour Odoo.$ python3 -m venv /home/<username>/odoo-env
-
Activez l'environnement virtuel. Nous créons un environnement sous le répertoire personnel de l'utilisateur système. Vous êtes libre de choisir l'emplacement que vous aimez.
$ source /home/<username>/odoo-env/bin/activate
-
Mettez à jour le PIP au cas où.
(odoo-env) $ pip3 install --upgrade pip
-
Installez la roue de Python dans l'environnement virtuel.
$ pip3 install wheel
Installer les dépendances Python
Installez les dépendances Python requises par Odoo 14.
$ pip3 install -r /opt/odoo/doc/requirements.txt
$ pip3 install -r /opt/odoo/requirements.txt
La configuration requise prendra un certain temps à installer, alors soyez patient.
Vérifiez si les exigences sont correctement installées en consultant la liste des modules Python installés.
$ pip3 list
Package Version
----------------------------- ---------
alabaster 0.7.12
appdirs 1.4.4
attrs 20.3.0
Babel 2.6.0
beautifulsoup4 4.9.3
cached-property 1.5.2
certifi 2020.12.5
chardet 3.0.4
decorator 4.3.0
defusedxml 0.7.1
docutils 0.14
ebaysdk 2.1.5
feedparser 5.2.1
freezegun 0.3.15
gevent 20.9.0
greenlet 0.4.17
html2text 2018.1.9
idna 2.6
imagesize 1.2.0
isodate 0.6.0
Jinja2 2.11.2
libsass 0.17.0
lxml 4.6.1
Mako 1.0.7
MarkupSafe 1.1.0
num2words 0.5.6
ofxparse 0.19
packaging 20.9
passlib 1.7.1
Pillow 8.0.1
pip 21.0.1
pkg-resources 0.0.0
polib 1.1.0
psutil 5.6.6
psycopg2 2.8.5
pyasn1 0.4.8
pyasn1-modules 0.2.8
pydot 1.4.1
Pygments 2.8.1
pyparsing 2.4.7
PyPDF2 1.26.0
pyserial 3.4
python-dateutil 2.7.3
python-ldap 3.1.0
python-stdnum 1.8
pytz 2019.1
pyusb 1.0.2
qrcode 6.1
reportlab 3.5.55
requests 2.21.0
requests-toolbelt 0.9.1
setuptools 44.0.0
six 1.15.0
snowballstemmer 2.1.0
soupsieve 2.2
Sphinx 3.5.2
sphinx-patchqueue 1.0.4
sphinxcontrib-applehelp 1.0.2
sphinxcontrib-devhelp 1.0.2
sphinxcontrib-htmlhelp 1.0.3
sphinxcontrib-jsmath 1.0.1
sphinxcontrib-qthelp 1.0.3
sphinxcontrib-serializinghtml 1.1.4
unidiff 0.6.0
urllib3 1.24.3
vobject 0.9.6.1
Werkzeug 0.16.1
wheel 0.36.2
xlrd 1.2.0
XlsxWriter 1.1.2
xlwt 1.3.0
zeep 3.2.0
zope.event 4.5.0
zope.interface 5.2.0
Quittez l'environnement virtuel Python.
$ deactivate
Configurer Odoo
Copiez le fichier de configuration Odoo par défaut pour en créer un nouveau.
$ sudo cp /opt/odoo/debian/odoo.conf /etc/odoo-server.conf
Ouvrez le fichier pour le modifier.
$ sudo nano /etc/odoo-server.conf
Modifiez le fichier pour qu'il ressemble à ce qui suit.
[options]
; This is the password that allows database operations:
admin_passwd = admin
db_host = postgresql.yourdomain.com
db_port = False
db_user = odoo
db_password = odoo_password
addons_path = /opt/odoo/addons
xmlrpc_port = 8069
Appuyez sur Ctrl + X pour fermer l'éditeur et appuyez sur Y lorsque vous êtes invité à enregistrer le fichier.
L'option admin_passwd
est le mot de passe qui permet les opérations administratives dans l'interface graphique d'Odoo. Assurez-vous de choisir un mot de passe sécurisé.
L'option db_host
est le FQDN ou l'adresse IP du serveur PostgreSQL.
L'option db_port
est défini sur false puisque le port PostgreSQL 5432 par défaut est utilisé. Si vous souhaitez utiliser un port différent, vous devrez mettre à jour cette valeur.
L'option db_user
est le nom de l'utilisateur PostgreSQL.
L'option db_password
est le mot de passe utilisateur "odoo" de PostgreSQL que nous avons créé précédemment sur le serveur PostgreSQL.
L'option addons_path
est le chemin Addons par défaut. Vous pouvez également ajouter un chemin personnalisé pour les addons en les séparant par des virgules.
L'option xmlrpc_port
est le port sur lequel Odoo écoute.
Créer un service Odoo
Pour nous assurer qu'Odoo continue de fonctionner même après un redémarrage du système, nous devons créer un service pour celui-ci.
Créez un fichier /lib/systemd/system/odoo-server.service
et ouvrez-le pour le modifier.
$ sudo nano /lib/systemd/system/odoo-server.service
Collez-y le code suivant.
[Unit]
Description=Odoo Open Source ERP and CRM
[Service]
Type=simple
PermissionsStartOnly=true
SyslogIdentifier=odoo-server
User=odoo
Group=odoo
ExecStart=/home/<username>/odoo-env/bin/python3 /opt/odoo/odoo-bin --config=/etc/odoo-server.conf --addons-path=/opt/odoo/addons/
WorkingDirectory=/opt/odoo/
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
Remplacez /home/<username>
avec l'emplacement que vous avez choisi pour installer Python Virtual Environment.
Appuyez sur Ctrl + X pour fermer l'éditeur et appuyez sur Y lorsque vous êtes invité à enregistrer le fichier.
Définir les autorisations de fichier
Définir les autorisations sur odoo-server.service
fichier afin que seul l'utilisateur Odoo puisse le lire ou l'exécuter.
$ sudo chmod 755 /lib/systemd/system/odoo-server.service
$ sudo chown odoo: /lib/systemd/system/odoo-server.service
Définissez la propriété sur l'environnement Python et le répertoire d'installation d'Odoo.
$ sudo chown -R odoo: /opt/odoo/
$ sudo chown -R odoo: /home/<username>/odoo-env
Restreindre le fichier de configuration Odoo.
$ sudo chown odoo: /etc/odoo-server.conf
$ sudo chmod 640 /etc/odoo-server.conf
Démarrer le serveur Odoo
Démarrez et activez le serveur Odoo.
$ sudo systemctl start odoo-server
$ sudo systemctl enable odoo-server
Vérifiez l'état du serveur.
$ sudo systemctl status odoo-server
Dans votre navigateur, ouvrez l'URL http://<yourIPaddress>:8069
ou http://odoo.yourdomain.com:8069
. Si tout fonctionne correctement, vous devriez voir l'écran de création de la base de données d'Odoo.
Remplissez tous les champs. Vérifiez les Demo Data
pour remplir la base de données avec des exemples de données, puis cliquez sur Créer une base de données bouton.
Ensuite, vous verrez une liste d'applications que vous pouvez choisir et sélectionner.
La première fois que vous créez une base de données, la page des modules complémentaires prendra du temps à se charger, n'actualisez donc pas la page.
Installer et configurer Nginx
Jusqu'à présent, nous utilisions le serveur d'Odoo pour exécuter la pile. Mais idéalement, il vaut mieux l'exécuter sur Nginx en utilisant un proxy car cela nous permettra d'installer SSL dessus.
Installez Nginx.
$ sudo apt install nginx
Pour l'exécuter via Nginx, nous devons exécuter Odoo sur localhost. Pour changer cela, arrêtez le service Odoo.
$ sudo systemctl stop odoo-server
Ouvrez le fichier de configuration du serveur Odoo.
$ sudo nano /etc/odoo-server.conf
Ajoutez-y les lignes suivantes.
xmlrpc_interface = 127.0.0.1
proxy_mode = True
Créez un fichier de configuration Nginx pour Odoo.
$ sudo nano /etc/nginx/sites-available/odoo.conf
Collez le code ci-dessous.
#odoo server
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}
# http -> https
server {
listen 80;
server_name odoo.yourdomain.com;
rewrite ^(.*) https://$host$1 permanent;
}
server {
listen 443 ssl http2;
server_name odoo.yourdomain.com;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
# Add Headers for odoo proxy mode
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
# SSL parameters
ssl_certificate /etc/letsencrypt/live/odoo.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/odoo.yourdomain.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# log
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
# Redirect longpoll requests to odoo longpolling port
location /longpolling {
proxy_pass http://odoochat;
}
# Redirect requests to odoo backend server
location / {
proxy_redirect off;
proxy_pass http://odoo;
}
# common gzip
gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
Appuyez sur Ctrl + X pour fermer l'éditeur et appuyez sur Y lorsque vous êtes invité à enregistrer le fichier.
Activez ce fichier de configuration en le liant au sites-enabled
répertoire.
$ sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
Testez la configuration Nginx.
$ sudo nginx -t
Installer SSL
Nous allons installer SSL en utilisant le service Let's Encrypt.
Pour cela, installez Certbot.
$ sudo apt install certbot
Arrêtez Nginx car cela interférera avec le processus Certbot.
$ sudo systemctl stop nginx
Générez le certificat. Nous devons également créer un certificat DHCParams.
$ sudo certbot certonly --standalone -d odoo.yourdomain.com --preferred-challenges http --agree-tos -n -m [email protected] --keep-until-expiring
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Nous devons également configurer une tâche cron pour renouveler automatiquement le SSL. Pour ouvrir l'éditeur crontab, exécutez la commande suivante.
$ sudo crontab -e
Collez la ligne suivante en bas.
25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”
Le travail cron ci-dessus exécutera certbot à 2h25 tous les jours. Vous pouvez le changer en tout ce que vous voulez.
Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.
Démarrer Odoo
Maintenant que tout est configuré, nous pouvons redémarrer le serveur Odoo.
$ sudo systemctl start odoo-server
Lancez Odoo dans votre navigateur via https://odoo.yourdomain.com
. Vous obtiendrez un écran décrit précédemment. Entrez les détails requis pour créer la base de données et vous devriez vous connecter à Odoo et voir un écran comme celui-ci.
Conclusion
Ceci conclut notre tutoriel sur l'installation d'Odoo sur le serveur Ubuntu 20.04. Si vous avez des questions, postez-les dans les commentaires ci-dessous.