Installazione Odoo · 12 min read · Nov 12, 2025

Come installare il software ERP Odoo 14 su Ubuntu 20.04

Odoo (precedentemente noto come OpenERP) è una suite auto-ospitata di oltre 10.000 applicazioni open source adatte a una varietà di esigenze aziendali, tra cui CRM, eCommerce, contabilità, inventario, gestione progetti e punto vendita. Queste applicazioni sono completamente integrate e accessibili tramite un’interfaccia web comune.

In questo tutorial, impareremo a installare Odoo 14 Stack su un server basato su Ubuntu 20.04.

Prerequisiti

  1. Un server basato su Ubuntu 20.04 con un minimo di 2GB di RAM per ospitare Odoo Stack.
  2. Un secondo server basato su Ubuntu 20.04 con un minimo di 2GB di RAM per ospitare il database PostgreSQL. Puoi tuttavia installare il database sullo stesso server di Odoo, ma per ambienti di produzione, è altamente raccomandato installarlo su un server separato. Puoi anche scegliere una delle opzioni di database gestito disponibili da qualsiasi fornitore di tua scelta.
  3. Il requisito di RAM dipenderà dal numero di utenti concorrenti che utilizzeranno lo stack. Una guida dettagliata su come calcolare i requisiti di sistema può essere trovata nella documentazione di Odoo.
  4. Mantieni i tuoi sistemi aggiornati. shell $ sudo apt update $ sudo apt upgrade
  5. Un utente non root con privilegi sudo su entrambi i server.

Configurare le regole del firewall

Per scopi di questo tutorial, presumeremo che tu abbia il firewall ufw installato su entrambi i server.

Sul server Odoo, avremo bisogno che le porte 22, 80, 443, 6010, 5432 e 8069 siano aperte. La porta 22 è utilizzata per SSH, la 80 è per HTTP, la 443 è per HTTPS, la 6010 è utilizzata per la comunicazione di Odoo, la 5432 è utilizzata da PostgreSQL e la 8069 è utilizzata dall’applicazione server di Odoo.

Esegui i seguenti comandi per aprire le porte richieste sul server Odoo.

$ sudo ufw allow "OpenSSH"
$ sudo ufw allow 80,443,6010,5432,8069,8072/tcp
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw allow 6010/tcp
$ sudo ufw allow 5432/tcp
$ sudo ufw allow 8069/tcp
$ sudo ufw allow 8072/tcp

Sul server PostgreSQL, dobbiamo aprire le porte 22, 6010 e 5432. Aprile utilizzando i comandi di cui abbiamo appena discusso.

Assegnare nomi host

Puoi utilizzare gli indirizzi IP dei server o utilizzare i loro Nomi di Dominio Completi (FQDN), se disponibili. Per il nostro tutorial, utilizzeremo i FQDN e per questo, dobbiamo impostare i nomi host su entrambi i server.

Sul server Odoo, apri il file /etc/hosts.

$ sudo nano /etc/hosts

Assicurati che appaia come segue.

127.0.0.1  localhost
127.0.0.1  odoo.yourdomain.com    odoo
10.1.1.10  postgresql.yourdomain.com postgresql

Sul server PostgreSQL, apri il file e assicurati che appaia come segue.

127.0.0.1  localhost
127.0.0.1  postgresql.yourdomain.com postgresql
10.1.2.10  odoo.yourdomain.com    odoo

Premi Ctrl + X per chiudere l’editor e premi Y quando richiesto di salvare il file.

Installare e configurare PostgreSQL

Ubuntu 20.04 viene fornito con PostgreSQL 12 per impostazione predefinita e installeremo quello. Esegui il seguente comando sul server PostgreSQL.

$ sudo apt install postgresql-12 postgresql-server-dev-12

Successivamente, dobbiamo creare un utente del database odoo.

$ sudo -u postgres createuser odoo -U postgres -dP

L’opzione -u esegue il comando come utente postgres.

