Przejdź do treści
Q
QuoteNode

Wiki

Opcje wdrożenia

Jak wdrażać QuoteNode: Docker Compose, Coolify i topologia produkcyjna.

Opcje wdrożenia

QuoteNode wspiera kilka modeli wdrożenia opartych o kontenery Docker. Wybierz podejście pasujące do Twojej infrastruktury.

Docker Compose

Standardowe wdrożenie używa jednego pliku docker-compose.yml, który uruchamia wszystkie usługi:

docker compose up -d

Topologia produkcyjna

Internet


Caddy (port 80/443, automatyczne HTTPS)
  ├── /api/*     → Backend (Java 25, port 8080)
  ├── /offer/*   → Backend (publiczne strony ofert)
  └── /*         → Frontend (Vue 3, statyczne assety)

Backend → PostgreSQL (port 5432)
Backend → Gotenberg (port 3000, generowanie PDF)

backup-worker → PostgreSQL (zaplanowane backupy)

Usługi

KontenerObrazRola
frontendVue 3 + CaddySerwuje SPA i proxy’uje API
backendJava 25 / Spring BootREST API, logika biznesowa, PDF
postgresPostgreSQL 16 AlpineBaza danych
gotenbergGotenberg 8Konwersja HTML do PDF
backup-workerten sam obraz co backendBackupy bazy i plików

Trwałe wolumeny

WolumenZawartość
postgres_prod_datapliki bazy danych
backend_prod_uploadsobrazy produktów, logotypy
backend_prod_pdfswygenerowane PDF-y
backend_prod_backupsarchiwa backupów
backend_prod_geoipbaza MaxMind GeoIP

Wdrożenie przez Coolify

Coolify to open-source’owy, self-hostowalny PaaS działający na własnym serwerze. QuoteNode ma osobny plik docker-compose.coolify.yml zoptymalizowany pod ten model.

Najważniejsze różnice względem zwykłego Compose

  • Coolify zarządza TLS — własny proxy Coolify obsługuje certyfikaty i routing
  • Zmienne środowiskowe trafiają przez UI Coolify
  • Health checki są monitorowane przez samą platformę
  • Dostępne są dwa tryby wdrożenia:

Tryb A — build ze źródeł

Coolify klonuje repozytorium i buduje obrazy przy deployu.

  • wolniejsze wdrożenia,
  • brak potrzeby osobnego CI/CD,
  • dobre na start.

Tryb B — obrazy pre-built

GitHub Actions buduje obrazy i wypycha je do GHCR, a Coolify tylko je pobiera.

  • szybsze wdrożenia,
  • wymaga ustawionego pipeline’u CI/CD,
  • rekomendowane w produkcji.

Release metadata i publiczny manifest aktualizacji

Pipeline release generuje też mały publiczny manifest, którego działające instalacje QuoteNode używają do wykrywania nowszego upstream release:

  • publiczny URL: https://quotenode.dev/releases/latest.json,
  • flaga frontendu: VITE_RELEASE_CHECK_ENABLED,
  • nadpisanie URL-a manifestu: VITE_RELEASE_MANIFEST_URL.

Ten mechanizm jest addytywny i odrębny od bannera reloadu w obrębie tej samej instalacji:

  • /app-version.json odpowiada na pytanie: “czy ta instalacja wdrożyła nowszy bundle frontendu?”,
  • releases/latest.json odpowiada na pytanie: “czy upstream ma już nowszy release QuoteNode?”.

Dla wdrożeń prywatnych lub offline wskaż własne lustro manifestu przez VITE_RELEASE_MANIFEST_URL albo wyłącz zewnętrzny check całkowicie.

Wymagana konfiguracja w Coolify

  • Resource type: Dockerfile albo Docker Image
  • Internal port: 8080
  • Health check path: /health
  • Domain: ustawiana po stronie Coolify
  • HTTPS: wymuszane automatycznie przez Coolify

Referencja zmiennych środowiskowych

Pełny katalog zmiennych, w tym porty developerskie, zmienne Vite i ustawienia backup-workera, znajdziesz w Referencji zmiennych środowiskowych.

Wymagane we wszystkich wdrożeniach

ZmiennaOpis
DB_USERNAMEużytkownik PostgreSQL
DB_PASSWORDhasło PostgreSQL
DB_ENCRYPTION_KEYklucz AES-256 dla szyfrowania pól wrażliwych
TIMING_TOKEN_SECRETsekret dla tokenów bot-detection
PUBLIC_LINK_PASSWORD_SESSION_SECRETsekret sesji dla chronionych linków publicznych
CORS_ALLOWED_ORIGINSdozwolone originy CORS

E-mail

ZmiennaOpis
SMTP_HOSThost SMTP
SMTP_PORTport SMTP
SMTP_USERNAMElogin SMTP
SMTP_PASSWORDhasło SMTP
SMTP_AUTHwłącza auth SMTP
SMTP_STARTTLSwłącza STARTTLS

Backup

ZmiennaOpis
BACKUP_ENABLEDwłącza backupy automatyczne
BACKUP_CRONharmonogram cron
BACKUP_RCLONE_REMOTEstorage zdalny dla backupów
BACKUP_GPG_RECIPIENTodbiorca GPG do szyfrowania backupów

Security

ZmiennaOpis
FEATURE_2FA_ENABLEDwłącza 2FA
SECURITY_BOT_DETECTION_ENABLEDwłącza bot detection
GEOIP_ENABLEDwłącza kontrolę GeoIP

Features

ZmiennaOpis
PDF_ENABLEDwłącza generowanie PDF
NOTIFICATIONS_ENABLEDwłącza system powiadomień
NOTIFICATIONS_EMAIL_ENABLEDwłącza powiadomienia e-mail
LOG_LEVELpoziom logowania

Minimalne wymagania serwera

WdrożenieRAMCPUDysk
Ewaluacja / solo use2 GB1 rdzeń10 GB SSD
Mały zespół4 GB2 rdzenie20 GB SSD
Średni zespół8 GB4 rdzenie50 GB SSD

To konserwatywne estymacje. Faktyczne zużycie zależy od wielkości katalogu, wolumenu ofert i częstotliwości generowania PDF.

Last reviewed: Recently