Odoo 19 dans Docker : Guide d'installation complet pour Ubuntu 24.04 (Community & Enterprise)
Introduction
Le déploiement d'un système ERP semble souvent être une tâche intimidante, mais la conteneurisation transforme ce processus en un flux de travail rationalisé. Dans ce guide, nous verrons comment installer Odoo 19 sur une instance Ubuntu 24.04.
Le principal avantage de cette méthode est sa polyvalence. Nous définissons une architecture qui vous permet de commencer avec la version gratuite Community tout en conservant la possibilité de passer instantanément à Enterprise en copiant simplement des modules. Pas de configuration "à la volée" - juste une gestion propre des conteneurs et un SSL automatique via Caddy.
Pile technique (vérifiée) :
- OS : Ubuntu 24.04 LTS (Comme il s'agit d'une installation Docker, la méthode s'applique également à d'autres distributions Linux)
- Conteneurisation : Docker 29.1.5 + Docker Compose
- Serveur web : Caddy (HTTPS automatique)
- Base de données : PostgreSQL 18
- Spécifications de la VM : 2 vCPU, 4 GB RAM, 40 GB NVMe
Etape 0 : Installer Docker
Installer Docker à partir du dépôt officiel :
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
Ajoutez votre utilisateur au groupe Docker :
sudo usermod -aG docker $USER newgrp docker
Activez et démarrez Docker :
sudo systemctl enable docker sudo systemctl start docker
Vérifiez l'installation :
docker ps
Étape 1 : Mise en place de la structure du projet
Créez le répertoire de travail et les dossiers nécessaires :
mkdir odoo-stack && cd odoo-stack mkdir -p addons enterprise
Etape 2 : Créer docker-compose.yml
Créez un nouveau fichier Docker Compose :
nano docker-compose.yml
Collez la configuration suivante (remplacez odoo_secure_password dans les sections db environment et odoo environment par votre vrai mot de passe) :
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 environnement : - HOST=db - USER=odoo - PASSWORD=odoo_secure_password commande : > --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 volumes : odoo-web-data : odoo-db-data : caddy-data :
Etape 3 : Créer le fichier Caddy
Créez le fichier de configuration de Caddy :
nano Caddyfile
Collez la configuration ci-dessous (remplacez :80 par votre domaine pour le SSL automatique) :
# Remplacez :80 par VOTRE_DOMAINE pour le SSL automatique :80 { # Augmentez la taille maximale du corps du client pour les téléchargements de fichiers request_body { max_size 300MB } # Longpolling pour les chats et les notifications reverse_proxy /longpolling/* odoo :8072 { header_up X-Forwarded-Host {host} header_up X-Forwarded-Proto {scheme} } # Trafic principal reverse_proxy odoo:8069 { header_up X-Forwarded-Host {host} header_up X-Forwarded-Proto {scheme} } }
Étape 4 : Lancer la pile
Démarrez la pile :
docker compose up -d
Vérifier le statut (les 3 conteneurs doivent être "Up") :
docker compose ps
Vérifier les logs pour s'assurer qu'il n'y a pas d'erreur :
docker compose logs odoo
Étape 5 : Configuration initiale
Ouvrez votre navigateur et naviguez vers :
- Via IP : http://YOUR_SERVER_IP
- Via Domaine : https://YOUR_DOMAIN (si configuré dans le Caddyfile)
Remplissez le formulaire de création de base de données :
- Mot de passe principal : un mot de passe principal vous sera proposé lors de la première connexion (enregistrez ce mot de passe, il est essentiel).
- Nom de la base de données : par exemple, mycompany.
- Courriel : Votre adresse électronique accessible (ce sera votre identifiant).
- Mot de passe : Votre mot de passe de connexion au système.
- Langue : Sélectionnez votre langue préférée.
- Pays : Sélectionnez votre pays.
- Données de démonstration : Ne pas cocher cette case pour obtenir une base de données de production propre.
Cliquez sur Créer une base de données et attendez la fin du processus (1 à 2 minutes).

Mise à niveau de Community à Enterprise
Pour passer de Community à Enterprise, il suffit de placer les modules dans le répertoire désigné.
Étape 1. Obtenir les modules Enterprise (via l'abonnement Odoo).
Étape 2. Extrayez-les dans le dossier ./enterprise/.
Etape 3. Redémarrez le conteneur :
docker compose restart odoo
Étape 4. Installez les modules Enterprise requis via l'interface utilisateur.
Aucune modification des fichiers de configuration n'est nécessaire - le chemin vers les modules d'entreprise est déjà préconfiguré.
Configuration du pare-feu
Si vous utilisez UFW, exécutez ce qui suit :
sudo ufw allow ssh/tcp && \N sudo ufw allow 80/tcp && \N sudo ufw allow 443/tcp && \N sudo ufw default deny incoming && \N sudo ufw default allow outgoing && \N sudo ufw --force enable
Commandes utiles
Arrêter tout :
docker compose down
Redémarrer Odoo uniquement :
docker compose restart odoo
Voir les logs :
docker compose logs -f odoo docker compose logs -f db docker compose logs -f caddy
Sauvegarde de la base de données :
docker compose exec db pg_dumpall -U odoo > backup_$(date +%Y%m%d).sql
Restauration de la base de données :
cat backup_20240125.sql | docker compose exec -T db psql -U odoo
Effacement complet (Attention !):
docker compose down -v rm -rf addons enterprise Caddyfile
Utilisation d'un nom de domaine
Pour obtenir un certificat SSL automatique de Let's Encrypt :
Étape 1. Configurez le DNS : Pointez un enregistrement A de VOTRE_DOMAINE vers l'IP de votre serveur.
Etape 2. Mettre à jour le fichier Caddy : Remplacez :80 par VOTRE_DOMAINE.
Etape 3. Redémarrez Caddy :
docker compose restart caddy
Caddy provisionnera automatiquement le certificat SSL.
Étape 4. Accédez à Odoo via https://YOUR_DOMAIN.
Vérifiez l'émission du certificat :
docker compose logs caddy | grep certificate