L’opzione -U indica il nome utente con cui connettersi.

L’opzione -d concede all’utente il permesso di creare database.

L’opzione -p richiede la password del nuovo utente.

Configurare l’autenticazione basata su host

Dobbiamo concedere il permesso al servizio PostgreSQL di poter connettersi al server Odoo.

Per prima cosa, ferma il servizio PostgreSQL.

$ sudo systemctl stop postgresql

Apri il file /etc/postgresql/12/main/pg_hba.conf per la modifica.

$ sudo nano /etc/postgresql/12/main/pg_hba.conf

Incolla la seguente riga alla fine.

host    all        odoo        odoo.yourdomain.com        md5

Questa riga concede il permesso all’utente odoo di connettersi a tutti i database all’interno di questo server. Puoi specificare anche il nome dei database invece di utilizzare la parola chiave all.

Premi Ctrl + X per chiudere l’editor e premi Y quando richiesto di salvare il file.

Configurare l’indirizzo di ascolto di PostgreSQL

Successivamente, dobbiamo consentire al server del database di ascoltare le connessioni remote. Apri il file /etc/postgresql/12/main/postgresql.conf per la modifica.

$ sudo nano /etc/postgresql/12/main/postgresql.conf

Cambia la riga listen_addresses da

#listen_addresses = 'localhost' # quale indirizzo IP(i) ascoltare;

a.

#Dalla sezione CONNESSIONI E AUTENTICAZIONE
listen_addresses = '*'

Il * significa che ascolterà tutti gli indirizzi IP. Puoi cambiarlo con l’indirizzo IP della tua istanza Odoo.

Premi Ctrl + X per chiudere l’editor e premi Y quando richiesto di salvare il file.

Abilitare e avviare il servizio PostgreSQL

Poiché la nostra configurazione è terminata, è tempo di avviare e abilitare il servizio PostgreSQL.

$ sudo systemctl start postgresql && sudo systemctl enable postgresql

Installare Odoo

Installare le dipendenze e prepararsi per l’installazione

Crea un nuovo utente di sistema per gestire i processi di Odoo sul server Odoo.

$ sudo adduser --system --home=/opt/odoo --group odoo

Dobbiamo installare alcune dipendenze di sistema, ma prima dobbiamo abilitare i repository di origine. Per farlo, esegui il backup dell’elenco dei sorgenti originale e poi abilita tutti i repository di origine e aggiorna l’elenco dei repository.

$ sudo cp /etc/apt/sources.list /etc/apt/sources.list~
$ sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
$ sudo apt update

Installa le dipendenze di sistema richieste per la configurazione di Odoo 14.

 $ sudo apt install python3-pip python3-suds python3-all-dev python3-venv python3-dev python3-setuptools python3-tk libxml2-dev libxslt1-dev libevent-dev libsasl2-dev libldap2-dev pkg-config libtiff5-dev libjpeg8-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev liblcms2-utils libwebp-dev tcl8.6-dev tk8.6-dev libyaml-dev fontconfig xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils libpq-dev
$ sudo apt build-dep lxml

Installa Nodejs.

$ sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$ sudo apt install nodejs

Installa il pacchetto Less CSS utilizzando Node.

$ sudo npm install -g less less-plugin-clean-css

Scarica il pacchetto wkhtmltopdf versione 0.12.6.

$ cd /tmp
$ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb

Installa il pacchetto.

$ sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb

Per garantire che wkhtmltopdf funzioni correttamente, copia i binari in /usr/bin e dai loro i permessi appropriati.

$ sudo cp /usr/local/bin/wkhtmlto* /usr/bin/
$ sudo chmod a+x /usr/bin/wk*
$ cd ~

Scarica i file di Odoo

Clona il repository Github di Odoo sul tuo sistema.

$ sudo git clone https://github.com/odoo/odoo.git --depth 1 --branch 14.0 --single-branch /opt/odoo

