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.

Zmienna Zakres Cel Typowa wartość
COMPOSE_PROJECT_NAME Dev / Compose Chroni przed kolizją nazw kontenerów między wieloma stackami lokalnymi. quotenode-dev, quotenode-dev-sid
POSTGRES_PORT Dev / Compose Port hosta mapowany do PostgreSQL. 5433, 5434
PG_JIT Dev / Compose Kompilacja JIT PostgreSQL. Domyślnie wyłączona — rzadko pomaga przy tym obciążeniu OLTP. Ustaw on, aby włączyć. off
MAILPIT_PORT Dev / Compose Port hosta dla UI Mailpit. 8025, 8026
BACKEND_PORT Dev / Compose Port hosta dla backend API. 8091, 8092
FRONTEND_PORT Dev / Compose Port hosta dla frontendu. 5174, 5175
VITE_PUBLIC_API_BASE Dev / Frontend Widoczny w przeglądarce base URL API używany przez frontend Vite lokalnie. http://localhost:8091, http://localhost:8092
APP_VERSION Prod / Dev / Compose Tag obrazu Dockera wybierany przez Compose. latest, v0.9.0-alpha, v1.0.0
APP_CHANNEL Prod / Dev / Compose Kanał wydania produktu osadzany w build metadata i etykietach UI. alpha, stable
VITE_RELEASE_CHECK_ENABLED Prod / Dev / Frontend Włącza operatorski check dostępności nowszego release w panelu admina. true, false
VITE_RELEASE_MANIFEST_URL Prod / Dev / Frontend Publiczny URL manifestu JSON używanego do checku nowszych wydań. https://quotenode.dev/releases/latest.json
PROXY_MODE Prod / Dev / Compose Określa, czy Caddy działa wewnątrz stacka (internal), czy używany jest zewnętrzny reverse proxy (external). internal, external
DOMAIN Prod / Compose Publiczna domena używana przez Caddy i URL-e publiczne przy internal. quotenode.example.com
SECURITY_TRUSTED_PROXIES Prod / Dev / Compose Zwykle puste — IP klienta jest wykrywane automatycznie za wewnętrznymi proxy (zakresy prywatne/loopback) i CDN-ami jak Cloudflare (przez CF-Connecting-IP). Nagłówki przekazujące od bezpośredniego (niewewnętrznego) peera są ignorowane. Ustaw tylko dla nietypowego proxy, którego peer transportowy ma adres publiczny. puste, 203.0.113.5/32

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

Zmienna Zakres Cel Typowa wartość
DB_URL Prod / Dev JDBC connection string do PostgreSQL. jdbc:postgresql://postgres:5432/quotenode
DB_USERNAME Prod / Dev Użytkownik bazy danych. quotenode, app
DB_PASSWORD Prod / Dev Hasło bazy danych. losowe 32+ znaków w prod
DB_NAME Prod / Dev / Compose Nazwa bazy używana przez aplikację i Compose. quotenode, app
DB_AUTO_MIGRATE Prod / Dev Automatyczna migracja głównej wersji PostgreSQL przy starcie (używane przez stack-up.sh). Domyślnie wyłączona; gdy true, starszy wolumen danych jest najpierw kopiowany i migrowany przed startem stacku. false
SPRING_PROFILES_ACTIVE Prod / Dev Aktywny profil Spring. prod, dev
CORS_ALLOWED_ORIGINS Prod / Dev Dozwolone originy przeglądarkowe dla API. W prod unikaj *. https://twojadomena.pl
LOG_LEVEL Prod / Dev Bazowy poziom logowania aplikacji. ERROR, INFO, DEBUG

Rotacja logów Dockera i diagnostyka supportowa

Zmienna Zakres Cel Typowa wartość
DOCKER_LOG_MAX_SIZE Prod / Compose Maksymalny rozmiar pojedynczego pliku logu kontenera przed rotacją. 10m
DOCKER_LOG_MAX_FILE Prod / Compose Liczba zachowywanych zrotowanych plików logów kontenera. 5
SUPPORT_LOGS_BUFFER_SIZE Prod Rozmiar bufora podglądu logów w panelu supportowym. 4000
SUPPORT_LOGS_PREVIEW_RATE_LIMIT_PER_MINUTE Prod Rate limit dla podglądu logów supportowych. 30
SUPPORT_LOGS_LOG_LEVEL_DEFAULT_TTL_MINUTES Prod Czas auto-revertu po tymczasowym podniesieniu poziomu logów. 15
SUPPORT_LOGS_LOG_LEVEL_MAX_TTL_MINUTES Prod Maksymalne okno czasowe dla tymczasowej eskalacji logowania. 30
SUPPORT_LOGS_LOG_LEVEL_ALLOWED_SCOPES Prod Zakresy pakietów, którym wolno tymczasowo podnieść poziom logów. dev.quotenode,...

