Odoo: gestionale open source per le PMI

Cos'è Odoo, il gestionale all-in-one che si può installare anche in locale e sul cloud. Guida alla sua configurazione.

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:

sudo apt install nginx -y

Creiamo quindi un account utente sulla macchina Linux che sarà utilizzato da Odoo e da tutti i servizi collegati:

sudo useradd -m -d /opt/odoo15 -U -r -s /bin/bash odoo15

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:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

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:

sudo systemctl restart 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).

Ti consigliamo anche

Link copiato negli appunti