Przejdź do treści
Q
QuoteNode

Operations

Referencja zmiennych środowiskowych

Pełna referencja zmiennych środowiskowych QuoteNode dla produkcji, developmentu, Docker Compose, backup workerów i frontendu Vite.

Referencja zmiennych środowiskowych

Ta strona zbiera zmienne środowiskowe używane obecnie w projekcie QuoteNode.

Główne źródła prawdy w repozytorium aplikacji to:

  • infra/.env.prod.example
  • infra/.env.dev.example
  • infra/.env.dev-sid
  • infra/docker-compose.*.yml

Traktuj tę stronę jako katalog operatorski. Minimalną konfigurację startową znajdziesz w Instalacji, a topologię wdrożeń w Opcjach wdrożenia.

Jak czytać tę referencję

  • Prod oznacza zmienne do pliku .env dla środowiska produkcyjnego.
  • Dev oznacza lokalny development lub stack demonstracyjny.
  • Compose oznacza host-side wiring Dockera, a nie sam backend.
  • Puste wartości domyślne zwykle znaczą: “ustaw tylko wtedy, gdy naprawdę używasz tej funkcji”.

Zmienne Compose i lokalnego stacku

Te zmienne sterują lokalnym środowiskiem Docker Compose i konfiguracją proxy/API dla frontendu.

ZmiennaZakresCelTypowa wartość
COMPOSE_PROJECT_NAMEDev / ComposeChroni przed kolizją nazw kontenerów między wieloma stackami lokalnymi.quotenode-dev, quotenode-dev-sid
POSTGRES_PORTDev / ComposePort hosta mapowany do PostgreSQL.5433, 5434
MAILPIT_PORTDev / ComposePort hosta dla UI Mailpit.8025, 8026
BACKEND_PORTDev / ComposePort hosta dla backend API.8091, 8092
FRONTEND_PORTDev / ComposePort hosta dla frontendu.5174, 5175
VITE_PUBLIC_API_BASEDev / FrontendWidoczny w przeglądarce base URL API używany przez frontend Vite lokalnie.http://localhost:8091, http://localhost:8092
APP_VERSIONProd / Dev / ComposeTag obrazu Dockera wybierany przez Compose.latest, v0.9.0-alpha, v1.0.0
APP_CHANNELProd / Dev / ComposeKanał wydania produktu osadzany w build metadata i etykietach UI.alpha, stable
VITE_RELEASE_CHECK_ENABLEDProd / Dev / FrontendWłącza operatorski check dostępności nowszego release w panelu admina.true, false
VITE_RELEASE_MANIFEST_URLProd / Dev / FrontendPubliczny URL manifestu JSON używanego do checku nowszych wydań.https://quotenode.dev/releases/latest.json
PROXY_MODEProd / Dev / ComposeOkreśla, czy Caddy działa wewnątrz stacka (internal), czy używany jest zewnętrzny reverse proxy (external).internal, external
DOMAINProd / ComposePubliczna domena używana przez Caddy i URL-e publiczne przy internal.quotenode.example.com