Per il nostro scopo, stiamo copiando Odoo nella directory /opt/odoo da dove verrà installato.

Configura l’ambiente Python Virtualenv

Questo passaggio è facoltativo ma raccomandato poiché un ambiente python virtuale per Odoo aiuterà a evitare conflitti con i moduli Python del sistema operativo, specialmente durante gli aggiornamenti del sistema operativo.

Per questo, utilizzeremo virtualenv.

  1. Crea un nuovo ambiente virtualenv per Odoo. shell $ python3 -m venv /home//odoo-env
  2. Attiva l’ambiente virtuale. Stiamo creando un ambiente sotto la home directory dell’utente di sistema. Sei libero di scegliere qualsiasi posizione tu voglia. shell $ source /home//odoo-env/bin/activate
  3. Aggiorna PIP giusto per sicurezza. shell (odoo-env) $ pip3 install --upgrade pip
  4. Installa il pacchetto wheel di Python nell’ambiente virtuale. shell $ pip3 install wheel

Installa le dipendenze di Python

Installa le dipendenze di Python richieste da Odoo 14.

$ pip3 install -r /opt/odoo/doc/requirements.txt
$ pip3 install -r /opt/odoo/requirements.txt

I requisiti richiederanno del tempo per essere installati, quindi sii paziente.

Controlla se i requisiti sono stati installati correttamente controllando l’elenco dei moduli Python installati.

$ pip3 list
Package                       Version
----------------------------- ---------
alabaster                     0.7.12
appdirs                       1.4.4
attrs                         20.3.0
Babel                         2.6.0
beautifulsoup4                4.9.3
cached-property               1.5.2
certifi                       2020.12.5
chardet                       3.0.4
decorator                     4.3.0
defusedxml                    0.7.1
docutils                      0.14
ebaysdk                       2.1.5
feedparser                    5.2.1
freezegun                     0.3.15
gevent                        20.9.0
greenlet                      0.4.17
html2text                     2018.1.9
idna                          2.6
imagesize                     1.2.0
isodate                       0.6.0
Jinja2                        2.11.2
libsass                       0.17.0
lxml                          4.6.1
Mako                          1.0.7
MarkupSafe                    1.1.0
num2words                     0.5.6
ofxparse                      0.19
packaging                     20.9
passlib                       1.7.1
Pillow                        8.0.1
pip                           21.0.1
pkg-resources                 0.0.0
polib                         1.1.0
psutil                        5.6.6
psycopg2                      2.8.5
pyasn1                        0.4.8
pyasn1-modules                0.2.8
pydot                         1.4.1
Pygments                      2.8.1
pyparsing                     2.4.7
PyPDF2                        1.26.0
pyserial                      3.4
python-dateutil               2.7.3
python-ldap                   3.1.0
python-stdnum                 1.8
pytz                          2019.1
pyusb                         1.0.2
qrcode                        6.1
reportlab                     3.5.55
requests                      2.21.0
requests-toolbelt             0.9.1
setuptools                    44.0.0
six                           1.15.0
snowballstemmer               2.1.0
soupsieve                     2.2
Sphinx                        3.5.2
sphinx-patchqueue             1.0.4
sphinxcontrib-applehelp       1.0.2
sphinxcontrib-devhelp         1.0.2
sphinxcontrib-htmlhelp        1.0.3
sphinxcontrib-jsmath          1.0.1
sphinxcontrib-qthelp          1.0.3
sphinxcontrib-serializinghtml 1.1.4
unidiff                       0.6.0
urllib3                       1.24.3
vobject                       0.9.6.1
Werkzeug                      0.16.1
wheel                         0.36.2
xlrd                          1.2.0
XlsxWriter                    1.1.2
xlwt                          1.3.0
zeep                          3.2.0
zope.event                    4.5.0
zope.interface                5.2.0

Esci dall’ambiente virtuale Python.

$ deactivate

Configurare Odoo

Copia il file di configurazione predefinito di Odoo per crearne uno nuovo.