Uwierzytelnianie i bezpieczeństwo sesji

Zmienna Zakres Cel Typowa wartość
DB_ENCRYPTION_KEY Prod / Dev Główny klucz szyfrowania danych w warstwie aplikacji. 64 znaki hex w prod
TIMING_TOKEN_SECRET Prod / Dev Sekret HMAC dla tokenów ochrony timing-based. 32+ losowe znaki
PUBLIC_LINK_PASSWORD_SESSION_SECRET Prod / Dev Sekret sesji dla chronionych hasłem linków publicznych. 32+ losowe znaki
AUTH_PASSWORD_MIN_LENGTH Prod / Dev Minimalna długość hasła. 12 w prod, 8 w dev
AUTH_PASSWORD_COMPLEXITY_LEVEL Prod / Dev Poziom złożoności hasła. 2 w prod, 1 w dev
AUTH_SESSION_IDLE_TIMEOUT_MIN Prod / Dev Timeout bezczynności sesji. 30, 480
SECURITY_SESSION_ABSOLUTE_TIMEOUT_H Prod / Dev Maksymalny czas życia sesji niezależnie od aktywności. 12, 24
SECURITY_MAX_FAILED_LOGINS_SOFT Prod / Dev Próg nieudanych logowań dla miękkiego ostrzeżenia. 5, 10
SECURITY_MAX_FAILED_LOGINS_TEMP_LOCK Prod / Dev Próg nieudanych logowań dla blokady czasowej. 10, 20
SECURITY_MAX_FAILED_LOGINS_HARD_LOCK Prod / Dev Próg nieudanych logowań dla twardej blokady. 20, 50
SECURITY_TEMP_LOCK_MINUTES Prod / Dev Czas trwania blokady czasowej. 30, 5
FEATURE_2FA_ENABLED Prod / Dev Globalny przełącznik dla 2FA. true, false
SECURITY_REQUIRE_2FA_ROLES Prod / Dev Role, które muszą mieć włączone 2FA. ADMIN
SECURITY_BOT_DETECTION_ENABLED Prod / Dev Włącza warstwę bot-detection. true, false
SECURITY_BOT_SCORE_WARN_THRESHOLD Prod / Dev Próg score dla ostrzeżenia. 30
SECURITY_BOT_SCORE_BLOCK_THRESHOLD Prod / Dev Próg score dla blokady. 70
SECURITY_IP_WHITELIST Prod / Dev Operatorska lista dozwolonych IP (literalne IP/CIDR oddzielone przecinkami). Po włączeniu lista obejmuje całą powierzchnię administracyjną — logowanie, wyzwanie 2FA i każdą uwierzytelnioną trasę administracyjną — pozostawiając dostępne tylko health/infra oraz publiczne endpointy dla klientów. Gdy ustawiona, jest nadrzędna wobec listy tenanta w aplikacji i tylko do odczytu w UI; lista operatora jest egzekwowana przy starcie bez auto-rollbacku, więc upewnij się, że Twój adres jest objęty. Puste = obowiązuje ustawienie tenanta (jeśli istnieje). Rozpoznaje klientów przez SECURITY_TRUSTED_PROXIES. puste, 203.0.113.10,198.51.100.0/24
SECURITY_IP_WHITELIST_FORCE_DISABLE Runtime override Awaryjny override operatora wyłączający egzekwowanie zapisanej whitelisty IP (sprawdzany przed parsowaniem listy, więc odzyskuje też dostęp przy nieprawidłowej zapisanej liście — a ponieważ whitelista bramkuje teraz logowanie, przywraca możliwość zalogowania się). Wymaga restartu; tylko ENV, nigdy z UI. Wyłącza wyłącznie whitelistę IP — nie GeoIP, detekcję botów ani rate limiting. false
SECURITY_IP_WHITELIST_CONFIRMATION_WINDOW_SECONDS Prod / Dev Jak długo włączenie/zawężenie whitelisty w aplikacji pozostaje oczekujące na ponowne potwierdzenie, zanim automatycznie wróci do poprzedniej listy (ochrona przed blokadą). Sesja edytująca potwierdza automatycznie, gdy jej bieżący adres jest objęty. 120

CRM, pliki, importy i media produktów