Uwaga operatorska: QuoteNode rozdziela check runtime reloadu frontendu (/app-version.json) od checku nowszego upstream release (https://quotenode.dev/releases/latest.json). Powiadomienie o nowym wydaniu pojawia się tylko w uwierzytelnionym obszarze administracyjnym, nie wymusza natychmiastowego reloadu i można je wyłączyć przez VITE_RELEASE_CHECK_ENABLED=false.

Baza danych i podstawowy runtime

ZmiennaZakresCelTypowa wartość
DB_URLProd / DevJDBC connection string do PostgreSQL.jdbc:postgresql://postgres:5432/quotenode
DB_USERNAMEProd / DevUżytkownik bazy danych.quotenode, app
DB_PASSWORDProd / DevHasło bazy danych.losowe 32+ znaków w prod
DB_NAMEProd / Dev / ComposeNazwa bazy używana przez aplikację i Compose.quotenode, app
SPRING_PROFILES_ACTIVEProd / DevAktywny profil Spring.prod, dev
CORS_ALLOWED_ORIGINSProd / DevDozwolone originy przeglądarkowe dla API. W prod unikaj *.https://twojadomena.pl
LOG_LEVELProd / DevBazowy poziom logowania aplikacji.ERROR, INFO, DEBUG

Rotacja logów Dockera i diagnostyka supportowa

ZmiennaZakresCelTypowa wartość
DOCKER_LOG_MAX_SIZEProd / ComposeMaksymalny rozmiar pojedynczego pliku logu kontenera przed rotacją.10m
DOCKER_LOG_MAX_FILEProd / ComposeLiczba zachowywanych zrotowanych plików logów kontenera.5
SUPPORT_LOGS_BUFFER_SIZEProdRozmiar bufora podglądu logów w panelu supportowym.4000
SUPPORT_LOGS_PREVIEW_RATE_LIMIT_PER_MINUTEProdRate limit dla podglądu logów supportowych.30
SUPPORT_LOGS_LOG_LEVEL_DEFAULT_TTL_MINUTESProdCzas auto-revertu po tymczasowym podniesieniu poziomu logów.15
SUPPORT_LOGS_LOG_LEVEL_MAX_TTL_MINUTESProdMaksymalne okno czasowe dla tymczasowej eskalacji logowania.30
SUPPORT_LOGS_LOG_LEVEL_ALLOWED_SCOPESProdZakresy pakietów, którym wolno tymczasowo podnieść poziom logów.dev.quotenode,...

Uwierzytelnianie i bezpieczeństwo sesji

ZmiennaZakresCelTypowa wartość
DB_ENCRYPTION_KEYProd / DevGłówny klucz szyfrowania danych w warstwie aplikacji.64 znaki hex w prod
TIMING_TOKEN_SECRETProd / DevSekret HMAC dla tokenów ochrony timing-based.32+ losowe znaki
PUBLIC_LINK_PASSWORD_SESSION_SECRETProd / DevSekret sesji dla chronionych hasłem linków publicznych.32+ losowe znaki
AUTH_PASSWORD_MIN_LENGTHProd / DevMinimalna długość hasła.12 w prod, 8 w dev
AUTH_PASSWORD_COMPLEXITY_LEVELProd / DevPoziom złożoności hasła.2 w prod, 1 w dev
AUTH_SESSION_IDLE_TIMEOUT_MINProd / DevTimeout bezczynności sesji.30, 480
SECURITY_SESSION_ABSOLUTE_TIMEOUT_HProd / DevMaksymalny czas życia sesji niezależnie od aktywności.12, 24
SECURITY_MAX_FAILED_LOGINS_SOFTProd / DevPróg nieudanych logowań dla miękkiego ostrzeżenia.5, 10
SECURITY_MAX_FAILED_LOGINS_TEMP_LOCKProd / DevPróg nieudanych logowań dla blokady czasowej.10, 20
SECURITY_MAX_FAILED_LOGINS_HARD_LOCKProd / DevPróg nieudanych logowań dla twardej blokady.20, 50
SECURITY_TEMP_LOCK_MINUTESProd / DevCzas trwania blokady czasowej.30, 5
FEATURE_2FA_ENABLEDProd / DevGlobalny przełącznik dla 2FA.true, false
SECURITY_REQUIRE_2FA_ROLESProd / DevRole, które muszą mieć włączone 2FA.ADMIN
SECURITY_BOT_DETECTION_ENABLEDProd / DevWłącza warstwę bot-detection.true, false
SECURITY_BOT_SCORE_WARN_THRESHOLDProd / DevPróg score dla ostrzeżenia.30
SECURITY_BOT_SCORE_BLOCK_THRESHOLDProd / DevPróg score dla blokady.70
SECURITY_IP_WHITELIST_FORCE_DISABLERuntime overrideAwaryjny override operatora wyłączający egzekwowanie zapisanej whitelisty IP.false

CRM, pliki, importy i media produktów

ZmiennaZakresCelTypowa wartość
CRM_DEDUP_NAME_SIMILARITY_THRESHOLDProd / DevPróg podobieństwa pg_trgm dla ostrzeżeń o duplikatach firm.0.8
CRM_DEDUP_EMAIL_DOMAIN_WARNProd / DevOstrzega przy zgodności domen e-mail z istniejącymi rekordami.true
CRM_ATTACHMENT_MAX_SIZE_MBProd / DevMaksymalny rozmiar załącznika CRM.25, 10
CRM_ATTACHMENT_ALLOWED_TYPESProd / DevDozwolone rozszerzenia załączników CRM.pdf,doc,docx,...
CSV_IMPORT_MAX_ROWSProd / DevLimit wierszy dla importów CSV.5000
STORAGE_PATHProd / DevGłówny katalog uploadów./data/uploads, ./data/uploads
PIM_MEDIA_MAX_SIZE_MBProd / DevMaksymalny rozmiar pojedynczego obrazu produktu.5, 10
PIM_MEDIA_MAX_PER_PRODUCTProd / DevMaksymalna liczba mediów dla jednego produktu.5, 10
PIM_MEDIA_THUMBNAIL_WIDTHProd / DevSzerokość miniatur w pikselach.300
PIM_MEDIA_ALLOWED_TYPESProd / DevDozwolone rozszerzenia mediów produktowych.jpg,jpeg,png,webp,svg
IMPORT_ZIP_MAX_SIZE_MBProd / DevMaksymalny rozmiar ZIP dla batch importu obrazów.100
IMPORT_ZIP_MAX_IMAGESProd / DevMaksymalna liczba obrazów w jednym ZIP-ie.1000
IMPORT_IMAGE_MAX_SIZE_MBProd / DevMaksymalny rozmiar pojedynczego obrazu w imporcie ZIP.5
IMPORT_IMAGE_FUZZY_THRESHOLDProd / DevPróg fuzzy matchingu nazwy pliku do produktu.0.82

Dostawy, FX i ustawienia ofert

ZmiennaZakresCelTypowa wartość
SHIPPING_DEFAULT_VOLUMETRIC_DIVISORProd / DevDzielnik wagi wolumetrycznej w kalkulacji dostawy.4000
SHIPPING_OVERRIDE_REQUIRES_REASONProd / DevWymaga uzasadnienia przy ręcznej zmianie kosztu dostawy.true
FX_PROVIDERProd / DevŹródło kursów FX.NBP, MOCK, ECB, CUSTOM
FX_PROVIDER_URLProd / DevNadpisanie URL-a dla własnego providera FX.puste, jeśli nie CUSTOM
FX_REFRESH_INTERVAL_MINProd / DevCzęstotliwość automatycznego odświeżania kursów.60, 0
FX_DEFAULT_MARGIN_PERCENTProd / DevDomyślna marża procentowa nakładana na kurs providera.0
FX_DEVIATION_WARN_PERCENTProd / DevPróg ostrzeżenia dla ręcznie korygowanych kursów.3
FX_DEVIATION_BLOCK_PERCENTProd / DevPróg blokady dla ręcznie korygowanych kursów.8
OFFER_NUMBER_PREFIXProd / DevPrefiks numeracji ofert.OF

E-mail, linki publiczne i powiadomienia

ZmiennaZakresCelTypowa wartość
SMTP_HOSTProd / DevHost SMTP do wysyłki ofert i powiadomień.host dostawcy, localhost
SMTP_PORTProd / DevPort SMTP.587, 1025, 1026
SMTP_USERNAMEProd / DevLogin SMTP.konto dostawcy
SMTP_PASSWORDProd / DevHasło SMTP.sekret dostawcy
SMTP_AUTHProd / DevWłącza uwierzytelnianie SMTP.true, false
SMTP_STARTTLSProd / DevWłącza negocjację STARTTLS.true, false
PUBLIC_LINK_TOKEN_BYTESProd / DevEntropia dla tokenów linków publicznych.32
PUBLIC_LINK_DEFAULT_EXPIRY_DAYSProd / DevDomyślny czas ważności linków publicznych.0 = bez terminu
PUBLIC_RATE_LIMIT_OPEN_PER_HOURProd / DevLimit godzinowy dla otwierania publicznych endpointów oferty.60, 999
PUBLIC_RATE_LIMIT_ACTION_PER_HOURProd / DevLimit godzinowy dla akcji publicznych, np. akceptacji/odrzucenia.5, 999
TRACKING_IP_ANONYMIZEProd / DevWłącza anonimizację IP w danych trackingowych.false
TRACKING_IP_ANONYMIZE_AFTER_DAYSProd / DevOpóźniona anonimizacja IP po określonej liczbie dni.0
TRACKING_RETENTION_DAYSProd / DevOkres retencji dla danych śledzenia linków publicznych.365
CLIENT_CONFIRM_EMAIL_ENABLEDProd / DevWysyła klientowi e-mail potwierdzający po akceptacji.false
NOTIFICATIONS_ENABLEDProd / DevWłącza subsystem powiadomień.true
NOTIFICATIONS_EMAIL_ENABLEDProd / DevWłącza dostarczanie powiadomień e-mailem.true, false
NOTIFICATIONS_PUBLIC_PREFERENCES_URLProdPubliczny URL do zarządzania preferencjami powiadomień.https://twojadomena.pl/notifications/preferences
NOTIFICATIONS_PREFERENCE_TOKEN_TTL_DAYSProdCzas ważności tokenu preferencji powiadomień.30
NOTIFICATIONS_OFFER_EXPIRY_WARN_DAYSProd / DevHarmonogram przypomnień przed wygaśnięciem ofert.7,2
NOTIFICATIONS_LICENSE_EXPIRY_WARN_DAYSProd / DevHarmonogram przypomnień przed wygaśnięciem licencji.30,14,7,1
REMINDERS_JOB_INTERVAL_MINUTESProd / DevCzęstotliwość wykonywania joba przypomnień.5

Generowanie PDF

ZmiennaZakresCelTypowa wartość
PDF_ENABLEDProd / DevWłącza generowanie PDF.true, false
PDF_GOTENBERG_URLProd / DevWewnętrzny URL usługi Gotenberg.http://gotenberg:3000
PDF_SYNC_TIMEOUT_MSProd / DevTimeout dla synchronicznego generowania PDF.10000, 5000
PDF_SYNC_MAX_ITEMSProd / DevMaksymalna liczba pozycji oferty nadal obsługiwana synchronicznie.50
PDF_STORAGE_PATHProd / DevŚcieżka do katalogu przechowującego wygenerowane PDF-y./data/pdfs, ./data/pdfs
PDF_RETENTION_DAYSProd / DevCzas retencji wygenerowanych PDF-ów.365
PDF_RETRY_BACKOFF_SECONDSProd / DevHarmonogram retry dla async PDF jobs.30,120,600
PDF_WORKER_CONCURRENCYProd / DevWspółbieżność workera PDF.2
PDF_WORKER_POLL_INTERVAL_MSProd / DevInterwał odpytywania workerów PDF.2000

Licencjonowanie, raporty i utrzymanie

ZmiennaZakresCelTypowa wartość
LICENSE_SKIP_SIGNATURE_CHECKProd / DevOmija walidację podpisu licencji. Nigdy nie włączaj w produkcji.false, true
LICENSE_EXPIRY_CHECK_INTERVAL_HProd / DevCzęstotliwość kontroli wygaśnięcia licencji.24
REPORTS_DEFAULT_PERIOD_DAYSProd / DevDomyślny zakres dat dla raportów.30
REPORTS_EXPORT_MAX_ROWSProd / DevLimit wierszy dla eksportów raportów.10000

Backupy, GeoIP i operacje prywatności

ZmiennaZakresCelTypowa wartość
BACKUP_ENABLEDProd / DevWłącza zaplanowane backupy.true, false
BACKUP_CRONProd / DevHarmonogram cron dla automatycznych backupów.0 0 2 * * *
BACKUP_RETENTION_DAILYProd / DevLiczba backupów dziennych do zachowania.7
BACKUP_RETENTION_WEEKLYProd / DevLiczba backupów tygodniowych do zachowania.4
BACKUP_RETENTION_MONTHLYProd / DevLiczba backupów miesięcznych do zachowania.12
BACKUP_LOCAL_DIRRuntime / ComposeLokalny katalog używany przez skrypty backupu i kontenery backup-workera./app/data/backups
BACKUP_GPG_RECIPIENTProd / DevOdbiorca GPG do szyfrowania backupów.fingerprint lub e-mail
BACKUP_RCLONE_REMOTEProd / DevCel rclone dla offsite backupów.s3:bucket/path
BACKUP_ENCRYPTION_ENABLEDRuntime overrideWewnętrzny lub smoke-testowy przełącznik zachowania szyfrowania backupów.false
GEOIP_ENABLEDProd / DevWłącza kontrolę dostępu opartą o GeoIP.false
GEOIP_DB_PATHProd / DevŚcieżka do bazy MaxMind GeoIP./app/data/geoip/...
SECURITY_GEOIP_ALLOWED_COUNTRIESProd / DevAllowlista krajów ISO dla GeoIP.puste lub PL,DE,CZ
MAXMIND_ACCOUNT_IDProdKonto MaxMind do pobierania GeoLite.account ID
MAXMIND_LICENSE_KEYProdKlucz licencyjny MaxMind.sekret
GEOIP_EDITION_IDProdIdentyfikator edycji MaxMind.GeoLite2-Country
GDPR_ANONYMIZE_AUTO_AFTER_DAYSProd / DevHoryzont automatycznej anonimizacji w workflow prywatności.0

Praktyczne wskazówki

  • Dla realnych wdrożeń startuj od szablonu produkcyjnego, a dla pracy lokalnej od szablonu developerskiego.
  • DB_ENCRYPTION_KEY, TIMING_TOKEN_SECRET, PUBLIC_LINK_PASSWORD_SESSION_SECRET i dane SMTP traktuj jako sekrety, które trzeba bezpiecznie backupować.
  • Compose-only porty i zmienne frontendu trzymaj poza produkcyjnym .env, chyba że Twój model wdrożenia wyraźnie ich wymaga.
  • Jeśli potrzebujesz tylko najmniejszego sensownego zestawu ustawień dla startu, Instalacja jest celowo krótsza od tej referencji.

Last reviewed: Recently