$ sudo cp /opt/odoo/debian/odoo.conf /etc/odoo-server.conf

Apri il file per la modifica.

$ sudo nano /etc/odoo-server.conf

Modifica il file in modo che appaia come segue.

[options]
; Questa è la password che consente operazioni sul database:
admin_passwd = admin
db_host = postgresql.yourdomain.com
db_port = False
db_user = odoo
db_password = odoo_password
addons_path = /opt/odoo/addons
xmlrpc_port = 8069

Premi Ctrl + X per chiudere l’editor e premi Y quando richiesto di salvare il file.

L’opzione admin_passwd è la password che consente operazioni amministrative all’interno dell’interfaccia Odoo. Assicurati di scegliere una password sicura.

L’opzione db_host è il FQDN o l’indirizzo IP del server PostgreSQL.

L’opzione db_port è impostata su false poiché viene utilizzata la porta predefinita di PostgreSQL 5432. Se desideri utilizzare una porta diversa, dovrai aggiornare questo valore.

L’opzione db_user è il nome dell’utente PostgreSQL.

L’opzione db_password è la password dell’utente PostgreSQL ‘odoo’ che abbiamo creato in precedenza sul server PostgreSQL.

L’opzione addons_path è il percorso predefinito degli Addons. Puoi anche aggiungere un percorso personalizzato per gli Addons separandoli con delle virgole.

L’opzione xmlrpc_port è la porta su cui Odoo ascolta.

Crea il servizio Odoo

Per assicurarti che Odoo continui a funzionare anche dopo un riavvio del sistema, dobbiamo creare un servizio per esso.

Crea un file /lib/systemd/system/odoo-server.service e aprilo per la modifica.

$ sudo nano /lib/systemd/system/odoo-server.service

Incolla il seguente codice al suo interno.

[Unit]
Description=Odoo Open Source ERP and CRM

[Service]
Type=simple
PermissionsStartOnly=true
SyslogIdentifier=odoo-server
User=odoo
Group=odoo
ExecStart=/home//odoo-env/bin/python3 /opt/odoo/odoo-bin --config=/etc/odoo-server.conf --addons-path=/opt/odoo/addons/
WorkingDirectory=/opt/odoo/
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

Sostituisci /home/ con la posizione che hai scelto per installare l’ambiente virtuale Python.

Premi Ctrl + X per chiudere l’editor e premi Y quando richiesto di salvare il file.

Imposta i permessi dei file

Imposta i permessi sul file odoo-server.service in modo che solo l’utente Odoo possa leggerlo o eseguirlo.

$ sudo chmod 755 /lib/systemd/system/odoo-server.service
$ sudo chown odoo: /lib/systemd/system/odoo-server.service

Imposta la proprietà sull’ambiente Python e sulla directory di installazione di Odoo.

$ sudo chown -R odoo: /opt/odoo/
$ sudo chown -R odoo: /home//odoo-env

Restringi il file di configurazione di Odoo.

$ sudo chown odoo: /etc/odoo-server.conf
$ sudo chmod 640 /etc/odoo-server.conf

Avvia il server Odoo

Avvia e abilita il server Odoo.

$ sudo systemctl start odoo-server
$ sudo systemctl enable odoo-server

Controlla lo stato del server.

$ sudo systemctl status odoo-server

Nel tuo browser, apri l’URL http://:8069 o http://odoo.yourdomain.com:8069. Se tutto funziona correttamente, dovresti vedere la schermata di creazione del database di Odoo.

Schermata di installazione di Odoo

Compila tutti i campi. Seleziona il campo Demo Data per popolare il database con dati di esempio e poi fai clic sul pulsante Crea database.

Successivamente, ti verrà mostrato un elenco di app che puoi scegliere e selezionare.

La prima volta che crei un database, la pagina degli addon richiederà del tempo per caricarsi, quindi non aggiornare la pagina.

Installare e configurare Nginx

