====== Mettre Odoo en ligne en HTTPS ======
D'après le chapitre 14 du livre **Odoo 12 Development Essentials**.
Avoir un VPS disposant d'une installation fonctionnelle d'Odoo
* [[erp:odoo12:setup_odoo12_ubuntu_1804_paquet_deb|]]
===== Paramètres d'Odoo =====
Modifier les valeurs suivantes dans le fichier **/etc/odoo/odoo.conf** :
| **admin_passwd** = False | Désactive l'accès au database management |
| **db_name** = dbname | Nom de la DB à utiliser |
| **dbfilter** = %%^%%dbname$ | Ne rendre disponible que cette DB et pas les autres |
| **http_interface** = 127.0.0.1 | Écoute uniquement les requêtes locales, lorsque derrière un reverse proxy |
| **list_db** = False | Désactive la sélection de la base de données à utiliser |
| **proxy_mode** = True | Pour l'accès à Odoo derrière un reverse proxy |
| **without_demo** = all | Désactive l'ajout de données de démo |
| **workers** = 6 | Si 2 ou plus, active le mode multiprocessing |
De plus il est recommandé de modifier les droits d'accès au fichier de configuration,
afin que le process Odoo puisse le lire mais pas le modifier.
sudo chown -R odoo:root /etc/odoo
sudo chmod u=r,g=rw,o=r /etc/odoo/odoo.conf
Puis redémarrer le service Odoo :
sudo systemctl restart odoo.service
===== Reverse proxy NGINX =====
==== Installer Nginx ====
Vérifier qu'il n'y ait pas déjà un serveur qui écoute sur le port 80.
La commande ci-dessous doit renvoyer une erreur :
curl http://localhost
Installer **nginx**
sudo apt install nginx
sudo service nginx start
Vérifier qu'il fonctionne.
La commande suivante affiche une page **Welcome to nginx** :
curl http://localhost
==== Configuration ====
Désactiver la configuration par défaut :
sudo rm /etc/nginx/sites-enabled/default
Ajouter une configuration pour Odoo :
sudo touch /etc/nginx/sites-available/odoo
Activer la nouvelle configuration :
sudo ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/odoo
Éditer le fichier **/etc/nginx/sites-available/odoo** :
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}
server {
listen 80;
# 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;
# 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;
}
==== Test ====
Tester si la configuration est correcte :
sudo nginx -t
Si tout est OK, recharger Nginx :
sudo systemctl reload nginx.service
Confirmer que Nginx redirige bien le trafic vers Odoo :
curl http://localhost
=> Doit afficher la page d'Odoo :
===== HTTPS =====
==== Installation de Certbot ====
Télécharger **Certbot** dans le dossier **/opt** et l'exécuter une première
fois, accepter l'installation des dépendances mais **ne pas faire l'étape
de création**.
^ À faire en root ^
sudo su -
cd /opt
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto
Lorsqu'il demande l'adresse email, entrer **'c'** pour annuler.
==== Création du certificat ====
^ À faire en root ^
sudo su -
cd /opt
./certbot-auto certonly --domain odoo.marclebrun.be --email mon@email.com
Répondre aux questions posées :
{{:erp:odoo12:capture_d_ecran_du_2020-07-31_06-45-32.png?nolink|}}
{{:erp:odoo12:capture_d_ecran_du_2020-07-31_06-46-20.png?nolink|}}
{{:erp:odoo12:capture_d_ecran_du_2020-07-31_06-47-21.png?nolink|}}
Si l'adresse spécifiée n'a pas encore été vérifiée, un email
lui sera envoyé, il faut y répondre pour qu'elle soit vérifiée
et souscrire à la newsletter de l'**Electronic Frontier Foundation**.
==== Configuration de Nginx ====
Voir également cette page : [[https://www.nginx.com/blog/using-free-ssltls-certificates-from-lets-encrypt-with-nginx/]]
Modifier la section ''server'' de la configuration du site :
server {
listen 80;
rewrite ^(.*) https://$host$1 permanent;
}
Et ajouter une seconde section :
server {
listen 443;
# 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 on;
ssl_certificate /etc/letsencrypt/live/odoo.marclebrun.be/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/odoo.marclebrun.be/privkey.pem;
ssl_session_timeout 30m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
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 on;
# 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;
}
Modifier les chemins vers **fullchain.pem** et **privkey.pem**
en fonction de votre configuration.
Puis recharger **Nginx** :
sudo systemctl reload nginx
==== Renouvellement du certificat ====
Exécuter la commande de renouvellement du certificat, puis recharger **Nginx**.
^ À faire en root ^
sudo su -
cd /opt
./certbot-auto renew
sudo systemctl restart nginx