Wiki
Options de deploiement
Comment deployer QuoteNode avec Docker Compose, Coolify et une topologie de production.
Options de deploiement
QuoteNode prend en charge plusieurs modeles de deploiement, tous bases sur des conteneurs Docker. Choisissez l’approche adaptee a votre infrastructure.
Docker Compose (standard)
Le deploiement standard repose sur un unique fichier docker-compose.yml qui demarre tous les services :
docker compose up -d
Topologie de production
Internet
│
▼
Caddy (port 80/443, HTTPS automatique)
├── /api/* → Backend (Java 25, port 8080)
├── /offer/* → Backend (pages d'offres publiques)
└── /* → Frontend (Vue 3, assets statiques)
Backend → PostgreSQL (port 5432)
Backend → Gotenberg (port 3000, generation PDF)
backup-worker → PostgreSQL (backups planifies)
Services
| Conteneur | Image | Raison d’etre |
|---|---|---|
frontend | Vue 3 + Caddy | Sert la SPA et proxy les requetes API |
backend | Java 25 / Spring Boot | API REST, logique metier, generation PDF |
postgres | PostgreSQL 16 Alpine | Base de donnees |
gotenberg | Gotenberg 8 | Conversion HTML vers PDF (basee sur Chromium) |
backup-worker | Meme image que le backend | Backups planifies de la base et des fichiers |
Volumes persistants
| Volume | Contenu |
|---|---|
postgres_prod_data | Fichiers de base de donnees |
backend_prod_uploads | Images produit, logos entreprise |
backend_prod_pdfs | Documents PDF generes |
backend_prod_backups | Archives de backup |
backend_prod_geoip | Base MaxMind GeoIP (optionnelle) |
Deploiement Coolify
Coolify est une plateforme PaaS open source auto-hebergee, une alternative a Heroku, Vercel ou Railway qui tourne sur votre propre serveur.
QuoteNode fournit une configuration docker-compose.coolify.yml dediee et optimisee pour les deploiements Coolify.
Differences clefs par rapport au Docker Compose standard
- Coolify gere TLS — son propre proxy Caddy gere les certificats HTTPS et le routage domaine. Les conteneurs applicatifs n’embarquent pas de couche TLS separee.
- Variables d’environnement via l’UI Coolify — toute la configuration se fait dans l’interface web Coolify plutot que dans des fichiers
.env. - Health checks — Coolify surveille la sante des conteneurs et peut redemarrer automatiquement les services en erreur.
- Deux modes de deploiement :
Mode A — Build depuis les sources
Coolify clone le depot et construit les images Docker lors du deploiement :
- deploiements plus lents (build a chaque mise en prod),
- pas besoin de pipeline CI/CD,
- pratique pour demarrer vite.
Mode B — Images prebuild
GitHub Actions construit et pousse les images vers GitHub Container Registry (GHCR), puis Coolify tire la derniere image :
- deploiements rapides (pull + restart),
- demande la mise en place d’un workflow CI/CD,
- recommande pour la production.
Configuration Coolify requise
- Resource type: Dockerfile ou Docker Image
- Internal port: 8080 (Coolify route le trafic externe vers ce port)
- Health check path:
/health - Domain: configure au niveau Coolify, pas dans l’application
- HTTPS: force automatiquement par Coolify
Reference des variables d’environnement
Pour le catalogue complet, y compris les ports de developpement, les variables frontend Vite, les chemins backup-worker et les overrides operateur, voir la Reference des variables d’environnement.
Requises (tous les deploiements)
| Variable | Description |
|---|---|
DB_USERNAME | Nom d’utilisateur PostgreSQL |
DB_PASSWORD | Mot de passe PostgreSQL |
DB_ENCRYPTION_KEY | Cle AES-256 pour le chiffrement des champs sensibles (64 caracteres hex = 32 bytes ; generation : openssl rand -hex 32) |
TIMING_TOKEN_SECRET | Secret utilise pour les tokens anti-bot bases sur le timing |
PUBLIC_LINK_PASSWORD_SESSION_SECRET | Secret de session pour les liens publics proteges par mot de passe |
CORS_ALLOWED_ORIGINS | Origines autorisees pour CORS (votre domaine) |
Email (optionnel mais recommande)
| Variable | Description |
|---|---|
SMTP_HOST | Hostname du serveur SMTP |
SMTP_PORT | Port SMTP (generalement 587) |
SMTP_USERNAME | Nom d’utilisateur SMTP |
SMTP_PASSWORD | Mot de passe SMTP |
SMTP_AUTH | Active l’authentification SMTP (par defaut : true) |
SMTP_STARTTLS | Active STARTTLS (par defaut : true) |
Backup (optionnel)
| Variable | Description |
|---|---|
BACKUP_ENABLED | Active les backups planifies (par defaut : false) |
BACKUP_CRON | Expression cron (par defaut : 0 0 2 * * *, soit 2h tous les jours) |
BACKUP_RCLONE_REMOTE | Remote rclone pour le stockage hors site |
BACKUP_GPG_RECIPIENT | Identifiant de cle GPG pour chiffrer les backups |
Securite (optionnel)
| Variable | Description |
|---|---|
FEATURE_2FA_ENABLED | Active l’authentification a deux facteurs (par defaut : true) |
SECURITY_BOT_DETECTION_ENABLED | Active la couche de detection de bots (par defaut : true) |
GEOIP_ENABLED | Active le controle GeoIP (par defaut : false) |
Fonctionnalites
| Variable | Description |
|---|---|
PDF_ENABLED | Active la generation PDF (par defaut : true) |
NOTIFICATIONS_ENABLED | Active le systeme de notifications (par defaut : true) |
NOTIFICATIONS_EMAIL_ENABLED | Active l’envoi email des notifications (par defaut : false) |
LOG_LEVEL | Niveau de logs applicatif (par defaut : ERROR) |
Ressources serveur minimales
| Deploiement | RAM | CPU | Disque |
|---|---|---|---|
| Evaluation / usage solo | 2 GB | 1 coeur | 10 GB SSD |
| Petite equipe (5-10 utilisateurs) | 4 GB | 2 coeurs | 20 GB SSD |
| Equipe moyenne (10-50 utilisateurs) | 8 GB | 4 coeurs | 50 GB SSD |
Ces chiffres sont prudents. La consommation reelle depend de la taille du catalogue, du volume d’offres et de la frequence de generation PDF.