FireFeed Docs

Variabili d'ambiente

Lista completa delle env var FireFeed con descrizione, default, sensibilità.

Ogni servizio (web, oms, worker, docs) legge dal proprio .env. In Dokploy le variabili vengono materializzate nel file .env adiacente al docker-compose.prod.yml (modificabili dalla UI Dokploy).

Riferimento file template: .env.prod.example + .env.example (dev).

Convenzione tabelle

  • Tipo: secret (mai loggare/esporre) · config (URL, host, key non sensibili) · tuning (numeri di concorrenza/timeout)
  • Richiesto: = startup fail senza, no = ha default sicuro

Ambiente di deploy

VarTipoRichiestoDescrizione
FIREFEED_DEPLOYMENTconfigNamespace per immagini Docker (development o production), distinto per gli stack sullo stesso host.
FIREFEED_COOKIE_NAMESPACEconfigNamespace dei cookie cross-app; impedisce a development e production di condividere company/progetto.
OMS_DOMAINconfigHost pubblico associato al servizio OMS nelle label Dokploy.
DOCS_DOMAINconfigHost pubblico associato al servizio Docs nelle label Dokploy.

Per l'assistente in production usare AGENT_PROVIDER=openrouter, una OPENROUTER_API_KEY valida e OPENROUTER_SITE_URL=https://app.fire-feed.com. AGENT_ENABLED=true rende disponibili le route agente; il budget applicativo resta vincolante con AGENT_HARD_BUDGET=true.

Database & Cache

VarTipoRichiestoDefaultDescrizione
DATABASE_URLsecretPostgres connection string. Sia per web sia per worker. Usata da Prisma + raw pg client.
REDIS_URLsecretredis://localhost:6379Redis BullMQ + pubsub SSE.

Crittografia & Auth

