A guide complet pour proteger vos données tout en tirant parti de la flexibilité d’OVH
1. Introduction
Dolibarr est un ERP/PGM open‑source très léger, idéal pour les PME, les auto‑entrepreneurs ou les associations. OVHcloud, de son côté, propose une gamme complète d’infrastructures : serveurs dédiés, VPS, bases de données Managed, stockage object‑storage, et services de sauvegarde.
Combiner ces deux solutions vous permet d’héberger votre ERP en interne ou dans le cloud tout en profitant d’une maîtrise totale des flux d’import‑export (clients, fournisseurs, articles, devis, factures, etc.). Mais la sécurité de ces échanges ne se limite pas à un bon mot de passe : il faut sécuriser chaque étape du processus — du chiffrement des données en transit à la protection des sauvegardes.
Cet article détaille :
- L’architecture recommandée (Dolibarr + OVH).
- Les bonnes pratiques d’import‑export (format, validation, chiffrement).
- Les leviers de sécurité (SSL, firewalls, sauvegardes, contrôle d’accès).
- Un workflow automatisé pour des flux réguliers.
- Quelques scripts d’exemple (CLI, bash, PowerShell).
- Checklist de conformité (RGPD, ISO 27001, etc.).
2. Architecture recommandée sur OVH
2.1. Choix de l’infrastructure
| Fonction | Solution OVH | Pourquoi |
|---|---|---|
| Hébergement web | VPS (Cloud Instance) ou serveur dédié | Ressources isolées, accès SSH complet, possibilité d’installer Docker. |
| Base de données | Database Managed (MySQL 8 / PostgreSQL 13) ou serveur DB dédié | Sauvegardes automatiques, chiffrement au repos, haute disponibilité. |
| Stockage de fichiers | Object Storage (OVH RCS) ou volume Block attaché | Gestion des pièces jointes (factures PDF, bon de commande) avec versionning. |
| Sauvegarde | Backup Object Storage + “Backup” de la base de données | Restauration point‑in‑time, chiffrement en‑transit. |
| DNS & SSL | Cloud DNS + Certificat SSL wildcard via Let’s Encrypt | Contrôle total du domaine, certificat gratuit et renouvelable automatiquement. |
Tip : Pour un déploiement « zero‑maintenance », créez un Docker‑Compose qui regroupe Dolibarr, MariaDB et un serveur Nginx avec Let’s Encrypt (certbot). OVH propose des Kasadous (instances Docker « pre‑configured ») qui simplifient le lancement.
2.2. Diagramme simplifié « `
[Internet] ──> HTTPS (Let’s Encrypt) ──> Nginx (reverse‑proxy)
│
├─► Dolibarr (PHP‑FPM)
│
└─► API (optionnel) → /export.php« `
OVH VPS
├─ /var/www/dolibarr/ ← code source
├─ /var/lib/mysql/ ← DB Managed (ou Docker volume)
└─ /var/backups/ ← dumps SQL + fichiers attachments
3. Import‑Export sécurisé : bonnes pratiques
3.1. Formats d’échange
| Type de donnée | Format recommandé | Pourquoi |
|---|---|---|
| Clients / Fournisseurs | CSV (UTF‑8) ou JSON | Facile à consommer par d’autres ERP, chiffrement aisé. |
| Articles / Stocks | CSV avec colonnes sku,qty,price,description |
Validation stricte des types numériques. |
| Factures / Devis | PDF signé + métadonnées JSON | Conserve l’aspect légal tout en permettant le traitement automatisé. |
| Sauvegardes de DB | Dump SQL (gzip) + chiffrement AES‑256 | Compression + chiffrement hors‑ligne. |
Astuce : Utilisez toujours le préfixe
UTF‑8et l’extension.csven minuscules pour éviter les incompatibilités de parsers.
3.2. Étapes de sécurisation d’un fichier d’import
-
Vérification d’intégrité
- Hash SHA‑256 fourni par l’émetteur, comparé avec le hash calculé localement.
- Utilisez
sha256sum -c fichier.sha256.
-
Contrôle de la structure
- Schema validation (XSD pour XML, ou script Python
pandasavecdtypeexplicite). - Limites de longueur de chaque champ (ex.
MAX_LENGTH=255).
- Schema validation (XSD pour XML, ou script Python
-
Chiffrement des flux
- Si le fichier arrive via SFTP/SCP, forcez le chiffrement SSH (clé RSA, pas de mot de passe).
- Une fois reçu, déchiffrez éventuellement avec
gpg --decrypt --output fichier.csv.gpg.
-
Nettoyage & sanitisation
- Supprimez les lignes vides, trimez les champs, convertissez les nombres avec un locale independent (
float:en_US). - Bloquez les caractères spéciaux qui pourraient être exploités (ex.
\n,\r,<script>).
- Supprimez les lignes vides, trimez les champs, convertissez les nombres avec un locale independent (
- Import dans Dolibarr
- Dans le back‑office, utilisez Import/Export → Import CSV et activez “Validate before import”.
- Pour les scripts automatisés, passez par l’API REST de Dolibarr (
/dolibarr/api/...) avec authentification par token JWT signé.
3.3. Exemple de script de validation (Python)
import csv, hashlib, json, os
def sha256(path):
h = hashlib.sha256()
with open(path, "rb") as f:
for chunk in iter(lambda: f.read(8192), b""):
h.update(chunk)
return h.hexdigest()
def validate_csv(csv_path, expected_hash, schema):
# 1. hash check if sha256(csv_path) != expected_hash:
raise ValueError("Hash mismatch – file may have been tampered.")
# 2. structural check
with open(csv_path, newline='', encoding='utf-8') as f:
reader = csv.DictReader(f)
required = schema['required_fields']
for row in reader:
for field in required:
if field not in row or not row[field]:
raise ValueError(f"Missing required field {field}")
return True
schema = {
"required_fields": ["customer_id", "name", "email", "address"]
}
expected_hash = "a3b2c4d5e6f7... (fourni par le partenaire)"
validate_csv("import_clients.csv", expected_hash, schema)
print("Import ready")
4. Sécurisation globale de l’environnement
| Domaine | Action concrète | Outil / Service OVH |
|---|---|---|
| Transit (HTTPS) | Force HTTPS + HSTS | Nginx + add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; |
| Authentification | 2FA obligatoire pour le back‑office | Authentification SSO via Keycloak (intégré à LDAP/OVH IAM). |
| Accès DB | Accès uniquement depuis le VPC ou via SSH tunnel | Security Groups OVH + “Database Private Network”. |
| Sauvegardes | Chiffrement before upload | gpg --symmetric --cipher-algo AES256 dump.sql.gz → rclone copy --progress vers Object Storage. |
| Logging & Audits | Centralisation des logs via ELK ou Grafana Loki | Syslog serveur OVH, alertes sur tentatives d’export massif. |
| Périmètre network | Isolation du serveur Dolibarr (pas d’accès public au port 3306) | OpenVPN Access Server ou WireGuard sur OVH. |
| Mise à jour | Patch mensuel (Dolibarr + OS) automatisé | apt-get update && apt-get upgrade -y && docker pull dolibarr/dolibarr:latest |
Note RGPD : Anonymisez les données personnelles (nom, email) dans les exports de test. Conservez les logs d’accès pendant 12 mois pour pouvoir répondre à une éventuelle demande d’accès.
5. Workflow automatisé d’import‑export (exemple complet)
5.1. Architecture du pipeline
┌─────────────────────┐ SFTP ┌───────────────────────┐│ Partenaire A │◀──────▶│ OVH VPS (SFTP‑In) │
└─────────────────────┘ └───────────────────────┘
│ │
│ (SHA‑256 + SSl) │
▼ ▼
┌─────────────────────┐ Process ┌───────────────────────┐│ Script de validation│ ─────▶ │ Dolibarr (Import) │
└─────────────────────┘ └───────────────────────┘
│ │
▼ ▼
┌─────────────────────┐ Export ┌───────────────────────┐
│ Script d’export CSV │◀───────▶ │ Dolibarr (Export) │
└─────────────────────┘ └───────────────────────┘
│ │ ▼ ▼
┌─────────────────────┐ Encryption ┌───────────────────────┐
│ GPG + rcloneUpload │◀───────▶ │ Object Storage (Backups)│
└─────────────────────┘ └───────────────────────┘
5.2. Script Bash automatisé (déclenché via cron)
« `bash#!/usr/bin/env bash
set -euo pipefail
REMOTE_USER="partner_sftp"
REMOTE_HOST="files.partner.com"
REMOTE_DIR="/incoming"
LOCAL_DIR="/opt/dolibarr/tmp"
DB_HOST="db-managed.ovh.net"
DB_NAME="dolibarr"
DB_USER="dolitest"
DB_PASS=$(cat /run/secrets/db_password) # stored in Docker secret
OUTPUT_DIR="/opt/dolibarr/exports"
GPG_RECIPIENT="backup@mycompany.com"
RCLONE_REMOTE="ovh:backups/dolibarr"
FILE=$(ssh "${REMOTE_USER}@${REMOTE_HOST}" "ls -1 ${REMOTE_DIR}/*.csv" | head -n1)
scp "${REMOTE_USER}@${REMOTE_HOST}:${FILE}" "${LOCAL_DIR}/"
EXPECTED_HASH=$(ssh "${REMOTE_USER}@${REMOTE_HOST}" "cat ${FILE}.sha256")
if [[ $(sha256sum "${LOCAL_DIR}/$(basename ${FILE})" | cut -d’ ‘ -f1) != "${EXPECTED_HASH}" ]]; then
echo "Hash mismatch – abort"
exit 1
fi
docker exec -i dolibarr_app php /var/www/dolibarr/scripts/csvimport.php \
–file="${LOCAL_DIR}/$(basename ${FILE})" \
–module="client" \
–validate-only
EXPORT_FILE="${OUTPUTDIR}/export$(date +%Y%m%d).csv"
docker exec dolibarr_app php /var/www/dolibarr/scripts/export.php \
–module="invoice" –format=csv –output="${EXPORT_FILE}"
gpg –batch –yes –recipient "${GPG_RECIPIENT}" –output "${EXPORT_FILE}.gpg" –encrypt "${EXPORT_FILE}"
rclone copy "${EXPORT_FILE}.gpg" "${RCLONE_REMOTE}" –progress
subject="Export OK $(date +%Y-%m-%d)"
echo -e "Export terminé et chiffré.\nFile: ${EXPORT_FILE}.gpg" | \
mail -s "$subject" admin@mycompany.com« `
Planification : Ajoutez le script à
crontab(ex.0 2 * * * /opt/dolibarr/scripts/automated_export.sh >> /var/log/dolibarr_export.log 2>&1).
6. Mise en place d’authentification forte et de contrôle d’accès1. Utilisateurs Dolibarr
- Créez des comptes avec le rôle “Admin” uniquement pour les développeurs.
- Pour les autres, utilisez le rôle “User” avec des permissions limitées à “Factures → Read/Write”.
- Activez “Force password change at first login”.
-
Accès SSH
- Désactivez l’authentification par mot de passe (
PasswordAuthentication no). – Autorisez uniquement les clés SSH (p. ex.~/.ssh/id_rsa_dolibarr). - Limitez l’accès via le firewall OVH (Security Group) : autorisez uniquement les IP de vos équipes.
- Désactivez l’authentification par mot de passe (
-
API Token
- Générez un token JWT dans l’interface Dolibarr → Security → API Keys.
- Utilisez ce token dans les appels
curl:-H "Authorization: Bearer $TOKEN".
- Limitation des IP
- Bloquez l’accès à
/dolibarr/api/*depuis tout le monde sauf les IP de vos partenaires ou du bastion. - Exemple de règle iptables :
iptables -A INPUT -p tcp -s 203.0.113.0/24 --dport 443 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j DROP
- Bloquez l’accès à
7. Checklist de conformité & audit
| ✔️ | Élément | Mode de vérification |
|---|---|---|
| 1 | TLS 1.2+ sur tout le trafic HTTP | openssl s_client -connect yourdomain.com:443 -tls1_2 |
| 2 | Chiffrement des sauvegardes | gpg --list-packets backup.sql.gpg → algorithme AES‑256 |
| 3 | Rotation des clés GPG | Vérifier la date d’expiration (gpg --showkeys) |
| 4 | Logs d’accès centralisés | Kibana → “dolibarr_access” index, recherche GET /export |
| 5 | Ségrégation des environnements | Environnements dev, staging, prod sur des projets Docker différents |
| 6 | Tests d’injection (CSV) | Exécuter le script de validation sur un jeu de données malicieuse |
| 7 | Plan de reprise | Test de restauration d’un dump (gunzip | psql $DB_NAME < dump.sql) |
| 8 | Mise à jour automatisée | CI/CD (GitLab CI) qui pousse l’image dolibarr/dolibarr:latest chaque mois |
| 9 | Gestion des secrets | Docker secret / HashiCorp Vault pour les mots de passe DB et clés GPG |
| 10 | Conformité RGPD | DPA signé avec les fournisseurs d’export ; registre des traitements mis à jour |
8. Bonnes pratiques supplémentaires
| Thème | Recommandation clé |
|---|---|
| Versionning des exports | Ajoutez la date et le numéro de version dans le nom du fichier (export_v2025_11_02_01.csv). |
| Étiquetage des backups | Utilisez les metadata de l’Object Storage pour indiquer “Retention = 90 days”. |
| Monitoring du volume | Configurez une alerte used_space > 80% via le Metric API d’OVH. |
| Tests de charge | Avant un import massif, exécutez un test avec 10 000 lignes fictives et mesurez le temps de réponse de l’API. |
| Documentation | Conservez le README du projet d’import‑export dans un dépôt Git interne, versionné. |
| Processus de revue | Faites un code review de tout script d’import avant mise en prod (exigence de sécurité). |
9. Conclusion
Associer Dolibarr à l’infrastructure OVH offre une solution ERP souple, économique et hautement personnalisable. Mais la véritable valeur ajoutée réside dans la façon dont vous structurez vos échanges d’import‑export : un processus rigoureux, du chiffrement dès le premier octet jusqu’à la sauvegarde chiffrée, constitue la différence entre une simple migration de données et une chaîne de traitement sécurisée, auditée et conforme.
En suivant les étapes décrites — architecture réseau, validation de fichiers, import/export via l’API, sauvegardes chiffrées, contrôle d’accès strict et monitoring continu—vous garantissez :
- Intégrité des données (hash + schema validation).
- Confidentialité (TLS, GPG, stockage chiffré).
- Traçabilité (logs, tokens JWT, signatures).
- Résilience (backups automatisés, restauration testée).
- Conformité (RGPD, ISO 27001).
Ces leviers vous permettront de tirer parti de la puissance d’OVH tout en gardant la maîtrise totale sur la sécurité de vos flux d’import‑export. Bon déploiement !
Pour toute question technique ou besoin d’assistance sur un scénario précis (ex. migration depuis un ERP legacy, intégration d’un webhook externe, ou mise en place d’un serveur de signature électronique), n’hésitez pas à nous contacter.
Auteur : [Nom du rédacteur] – Architecte Cloud & Sécurité – Expert Dolibarr & OVH
Date : 3 novembre 2025
— Sources complémentaires
- Dolibarr Documentation – Import/Export CSV : https://www.dolibarr.org/doc/en_US/import_export/
- OVHcloud – Security Groups & Private Network : https://docs.ovh.com/fr/network/
- OpenSSL Best Practices – TLS 1.3 Hardening : https://openssl.org/blog/blog/2024/09/tls13-hardening/
- NIST SP 800‑53 Rev. 5 – Data Protection : https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final
Feel free to adapt the scripts and checklist to the specifics of your organization.