Skip to main content

Ambiente

Questa pagina è il riferimento canonico per la configurazione del runtime del repository.

Configurazione locale

Copia i file di esempio prima di avviare l’area di lavoro:

Variabili Supabase richieste

  • NEXT_PUBLIC_SUPABASE_URL per qualsiasi runtime che crea un client Supabase
  • NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY per client browser e client scoped alla richiesta
  • SUPABASE_SECRET_KEY per l’accesso admin solo lato server

Variabili Meta richieste per invii reali e verifica dei webhook

  • WHATSAPP_META_ACCESS_TOKEN per l’invio in uscita lato worker verso la Meta Graph API
  • WEBHOOK_SIGNATURE_SECRET per validare x-hub-signature-256 sui webhook in entrata
  • META_WEBHOOK_VERIFY_TOKEN se vuoi una verifica deterministica della challenge per l’handshake del webhook Meta
Queste variabili di ambiente restano valide come fallback di bootstrap a livello di piattaforma. Quando un’area di lavoro archivia le proprie credenziali del provider tramite l’app operatore, i valori dell’area di lavoro basati su Vault hanno la precedenza.

Alias legacy accettati

Il repository accetta ancora questi mentre le integrazioni vengono migrate:
  • NEXT_PUBLIC_SUPABASE_ANON_KEY
  • SUPABASE_SERVICE_ROLE_KEY
Il nuovo lavoro dovrebbe usare i nomi publishable e secret key.

Selettore della modalità dati

  • WHATSAPP_PLATFORM_DATA_MODE=mock mantiene l’app operatore, le route API e la documentazione in esecuzione sullo store tipizzato in memoria
  • WHATSAPP_PLATFORM_DATA_MODE=supabase abilita il percorso dati basato su Supabase dove implementato
Se la variabile viene omessa, il repository resta in modalità mock di default.

Variabili opzionali

  • SUPABASE_DB_URL per gli strumenti Postgres diretti, le migrazioni e i job lato server che necessitano della connection string. È richiesta anche se vuoi che i segreti dei provider gestiti dall’area di lavoro vengano archiviati in Supabase Vault dall’interfaccia del prodotto.
  • WHATSAPP_META_API_VERSION per sovrascrivere la versione di default della Graph API. Il repository usa v25.0 come default.
  • WORKSPACE_BOOTSTRAP_ADMIN_EMAILS come elenco separato da virgole di email autorizzate a effettuare il bootstrap dell’accesso privilegiato all’area di lavoro senza un invito.
  • WORKSPACE_ALLOW_FIRST_CLAIM per consentire la richiesta del ruolo owner da parte del primo utente quando non esistono ancora membri dell’area di lavoro. Il comportamento di default è disabilitato, a meno che tu non lo imposti esplicitamente su true.
  • DEFAULT_WORKSPACE_SLUG per il bootstrap del contesto dell’area di lavoro predefinita
  • DEFAULT_CHANNEL_WABA_ID, DEFAULT_CHANNEL_PHONE_NUMBER_ID, DEFAULT_CHANNEL_PHONE_E164 e DEFAULT_CHANNEL_DISPLAY_NAME per i metadati del canale predefinito

Suddivisione del deployment

  • apps/web, apps/app e apps/api, ospitati su Vercel, devono ricevere le variabili Supabase pubbliche necessarie per il loro percorso di runtime
  • i runtime server come apps/api, apps/worker e apps/control-plane necessitano anche di SUPABASE_SECRET_KEY
  • apps/worker su Railway necessita di WHATSAPP_META_ACCESS_TOKEN per l’invio reale al provider
  • apps/api su Vercel necessita di WEBHOOK_SIGNATURE_SECRET per l’ingestione firmata dei webhook nell’attuale postura alpha
  • solo i runtime server dovrebbero ricevere SUPABASE_DB_URL
  • il server dell’app operatore necessita di SUPABASE_DB_URL se vuoi che /setup e Impostazioni → Provider archivino o ruotino i segreti gestiti dall’area di lavoro
  • il server dell’app operatore necessita anche di WORKSPACE_BOOTSTRAP_ADMIN_EMAILS se vuoi che il percorso del primo operatore privilegiato sia esplicito invece che solo su invito
  • se un primo operatore autenticato raggiunge /pending-access con zero membri dell’area di lavoro, recupera impostando WORKSPACE_BOOTSTRAP_ADMIN_EMAILS, abilitando temporaneamente WORKSPACE_ALLOW_FIRST_CLAIM=true, oppure creando manualmente la riga workspace_members; non è necessario eliminare l’utente auth
  • apps/control-plane resta nel repository ma non fa parte dell’attuale contratto alpha hosted, a meno che la decisione sull’ingress non cambi

Leggi anche