Installation
Mit Coolify installieren
QuoteNode mit Coolify unter Verwendung des Docker-Compose-Build-Packs und der dedizierten Coolify-Compose-Datei bereitstellen.
Mit Coolify installieren
Coolify ist der empfohlene öffentliche Beta-Bereitstellungspfad, wenn Sie verwaltetes HTTPS, Git-basierte Deploys, Container-Health-Checks und eine Web-Oberfläche für Umgebungsvariablen wünschen.
Repository-Einstellungen
Erstellen Sie eine Anwendung aus dem QuoteNode-Repository und verwenden Sie diese Einstellungen:
| Einstellung | Wert |
|---|---|
| Build Pack | Docker Compose |
| Base Directory | / |
| Docker Compose Location | /infra/docker-compose.coolify.yml |
| Public domain | nur auf frontend konfigurieren, zum Beispiel https://crm2.prodata.cc |
| Backend domain | leer lassen, es sei denn, Sie wissen, warum sie öffentlich sein muss |
| Backup worker domain | leer lassen |
| Gotenberg domain | leer lassen |
Der Coolify-Proxy sollte die Domain an den frontend-Dienst routen. Das Backend, der Backup-Worker, PostgreSQL und Gotenberg bleiben intern. Weisen Sie backend, backup-worker, postgres oder gotenberg keine öffentlichen Domains zu; die direkte Freigabe dieser Dienste erhöht die Angriffsfläche und kann die vorgesehene Frontend/Proxy-Grenze umgehen.
Build- und Startbefehle
Für normale Coolify-Bereitstellungen lassen Sie benutzerdefinierte Befehle leer, es sei denn, Ihr Coolify-Setup erfordert sie. Wenn Coolify generierte Befehle anzeigt, können sie etwa so aussehen:
docker compose build
docker compose up -d
Verlassen Sie sich in diesem Modus nicht auf Nixpacks-Node-Einstellungen für die QuoteNode-Runtime. Die Dockerfiles und die Compose-Datei definieren die Runtime.
Erweiterte Schalter
Empfohlene Standardeinstellungen:
| Coolify-Option | Empfehlung |
|---|---|
| Inject Build Args to Dockerfile | aktiviert |
| Auto Deploy | aktiviert für Staging, optional für Produktion |
| Git Submodules | nur wenn Ihr Checkout sie benötigt |
| LFS | nur wenn das Repo Git-LFS-Assets verwendet |
| Shallow Clone | akzeptabel |
| Proxy Force HTTPS | aktiviert |
| Enable Gzip Compression | aktiviert |
| Strip Prefixes | Standard lassen, es sei denn, Sie stellen unter einem Pfad-Präfix bereit |
Überprüfen Sie Watch Paths, bevor Sie sie verwenden. Ein Pfad wie services/api/** ist für dieses Repository-Layout veraltet; Backend-Code liegt unter backend/** und Frontend-Code unter frontend/**.
Erforderliche Umgebungsvariablen
Setzen Sie diese in der Coolify-Umgebungs-UI:
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
# Die Client-IP wird hinter internen Proxys und CDNs (auch Cloudflare) automatisch erkannt — leer lassen.
# Nur für ein ungewöhnliches Proxy setzen, dessen Transport-Peer eine ÖFFENTLICHE Adresse ist (IP/CIDR oder Hostname).
SECURITY_TRUSTED_PROXIES=
GEOIP_ENABLED=false
LOG_LEVEL=INFO
VITE_RELEASE_CHECK_ENABLED=true
VITE_RELEASE_MANIFEST_URL=https://quotenode.dev/releases/latest.json
Wenn E-Mail-Zustellung aktiviert ist, setzen Sie auch:
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 verwendet das sechs-Feld-Cron-Format von Spring, also bedeutet 0 0 2 * * * täglich um 02:00 Uhr.
Einige Betreiber-Vorlagen enthalten auch SERVICE_URL_FRONTEND=https://<frontend-domain>. Halten Sie es mit der Frontend-Domain abgestimmt, wenn Ihr Bereitstellungsprozess sie verwendet. Die aktuelle Coolify-Compose-Datei verbraucht diese Variable nicht direkt; der Browser-Zugriff wird durch CORS_ALLOWED_ORIGINS gesteuert, und Benachrichtigungs-Einstellungslinks verwenden NOTIFICATIONS_PUBLIC_PREFERENCES_URL.
Release-Metadaten
Coolify-Source-Bereitstellungen können APP_VERSION leer lassen, es sei denn, ein Release-Tag wird gebaut. Setzen Sie die Metadaten, wenn Ihr CI oder Coolify-Pipeline sie bereitstellen kann:
# APP_VERSION kann für Source-Bereitstellungen ausgelassen werden, bis ein Release-Tag gebaut wird.
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>
Verwenden Sie APP_CHANNEL=alpha, beta, rc, dev oder stable je nach dem Release, den Sie bereitstellen.
Lizenzsicherheit
Für echte Beta- und öffentliche Bereitstellungen:
LICENSE_SKIP_SIGNATURE_CHECK=false
Setzen Sie es explizit auf false für echte Beta-Bereitstellungen. Die Compose-Datei standardmäßig ebenfalls auf false, wenn die Variable ausgelassen wird, aber Produktions-Betreiber sollten hier keine Ambiguität tolerieren. Das Setzen auf true deaktiviert die Lizenz-Echtheitsprüfung und kann gegen Lizenzbedingungen verstoßen; verwenden Sie das nur in wegwerfbaren Entwicklungsumgebungen.
Post-Deploy-Checks
Nachdem die Bereitstellung in Coolify gesund ist:
- Öffnen Sie
https://<frontend-domain>/health. - Öffnen Sie die Frontend-Domain in einem Browser.
- Melden Sie sich mit dem voreingestellten Administrator nur für den ersten Bootstrap an, dann ändern Sie das Passwort.
- Erstellen Sie ein Angebot.
- Generieren Sie ein PDF.
- Erstellen und öffnen Sie einen öffentlichen Link.
- Wenn E-Mail aktiviert ist, verifizieren Sie SMTP und Benachrichtigungs-Einstellungslinks.
- Prüfen Sie den Admin-Lizenz/Version-Bereich auf aktuelle Version und Release-Hinweis-Status.
Häufige Coolify-Probleme
- Öffentliche Links schlagen fehl, wenn
CORS_ALLOWED_ORIGINSnicht exakt mit dem Browser-Ursprung übereinstimmt. - E-Mail-Einstellungslinks schlagen fehl, wenn
NOTIFICATIONS_PUBLIC_PREFERENCES_URLnoch auf localhost oder eine alte Domain zeigt. - Gotenberg sollte keine öffentliche Domain erhalten; es ist ein interner PDF-Dienst.
- Coolify-verwaltetes HTTPS erfordert, dass die Frontend-Domain auf den Coolify-Server zeigt.
- Wenn Build-Metadaten leer sind, kann die Anwendung trotzdem laufen, aber die Admin-Versionsanzeige zeigt möglicherweise weniger Release-Details.