1. Pourquoi y aller ?
Odoo, l’ERP/CRM open‑source de plus de 1 000 modules, est toujours plus couramment adopté par les petites et moyennes entreprises marocaines. Sa puissance vient de son architecture modulaire et de sa compatibilité avec les standards Web modernes. Déployer Odoo dans le cloud offre :
| Avantages | Détails |
|---|---|
| Scalabilité | Ajustez CPU, RAM, stockage à la hausse ou à la baisse sans interruption. |
| Fiabilité | Sauvegardes automatiques, haute disponibilité, clustering. |
| Sécurité | Pare-feu, réseaux privés virtuels, chiffrement TLS/SSH, backups cryptés. |
| Coût | Modèle « pay‑as‑you‑go » : vous payez uniquement pour les ressources réellement utilisées. |
| Localisation | Gardez vos données dans un centre de données marocain (ou en Afrique du Nord) afin de rester compliant avec la loi marocaine sur la protection des données personnelles (LPD 2018). |
2. Choisir son fournisseur de cloud au Maroc
| Provenances | Points forts | Considérations |
|---|---|---|
| Maroc Telecom (MTN) | Premier player local, réseau 4G/5G, Data‑center (Nouna) | Peu d’intégration automatisée avec Odoo (installations manuelles requises). |
| Entelind | Centre de données ASEC‑FAO à Massira | Très haute disponibilité, gestion technique avisée. |
| SDEV | Offre « SDEV Cloud » SLA 99,99 % | Support de l’Europe/Afrique. |
| OVHcloud (France) | Centre de données en Morocco (Tanger) | Règles européennes de compliance, excellent prix. |
| DigitalOcean / AWS / Google Cloud | Globaux, outils Terraform, CLI puissants | Coût peut grimper à haute charge. |
| Odoo.sh | Plateforme officielle Odoo, CI/CD, mysql/postgres dans chaque région | Gestion et déploiement simplifiés mais coûts mensuels élevés. |
Astuce : choisissez un provider qui offre un Virtual Private Cloud (VPC) et un pare-feu GSLB pour limiter la surcharge détricye de trafic géographique.
3. Architecture recommandée
Morocco ↗ LPD compliant location
├─ VPC
│ ├─ Public subnet
│ │ └─ Nginx premier reverse‑proxy (let's Encrypt)
│ │ └─ Bastion host (SSH)
│ └─ Private subnet
│ ├─ Odoo nodes (auto‑scale group)
│ └─ PostgreSQL (managed instance ou propre cluster)
├─ Load Balancer
│ └─ SSL termination
├─ Backup storage
│ └─ Snapshots daily, incremental nightly
└─ Monitoring
├─ CloudWatch / Prometheus
└─ Alerting (PagerDuty, Teams)
Notes :
- Utilisez TLS 1.3 partout.
- Stockez les bases de données dans un storage IPS‑locked.
- Ayez un point de restauration (point‑in‐time restore) pour la BD.
4. Etapes détaillées de déploiement
4.1. Prérequis
- Compte cloud (ou compte R&D si vous êtes étudiant/entreprise locale).
- Domain name :
erp.monsociété.ma. - Let’s Encrypt ou certificat d’entreprise.
- Numéro de TVA et informations fiscales pour l’intégration Odoo.
- Plan de migration (tableaux, champs, i18n, rapports).
4.2. Provisionner l’infrastructure
a) Création du VPC
aws ec2 create-vpc --cidr-block 10.0.0.0/16
aws ec2 create-subnet --vpc-id vpc-xxxxxx --cidr-block 10.0.1.0/24
aws ec2 create-subnet --vpc-id vpc-xxxxxx --cidr-block 10.0.2.0/24
aws ec2 create-internet-gateway
aws ec2 attach-internet-gateway --vpc-id vpc-xxxxxx --internet-gateway-id igw-xxxxxx
b) Sécurité
aws ec2 create-security-group --group-name odoo-sg --description "Odoo access" --vpc-id vpc-xxxxxx
# SSH 22
aws ec2 authorize-security-group-ingress --group-id sg-xxxxxx --protocol tcp --port 22 --cidr 0.0.0.0/0
# HTTP/HTTPS
aws ec2 authorize-security-group-ingress --group-id sg-xxxxxx --protocol tcp --port 80-443 --cidr 0.0.0.0/0
# Odoo (8069)
aws ec2 authorize-security-group-ingress --group-id sg-xxxxxx --protocol tcp --port 8069 --cidr 10.0.0.0/16
c) Fleet d’instances
t3.medium(4 GB RAM, 2 vCPU) pour dev.c5.large(4 GB RAM, 2 vCPU) pour prod.
aws autoscaling create-launch-configuration \
--launch-configuration-name odoo-launch \
--image-id ami-xxxxxx \
--instance-type c5.large \
--key-name OdooKeyPair \
--security-groups sg-xxxxxx \
--associate-public-ip-address
d) RDS PostgreSQL
aws rds create-db-instance \
--db-instance-identifier odoodb \
--db-instance-class db.t3.medium \
--engine postgres \
--engine-version 15 \
--allocated-storage 100 \
--master-username odoo \
--master-user-password Passw0rdSecret \
--backup-retention-period 7
4.3. Installation d’Odoo
Option 1 : Docker ( High‑portability )
docker run -p 8069:8069 \
-e HOST=postgres.example.com \
-e USER=odoo \
-e PASSWORD=Passw0rdSecret \
--name odoodocker odoo:17
Astuce : Lancez la procédure d’installation via la console :
docker exec -it odoodocker bash
./odoo-bin --init=base
Option 2 : Installation native
sudo apt update && sudo apt install python3 python3-pip python3-venv \
libpq-dev libjpeg-dev libxml2-dev libxslt1-dev libldap2-dev libssl-dev
sudo pip3 install wheel
sudo apt install -y python3-dev build-essential
# Clone Odoo
git clone https://www.github.com/odoo/odoo --depth 1 -b 17.0
cd odoo
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Create config
cp odoo.conf.dist odoo.conf
# Insérez PostgreSQL host, username, password
4.4. Mise en place du Reverse‑Proxy (NGINX)
server {
listen 80;
server_name erp.monsociété.ma;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8069;
}
# Let's Encrypt cert
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/erp.monsociété.ma/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/erp.monsociété.ma/privkey.pem;
}
- Obtenez un certificat via certbot :
sudo certbot --nginx -d erp.monsociété.ma
4.5. Automatiser avec Terraform
provider "aws" {
region = "ma-east-1"
}
module "bastion" {
source = "./modules/bastion"
...
}
module "odoo" {
source = "./modules/odoo"
...
}
Conservez le code dans Git : utilisez GitLab CI ou GitHub Actions pour déclencher Terraform apply à chaque commit sur main.
4.6. Sauvegarde et restauration
- PostgreSQL : Snapshot quotidien + Point‑in‑time restore (30 jours).
- Système : Docker volumes, backups via
taret chroot. - Odoo files :
/var/lib/odoo/addons&/var/lib/odoo/web/static→ S3‑compatible blob viaaws s3 sync.
4.7. Surveillance et alertes
| Outil | Rôle |
|---|---|
| Prometheus | Scrappe métriques Py‑prometheus dans Odoo. |
| Grafana | Dashboard d’usage, CPU, DB, RAM. |
| CloudWatch (AWS) ou Azure Monitor | Alertes d’écarts critiques. |
| PagerDuty | Alertes SMS/CallOut. |
4.8. Sécurité renforcée
| Niveaux | Actions |
|---|---|
| VPN | Accès bastion via OpenVPN (clé RSA). |
| IAM | Moins de rôles, accès minimal (least privilege). |
| MFA | Plusieurs méthodes (YubiKey). |
| Audit | Journaux CloudTrail, logs de connexion. |
| RGPD | Vos registres clients doivent être chiffrés au repos. |
5. Migration des données existantes
- Export JSON/XML depuis le système legacy.
- Import dans Odoo via le wizard
Gestion des données(Importer les fichiers > XML). - Utilisez le module Odoo‑Migration‑Toolkit pour scripts Python.
- Vérifiez les intégrations Tiers (messagerie, paiement, e‑commerce).
Checklist :
- Champs obligatoires non nuls dans la base cible
- Conformité des identifiants (ex: NIF, Numéro TVA)
- Liaison des fichiers statiques (factures, devis)
6. Législation et conformité
| Lien légal | Comment l’appliquer |
|---|---|
| LPD (Loi 09‑08 de 2018) | Données clients dans serveurs marocains, chiffrement, droit d’accès. |
| Bill de 2022 | Gestion des données personnelles, registre des traitements. |
| Loi sur l’Importation des Données | Limites sur l’utilisation de serveurs non locaux pour certains secteurs. |
Recommandation : stockez les backups dans un CDN cloud marocain autonome afin d’éviter le transfert de données hors du territoire.
7. Coût estimé (exemple SaaS gratuit + Odoo.sh)
| Élément | Prix mensuel (USD) |
|---|---|
| Instance 2 vCPU, 8 GB RAM (t3.medium) | 30 $ |
| Alpine RDS PostgreSQL 100 GB | 30 $ |
| Bandwidth 1 TB | 10 $ |
| IAM + S3 Backup | 5 $ |
| SSL Cert (Let’s Encrypt gratuit) | 0 $ |
| Total | ≈ 75 $ |
Remarque : Les prix peuvent varier selon la région, les promotions (AMI de type spot) ou le payer‑as‑you‑go (AWS EC2 Spot.) Il est souvent plus avantageux de comparer OVHcloud vs AWS Maroc → cheaper à 3 $ /MC.
8. Bonnes pratiques post‑déploiement
- Versions Odoo : Mettez toujours le tag principal (ex : 17.0). Sauvegardez avant les mises à jour.
- Test de charge : Utilisez
Locustpour simuler 500 utilisateurs simultanés. - Backup test : Faites une restauration sur un sandbox chaque trimestre.
- Plan de reprise : Documentez les procédures de bascule vers un autre data‑center.
- Documentation interne :
Confluence + Markdownsur chaque déploiement, procédures, troubleshooting.
9. Conclusion
Déployer Odoo dans le cloud avec un fournisseur marocain ou un data‑center proche du Maroc est non seulement possible mais stratégique : sous le contrôle de la législation locale, sans perte de performance. La combinaison de Terraform, Docker ou Odoo.sh vous apporte un pipeline d’intégration continue (CI/CD) robuste, tandis que l’attention portée aux backups, à la haute disponibilité et à la conformité vous assure une disponibilité 99,9 %. Adoptez cette approche et donnez à votre entreprise la flexibilité d’un ERP moderne, tout en maîtrisant vos coûts et en restant conforme à la loi. Bonne mise en route !