Zmienna Zakres Cel Typowa wartość
CRM_DEDUP_NAME_SIMILARITY_THRESHOLD Prod / Dev Próg podobieństwa pg_trgm dla ostrzeżeń o duplikatach firm. 0.8
CRM_DEDUP_EMAIL_DOMAIN_WARN Prod / Dev Ostrzega przy zgodności domen e-mail z istniejącymi rekordami. true
CRM_ATTACHMENT_MAX_SIZE_MB Prod / Dev Maksymalny rozmiar załącznika CRM. 25, 10
CRM_ATTACHMENT_ALLOWED_TYPES Prod / Dev Dozwolone rozszerzenia załączników CRM. pdf,doc,docx,...
CSV_IMPORT_MAX_ROWS Prod / Dev Limit wierszy dla importów CSV (CRM). 5000
APP_PRODUCT_IMPORT_MAX_ROWS Prod / Dev Limit wierszy dla importów produktów (CSV/XLSX). 50000
STORAGE_PATH Prod / Dev Główny katalog uploadów. /data/uploads, ./data/uploads
PIM_MEDIA_MAX_SIZE_MB Prod / Dev Maksymalny rozmiar pojedynczego obrazu produktu. 3, 5
PIM_MEDIA_MAX_PER_PRODUCT Prod / Dev Maksymalna liczba mediów dla jednego produktu. 5, 10
PIM_MEDIA_THUMBNAIL_WIDTH Prod / Dev Szerokość miniatur w pikselach. 300
PIM_MEDIA_ALLOWED_TYPES Prod / Dev Dozwolone rozszerzenia mediów produktowych. jpg,jpeg,png,webp,svg
PIM_MEDIA_MAX_MEGAPIXELS Prod / Dev Odrzuca obrazy, których wymiary w pikselach przekraczają tę liczbę megapikseli — sprawdzane z nagłówka przed pełnym dekodowaniem (ochrona pamięci przed bombami dekompresji). 40
PIM_MEDIA_OPTIMIZE_ENABLED Prod / Dev Skalowanie i ponowne kodowanie przechowywanego oryginału przy uploadzie. false zachowuje oryginały bez zmian. true
PIM_MEDIA_OPTIMIZE_MAX_DIMENSION Prod / Dev Limit dłuższego boku (px) przechowywanego oryginału przy włączonej optymalizacji (oferty zawsze używają miniatury 300 px). 2560
PIM_MEDIA_OPTIMIZE_QUALITY Prod / Dev Jakość ponownego kodowania JPEG (0.01.0) przy optymalizacji obrazów. 0.85
IMPORT_ZIP_MAX_SIZE_MB Prod / Dev Maksymalny rozmiar ZIP dla batch importu obrazów. 100
IMPORT_ZIP_MAX_IMAGES Prod / Dev Maksymalna liczba obrazów w jednym ZIP-ie. 1000
IMPORT_IMAGE_MAX_SIZE_MB Prod / Dev Maksymalny rozmiar pojedynczego obrazu w imporcie ZIP. 5
IMPORT_IMAGE_FUZZY_THRESHOLD Prod / Dev Próg fuzzy matchingu nazwy pliku do produktu. 0.82
MULTIPART_MAX_FILE_SIZE Prod / Dev Globalny sufit dla pojedynczego pliku — koperta uploadu. Limity per-funkcja powyżej są egzekwowane osobno i są niższe. Dobrany pod największy upload: archiwum ZIP z obrazami. 200MB
MULTIPART_MAX_REQUEST_SIZE Prod / Dev Globalny sufit całego żądania multipart, np. wieloplikowego uploadu obrazów. 220MB
MULTIPART_FILE_SIZE_THRESHOLD Prod / Dev Uploady większe niż to są zrzucane do pliku tymczasowego zamiast pamięci — poza heapem JVM. 2MB

Dostawy, FX i ustawienia ofert

Zmienna Zakres Cel Typowa wartość
SHIPPING_DEFAULT_VOLUMETRIC_DIVISOR Prod / Dev Dzielnik wagi wolumetrycznej w kalkulacji dostawy. 4000
SHIPPING_OVERRIDE_REQUIRES_REASON Prod / Dev Wymaga uzasadnienia przy ręcznej zmianie kosztu dostawy. true
FX_PROVIDER Prod / Dev Źródło kursów FX. NBP, MOCK, ECB, CUSTOM
FX_PROVIDER_URL Prod / Dev Nadpisanie URL-a dla własnego providera FX. puste, jeśli nie CUSTOM
FX_REFRESH_INTERVAL_MIN Prod / Dev Częstotliwość automatycznego odświeżania kursów. 60, 0
FX_DEFAULT_MARGIN_PERCENT Prod / Dev Domyślna marża procentowa nakładana na kurs providera. 0
FX_DEVIATION_WARN_PERCENT Prod / Dev Próg ostrzeżenia dla ręcznie korygowanych kursów. 3
FX_DEVIATION_BLOCK_PERCENT Prod / Dev Próg blokady dla ręcznie korygowanych kursów. 8
OFFER_NUMBER_PREFIX Prod / Dev Prefiks numeracji ofert. OF

