Outils pour utilisateurs

Outils du site


erp:odoo12:https

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

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 :

/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 :

<html><head><script>window.location = '/web' + location.hash;</script></head></html>

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 :

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 :

/etc/nginx/sites-available/odoo
server {
    listen 80;
    rewrite ^(.*) https://$host$1 permanent;
}

Et ajouter une seconde section :

/etc/nginx/sites-available/odoo
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
erp/odoo12/https.txt · Dernière modification: 2020/09/26 05:36 (modification externe)