Odoo 19 in Docker: Guida completa all'installazione per Ubuntu 24.04 (Comunità ed Impresa)
Introduzione
La distribuzione di un sistema ERP sembra spesso un compito scoraggiante, ma la containerizzazione trasforma questo processo in un flusso di lavoro semplificato. In questa guida spiegheremo come configurare Odoo 19 su un'istanza Ubuntu 24.04.
Il punto forte di questo metodo è la sua versatilità. Stiamo definendo un'architettura che consente di iniziare con la versione Community gratuita, mantenendo la possibilità di passare immediatamente alla versione Enterprise semplicemente copiando i moduli. Nessun hack di configurazione "al volo": solo una gestione pulita dei container e un SSL automatico tramite Caddy.
Stack tecnico (verificato):
- Sistema operativo: Ubuntu 24.04 LTS (poiché si tratta di un'installazione Docker, il metodo si applica anche ad altre distribuzioni Linux).
- Containerizzazione: Docker 29.1.5 + Docker Compose
- Server web: Caddy (HTTPS automatico)
- Database: PostgreSQL 18
- Specifiche della macchina virtuale: 2 vCPU, 4 GB di RAM, 40 GB NVMe
Passo 0: installare Docker
Installare Docker dal repository ufficiale:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
Aggiungere il proprio utente al gruppo docker:
sudo usermod -aG docker $USER newgrp docker
Abilitare e avviare Docker:
sudo systemctl enable docker sudo systemctl start docker
Verificare l'installazione:
docker ps
Passo 1: Impostare la struttura del progetto
Creare la directory di lavoro e le cartelle necessarie:
mkdir odoo-stack && cd odoo-stack mkdir -p addons enterprise
Passo 2: Creare docker-compose.yml
Creare un nuovo file Docker Compose:
nano docker-compose.yml
Incollare la seguente configurazione (sostituire odoo_secure_password nelle sezioni ambiente db e ambiente odoo con la password effettiva):
YAML
services: db: image: postgres:18 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD=odoo_secure_password - POSTGRES_USER=odoo - PGDATA=/var/lib/postgresql/data/pgdata volumes: - odoo-db-data:/var/lib/postgresql/data/pgdata restart: unless-stopped odoo: image: odoo:19.0 depends_on: - db volumes: - odoo-web-data:/var/lib/odoo - ./addons:/mnt/extra-addons - ./enterprise:/mnt/enterprise-addons ambiente: - HOST=db - USER=odoo - PASSWORD=odoo_secure_password comando: > --addons-path=/usr/lib/python3/dist-packages/odoo/addons,/mnt/enterprise-addons,/mnt/extra-addons --proxy-mode restart: unless-stopped caddy: image: caddy:latest ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy-data:/data restart: unless-stopped volumi: odoo-web-data: odoo-db-data: caddy-data:
Passo 3: Creare il Caddyfile
Creare il file di configurazione di Caddy:
nano Caddyfile
Incollare la configurazione sottostante (sostituire :80 con il proprio dominio per l'SSL automatico):
# Sostituire :80 con IL TUO DOMINIO per l'SSL automatico :80 { # Aumentare la dimensione massima del corpo del client per il caricamento dei file request_body { max_size 300MB } # Longpolling per le chat e le notifiche reverse_proxy /longpolling/* odoo:8072 { header_up X-Forwarded-Host {host} header_up X-Forwarded-Proto {schema} } # Traffico principale reverse_proxy odoo:8069 { header_up X-Forwarded-Host {host} header_up X-Forwarded-Proto {schema} } }
Passo 4: Avviare lo stack
Avviare lo stack:
docker compose up -d
Controllare lo stato (tutti e 3 i contenitori dovrebbero essere "Up"):
docker compose ps
Controllare i log per verificare che non ci siano errori:
docker compose logs odoo
Passo 5: Configurazione iniziale
Aprire il browser e navigare verso:
- Via IP: http://YOUR_SERVER_IP
- Via Domain: https://YOUR_DOMAIN (se configurato nel Caddyfile)
Completare il modulo di creazione del database:
- Password principale: al primo accesso verrà suggerita una password principale (conservatela, è fondamentale).
- Nome del database: ad esempio, mycompany.
- Email: L'indirizzo e-mail accessibile (sarà il vostro login).
- Password: la password di accesso al sistema.
- Lingua: Selezionare la lingua preferita.
- Paese: Selezionare il proprio Paese.
- Dati demo: Lasciare deselezionato per ottenere un database di produzione pulito.
Fare clic su Crea database e attendere il completamento del processo (1-2 minuti).

Aggiornamento da Community a Enterprise
Per passare da Community a Enterprise, è sufficiente collocare i moduli nella directory designata.
Passo 1. Ottenere i moduli Enterprise (tramite abbonamento Odoo).
Fase 2. Estrarli nella cartella ./enterprise/.
Passo 3. Riavviare il contenitore:
docker compose restart odoo
Passo 4. Installare i moduli Enterprise richiesti tramite l'interfaccia utente.
Non è necessario modificare i file di configurazione: il percorso dei moduli enterprise è già preconfigurato.
Configurazione del firewall
Se si utilizza UFW, eseguire quanto segue:
sudo ufw allow ssh/tcp && \ sudo ufw allow 80/tcp && \ sudo ufw allow 443/tcp && \ sudo ufw default deny incoming && \ sudo ufw default allow outgoing && \ sudo ufw --force enable
Comandi utili
Fermare tutto:
docker compose down
Riavvia solo Odoo:
docker compose restart odoo
Visualizzare i log:
docker compose logs -f odoo docker compose logs -f db docker compose logs -f caddy
Backup del database:
docker compose exec db pg_dumpall -U odoo > backup_$(date +%Y%m%d).sql
Ripristino del database:
cat backup_20240125.sql | docker compose exec -T db psql -U odoo
Pulizia completa (attenzione!):
docker compose down -v rm -rf addons enterprise Caddyfile
Usare un nome di dominio
Per ottenere un certificato SSL automatico da Let's Encrypt:
Passo 1. Configurare il DNS: Puntate un record A di YOUR_DOMAIN all'IP del vostro server.
Passo 2. Aggiornare il Caddyfile: Sostituire :80 con IL TUO DOMINIO.
Passo 3. Riavviare Caddy:
docker compose restart caddy
Caddy fornirà automaticamente il certificato SSL.
Passo 4. Accedere a Odoo tramite https://YOUR_DOMAIN.
Verificare l'emissione del certificato:
docker compose logs caddy | grep certificate