====== 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