Odoo 18 sur Docker
1. Quoi ? — Définition et contexte
Section intitulée « 1. Quoi ? — Définition et contexte »Odoo est un ERP (Enterprise Resource Planning) open-source qui centralise les données métier dans une base de données unifiée. Cette instance Odoo 18 Community fonctionne sur Docker avec PostgreSQL dédié.
Modules utilisés
Section intitulée « Modules utilisés »| Module | Type | Usage |
|---|---|---|
| Project | Natif | Gestion de projets et tâches |
| Timesheets | Natif | Suivi du temps par tâche (pour aide aux devis) |
| Website | Natif | Page d’atterrissage / hub |
| CRM | Natif (à terme) | Gestion des prospects et conversions |
project_github_sync | Custom | Sync issues/commits GitHub ↔ tâches Odoo |
website_experiments | Custom | A/B testing et tracking liens |
TimeTrackr | Custom | Intégration télémétrie Claude Code |
Vision métier
Section intitulée « Vision métier »┌─────────────────────────────────────────────────────────────┐│ Funnel de conversion │├─────────────────────────────────────────────────────────────┤│ CV / Carte visite → Lien tracké → Website Odoo ││ │ ││ ┌───────────┴───────────┐ ││ ▼ ▼ ││ Formulaire Prise RDV ││ contact Cal.com ││ │ │ ││ └───────────┬───────────┘ ││ ▼ ││ CRM Odoo (Lead) ││ │ ││ ▼ ││ Projet + Devis ││ (temps estimé via historique) │└─────────────────────────────────────────────────────────────┘Pour comprendre pourquoi Odoo a été choisi parmi les alternatives, voir Pourquoi Odoo.
2. Pourquoi ? — Enjeux et motivations
Section intitulée « 2. Pourquoi ? — Enjeux et motivations »Problèmes résolus par Odoo
Section intitulée « Problèmes résolus par Odoo »| Problème | Solution Odoo |
|---|---|
| Données éparpillées | Base unifiée : projets, temps, contacts |
| Pas de traçabilité | Lien GitHub issue → tâche → temps passé → devis |
| Attribution marketing floue | Tracking des sources (CV, carte visite, LinkedIn) |
| Estimation de devis approximative | Historique du temps réel par type de tâche |
Pourquoi Odoo 18 Community (vs Enterprise) ?
Section intitulée « Pourquoi Odoo 18 Community (vs Enterprise) ? »-
Coût — Enterprise facturé par utilisateur/mois. Community gratuit et auto-hébergé.
-
Flexibilité — Les modules custom (
project_github_sync,website_experiments) sont possibles sur Community sans restriction. -
Suffisance fonctionnelle — Les modules natifs Project, Timesheets et Website couvrent les besoins actuels.
-
Évolutivité — Migration vers Enterprise possible si besoin de modules avancés (eCommerce, Manufacturing).
3. Comment ? — Mise en œuvre technique
Section intitulée « 3. Comment ? — Mise en œuvre technique »Architecture réseau
Section intitulée « Architecture réseau »┌──────────────────────────────────────────┐│ Caddy (webproxy) ││ odoo.guigpap.com:443 │└────────────────┬─────────────────────────┘ │ ▼ (port 8069)┌──────────────────────────────────────────┐│ odoo-internal ││ ┌─────────────────┐ ┌───────────────┐ ││ │ Odoo 18 │ │ PostgreSQL │ ││ │ (port 8069) │◄─│ (port 5432) │ ││ │ │ │ │ ││ │ - Web UI │ │ - Database │ ││ │ - XML-RPC API │ │ - User: odoo │ ││ │ - Custom addons│ │ │ ││ └─────────────────┘ └───────────────┘ │└──────────────────────────────────────────┘Configuration Docker Compose
Section intitulée « Configuration Docker Compose »services: odoo: image: odoo:18 volumes: - odoo-data:/var/lib/odoo - odoo-config:/etc/odoo - ./addons:/mnt/extra-addons environment: - HOST=odoo-postgres - USER=odoo - PASSWORD=${ODOO_DB_PASSWORD} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8069/web/health"] interval: 30s timeout: 10s retries: 3 networks: - odoo-internal - webproxy
odoo-postgres: image: postgres:15 volumes: - odoo-db:/var/lib/postgresql/data environment: - POSTGRES_USER=odoo - POSTGRES_PASSWORD=${ODOO_DB_PASSWORD} - POSTGRES_DB=odoo networks: - odoo-internalAddon project_github_sync
Section intitulée « Addon project_github_sync »Cet addon custom synchronise les issues et commits GitHub avec les projets Odoo.
| Modèle | Champs ajoutés | Usage |
|---|---|---|
project.project | github_repo, github_enabled | Mapping repo ↔ projet |
project.task | github_issue_id, github_issue_url, github_state | Lien issue ↔ tâche |
project.task.commit | sha, message, author, url | Historique des commits |
Flux de synchronisation GitHub ↔ Odoo
Section intitulée « Flux de synchronisation GitHub ↔ Odoo »GitHub Webhook (N8N) │ ▼┌─────────────────────────────────────────┐│ N8N: Workflow github-project-sync ││ ├─ Parse event (opened/closed/...) ││ ├─ Lookup Data Table mapping ││ └─ Call Odoo XML-RPC │└───────────────────────┬─────────────────┘ │ ▼┌─────────────────────────────────────────┐│ Odoo XML-RPC ││ ├─ create/write project.task ││ ├─ Update github_state ││ └─ Link commits to tasks │└─────────────────────────────────────────┘Intégration N8N via XML-RPC
Section intitulée « Intégration N8N via XML-RPC »// HTTP Request node vers l'API Odoo{ "url": "http://odoo:8069/xmlrpc/2/object", "method": "POST", "body": { "service": "object", "method": "execute_kw", "args": [ "odoo", // database 2, // uid (après authentification) "{{ $env.ODOO_PASSWORD }}", "project.task", // model "create", // method [{ // values "name": "Issue #123: Fix bug", "project_id": 1, "github_issue_id": 123 }] ] }}Stratégie de backup
Section intitulée « Stratégie de backup »Les backups sont gérés par un workflow N8N :
| Déclencheur | Action |
|---|---|
| Intervalle régulier | Backup quotidien automatisé |
| Avant opération risquée | Backup déclenché manuellement via Telegram |
| Failsafe | Backup cron système si N8N indisponible |
# Backup manuel de la basedocker exec odoo-postgres pg_dump -U odoo odoo > backup_$(date +%Y%m%d).sql
# Restaurationdocker exec -i odoo-postgres psql -U odoo odoo < backup_20250120.sqlGestion des modules
Section intitulée « Gestion des modules »# Installer un nouveau modulecp -r mon_module odoo-stack/addons/docker restart odoo# UI: Apps → Update Apps List → Installer
# Mettre à jour un module existantdocker exec odoo odoo -u project_github_sync -d odoo --stop-after-initCommandes de dépannage
Section intitulée « Commandes de dépannage »# Vérifier le health checkcurl http://localhost:8069/web/health
# Logs Odoodocker logs odoo --tail 100
# Test connexion PostgreSQLdocker exec odoo-postgres pg_isready -U odoo
# Shell Odoo pour debugdocker exec -it odoo odoo shell -d odoo4. Et si ? — Perspectives et limites
Section intitulée « 4. Et si ? — Perspectives et limites »Limites actuelles
Section intitulée « Limites actuelles »| Limite | Impact | Mitigation |
|---|---|---|
| Community sans support | Pas de hotline Odoo | Documentation + communauté |
| PostgreSQL single-instance | Pas de HA native | Backups réguliers |
| Modules custom à maintenir | Compatibilité future Odoo 19+ | Tests avant upgrade |
Scénarios d’évolution
Section intitulée « Scénarios d’évolution »Si le volume de leads augmente :
- Activer le module CRM natif
- Connecter avec les outils d’emailing (Mailchimp, Brevo)
- Automatiser les séquences de nurturing via N8N
Si besoin de facturation :
- Activer le module Invoicing
- Intégrer avec un prestataire de paiement
- Workflow devis → facture → encaissement
Si l’estimation des devis doit être plus précise :
- Intégrer la télémétrie Claude Code via TimeTrackr
- Analyser le temps réel par type de tâche
- Créer des templates de devis basés sur l’historique
Si migration vers Enterprise :
- Export des données et modules custom
- Vérifier la compatibilité des addons
- Budget : tarification par utilisateur/mois
Intégrations futures envisagées
Section intitulée « Intégrations futures envisagées »| Intégration | Module/Workflow | Bénéfice |
|---|---|---|
| Claude Code télémétrie | TimeTrackr addon | Temps réel par tâche |
| Cal.com multi-events | N8N workflow | RDV → CRM automatique |
| Stripe | Invoicing + Connector | Paiement intégré |
Pages liées
Section intitulée « Pages liées »Infrastructure
Section intitulée « Infrastructure »- Architecture VPS — Vue d’ensemble
- Pourquoi Odoo — Comparaison ERP et choix
Workflows
Section intitulée « Workflows »- N8N en mode Queue — Automatisation
- GitHub-Odoo Sync — Synchronisation complète
- Cal.com → Odoo RDV — Intégration calendrier
Référence
Section intitulée « Référence »- Glossaire — ERP, XML-RPC