Dedichiamo questo nostro articolo a uno dei più apprezzati software gestionali open source in grado di venire incontro alla stragrande maggioranza delle esigenze di un’impresa.
Odoo è un gestionale all-in-one che ambisce a offrire soluzioni specifiche per qualsiasi necessità aziendale adattandosi a settori e segmenti di mercato molto diversi.
Il software è infatti composto da una vasta schiera di moduli che possono essere attivati su richiesta dell’utente e integrati molto semplicemente. Odoo ben si adatta alle esigenze delle piccole e medie imprese (PMI) e grazie alla struttura aperta si rivela particolarmente flessibile oltre che adatto a sostituire soluzioni considerate davvero troppo verticali.
Odoo aiuta a digitalizzare l’azienda, anche a costo zero: sul sito ufficiale del progetto si trovano infatti l’edizione Enterprise a pagamento per tutti i principali sistemi operativi ma è possibile scaricare liberamente la versione Community open source. Quest’ultima può essere installata on-premise (quindi all’interno della propria infrastruttura aziendale), sul cloud o in configurazioni ibride senza spendere un centesimo.
Le differenze tra Odoo Enterprise e Community sono chiarite in una pagina “ad hoc”.
Con Odoo si possono ad esempio gestire CRM, fatturazione, contabilità, produzione, magazzino, progetti ma anche creare e amministrare vere e proprie piattaforme di ecommerce.
Per impostare i moduli di Odoo basta fare clic su Installa e seguire la procedura guidata che viene generalmente offerta.
Odoo permette di creare anche siti di ecommerce perfettamente cuciti sulla base delle esigenze dell’azienda. Cliccando sui vari riquadri è possibile selezionare le caratteristiche che deve avere il sito.
Con Odoo è possibile definire il layout del sito di ecommerce scegliendo fra un’ampia gamma di stili, formattazioni e immagini (attingendo alle principali piattaforme che distribuiscono contenuti royalty-free).
Perché abbiamo parlato brevemente di ecommerce? Perché con Odoo è possibile sviluppare da zero un’attività online, fruire del modulo CRM per restare in contatto con i clienti o potenziali tali, gestire preventivi, fatturazione e magazzino, controllare appuntamenti e il parco mezzi dell’azienda usato per movimentare le merci e consegnare i prodotti ordinati.
Attraverso un’unica dashboard “punta e clicca” si può gestire il personale, le ferie, valutare i dipendenti, programmare riunioni e controllare la qualità dei prodotti.
Oltre al magazzino si possono gestire produzione, acquisti e punti vendita; si può lavorare sul marketing via email, automatizzare le campagne, gestire molteplici sistemi di pagamento e l’integrazione con le principali piattaforme per vendere online (ad esempio eBay).
Installare Odoo su Ubuntu Linux
Attivando un piano a pagamento che prevede l’utilizzo di un servizio di hosting cloud fornito da Odoo tutto è semplice e immediato.
Per installare Odoo su un server Linux locale oppure su una propria macchina raggiungibile via cloud si possono seguire alcuni passaggi che illustriamo di seguito. Odoo è disponibile anche come container Docker: in questo modo è possibile provare subito la piattaforma senza particolari interventi manuali.
Aggiorniamo dapprima il sistema Ubuntu Linux quindi richiediamo l’installazione dei componenti software necessari per il corretto funzionamento di Odoo:
sudo apt update && sudo apt upgrade -y
sudo apt install git python3-pip build-essential wget python3-dev python3-venv python3-wheel libfreetype6-dev libxml2-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less libjpeg-dev zlib1g-dev libpq-dev libxslt1-dev libldap2-dev libtiff5-dev libjpeg8-dev libopenjp2-7-dev liblcms2-dev libwebp-dev libharfbuzz-dev libfribidi-dev libxcb1-dev -y
Installiamo anche il web server nginx:
Creiamo quindi un account utente sulla macchina Linux che sarà utilizzato da Odoo e da tutti i servizi collegati:
Installiamo quindi il DBMS PostgreSQL e creiamo un utente il cui nome corrisponde a quello aggiunto in precedenza a livello di sistema:
sudo apt install postgresql -y
sudo su - postgres -c "createuser -s odoo15"
Per creare i report in formato PDF Odoo necessita di un componente chiamato wkhtmltopdf. Lanciare i comandi seguenti:
sudo wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb
sudo apt install ./wkhtmltox_0.12.5-1.bionic_amd64.deb -y
Il consiglio è quello di installare Odoo in un ambiente virtuale Python isolato dal resto del sistema operativo. Per procedere in tal senso si passa dapprima a usare l’utente odoo
aggiunto poco fa, si effettua la clonazione del progetto Odoo da GitHub quindi si conclude con la configurazione dell’ambiente Python.
sudo su - odoo15
git clone https://www.github.com/odoo/odoo --depth 1 --branch 15.0 /opt/odoo15/odoo
cd /opt/odoo15
python3 -m venv odoo-venv
source odoo-venv/bin/activate
Una volta passati al prompt dell’ambiente virtuale Python basta digitare quanto segue per installare le varie dipendenze richieste per il funzionamento di Odoo:
pip3 install wheel
pip3 install -r odoo/requirements.txt
deactivate
A questo punto è possibile creare una nuova cartella che ospiterà gli add-on di terze parti per Odoo quindi tornare a usare l’utente root:
mkdir /opt/odoo15/odoo-custom-addons
exit
Creare il file di configurazione di Odoo digitando sudo nano /etc/odoo15.conf
e incollando al suo interno quanto segue:
[options]
admin_passwd = password-personale
db_host = False
db_port = False
db_user = odoo15
db_password = False
addons_path = /opt/odoo15/odoo/addons,/opt/odoo15/odoo-custom-addons
Al posto di password-personale indicare una password sufficientemente lunga e complessa: sarà usata per proteggere il contenuto del database di Odoo.
Salvare il file premendo dapprima CTRL+O
e Invio quindi chiudere l’editor di testo con CTRL+X
.
Digitare sudo nano /etc/systemd/system/odoo15.service
per creare l’omonimo file di servizio e incollare al suo interno ciò che segue:
[Unit]
Description=Odoo15
Requires=postgresql.service
After=network.target postgresql.service
[Service]
Type=simple
SyslogIdentifier=odoo15
PermissionsStartOnly=true
User=odoo15
Group=odoo15
ExecStart=/opt/odoo15/odoo-venv/bin/python3 /opt/odoo15/odoo/odoo-bin -c /etc/odoo15.conf
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
Salvare il file e chiudere l’editor di testo usando le medesime combinazioni di tasti viste in precedenza (CTRL+O
e CTRL+X
).
Impartire i comandi seguenti per disporre il caricamento del servizio e fare in modo che Odoo venga automaticamente eseguito a ogni avvio della macchina:
sudo systemctl daemon-reload
sudo systemctl enable --now odoo15
Digitando http://indirizzo_IP_macchina:8069
nella barra degli indirizzi del browser comparirà la schermata per la configurazione di Odoo.
Tutte le richieste vengono inviate a Odoo via HTTP senza quindi scambiare i dati in forma cifrata. Per attivare HTTPS è necessario far puntare verso l’indirizzo IP pubblico del server di Odoo un dominio di secondo o terzo livello.
Nell’esempio abbiamo modificato i record DNS di un nostro nome a dominio: il terzo livello odoo.nomedominio.org viene fatto puntare all’IP della macchina Linux che ospita Odoo.
Sul server Ubuntu Linux installiamo Certbot e come spiegato nella guida di EFF richiediamo un certificato digitale Let’s Encrypt (anche quest’operazione è del tutto gratuita):
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginx
Seguire le istruzioni proposte da Certbot indicando il proprio indirizzo email, premendo Y per accettare i termini del servizio, N per evitare la condivisione dell’indirizzo email e infine digitare il nome a dominio per il quale si sta richiedendo un certificato digitale.
Digitare quindi il comando seguente per creare una chiave crittografica a 2048 bit:
Digitare sudo nano /etc/nginx/snippets/letsencrypt.conf
, incollare quanto segue e salvare il file di configurazione:
location ^~ /.well-known/acme-challenge/ {
allow all;
root /var/lib/letsencrypt/;
default_type "text/plain";
try_files $uri =404;
}
Scrivere il comando sudo nano /etc/nginx/snippets/ssl.conf
e incollare le impostazioni per lo scambio di dati via HTTPS raccomandate da Mozilla:
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
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 on;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 30s;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
Per configurare nginx in modo che serva Odoo usando il protocollo HTTPS si deve digitare il comando sudo nano /etc/nginx/sites-enabled/terzolivello.nomedominio.org.conf
Al posto di terzolivello.nomedominio.org va indicato il nome a dominio scelto per Odoo.
Nel file di configurazione (ipotizziamo che sia stato scelto un dominio di terzo livello) va incollato quanto segue:
# Server Odoo
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}
# Da HTTP a HTTPS
server {
listen 80;
server_name terzolivello.nomedominio.org;
include snippets/letsencrypt.conf;
return 301 https://terzolivello.nomedominio.org$request_uri;
}
server {
listen 443 ssl http2;
server_name terzolivello.nomedominio.org;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
# Proxy headers
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/terzolivello.nomedominio.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/terzolivello.nomedominio.org/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/terzolivello.nomedominio.org/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
# log files
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
# Handle longpoll requests
location /longpolling {
proxy_pass http://odoochat;
}
# Handle / requests
location / {
proxy_redirect off;
proxy_pass http://odoo;
}
# Cache static files
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo;
}
# Gzip
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
Tutte le occorrenze di terzolivello.nomedominio.org vanno ovviamente sostituite con il dominio scelto per Odoo e impostato a livello di record DNS.
Riavviare quindi il server web nginx:
Digitare sudo nano /etc/odoo15.conf
e aggiungere quanto segue in fondo al file di configurazione:
proxy_mode = True
xmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1
Riavviare il servizio di sistema collegato a Odoo e il server web:
sudo systemctl restart odoo15
sudo systemctl restart nginx
A questo punto è possibile digitare https://terzolivello.nomedominio.org
nella barra degli indirizzi del browser: apparirà la pagina di configurazione di Odoo.
Se dovesse apparire la pagina di benvenuto di nginx, suggeriamo di scrivere sudo nano /etc/nginx/nginx.conf
, cercare la direttiva include /etc/nginx/sites-enabled/*;
nel file di configurazione e sostituirla con la seguente: include /etc/nginx/sites-enabled/*.*;
.
Facendo riferimento al paragrafo Built-in server nella documentazione di Odoo si possono regolare le impostazioni per ottimizzare l’uso della memoria RAM e il carico sul processore.
Per concludere l’installazione di Odoo, in corrispondenza di Master password va specificata la password impostata nel file /etc/odoo15.conf
mentre nel campo Database name va indicato odoo15
.
È quindi possibile definire una password amministrativa per accedere al pannello di Odoo quindi scegliere se caricare o meno i dati di esempio (aiutano a prendere confidenza con le principali funzioni del gestionale).