Installation
Installer avec Coolify
Déployer QuoteNode avec Coolify en utilisant le build pack Docker Compose et le fichier compose dédié Coolify.
Installer avec Coolify
Coolify est le chemin de déploiement public beta recommandé lorsque vous souhaitez du HTTPS géré, des déploiements basés sur Git, des health checks de conteneurs et une interface web pour les variables d’environnement.
Paramètres du dépôt
Créez une application depuis le dépôt QuoteNode et utilisez ces paramètres :
| Paramètre | Valeur |
|---|---|
| Build Pack | Docker Compose |
| Base Directory | / |
| Docker Compose Location | /infra/docker-compose.coolify.yml |
| Public domain | configuré sur frontend uniquement, par exemple https://crm2.prodata.cc |
| Backend domain | laissez vide sauf si vous savez pourquoi il doit être public |
| Backup worker domain | laissez vide |
| Gotenberg domain | laissez vide |
Le proxy de Coolify doit router le domaine vers le service frontend. Le backend, le backup worker, PostgreSQL et Gotenberg restent internes. N’attribuez pas de domaines publics à backend, backup-worker, postgres ou gotenberg ; exposer ces services directement augmente la surface d’attaque et peut contourner la frontière frontend/proxy prévue.
Commandes de build et de démarrage
Pour les déploiements Coolify normaux, laissez les commandes personnalisées vides sauf si votre setup Coolify les requiert. Si Coolify affiche des commandes générées, elles peuvent ressembler à :
docker compose build
docker compose up -d
Ne comptez pas sur les paramètres Nixpacks Node pour le runtime QuoteNode dans ce mode. Les Dockerfiles et le fichier Compose définissent le runtime.
Options avancées
Valeurs par défaut recommandées :
| Option Coolify | Recommandation |
|---|---|
| Inject Build Args to Dockerfile | activé |
| Auto Deploy | activé pour staging, optionnel pour production |
| Git Submodules | uniquement si votre checkout en a besoin |
| LFS | uniquement si le repo utilise des assets Git LFS |
| Shallow Clone | acceptable |
| Proxy Force HTTPS | activé |
| Enable Gzip Compression | activé |
| Strip Prefixes | laissez la valeur par défaut sauf déploiement sous un préfixe de chemin |
Vérifiez les Watch Paths avant de les utiliser. Un chemin tel que services/api/** est obsolète pour la structure de ce dépôt ; le code backend vit sous backend/** et le code frontend sous frontend/**.
Variables d’environnement requises
Définissez ces variables dans l’interface environnement de Coolify :
DB_NAME=quotenode
DB_USERNAME=quotenode
DB_PASSWORD=<random-32+-characters>
DB_URL=jdbc:postgresql://postgres:5432/quotenode
DB_ENCRYPTION_KEY=<64-hex-characters>
TIMING_TOKEN_SECRET=<random-32+-characters>
PUBLIC_LINK_PASSWORD_SESSION_SECRET=<random-32+-characters>
CORS_ALLOWED_ORIGINS=https://<frontend-domain>
NOTIFICATIONS_PUBLIC_PREFERENCES_URL=https://<frontend-domain>/notifications/preferences
PDF_ENABLED=true
NOTIFICATIONS_ENABLED=true
NOTIFICATIONS_EMAIL_ENABLED=false
FEATURE_2FA_ENABLED=true
BACKUP_ENABLED=false
BACKUP_CRON=0 0 2 * * *
SECURITY_BOT_DETECTION_ENABLED=true
# L'IP du client est détectée automatiquement derrière des proxys internes et des CDN (Cloudflare inclus) — laisser vide.
# À définir uniquement pour un proxy inhabituel dont le pair de transport est une adresse PUBLIQUE à approuver (IP/CIDR ou nom d'hôte).
SECURITY_TRUSTED_PROXIES=
GEOIP_ENABLED=false
LOG_LEVEL=INFO
VITE_RELEASE_CHECK_ENABLED=true
VITE_RELEASE_MANIFEST_URL=https://quotenode.dev/releases/latest.json
Si la livraison d’emails est activée, définissez aussi :
NOTIFICATIONS_EMAIL_ENABLED=true
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USERNAME[email protected]
SMTP_PASSWORD=<smtp-password>
SMTP_AUTH=true
SMTP_STARTTLS=true
BACKUP_CRON utilise le format cron à six champs de Spring, donc 0 0 2 * * * signifie 02h00 tous les jours.
Certains templates opérateurs incluent aussi SERVICE_URL_FRONTEND=https://<frontend-domain>. Gardez-le aligné avec le domaine frontend si votre processus de déploiement l’utilise. Le fichier compose Coolify actuel ne consomme pas cette variable directement ; l’accès navigateur est contrôlé par CORS_ALLOWED_ORIGINS, et les liens de préférence de notification utilisent NOTIFICATIONS_PUBLIC_PREFERENCES_URL.
Métadonnées de release
Les déploiements Coolify depuis les sources peuvent laisser APP_VERSION vide sauf si un tag de release est en cours de build. Définissez les métadonnées quand votre CI ou pipeline Coolify peut les fournir :
# APP_VERSION peut etre omis pour les deploiements source jusqu'a ce qu'un tag de release soit build.
APP_CHANNEL=beta
APP_COMMIT_SHA=<commit-sha>
APP_BUILD_TIME=<iso-time>
APP_BUILD_NUMBER=<build-number>
APP_SOURCE_REF=<branch-or-tag>
APP_IMAGE_TAG=<image-tag>
Utilisez APP_CHANNEL=alpha, beta, rc, dev, ou stable selon la release que vous déployez.
Sécurité de la licence
Pour les vrais déploiements beta et publics :
LICENSE_SKIP_SIGNATURE_CHECK=false
Définissez-la explicitement à false pour les vrais déploiements beta. Le fichier compose defaulte aussi à false quand la variable est omise, mais les opérateurs de production ne devraient pas compter sur l’ambiguïté ici. La mettre à true désactive la vérification d’authenticité de la licence et peut violer les termes de licence ; utilisez cela uniquement dans des environnements de développement jetables.
Vérifications post-déploiement
Après que le déploiement est sain dans Coolify :
- Ouvrez
https://<frontend-domain>/health. - Ouvrez le domaine frontend dans un navigateur.
- Connectez-vous avec l’administrateur seed uniquement pour le premier bootstrap, puis changez le mot de passe.
- Créez une offre.
- Générez un PDF.
- Créez et ouvrez un lien public.
- Si l’email est activé, vérifiez SMTP et les liens de préférence de notification.
- Vérifiez la zone admin licence/version pour la version courante et le statut de notification de release.
Problèmes Coolify courants
- Les liens publics échouent quand
CORS_ALLOWED_ORIGINSne correspond pas exactement à l’origine navigateur. - Les liens de préférence email échouent quand
NOTIFICATIONS_PUBLIC_PREFERENCES_URLpointe encore vers localhost ou un ancien domaine. - Gotenberg ne devrait pas recevoir de domaine public ; c’est un service PDF interne.
- Le HTTPS géré par Coolify nécessite que le domaine frontend resolve vers le serveur Coolify.
- Si les métadonnées de build sont vides, l’application peut toujours fonctionner, mais l’affichage de version admin peut montrer moins de détails de release.