Fino ad ora, abbiamo utilizzato il server di Odoo per eseguire lo stack. Ma idealmente, è meglio eseguirlo su Nginx utilizzando un proxy perché questo ci permetterà di installare SSL su di esso.

Installa Nginx.

$ sudo apt install nginx

Per eseguirlo tramite Nginx, dobbiamo eseguire Odoo su localhost. Per cambiare ciò, ferma il servizio Odoo.

$ sudo systemctl stop odoo-server

Apri il file di configurazione del server Odoo.

$ sudo nano /etc/odoo-server.conf

Aggiungi le seguenti righe.

xmlrpc_interface = 127.0.0.1
proxy_mode = True

Crea un file di configurazione Nginx per Odoo.

$ sudo nano /etc/nginx/sites-available/odoo.conf

Incolla il codice qui sotto.

#server odoo
upstream odoo {
 server 127.0.0.1:8069;
}
upstream odoochat {
 server 127.0.0.1:8072;
}

# http -> https
server {
   listen 80;
   server_name odoo.yourdomain.com;
   rewrite ^(.*) https://$host$1 permanent;
}

server {
 listen 443 ssl http2;
 server_name odoo.yourdomain.com;
 proxy_read_timeout 720s;
 proxy_connect_timeout 720s;
 proxy_send_timeout 720s;

 # Aggiungi intestazioni per la modalità proxy di odoo
 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;

 # Parametri SSL
 ssl_certificate /etc/letsencrypt/live/odoo.yourdomain.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/odoo.yourdomain.com/privkey.pem;
 ssl_session_timeout 1d;
 ssl_session_cache shared:MozSSL:10m;  # circa 40000 sessioni
 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 off;
 ssl_dhparam /etc/ssl/certs/dhparam.pem;

 # log
 access_log /var/log/nginx/odoo.access.log;
 error_log /var/log/nginx/odoo.error.log;

 # Reindirizza le richieste longpoll a odoo longpolling port
 location /longpolling {
 proxy_pass http://odoochat;
 }

 # Reindirizza le richieste al server backend di odoo
 location / {
   proxy_redirect off;
   proxy_pass http://odoo;
 }

 # gzip comune
 gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
 gzip on;
}

Premi Ctrl + X per chiudere l’editor e premi Y quando richiesto di salvare il file.

Attiva questo file di configurazione collegandolo alla directory sites-enabled.

$ sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/

Testa la configurazione di Nginx.

$ sudo nginx -t

Installare SSL

Installeremo SSL utilizzando il servizio Let’s Encrypt.

Per questo, installa Certbot.

$ sudo apt install certbot

Ferma Nginx perché interferirà con il processo di Certbot.

$ sudo systemctl stop nginx

Genera il certificato. Dobbiamo anche creare un certificato DHParams.

$ sudo certbot certonly --standalone -d odoo.yourdomain.com --preferred-challenges http --agree-tos -n -m [email protected] --keep-until-expiring 
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Dobbiamo anche impostare un cron job per rinnovare automaticamente l’SSL. Per aprire l’editor crontab, esegui il seguente comando.

$ sudo crontab -e

Incolla la seguente riga in fondo.

25 2 * * * /usr/bin/certbot renew --quiet --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"

Il cron job sopra eseguirà certbot alle 2:25 am ogni giorno. Puoi cambiarlo in qualsiasi cosa tu voglia.

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Avvia Odoo

Ora che tutto è impostato, possiamo avviare di nuovo il server Odoo.

$ sudo systemctl start odoo-server

Lancia Odoo nel tuo browser tramite https://odoo.yourdomain.com. Dovresti ottenere una schermata descritta in precedenza. Inserisci i dettagli richiesti per creare il database e dovresti accedere a Odoo e vedere una schermata come questa.

Pagina principale di Odoo

Conclusione

Questo conclude il nostro tutorial sull’installazione di Odoo su server Ubuntu 20.04. Se hai domande, postale nei commenti qui sotto.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.