E-mail, linki publiczne i powiadomienia

Zmienna Zakres Cel Typowa wartość
SMTP_HOST Prod / Dev Host SMTP do wysyłki ofert i powiadomień. host dostawcy, localhost
SMTP_PORT Prod / Dev Port SMTP. 587, 1025, 1026
SMTP_USERNAME Prod / Dev Login SMTP. konto dostawcy
SMTP_PASSWORD Prod / Dev Hasło SMTP. sekret dostawcy
SMTP_AUTH Prod / Dev Włącza uwierzytelnianie SMTP. true, false
SMTP_STARTTLS Prod / Dev Włącza negocjację STARTTLS. true, false
PUBLIC_LINK_TOKEN_BYTES Prod / Dev Entropia dla tokenów linków publicznych. 32
PUBLIC_LINK_DEFAULT_EXPIRY_DAYS Prod / Dev Domyślny czas ważności linków publicznych. 0 = bez terminu
PUBLIC_RATE_LIMIT_OPEN_PER_HOUR Prod / Dev Limit godzinowy dla otwierania publicznych endpointów oferty. 60, 999
PUBLIC_RATE_LIMIT_ACTION_PER_HOUR Prod / Dev Limit godzinowy dla akcji publicznych, np. akceptacji/odrzucenia. 5, 999
TRACKING_IP_ANONYMIZE Prod / Dev Włącza anonimizację IP w danych trackingowych. false
TRACKING_IP_ANONYMIZE_AFTER_DAYS Prod / Dev Opóźniona anonimizacja IP po określonej liczbie dni. 0
TRACKING_RETENTION_DAYS Prod / Dev Okres retencji dla danych śledzenia linków publicznych. 365
CLIENT_CONFIRM_EMAIL_ENABLED Prod / Dev Wysyła klientowi e-mail potwierdzający po akceptacji. false
NOTIFICATIONS_ENABLED Prod / Dev Włącza subsystem powiadomień. true
NOTIFICATIONS_EMAIL_ENABLED Prod / Dev Włącza dostarczanie powiadomień e-mailem. true, false
NOTIFICATIONS_PUBLIC_PREFERENCES_URL Prod Publiczny URL do zarządzania preferencjami powiadomień. https://twojadomena.pl/notifications/preferences
NOTIFICATIONS_PREFERENCE_TOKEN_TTL_DAYS Prod Czas ważności tokenu preferencji powiadomień. 30
NOTIFICATIONS_OFFER_EXPIRY_WARN_DAYS Prod / Dev Harmonogram przypomnień przed wygaśnięciem ofert. 7,2
NOTIFICATIONS_LICENSE_EXPIRY_WARN_DAYS Prod / Dev Harmonogram przypomnień przed wygaśnięciem licencji. 30,14,7,1
REMINDERS_JOB_INTERVAL_MINUTES Prod / Dev Częstotliwość wykonywania joba przypomnień. 5

Generowanie PDF

Zmienna Zakres Cel Typowa wartość
PDF_ENABLED Prod / Dev Włącza generowanie PDF. true, false
PDF_GOTENBERG_URL Prod / Dev Wewnętrzny URL usługi Gotenberg. http://gotenberg:3000
PDF_SYNC_TIMEOUT_MS Prod / Dev Timeout dla synchronicznego generowania PDF. 10000, 5000
PDF_SYNC_MAX_ITEMS Prod / Dev Maksymalna liczba pozycji oferty nadal obsługiwana synchronicznie. 50
PDF_STORAGE_PATH Prod / Dev Ścieżka do katalogu przechowującego wygenerowane PDF-y. /data/pdfs, ./data/pdfs
PDF_RETENTION_DAYS Prod / Dev Czas retencji wygenerowanych PDF-ów. 365
PDF_RETRY_BACKOFF_SECONDS Prod / Dev Harmonogram retry dla async PDF jobs. 30,120,600
PDF_WORKER_CONCURRENCY Prod / Dev Współbieżność workera PDF. 2
PDF_WORKER_POLL_INTERVAL_MS Prod / Dev Interwał odpytywania workerów PDF. 2000

