đ ïž Guide de dĂ©ploiement on-premise (Docker Compose)¶
Ce document décrit comment déployer Maarch Courrier on-premise via Docker Compose.
- Public cible : intégrateurs / admins avec des bases Docker + Linux
- Objectif : obtenir une instance fonctionnelle (DB + App + Typesense)
â PrĂ©requis¶
Docker Engine¶
Docker est nécessaire pour exécuter les conteneurs.
- Documentation officielle d'installation : https://docs.docker.com/engine/install/
- Version minimale recommandée : 27.x
Docker Compose¶
Docker Compose (plugin docker compose) est nécessaire pour orchestrer plusieurs services.
- Documentation officielle: https://docs.docker.com/compose/install/linux/
- Version minimale recommandée : 2.x
Typesense¶
Un moteur de recherche open source pour les fonctionnalités de recherche référentiel Base adresse nationale (BAN) et plein texte des documents.
- Guides How-To -> Typesense
- Version image docker : 29.0
đ§© Architecture dĂ©ployĂ©e¶
Services déployés par défaut :
db-mc: PostgreSQL (base de données)app-mc: Maarch Courrier (application)typesense: Typesense (moteur de recherche)
Si vous avez déjà un PostgreSQL existant, vous pouvez supprimer
db-mcet adapter la configuration de lâapplication (selon votre mode de paramĂ©trage).
đ Ătape 1 â PrĂ©parer lâenvironnement¶
Créer des répertoires hÎte requis (adaptez selon votre infra) :
docserverscustomlibrairies(si nécessaire selon votre usage)cron(lecture)
đ§Ÿ Ătape 2 â CrĂ©er le fichier dâenvironnement docker.env¶
Créer docker.env dans /home/maarch/courrier/ et copier le contenu suivant :
# Port d'exposition de l'application
APP_PORT=8080
# Chemins de stockage et de personnalisation
DOCSERVERS_ROOT_PATH=/home/maarch/courrier/docservers
CUSTOM_PATH=/home/maarch/courrier/custom
LIBRAIRIES_PATH=/home/maarch/courrier/librairies
CRON_CONFIGURATION_PATH=/home/maarch/courrier/cron
MAARCH_TMP_DIR=/tmp
# Typesense
TYPESENSE_API_KEY=change_me_please
Bonnes pratiques : Ă©vitez les clĂ©s âen durâ dans
compose.yml. Centralisez-les ici.
đ§± Ătape 3 â CrĂ©er le fichier compose.yml¶
Créer compose.yml dans /home/maarch/courrier/ et copier le contenu suivant :
# compose.yml
services:
# Base de données PostgreSQL (optionnelle si vous avez déjà un PostgreSQL externe)
db-mc:
image: postgres:16-alpine
restart: unless-stopped
networks:
- network-mc
command: ["-c", "datestyle=iso,dmy"]
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB -h localhost -p 5432"]
interval: 2s
timeout: 5s
retries: 15
volumes:
- db-data:/var/lib/postgresql/data
- sql_path:/home/sql
- script_path:/home/scripts
environment:
POSTGRES_DB: MaarchCourrier
POSTGRES_USER: maarch
POSTGRES_PASSWORD: maarch
# â ïž "trust" est pratique en local, mais dĂ©conseillĂ© en production.
POSTGRES_HOST_AUTH_METHOD: "trust"
app-mc:
depends_on:
db-mc:
condition: service_healthy
typesense:
condition: service_started
image: registry.maarch.org/maarch/maarchcourrier:latest
# â ïž Recommandation : garder "no" si une migration/MAJ peut rendre l'app indisponible
restart: "no"
networks:
- network-mc
healthcheck:
test: ["CMD", "healthcheck.sh"]
interval: 10s
timeout: 10s
retries: 3
start_period: 5s
volumes:
- ${DOCSERVERS_ROOT_PATH}:/opt/maarch/docservers:rw
- ${CUSTOM_PATH}:/var/www/html/MaarchCourrier/custom:rw
- sql_path:/var/www/html/MaarchCourrier/sql:rw
- script_path:/home/scripts:rw
- ${LIBRAIRIES_PATH}:/app/librairies:rw
- ${CRON_CONFIGURATION_PATH}:/etc/cron.d:ro
ports:
- ${APP_PORT}:80
environment:
LIBRARIES_DIR: /app/librairies
MAARCH_TMP_DIR: ${MAARCH_TMP_DIR}
TYPESENSE_API_KEY: "apiKeySample"
TYPESENSE_NODE_HOST_1: "typesense"
TYPESENSE_NODE_PORT_1: "8108"
TYPESENSE_NODE_PROTOCOL_1: "http"
TYPESENSE_CONNECTION_TIMEOUT_SECONDS: "2"
typesense:
image: typesense/typesense:29.0
restart: unless-stopped
command:
- --data-dir=/data
- --api-key=apiKeySample
- --listen-port=8108
- --enable-cors=true
volumes:
- typesense-data:/data
ulimits:
nofile:
soft: 65536
hard: 65536
networks:
- network-mc
volumes:
db-data:
sql_path:
script_path:
typesense-data:
networks:
network-mc:
driver: bridge
Nouveau Parapheur Interne (licence privée)
đ Ătape 4 â DĂ©ployer¶
Dans le dossier contenant compose.yml et docker.env :
đ Ătape 5 â VĂ©rifier lâĂ©tat¶
Lister les services :
Suivre les logs :
đ Ătape 6 â AccĂ©der Ă lâinterface¶
Depuis le serveur (ou un poste qui y accĂšde) :
http://172.17.0.1:8080
Le port dépend de
APP_PORTdansdocker.env.
Ensuite, suivre lâassistant dâinstallation dans lâinterface.
đ§° Commandes utiles¶
ArrĂȘter (sans supprimer)¶
Stoppe les conteneurs sans les supprimer :
RedĂ©marrer¶
Supprimer lâenvironnement (conteneurs + rĂ©seaux)¶
â ïž Suppression complĂšte avec volumes (perte de donnĂ©es DB / Typesense) :
Ouvrir un shell dans lâapplication¶
đ RĂ©fĂ©rence (variables dâenvironnement principales)¶
| Variable | Description | Exemple |
|---|---|---|
APP_PORT |
Port exposĂ© sur lâhĂŽte | 8080 |
DOCSERVERS_ROOT_PATH |
Stockage des documents (hĂŽte) | /home/maarch/courrier/docservers |
CUSTOM_PATH |
Personnalisations (hĂŽte) | /home/maarch/courrier/custom |
LIBRAIRIES_PATH |
Librairies externes (hĂŽte) | /home/maarch/courrier/librairies |
CRON_CONFIGURATION_PATH |
Fichiers cron (hĂŽte) | /home/maarch/courrier/cron |
MAARCH_TMP_DIR |
Répertoire temporaire (dans le conteneur) | /tmp |
TYPESENSE_API_KEY |
Clé API Typesense (partagée app / serveur) | change_me_please |