Suite à l'installation d'une Dibian fraiche, on peut installer le paquet odoo depuis ce dépot :
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DEF2A2198183CBB5 echo "deb http://nightly.odoo.com/15.0/nightly/deb/ ./" >> /etc/apt/sources.list apt-get update && apt-get install odoo
Il se peut que les paquets python soit pas adapté à l'application et pip d'obtenir les bonnes version de ses dépendances:
apt install python3-pip su - odoo pip install werkzeug==0.16.0
Il reste à installer wkhtmltox pour générer les pdf :
wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.buster_amd64.deb dpkg -i wkhtmltox_0.12.5-1.buster_amd64.deb apt -f install dpkg -i wkhtmltox_0.12.5-1.buster_amd64.deb ln -s /usr/local/bin/wkhtmltopdf /usr/bin ln -s /usr/local/bin/wkhtmltoimage /usr/bin
apt install gcc python3-pip libjpeg-dev build-essential python-dev python3-pil python3-pyldap python3-dev python3-setuptools python3-psycopg2 python3-venv libxslt-dev git libzip-dev libldap2-dev libsasl2-dev libpq-dev wkhtmltopdf python3-num2words postgresql apt install sudo vim update-alternatives --install /usr/bin/python python /usr/bin/python3 1 sudo -iu postgres createuser -s odoo
Adapter ces valeurs pour optimiser le temps de réponse de postgres:
vim /etc/postgresql/13/main/postgresql.conf shared_buffers = 3072MB effective_cache_size = 8192MB systemctl restart postgresql
adduser odoo su - odoo git clone --depth=1 -b 13.0 https://github.com/odoo/odoo.git /home/odoo/odoo python3 -m venv /home/odoo/.venv source /home/odoo/.venv/bin/activate cd odoo pip install --upgrade pip pip install phonenumbers jwt psycopg2-binary psycopg2 PyPDF2 babel decorator jinja2 reportlab docutils gevent pip install -r /home/odoo/odoo/requirements.txt
L'application démarrera ainsi :
/home/odoo/.venv/bin/python3 /home/odoo/odoo/odoo-bin -c /home/odoo/odoo/debian/odoo.conf
Le port 8069 sera en écoute
Au minimum:
cat /home/odoo/odoo/debian/odoo.conf
[options] db_host = False db_port = False db_user = odoo db_password = False list_db = False without_demo = all limit_time_real = 0 limit_time_cpu = 0 log_level = debug logfile = /home/odoo/odoo/odoo.log
Autres directives:
Interface d'écoute de l'application: http_interface = 127.0.0.1 Là ou sera stocké le filstore : #data_dir = /var/lib/odoo Odoo créera pas de base avec des accents unaccent = true Emplacement des fichiers addons: addons_path = /opt/odoo/auto/addons, /opt/odoo/auto/addons2 Indiquer que l'application se trouve derrière un reverseproxy: proxy_mode = true Paramètre de connexion SMTP: smtp_host = 10.0.3.1 smtp_server = smtp smtp_port = 25 smtp_user = false smtp_password = false smtp_ssl = false Désactiver l'API: xmlrpc = False xmlrpcs = False Ne pas charger les données de démos des modules: without_demo = all Emplacement du module qui servirait à géolocaliser les personnes grâce aux IPs que Odoo collecte #geoip_database = /opt/odoo/auto/geoip/GeoLite2-City.mmdb
On peut en découvrir d'autres en exportant la configuration chargé :
/usr/bin/odoo --stop-after-init --save
On retrouve alors un fichier dans ~/.odoorc
a2enmod proxy_http
cat /etc/apache2/sites-enabled/odoo.conf
<VirtualHost *:80 *:443>
ServerName domaine.org
ServerAlias www.domaine.org
ServerAdmin webmaster@domaine.org
ProxyPass /.well-known/acme-challenge !
Alias /.well-known/acme-challenge /var/www/html/.well-known/acme-challenge
DocumentRoot /var/www/odoo
<Directory "/var/www/odoo">
# Options -Indexes
Require all granted
</Directory>
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/domaine.org/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domaine.org/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/domaine.org/chain.pem
SSLVerifyClient None
ServerSignature Off
CustomLog /var/log/apache2/access.log combined
ErrorLog /var/log/apache2/error.log
ProxyPass /longpolling/ http://10.0.3.12:8072/longpolling/
ProxyPassReverse /longpolling/ http://10.0.3.12:8072/longpolling/
## Auto-redirection from http to https
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]
<Location "/robots.txt">
ProxyPass "!"
</Location>
Alias "/robots.txt" "/var/www/odoo/robots.txt"
# <Location "/503.html">
# ProxyPass "!"
# </Location>
# Alias "/503.html" "/var/www/odoo/503.html"
<IfModule mod_proxy.c>
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyVia On
ProxyPass / http://10.0.3.12:8069/ retry=0
<Location / >
Allow from all
ProxyPassReverse http://10.0.3.12:8069/
</Location>
SSLProxyEngine On
</IfModule>
RequestHeader set "X-Forwarded-Proto" "https"
## Fix IE problem (httpapache proxy dav error 408/409)
SetEnv proxy-nokeepalive 1
# Header unset Cache-Control
# Header unset Set-Cookie #Cause une "400 bad request" lorsque l'on se login au backend (CSRF_request)
Header unset Age
# Header unset Etag
Header unset X-Content-Type-Options
Header unset Via
Header unset Server
#Header set Access-Control-Allow-Origin "*"
#Header set Access-Control-Allow-Methods "POST, GET, OPTIONS"
#Header set Access-Control-Allow-Headers "origin, content-type, accept"
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomain;"
ProxyErrorOverride On
ErrorDocument 404 "https://domaine.org"
ErrorDocument 503 /var/www/odoo/503.html
</VirtualHost>
Nous aurons besoin d'une unité pour que l'application soit lancé au démarrage du système:
cat /etc/systemd/system/odoo.service
[Unit] Description=Odoo Requires=postgresql.service After=network.target postgresql.service [Service] Type=simple SyslogIdentifier=odoo PermissionsStartOnly=true User=odoo Group=odoo Environment="VIRTUAL_ENV=/home/odoo/.venv" Environment="PATH=/home/odoo/.venv/bin" WorkingDirectory=/home/odoo/odoo ExecStart=/home/odoo/.venv/bin/python3 /home/odoo/odoo/odoo-bin -c /home/odoo/odoo/debian/odoo.conf StandardOutput=journal+console [Install] WantedBy=multi-user.target
On prend en compte ce changement:
systemctl daemon-reload