En 2025, Agile Minds a migré son instance Odoo depuis Odoo Online (SaaS) vers un VPS self-hosted chez OVHcloud. Ce retour d’expérience détaille les raisons de cette migration, l’architecture mise en place, les problèmes rencontrés et la procédure complète, étape par étape.
Pourquoi quitter Odoo Online ?
Odoo Online est une excellente solution pour démarrer rapidement. Mais à mesure que votre entreprise grandit et vos besoins se complexifient, ses limites deviennent visibles :
- Contrôle limité : pas d’accès SSH, pas de gestion fine du serveur, pas de cron personnalisé
- Coût croissant : le prix par utilisateur s’accumule rapidement avec la croissance
- Modules custom impossibles : Odoo Online n’accepte pas les modules tiers non certifiés
- Accès API restreint : limitations sur les appels API et les webhooks
- Performance : serveur mutualisé, pas de contrôle sur les ressources
- Souveraineté des données : données hébergées hors de votre contrôle direct
L’architecture cible
Voici le stack technique mis en place chez Agile Minds :
| Composant | Choix technique | Justification |
|---|---|---|
| Hébergeur | OVHcloud VPS (Gravelines, France) | Proximité, RGPD, rapport qualité/prix |
| OS | Debian 12 (Bookworm) | Stabilité, LTS, large communauté |
| Base de données | PostgreSQL 18 | Recommandé par Odoo, performance |
| Reverse proxy | Traefik v3 | SSL automatique, routing dynamique |
| SSL | Let’s Encrypt (via Traefik) | Gratuit, renouvellement automatique |
| Python | Python 3.12 (venv) | Isolation des dépendances |
| Sauvegarde | pg_dump + snapshots OVHcloud | Double sécurité |
| Monitoring | Uptime Kuma | Alertes en temps réel |
Procédure de migration en 4 phases
Phase 1 : Préparation du serveur (Jour 1-2)
- Commander un VPS OVHcloud (8 vCPU, 22 GB RAM, SSD NVMe)
- Installer Debian 12 et sécuriser le serveur (SSH keys, fail2ban, firewall)
- Installer PostgreSQL 18 et configurer les accès
- Installer les dépendances Python (wkhtmltopdf, libs requises)
- Configurer Traefik v3 avec Let’s Encrypt
Phase 2 : Installation d’Odoo (Jour 3)
- Cloner le dépôt Odoo 19 Enterprise depuis GitHub
- Créer un environnement virtuel Python dédié
- Installer les dépendances Python (
pip install -r requirements.txt) - Configurer le fichier
odoo.conf(ports, DB, workers, chemins) - Créer le service systemd pour Odoo
- Tester le démarrage sur le port 8069
Phase 3 : Migration des données (Jour 4-5)
- Exporter la base depuis Odoo Online (menu Database Manager)
- Transférer le dump vers le VPS via SCP
- Restaurer la base dans PostgreSQL local
- Vérifier l’intégrité des données (comptabilité, contacts, stocks)
- Mettre à jour les paramètres système (URL, email sortant, etc.)
- Installer les modules custom nécessaires
Phase 4 : Mise en production (Jour 6)
- Configurer le DNS (odoo.agile-minds.be vers VPS)
- Activer le SSL via Traefik
- Configurer les workers Odoo pour la performance
- Mettre en place les sauvegardes automatiques (cron pg_dump)
- Tester l’ensemble des flux métier
- Basculer les utilisateurs
Problèmes rencontrés et solutions
| Problème | Cause | Solution |
|---|---|---|
| Erreur wkhtmltopdf (PDF vides) | Version incompatible dans les dépôts Debian | Installer la version patched 0.12.6.1 depuis GitHub |
| Lenteur extrême au démarrage | workers = 0 (mode mono-thread) | Configurer workers = 4 et max_cron_threads = 2 |
| CSS cassé sur le portail | Assets non regénérés après migration | Supprimer les assets compilés et relancer avec -u base |
| Emails sortants bloqués | Port 25 bloqué par OVHcloud | Utiliser le port 587 avec STARTTLS (Google Workspace) |
| Timeout Traefik sur gros rapports | Timeout par défaut trop court | Augmenter respondingTimeouts à 300s dans Traefik |
Avant / Après : la comparaison
| Aspect | Odoo Online | VPS Self-hosted |
|---|---|---|
| Coût mensuel (5 users) | ~250 €/mois | ~35 €/mois (VPS) |
| Modules custom | Impossible | Illimité |
| Accès serveur | Aucun | Root complet |
| Performance | Variable (mutualisé) | Constante (dédié) |
| API / webhooks | Limités | Illimités |
| Sauvegardes | Quotidiennes (Odoo gère) | Personnalisables (notre contrôle) |
| Temps de réponse moyen | ~800 ms | ~200 ms |
| Maintenance | Zéro (Odoo gère) | À notre charge |
Notre verdict après 1 an
La migration a été le meilleur investissement technique d’Agile Minds. Le gain de performance, la liberté d’installer des modules custom (notamment pour l’intégration n8n et les agents IA) et la réduction des coûts justifient largement les 6 jours d’effort initial.
Conseil : si vous êtes une PME avec moins de 3 utilisateurs et des besoins standards, restez sur Odoo Online. Au-delà, la migration self-hosted mérite sérieusement d’être envisagée.
Besoin d’aide pour votre migration ? Contactez-nous.
Patrick Impens · CEO Agile Minds SRL · agile-minds.be