Self-hosting Fluxer: findings, bugs, and patches from a real deployment

(#1037) Feature Shipped self-hosting

Thread

Comment by @mgabor3141
RexSystem 1 vote originally by @mgabor3141 on GitHub OP

4: LiveKit webhooks not configured

Symptom: Users appear stuck in voice channels after leaving. Rejoining shows duplicate entries. The Fluxer server logs show zero webhook events. Root cause: config/livekit.example.yaml has no webhook section. Without it, LiveKit never sends participant_joined / participant_left / room_finished events to the Fluxer server. The server has a full LiveKitWebhookService that handles these events and updates gateway state, but it never receives anything. Fix — add to livekit.yaml:
webhook:
  api_key: '<your_livekit_api_key>'
  urls:
    - https://your.domain/api/webhooks/livekit
The api_key must match one of the keys in the keys: section. The URL must be reachable from the LiveKit container. Related: VoiceReconciliationWorker in packages/api/src/voice/VoiceReconciliationWorker.tsx is designed to be a safety net that periodically cross-references LiveKit participants with gateway voice states and cleans up ghosts. However, it's never imported or instantiated anywhere in WorkerDependencies.tsx — it's dead code. Wiring it up would add resilience against missed webhooks.