Licencjonowanie, raporty i utrzymanie

Zmienna Zakres Cel Typowa wartość
LICENSE_SKIP_SIGNATURE_CHECK Prod / Dev Omija walidację podpisu licencji. Nigdy nie włączaj w produkcji. false, true
LICENSE_EXPIRY_CHECK_INTERVAL_H Prod / Dev Częstotliwość kontroli wygaśnięcia licencji. 24
REPORTS_DEFAULT_PERIOD_DAYS Prod / Dev Domyślny zakres dat dla raportów. 30
REPORTS_EXPORT_MAX_ROWS Prod / Dev Limit wierszy dla eksportów raportów. 10000

Backupy, GeoIP i operacje prywatności

Zmienna Zakres Cel Typowa wartość
BACKUP_ENABLED Prod / Dev Włącza zaplanowane backupy. true, false
BACKUP_CRON Prod / Dev Harmonogram cron dla automatycznych backupów. 0 0 2 * * *
BACKUP_RETENTION_DAILY Prod / Dev Liczba backupów dziennych do zachowania. 7
BACKUP_RETENTION_WEEKLY Prod / Dev Liczba backupów tygodniowych do zachowania. 4
BACKUP_RETENTION_MONTHLY Prod / Dev Liczba backupów miesięcznych do zachowania. 12
BACKUP_LOCAL_DIR Runtime / Compose Lokalny katalog używany przez skrypty backupu i kontenery backup-workera. /app/data/backups
BACKUP_ARCHIVE_ENCRYPTION_MODE Prod / Dev Model szyfrowania archiwum: AGE_RECIPIENT (zalecany) lub NONE. AGE_RECIPIENT
BACKUP_AGE_RECIPIENT Prod / Dev Publiczny odbiorca age (age1...) dla szyfrowanych archiwów. age1...
BACKUP_DATABASE_PAYLOAD_MODE Prod / Dev Tryb bazy danych: APP_ENCRYPTED (domyślnie) lub PII_DECRYPTED. APP_ENCRYPTED
JOBS_MODE Prod / Dev / Compose Które zaplanowane zadania uruchamia scheduler w JVM: all (web + backupy w jednym kontenerze), web (tylko web — w parze z workerem backup-only), backup-only (dedykowany worker backupu). all
BACKUP_RUNTIME_PROFILE Prod / Dev Etykieta profilu runtime zapisywana w logach/manifestach backupu: WORKER, WEB_MAINTENANCE, ONE_SHOT, OFFLINE_MAINTENANCE. Łącz WEB_MAINTENANCE z JOBS_MODE=all (bez osobnego workera); łącz WORKER z JOBS_MODE=web + workerem backup-only. WORKER
BACKUP_VERIFY_MODE Prod / Dev Weryfikacja po backupie: off, archive, sandbox. off
BACKUP_ALLOW_UNENCRYPTED_LOCAL_BACKUP Prod / Dev Jawna zgoda na nieszyfrowane lokalne backupy. false
BACKUP_RCLONE_REMOTE Prod / Dev Cel rclone dla offsite backupów. s3:bucket/path
BACKUP_OFFLINE_NOTICE_SECONDS Prod Okres karencji przed zatrzymaniem usług w trybie offline maintenance. 300
BACKUP_MAINTENANCE_PAGE_ENABLED Prod Serwowanie statycznej strony podczas offline backupu. false
BACKUP_DOWNLOAD_GRANT_TTL_SECONDS Prod / Dev TTL jednorazowych grantów pobierania backupu. 120
GEOIP_ENABLED Prod / Dev Tylko przełącznik egzekwowania krajów (zarazem awaryjny). Baza ładuje się i aktualizuje niezależnie — zob. GEOIP_AUTO_UPDATE. false
GEOIP_DB_PATH Prod / Dev Ścieżka do bazy GeoIP (pobierana automatycznie przy starcie; domyślnie keyless DB-IP, MaxMind przez MAXMIND_*). /app/data/geoip/...
SECURITY_GEOIP_ALLOWED_COUNTRIES Prod / Dev Allowlista krajów ISO dla GeoIP. puste lub PL,DE,CZ
MAXMIND_ACCOUNT_ID Prod Konto MaxMind do pobierania GeoLite. account ID
MAXMIND_LICENSE_KEY Prod Klucz licencyjny MaxMind. sekret
GEOIP_EDITION_ID Prod Identyfikator edycji MaxMind. GeoLite2-Country
GDPR_ANONYMIZE_AUTO_AFTER_DAYS Prod / Dev Horyzont 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