
Odoo è una delle piattaforme ERP open source più complete e diffuse al mondo.
Grazie alla sua architettura modulare permette di gestire in un’unica soluzione processi aziendali come vendite, acquisti, magazzino, contabilità, CRM, risorse umane e molto altro adattandosi sia a piccole realtà che a strutture più complesse.
In questa guida vedremo come installare e configurare Odoo 18 Community Edition su Ubuntu Server 26.04 LTS “Resolute Raccoon”, la distribuzione più recente di Canonical con supporto a lungo termine.
Si tratta di una combinazione particolarmente interessante per chi vuole costruire un ambiente di produzione stabile e aggiornato sfruttando Python 3.14 e PostgreSQL 18 già inclusi nel sistema operativo.
Seguiremo un approccio from source clonando il codice direttamente dal repository ufficiale GitHub di Odoo e installando le dipendenze Python all’interno di un ambiente virtuale isolato.
Questo metodo offre il massimo controllo sulla versione installata semplifica gli aggiornamenti futuri e consente di aggiungere moduli personalizzati senza interferire con il sistema operativo sottostante.
Al termine della guida avrai un’istanza di Odoo funzionante gestita come servizio systemd pronta per essere raggiunta dal browser e configurata secondo le esigenze del tuo progetto.
PREREQUISITI
Ubuntu Server 26.04 con almeno 2 GB di RAM
Accesso SSH con utente dotato di privilegi sudo
AGGIORNAMENTO DEL SISTEMA
Connettiti al server via SSH e verifica la versione e aggiorna i pacchetti:
|
0 |
lsb_release -a
|
Dovremmo visualizzare il seguente output:
|
0
1
2
3
|
Distributor ID: Ubuntu
Description: Ubuntu 26.04 LTS
Release: 26.04
Codename: resolute
|
Aggiornare i pacchetti con il comando:
|
0 |
sudo apt update && sudo apt upgrade -y
|
CREAZIONE DELL’UTENTE DI SISTEMA
Non eseguire mai Odoo come root. Creare un utente di sistema dedicato con il comando:
|
0
1
2
3
4
5
6
|
sudo /usr/sbin/adduser \
--system \
--shell /bin/bash \
--gecos 'Odoo user' \
--group \
--home /opt/odoo18 \
odoo18
|
INSTALLAZIONE DELLE DIPENDENZE
Ubuntu 26.04 include Python 3.13 di default compatibile con Odoo 18 che richiede almeno Python 3.10.
Installare tutte le librerie necessarie con il comando:
|
0
1
2
3
4
5
|
sudo apt install -y build-essential wget git \
python3-pip python3-dev python3-venv python3-wheel \
libfreetype6-dev libxml2-dev libzip-dev libsasl2-dev \
python3-setuptools libjpeg-dev zlib1g-dev libpq-dev \
libxslt1-dev libldap2-dev libtiff5-dev libopenjp2-7-dev \
nodejs npm
|
INSTALLAZIONE DI POSTGRESQL
PostgreSQL è il solo database engine supportato da Odoo per la gestione dei dati.
Odoo 18 richiede almeno PostgreSQL 12 e Ubuntu 26.04 include PostgreSQL 18 nei suoi repository.
Eseguire i comandi elencati di seguito:
|
0 |
sudo apt install -y postgresql
|
Verificare che il servizio sia attivo con il comando:
|
0 |
sudo systemctl status postgresql
|
Dovremmo visualizzare il seguente output:
|
0
1
2
3
4
5
6
|
postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; prese>
Active: active (exited) since Fri 2026-05-15 18:59:24 UTC; 7s ago
Invocation: 514460320a2e43829b3f254d590ed50d
Main PID: 10157 (code=exited, status=0/SUCCESS)
Mem peak: 2M
CPU: 4ms
|
Quindi abilitare il servizio con il comando:
|
0 |
sudo systemctl enable postgresql
|
Creare l’utente PostgreSQL per Odoo con il comando:
|
0 |
sudo su - postgres -c "createuser -s odoo18"
|
INSTALLAZIONE DI WKHTMLTOPDF
Odoo utilizza wkhtmltopdf per generare report in PDF. È necessaria la versione con patched Qt.
Posizionarsi nella cartella tmp con il comando:
|
0 |
cd /tmp
|
Quindi scaricare wkhtmltopdf con il comando:
|
0 |
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
|
Installare wkhtmltopdf con il comando:
|
0 |
sudo apt install -y ./wkhtmltox_0.12.6.1-2.jammy_amd64.deb
|
Verificare l’installazione con il comando:
|
0 |
wkhtmltopdf --version
|
Dovremmo visualizzare il seguente output:
|
0 |
wkhtmltopdf 0.12.6.1 (with patched qt)
|
DOWNLOAD E INSTALLAZIONE DI ODOO
Passare all’utente odoo18 e clonare il sorgente da GitHub con i seguenti comandi:
|
0
1
2
|
sudo su - odoo18
git clone https://www.github.com/odoo/odoo --depth 1 --branch 18.0 odoo18
|
Creare e attivare un ambiente virtuale Python con i seguenti comandi:
|
0
1
2
|
python3 -m venv --system-site-packages odoo18-venv
source odoo18-venv/bin/activate
|
Installare le dipendenze Python di Odoo con i comandi:
|
0
1
2
|
pip3 install wheel
pip3 install -r odoo18/requirements.txt
|
Verificare che lxml sia disponibile (l’errore di build è ignorabile)
|
0 |
python3 -c "import lxml; print(lxml.__version__)"
|
Dovremmo visualizzare il seguente output:
|
0 |
6.0.2 |
CHECK E FIX LXML
Se il pip si interrompe quando lxml fallisce non installa i pacchetti successivi.
La soluzione è installare tutto escludendo lxml dal requirements.txt
Creare un requirements filtrato senza lxml con il comando:
|
0 |
grep -v "^lxml" odoo18/requirements.txt > /tmp/requirements_no_lxml.txt
|
Installare tutto tranne lxml con il comando:
|
0 |
pip3 install -r /tmp/requirements_no_lxml.txt
|
Installare il pacchetto lxml_html_clean con il comando:
|
0 |
pip3 install lxml-html-clean
|
Verificare che sia tutto OK con il comando:
|
0 |
python3 -c "import pytz, werkzeug, psycopg2, PIL; print('OK')"
|
Disattivare l’ambiente virtuale e creare la cartella per i moduli custom con i comandi:
|
0
1
2
3
4
|
deactivate
mkdir /opt/odoo18/odoo18/custom-addons
exit
|
FILE DI CONFIGURAZIONE
Creare il file di configurazione principale con il comando:
|
0 |
sudo nano /etc/odoo18.conf
|
Incollare il seguente contenuto (sostituisci la master password!):
|
0
1
2
3
4
5
6
7
8
|
[options]
admin_passwd = CambiaMiConPasswordSicura!
db_host = False
db_port = False
db_user = odoo18
db_password = False
addons_path = /opt/odoo18/odoo18/addons,/opt/odoo18/odoo18/custom-addons
logfile = /var/log/odoo18/odoo18.log
http_port = 8069
|
Creare la cartella per i log e impostare i permessi con i seguenti comandi:
|
0
1
2
3
4
5
6
|
sudo mkdir /var/log/odoo18
sudo chown odoo18:odoo18 /var/log/odoo18
sudo chmod 640 /etc/odoo18.conf
sudo chown odoo18:root /etc/odoo18.conf
|
Salvare e chiudere il file di configurazione.
CREAZIONE DEL SYSTEMD
Creare l’unit file per gestire Odoo come servizio con il comando:
|
0 |
sudo nano /etc/systemd/system/odoo18.service
|
Incollare il seguente output:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[Unit]
Description=Odoo 18 Community Edition
Requires=postgresql.service
After=network.target postgresql.service
[Service]
Type=simple
SyslogIdentifier=odoo18
PermissionsStartOnly=true
User=odoo18
Group=odoo18
ExecStart=/opt/odoo18/odoo18-venv/bin/python3 /opt/odoo18/odoo18/odoo-bin -c /etc/odoo18.conf
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
|
Salvare chiudere il file di configurazione.
Abilitare e avviare il servizio con i seguenti comandi:
|
0
1
2
3
4
|
sudo systemctl daemon-reload
sudo systemctl enable --now odoo18
sudo systemctl status odoo18
|
Se è tutto OK dovremmo visualizzare il seguente output:
|
0
1
2
3
4
5
6
7
8
9
10
11
|
● odoo18.service
Loaded: loaded (/etc/systemd/system/odoo18.service; enabled; preset: enabl>
Active: active (running) since Fri 2026-05-15 19:30:41 UTC; 19ms ago
Invocation: 89df5e70c325462586d852df85cfbed0
Main PID: 22114 (python3)
Tasks: 1 (limit: 6210)
Memory: 3.3M (peak: 3.3M)
CPU: 15ms
CGroup: /system.slice/odoo18.service
└─22114 /opt/odoo18/odoo18-venv/bin/python3 /opt/odoo18/odoo18/odo>
May 15 19:30:41 vm-srv-test systemd[1]: Started odoo18.service.
|
CONFIGURAZIONE DEL FIREWALL
Se usi UFW aprire la porta 8069 con il comando:
|
0
1
2
|
sudo ufw allow 8069/tcp
sudo ufw reload
|
ACCESSO DA WEBGUI
Accedi a Odoo dal browser richiamando il link:
http://IP_DEL_SERVER:8069
Al primo accesso ti verrà mostrata la pagina di creazione database.
Inserisci la master password definita nel file di configurazione.
Scegliere un nome per il database e creare il tuo primo admin.
Cliccare su Create Database
Accedere con le credenziali create nel passaggio precedente
Se abbiamo fatto tutto correttente dovremmo accedere al backend di Odoo
CONFIGURAZIONE DEL REVERSE PROXY CON NGINX
Per un ambiente di produzione è consigliato mettere Nginx davanti a Odoo con SSL:
|
0
1
2
|
sudo apt install -y nginx
sudo nano /etc/nginx/sites-available/odoo18
|
Quindi incollare il seguente output:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
nginxupstream odoo {
server 127.0.0.1:8069;
}
server {
listen 80;
server_name tuodominio.it;
access_log /var/log/nginx/odoo18.access.log;
error_log /var/log/nginx/odoo18.error.log;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
location / {
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;
proxy_redirect off;
proxy_pass http://odoo;
}
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo;
}
}
|
Salvare e chiudere il file di configurazione.
Attivare il sito e ricaricare Nginx con il comando:
|
0
1
2
3
4
|
sudo ln -s /etc/nginx/sites-available/odoo18 /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
|
Aggiungi poi proxy_mode = True al file /etc/odoo18.conf e riavviare il servizio.
COMANDI UTILI
Comandi utili per la gestione quotidiana:
|
0
1
2
3
4
5
6
|
sudo systemctl restart odoo18 # riavvio
sudo systemctl stop odoo18 # stop
journalctl -u odoo18 -f # log in tempo reale
tail -f /var/log/odoo18/odoo18.log # log applicativo
|
COMMUNITY VS ENTERPRISE: COSA CAMBIA?
Odoo è disponibile in due versioni:
Community: completamente gratuita e open source rilasciata sotto licenza LGPL-3
Enterprise: a pagamento con licenza proprietaria.
La versione Community include tutti i moduli fondamentali per la gestione aziendale: vendite, acquisti, magazzino, fatturazione base, CRM, progetto, inventario e molto altro ed è più che sufficiente per la maggior parte delle piccole e medie imprese.
Il codice sorgente è pubblico e liberamente modificabile e distribuibile.
La versione Enterprise aggiunge funzionalità avanzate su tre fronti principali:
Moduli esclusivi: tra cui la contabilità completa con riconciliazione bancaria automatica, il modulo per la firma elettronica dei documenti, VoIP integrato, eLearning, marketing automation avanzato e la gestione della qualità e manutenzione in ambito manifatturiero.
Interfaccia e usabilità: Enterprise include una UI più rifinita, l’app mobile nativa per iOS e Android (la Community è accessibile solo via browser), e una dashboard di reportistica più avanzata con Spreadsheet integrato.
Supporto e aggiornamenti: con la licenza Enterprise si ha accesso al supporto ufficiale Odoo, agli aggiornamenti automatici gestiti tramite Odoo.sh (la piattaforma cloud proprietaria) e alla migrazione assistita tra versioni maggiori.
Il costo della licenza Enterprise si basa sul numero di utenti e parte da circa €24,90 per utente al mese (prezzo indicativo 2025, può variare per area geografica e partner).
Vale la pena sottolineare che le due versioni condividono lo stesso core infatti un’installazione Community può essere migrata a Enterprise semplicemente aggiungendo la licenza e i moduli aggiuntivi, senza dover reinstallare nulla.
QUANDO SCEGLIERE LA VERSIONE COMMUNITY E QUANDO LA VERSIONE ENTERPRISE?
La scelta tra le due edizioni dipende principalmente dalle dimensioni dell’azienda, dai processi da gestire e dal budget disponibile.
Scegli Community se:
- sei una piccola o media impresa con processi aziendali standard e non troppo complessi
- hai a disposizione un tecnico interno o un partner in grado di installare, configurare e manutenere il sistema autonomamente
- vuoi valutare Odoo prima di impegnarti economicamente, magari con l’intenzione di migrare a Enterprise in futuro
- la contabilità avanzata non è un requisito prioritario e puoi gestire le fatture con moduli di terze parti o integrazioni esterne
- hai bisogno di personalizzazioni profonde sul codice sorgente, possibili senza restrizioni solo nella versione open source
Scegli Enterprise se:
- hai un reparto contabile strutturato che necessita di riconciliazione bancaria automatica, localizzazione fiscale certificata e report avanzati
- i tuoi utenti lavorano spesso da dispositivi mobili e hanno bisogno dell’app nativa iOS/Android
- vuoi affidarti al supporto ufficiale Odoo per la risoluzione dei problemi e gli aggiornamenti di versione
- stai valutando un deployment su Odoo.sh, la piattaforma cloud gestita direttamente da Odoo S.A.
- operi in settori specifici come la produzione, dove i moduli di qualità, manutenzione e PLM di Enterprise fanno la differenza
Una via di mezzo praticabile è partire con la Community per i primi mesi e verificare quali funzionalità mancano nel flusso di lavoro reale, e poi valutare il passaggio a Enterprise solo se strettamente necessario.
Trattandosi della stessa base di codice, la migrazione è sempre possibile senza perdita di dati.

0 commenti