Les enjeux informatiques d'une pharmacie moderne
La gestion d'une pharmacie impose une rigueur extrême. Nous devons gérer des milliers de références produits, suivre les dates de péremption et assurer un passage en caisse rapide.
Un système obsolète ou instable peut paralyser l'activité commerciale et mettre en péril la confidentialité des ventes.
Pour répondre à ces exigences, nous avons fait le choix d'intégrer l'ERP Odoo sur une infrastructure conteneurisée.
Cette solution permet d'unifier la gestion de caisse, le stock et la facturation au sein d'un outil unique et sécurisé.
Architecture technique : Odoo, PostgreSQL et Traefik
Nous avons conçu une architecture modulaire basée sur la conteneurisation Docker.
Chaque composant de l'application fonctionne de manière isolée pour garantir stabilité et sécurité.
L'infrastructure s'articule autour de trois briques principales :
- Odoo ERP : le cœur applicatif hébergeant les modules de point de vente et de gestion de stock.
- PostgreSQL : le système de gestion de base de données relationnelle stockant l'ensemble des transactions.
- Traefik : le reverse proxy gérant le routage du trafic HTTPS et le chiffrement SSL.
Voici la section de configuration mise à jour intégrant l'utilisation des variables d'environnement .env et de ton fichier compose.yaml complet avec le routage Traefik.
(Note : le mot de passe a été remplacé par un placeholder sécurisé dans le fichier .env pour éviter d'exposer tes identifiants réels sur ton blog).
Fichiers de configuration : .env et compose.yaml
Pour garantir la modularité et éviter de coder en dur des identifiants sensibles, nous séparons la configuration des variables (.env) du fichier d'orchestration (compose.yaml).
1. Fichier de variables d'environnement (.env)
# Nom de domaine pour Traefik
DOMAIN=odoo.afridevops.online
# Versions des images Docker
ODOO_IMAGE=odoo:17.0
POSTGRES_IMAGE=postgres:15
# Configuration de la base de données PostgreSQL / Odoo
POSTGRES_DB=postgres
POSTGRES_USER=odoo
POSTGRES_PASSWORD=votre_mot_de_passe_securise_ici
HOST=db
2. Fichier d'orchestration (compose.yaml)
services:
web:
image: ${ODOO_IMAGE}
container_name: odoo-web
depends_on:
- db
environment:
- HOST=${HOST}
- USER=${POSTGRES_USER}
- PASSWORD=${POSTGRES_PASSWORD}
volumes:
- odoo-web-data:/var/lib/odoo
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
networks:
- traefik-net
- odoo-internal
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik-net"
- "traefik.http.routers.odoo.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.odoo.entrypoints=websecure"
- "traefik.http.routers.odoo.tls=true"
- "traefik.http.routers.odoo.tls.certresolver=letsencrypt"
- "traefik.http.services.odoo.loadbalancer.server.port=8069"
restart: always
db:
image: ${POSTGRES_IMAGE}
container_name: odoo-db
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- odoo-db-data:/var/lib/postgresql/data/pgdata
networks:
- odoo-internal
restart: always
networks:
traefik-net:
external: true
odoo-internal:
driver: bridge
volumes:
odoo-web-data:
odoo-db-data:
Points clés de cette architecture :
- Incapacité d'accès direct : Le conteneur
odoo-dbest uniquement rattaché au réseauodoo-internal. Il est inaccessible depuis l'extérieur. - Certificats SSL dynamiques : Les labels Traefik déclenchent la génération automatique du certificat HTTPS pour
odoo.afridevops.onlinedès le démarrage. - Persistance des données : Les volumes nommés
odoo-web-dataetodoo-db-dataprotègent les documents et la base contre la suppression accidentelle des conteneurs.
Sécurisation et isolation des données de santé
Les données enregistrées dans une pharmacie sont hautement confidentielles.
Nous avons mis en place un réseau Docker privé marqué internal: true pour le conteneur PostgreSQL.
La base de données db est totalement invisible depuis Internet.
Seul le conteneur web d'Odoo peut communiquer avec elle.
Le trafic entrant passe exclusivement par notre Reverse Proxy Traefik.
Nous forçons le chiffrement HTTPS grâce aux certificats automatiques Let's Encrypt et nous appliquons un filtrage par pare-feu UFW sur le serveur Ubuntu.
Fonctionnalités d'Odoo adaptées au secteur pharmaceutique
L'intégration d'Odoo répond à trois besoins critiques du point de vente :
- Point de vente (POS) ultra-rapide : l'interface de caisse fonctionne même en cas de coupure réseau temporaire, évitant les files d'attente.
- Gestion des lots et péremptions (FEFO) : l'application applique la règle First Expired, First Out pour sortir automatiquement les produits les plus proches de leur date d'expiration.
- Réapprovisionnement automatisé : des alerte de stock minimum déclenchent les commandes auprès des grossistes répartiteurs.
Bilan et mise en place dans votre établissement
Déployer Odoo sur une infrastructure Docker permet d'allier la puissance d'un ERP moderne à la sécurité d'un serveur Linux maîtrisé.
La pharmacie gagne en productivité sur le passage en caisse tout en protégeant son historique financier.
Vous gérez une pharmacie, un commerce ou une clinique ?
Vous souhaitez moderniser votre gestion de stock et sécuriser vos données métier ? Contactez-moi pour discuter de votre projet d'intégration Odoo sur-mesure.