Comment déployer Odoo dans le cloud avec Odoo au Maroc ?

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

  1. Compte cloud (ou compte R&D si vous êtes étudiant/entreprise locale).
  2. Domain name : erp.monsociété.ma.
  3. Let’s Encrypt ou certificat d’entreprise.
  4. Numéro de TVA et informations fiscales pour l’intégration Odoo.
  5. 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 tar et chroot.
  • Odoo files : /var/lib/odoo/addons & /var/lib/odoo/web/static → S3‑compatible blob via aws 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

  1. Export JSON/XML depuis le système legacy.
  2. Import dans Odoo via le wizard Gestion des données (Importer les fichiers > XML).
  3. Utilisez le module Odoo‑Migration‑Toolkit pour scripts Python.
  4. 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 Locust pour 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 + Markdown sur 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 !

Publications similaires