Déploiement reproductible, paramétrage en français, démonstrations Finance (factures client/fournisseur) et RH (congé agent).
Faisabilité : déploiement de Dolibarr (ERP open-source) sur Debian 12 via Docker Compose, avec persistance.
Valeur Collectivité : gratuit, francisé, modulaire, traçable, extensible (mails, PDF, reporting, SSO).
Pourquoi Dolibarr ? Léger, modulaire, communauté FR. ERPNext est plus lourd (Frappe/Redis) : moins adapté pour un POC rapide.
mariadb:10.11
+ tuxgasy/dolibarr:latest
http://localhost:8087
projet-ecf/
└─ dolibarr/
├─ .env
├─ docker-compose.yml
└─ volumes/
├─ mariadb/ # données SQL
└─ dolibarr/ # documents / PDF
sudo apt update
sudo apt install -y docker.io docker-compose-plugin
sudo usermod -aG docker $USER # puis déconnexion/reconnexion
mkdir -p ~/projet-ecf/dolibarr/{volumes/dolibarr,volumes/mariadb}
cd ~/projet-ecf/dolibarr
.env
MYSQL_ROOT_PASSWORD=changeme-root
MYSQL_DATABASE=dolibarr
MYSQL_USER=dolibarr
MYSQL_PASSWORD=changeme
DOLI_HTTP_PORT=8087
docker-compose.yml
services:
db:
image: mariadb:10.11
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- ./volumes/mariadb:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 10
dolibarr:
image: tuxgasy/dolibarr:latest
restart: unless-stopped
depends_on:
db:
condition: service_healthy
environment:
DOLI_DB_HOST: db
DOLI_DB_NAME: ${MYSQL_DATABASE}
DOLI_DB_USER: ${MYSQL_USER}
DOLI_DB_PASSWORD: ${MYSQL_PASSWORD}
ports:
- "${DOLI_HTTP_PORT}:80"
volumes:
- ./volumes/dolibarr:/var/www/html/documents
docker compose up -d
docker compose ps
# Accès: http://localhost:8087
ss -ltnp | grep 8087 || echo "8087 libre"
Assistant Dolibarr → DB db, BDD dolibarr, user dolibarr / pass changeme. Créer le compte admin. Passer l’UI en Français.
Configuration → Société/Organisation : VilleDemo (France, adresse) → Enregistrer.
On crée d’abord le catalogue → ensuite on le sélectionne dans les documents (devis, factures…).
amartin
, Salarié: Oui)Vous trouverez ci-dessous l’ensemble de mes captures qui illustrent le déploiement, le paramétrage et les deux scénarios (Finance & RH). Cliquez sur une image pour l’agrandir.
# démarrer / arrêter
docker compose up -d
docker compose down
# logs
docker compose logs -f --tail=100 db
docker compose logs -f --tail=100 dolibarr
# sauvegarde volumes
tar -czf backup-dolibarr-$(date +%F).tgz volumes/
DB_ID=$(docker ps -qf "name=_db_")
docker exec -it "$DB_ID" mysql -u dolibarr -pchangeme dolibarr -e "
UPDATE llx_user
SET login='admin', pass_crypted=MD5('admin123')
WHERE login='admin' OR rowid=1;
SELECT rowid, login FROM llx_user;"
Bonnes pratiques : secrets forts, reverse-proxy HTTPS, sauvegardes régulières (mysqldump + documents), rôles/permissions, mises à jour d’images.