Aller au contenu
Q
QuoteNode

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

ConteneurImageRaison d’etre
frontendVue 3 + CaddySert la SPA et proxy les requetes API
backendJava 25 / Spring BootAPI REST, logique metier, generation PDF
postgresPostgreSQL 16 AlpineBase de donnees
gotenbergGotenberg 8Conversion HTML vers PDF (basee sur Chromium)
backup-workerMeme image que le backendBackups planifies de la base et des fichiers

Volumes persistants

VolumeContenu
postgres_prod_dataFichiers de base de donnees
backend_prod_uploadsImages produit, logos entreprise
backend_prod_pdfsDocuments PDF generes
backend_prod_backupsArchives de backup
backend_prod_geoipBase 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)

VariableDescription
DB_USERNAMENom d’utilisateur PostgreSQL
DB_PASSWORDMot de passe PostgreSQL
DB_ENCRYPTION_KEYCle AES-256 pour le chiffrement des champs sensibles (64 caracteres hex = 32 bytes ; generation : openssl rand -hex 32)
TIMING_TOKEN_SECRETSecret utilise pour les tokens anti-bot bases sur le timing
PUBLIC_LINK_PASSWORD_SESSION_SECRETSecret de session pour les liens publics proteges par mot de passe
CORS_ALLOWED_ORIGINSOrigines autorisees pour CORS (votre domaine)

Email (optionnel mais recommande)

VariableDescription
SMTP_HOSTHostname du serveur SMTP
SMTP_PORTPort SMTP (generalement 587)
SMTP_USERNAMENom d’utilisateur SMTP
SMTP_PASSWORDMot de passe SMTP
SMTP_AUTHActive l’authentification SMTP (par defaut : true)
SMTP_STARTTLSActive STARTTLS (par defaut : true)

Backup (optionnel)

VariableDescription
BACKUP_ENABLEDActive les backups planifies (par defaut : false)
BACKUP_CRONExpression cron (par defaut : 0 0 2 * * *, soit 2h tous les jours)
BACKUP_RCLONE_REMOTERemote rclone pour le stockage hors site
BACKUP_GPG_RECIPIENTIdentifiant de cle GPG pour chiffrer les backups

Securite (optionnel)

VariableDescription
FEATURE_2FA_ENABLEDActive l’authentification a deux facteurs (par defaut : true)
SECURITY_BOT_DETECTION_ENABLEDActive la couche de detection de bots (par defaut : true)
GEOIP_ENABLEDActive le controle GeoIP (par defaut : false)

Fonctionnalites

VariableDescription
PDF_ENABLEDActive la generation PDF (par defaut : true)
NOTIFICATIONS_ENABLEDActive le systeme de notifications (par defaut : true)
NOTIFICATIONS_EMAIL_ENABLEDActive l’envoi email des notifications (par defaut : false)
LOG_LEVELNiveau de logs applicatif (par defaut : ERROR)

Ressources serveur minimales

DeploiementRAMCPUDisque
Evaluation / usage solo2 GB1 coeur10 GB SSD
Petite equipe (5-10 utilisateurs)4 GB2 coeurs20 GB SSD
Equipe moyenne (10-50 utilisateurs)8 GB4 coeurs50 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.

Last reviewed: Recently