Przejdź do treści
Q
QuoteNode

Instalacja

Instalacja z Coolify

Wdrożenie QuoteNode za pomocą Coolify, używając paczki budującej Docker Compose oraz dedykowanego pliku compose dla Coolify.

Instalacja z Coolify

Coolify jest rekomendowaną ścieżką wdrożenia publicznej w wersji beta, gdy potrzebujesz zarządzanego HTTPS, wdrożeń opartych na Git, kontroli stanu kontenerów oraz interfejsu webowego do zarządzania zmiennymi środowiskowymi.

Ustawienia repozytorium

Utwórz aplikację z repozytorium QuoteNode i użyj poniższych ustawień:

UstawienieWartość
Build PackDocker Compose
Katalog bazowy/
Lokalizacja Docker Compose/infra/docker-compose.coolify.yml
Domena publicznaskonfiguruj tylko dla frontend, na przykład https://crm2.prodata.cc
Domena backendupozostaw pustą, chyba że wiesz, dlaczego musi być publiczna
Domena worker’a backupupozostaw pustą
Domena Gotenbergpozostaw pustą

Proxy Coolify powinno kierować domenę do usługi frontend. Backend, worker backupu, PostgreSQL i Gotenberg pozostają wewnętrzne. Nie przypisuj publicznych domen do backend, backup-worker, postgres ani gotenberg; bezpośrednie udostępnienie tych usług zwiększa powierzchnię ataku i może ominąć zamierzoną granicę frontend/proxy.

Polecenia budowania i uruchamiania

W przypadku standardowych wdrożeń Coolify pozostaw niestandardowe polecenia puste, chyba że Twoja konfiguracja Coolify tego wymaga. Jeśli Coolify wyświetla wygenerowane polecenia, mogą one wyglądać następująco:

docker compose build
docker compose up -d

Nie polegaj na ustawieniach Nixpacks Node dla środowiska uruchomieniowego QuoteNode w tym trybie. Dockerfile’y i plik Compose definiują środowisko uruchomieniowe.

Przełączniki zaawansowane

Zalecane wartości domyślne:

Opcja CoolifyRekomendacja
Inject Build Args to Dockerfilewłączone
Auto Deploywłączone dla środowiska staging, opcjonalne dla produkcji
Git Submodulestylko jeśli Twój checkout ich wymaga
LFStylko jeśli repozytorium używa zasobów Git LFS
Shallow Clonedopuszczalne
Proxy Force HTTPSwłączone
Enable Gzip Compressionwłączone
Strip Prefixespozostaw domyślne, chyba że wdrażasz pod prefiksem ścieżki

Przejrzyj Watch Paths przed ich użyciem. Ścieżka taka jak services/api/** jest nieaktualna dla tego układu repozytorium; kod backendu znajduje się w backend/**, a kod frontendu w frontend/**.

Wymagane zmienne środowiskowe

Ustaw te wartości w interfejsie środowiskowym 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
# IP klienta jest wykrywane automatycznie za wewnętrznymi proxy i CDN (w tym Cloudflare) — zostaw puste.
# Ustaw tylko dla nietypowego proxy, którego peer transportowy ma adres PUBLICZNY do zaufania (IP/CIDR lub nazwa hosta).
SECURITY_TRUSTED_PROXIES=
GEOIP_ENABLED=false
LOG_LEVEL=INFO
VITE_RELEASE_CHECK_ENABLED=true
VITE_RELEASE_MANIFEST_URL=https://quotenode.dev/releases/latest.json

Jeśli dostarczanie e-maili jest włączone, ustaw również:

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 używa formatu crona Springa z sześcioma polami, więc 0 0 2 * * * oznacza godzinę 02:00 każdego dnia.

Niektóre szablony operatora zawierają również SERVICE_URL_FRONTEND=https://<frontend-domain>. Utrzymuj je zgodnym z domeną frontendu, jeśli Twój proces wdrażania z niego korzysta. Obecny plik compose dla Coolify nie konsumuje tej zmiennej bezpośrednio; dostęp przeglądarki jest kontrolowany przez CORS_ALLOWED_ORIGINS, a linki do preferencji powiadomień używają NOTIFICATIONS_PUBLIC_PREFERENCES_URL.

Metadane wydania

Wdrożenia z kodu źródłowego w Coolify mogą pozostawić APP_VERSION pustym, chyba że budowany jest tag wydania. Ustaw metadane, gdy Twój CI lub pipeline Coolify może je dostarczyć:

# APP_VERSION może być pominięte dla wdrożeń z kodu źródłowego, dopóki nie budowany jest tag wydania.
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>

Użyj APP_CHANNEL=alpha, beta, rc, dev lub stable zgodnie z wdrażanym wydaniem.

Bezpieczeństwo licencji

Dla prawdziwych wdrożeń beta i publicznych:

LICENSE_SKIP_SIGNATURE_CHECK=false

Ustaw jawnie na false dla prawdziwych wdrożeń beta. Plik compose domyślnie ustawia również false, gdy zmienna jest pominięta, ale operatorzy produkcyjni nie powinni polegać na tej niejednoznaczności. Ustawienie na true wyłącza weryfikację autentyczności licencji i może naruszać warunki licencji; użyj tego tylko w jednorazowych środowiskach deweloperskich.

Sprawdzenia po wdrożeniu

Po tym, jak wdrożenie stanie się zdrowe w Coolify:

  1. Otwórz https://<frontend-domain>/health.
  2. Otwórz domenę frontendu w przeglądarce.
  3. Zaloguj się przy użyciu wstępnie utworzonego administratora tylko przy pierwszym uruchomieniu, następnie zmień hasło.
  4. Utwórz ofertę.
  5. Wygeneruj PDF.
  6. Utwórz i otwórz link publiczny.
  7. Jeśli e-mail jest włączony, zweryfikuj SMTP i linki do preferencji powiadomień.
  8. Sprawdź obszar administracyjny licencji/wersji pod kątem aktualnej wersji i statusu powiadomienia o wydaniu.

Typowe problemy z Coolify

  • Linki publiczne nie działają, gdy CORS_ALLOWED_ORIGINS nie zgadza się dokładnie z pochodzeniem przeglądarki.
  • Linki do preferencji e-mail nie działają, gdy NOTIFICATIONS_PUBLIC_PREFERENCES_URL nadal wskazuje na localhost lub starą domenę.
  • Gotenberg nie powinien otrzymywać publicznej domeny; jest to wewnętrzna usługa PDF.
  • Zarządzane HTTPS przez Coolify wymaga, aby domena frontendu rozwiązywała się do serwera Coolify.
  • Jeśli metadane budowania są puste, aplikacja nadal może działać, ale wyświetlanie wersji w panelu administracyjnym może pokazywać mniej szczegółów dotyczących wydania.

Last reviewed: Recently