VarTipoRichiestoDefaultDescrizione
ENCRYPTION_KEYsecretAES-256-GCM key per cifrare credenziali source/destinazione (password import/export, token Amazon SP-API, stableUrlToken). 32 byte base64.
INTERNAL_SECRETsecretShared secret web↔worker per /internal/* route. Header x-internal-secret.
AUTH_SECRETsecretNextAuth v5 JWT signing. 32+ char random.
AUTH_URLconfigsì (prod)URL pubblico del web (https://exp.fire-feed.com).
AUTH_TRUST_HOSTconfigsì (prod)falsetrue quando sotto reverse proxy.
AUTH_KEYCLOAK_IDconfigClient ID Keycloak (es. firefeed-web).
AUTH_KEYCLOAK_SECRETsecretClient secret Keycloak.
AUTH_KEYCLOAK_ISSUERconfigURL realm Keycloak (https://auth.../realms/firefeed).
AUTH_KEYCLOAK_ISSUER_INTERNALconfignoOverride Keycloak issuer per chiamate server-to-server (es. Docker network hostname).
COOKIE_DOMAINconfigsì (prod multi-subdomain)host-onlyDominio condiviso, per esempio .fire-feed.com, per mantenere company e progetto attivi fra Feed Manager e OMS.
RETURN_PORTAL_SECRETsecretsì se il portale resi è usatoSegreto HMAC distinto da AUTH_SECRET, 32+ caratteri, per i link pubblici token-scoped.
RETURN_PORTAL_TRUSTED_PROXY_HOPSconfigsì (prod)1Numero di reverse proxy fidati che appendono X-Forwarded-For per il rate limit del portale resi.

Importante per il modulo OMS: l'app OMS legge gli stessi nomi env (AUTH_KEYCLOAK_ID/SECRET) ma riceve valori diversi (firefeed-oms invece di firefeed-web). In Dokploy questo si ottiene popolando un secondo blocco env scoped al service oms con i valori del client firefeed-oms. Il secret di un client NON funziona per l'altro — sono due Keycloak client distinti nello stesso realm.

OMS

VarTipoRichiestoDefaultDescrizione
OMS_PUBLIC_URLconfigsì (prod)nessuno (fail-closed)Origine pubblica OMS usata dai link Feed-Manager. È letta dal server a ogni richiesta e validata contro l'host reale; deve contenere solo schema e host, senza path/query/hash.
FIREFEED_TRUST_PROXY_HEADERSconfignofalseConsente di derivare l'origine pubblica da X-Forwarded-Host/Proto. Impostare true solo se il container Web non è esposto direttamente e l'ingress sovrascrive entrambi gli header.
NEXT_PUBLIC_APP_URLconfigsì (prod)http://localhost:3000URL pubblico del Feed Manager usato da OMS, OAuth, inviti e link cross-modulo.
OMS_URLconfigURL OMS per chiamate server-side. Può essere diverso da OMS_PUBLIC_URL quando il server usa la rete interna.
APP_URLconfigsì (prod)Già esistente per Feed-Manager. Dentro al container OMS è anche il fallback per il redirect a /onboarding quando un utente OMS non ha ancora una company creata.
FIREFEED_CONTROLLED_PROVIDER_TENANTSconfignovuotoMappa JSON provider→company UUID ammessi ai rollout non generali (controlled o capability beta protette); senza allowlist il gate resta chiuso. Non usare wildcard prima della promozione di readiness.
OMS_TENANT_MIGRATION_MAX_WAIT_MStuningno10000Attesa massima del lock per bootstrap/migrazione dello schema OMS della company.
OMS_TENANT_MIGRATION_TIMEOUT_MStuningno120000Timeout transazionale delle migrazioni tenant OMS forward-only.
BUSINESS_TIMEZONEconfignoEurope/RomeFuso operativo usato per le date business delle operazioni di spedizione.
MIRAKL_REFUND_REASON_CODEconfigno11Codice motivo inviato nei rimborsi Mirakl; deve essere valido per l'operatore configurato.

Worker / Pipeline

VarTipoRichiestoDefaultDescrizione
WORKER_URLconfigsì (prod)http://localhost:4000URL del worker per chiamate web → worker /internal/*. In compose è http://firefeed-worker:4000.
STORAGE_PATHconfig/app/storageLocal buffer dove il worker scrive prima di caricare su S3 (WS2B). Anche fallback per export legacy senza manifest. Volume Docker condiviso firefeed-storage.
PIPELINE_CONCURRENCYtuningno1Root pipeline orchestrator (WS3). Vedi Concurrency. Bumpare con cautela.
IMPORT_CONCURRENCYtuningno2Import worker BullMQ concurrency.
RULES_CONCURRENCYtuningno2Rules worker BullMQ concurrency.
EXPORT_CONCURRENCYtuningno4Export worker BullMQ concurrency.
EXPORT_ARTIFACT_RETENTIONtuningno10WS8 — quanti artifact per export tenere. Cron giornaliero 03:30 UTC droppa i più vecchi da S3 + manifest export_artifacts + filesystem locale. Deve essere >= 1.

Object storage (S3-compatible, WS2B)

Quando settati, worker carica ogni artifact + persiste un row in export_artifacts. Web /api/feeds/[token] streamma da S3. Lascia vuoto in dev per filesystem-only mode.

VarTipoRichiestoDefaultDescrizione
S3_ENDPOINTconfignoURL del server S3 (RustFS / MinIO / AWS S3). Es: https://exp.data.fire-feed.com.
S3_REGIONconfignous-east-1Placeholder per RustFS/MinIO (ignorato lato server).
S3_ACCESS_KEY_IDsecretsì se S3 abilitatoAccess key.
S3_SECRET_ACCESS_KEYsecretsì se S3 abilitatoSecret key.
S3_BUCKETconfigsì se S3 abilitatofirefeed-exportsBucket di destinazione.
S3_FORCE_PATH_STYLEconfignotruetrue per RustFS/MinIO. false per AWS S3 virtual-hosted.

Mail (Resend)

VarTipoRichiestoDefaultDescrizione
RESEND_API_KEYsecretsì (prod)vuoto = no-opResend API key. Quando vuoto il package @firefeed/mail non manda mail (utile per dev/CI).
MAIL_FROMconfigsì (prod)Sender verificato Resend, es. FireFeed <noreply@fire-feed.com>.
APP_URLconfigsì (prod)URL pubblico (https://exp.fire-feed.com) usato nei CTA delle mail.

CORS

VarTipoRichiestoDefaultDescrizione
CORS_ORIGINconfignohttp://localhost:3000Origin allow-list per il worker (usato dall'endpoint SSE).

Logging & Observability

VarTipoRichiestoDefaultDescrizione
LOG_LEVELtuningnoinfoPino log level per il job logger (fatal|error|warn|info|debug|trace).

Le metriche Prometheus sono esposte su GET /metrics del worker (porta 4000, interno alla rete compose). Non c'è una env var per disabilitarle.

Porte & Host

VarTipoRichiestoDefaultDescrizione
PORTconfignoweb=3000 · OMS=3010 · worker=4000 · docs=3001Override solo se serve mappare host port diversi.
HOSTNAMEconfigno0.0.0.0Bind address.
HOSTconfigno0.0.0.0Worker bind address.
WEB_PORTconfigno3000Host-side override per compose.

Non documentato qui (dev-only / temporanei)

  • DATABASE_URL con prefix postgresql://build:build@...: usato nei Dockerfile build stage per far girare prisma generate (fake URL, prisma generate non si connette).
  • PGPASSWORD: solo per script ad-hoc psql (es. backfill, mai in code path).

Quando aggiungerne una nuova

  1. Aggiungi a .env.example (dev defaults sicuri o vuoto).
  2. Aggiungi a .env.prod.example (con commento descrittivo).
  3. Aggiorna questa tabella.
  4. Se è tuning runtime: aggiungi un override anche in Dockerfile.* se serve un default fisso a build time.

In questa pagina