Edit history

Earlier versions of Unset default voice region disables LiveKit, newest first.

Current version | Edited by Rex
Changes
DetailsLLM has been utilized for troubleshooting purposes. However, none of the text in this report is generated.Removed: ### LocationRemoved: Removed: _No response_Removed: ### Suggested changeThe documentation does not make it clear that a Voice Region is mandatory. Ship a sensible default region by adding `FLUXER_LIVEKIT_DEFAULT_REGION` to `deploy/self-hosting/docker-compose.yml`, or at minimum make the join-time error explicitly state "no voice region provisioned".Removed: Removed: ### ChecksRemoved: Removed: - ☑ I searched existing issues.Removed: - ☑ I wrote this report in my own words, except for direct translation if needed.
Show

Unset default voice region disables LiveKit

Reproduction steps

  1. Follow the official 'Get Started' guide for deployment. Use the provided deploy/self-hosting/docker-compose.yml
  2. Put the Fluxer instance behind reverse proxy (may not be necessary for reproduction)
  3. Attempt to join a community VC

Expected behaviour

Joining a VC on a self-hosted instance works with default env vars. If voice region is not set to a sensible default automatically, LiveKit should fail loudly at startup.

Actual behaviour

Joining a VC fails with a 403, implying that VC features are disabled.

Details

What needs fixing?

Summary

VC is disabled unless a Voice Region is set, either in the Fluxer Admin panel or in the env var FLUXER_LIVEKIT_DEFAULT_REGION.

What the problem may be

The region topology is empty with default configuration. The 403 error symptom appears to occur due to the getVoiceToken RPC giving a FeatureTemporarilyDisabledError if the voice region DB is empty. the 403 symptom surfaced in the API logs:
{"level":"info","time":"2026-06-25T22:40:48.542Z","service":"fluxer-api",...,"path":"/internal/rpc","status":403,"durationMs":24,"msg":"Request completed"}
{"level":"info","time":"2026-06-25T23:09:11.441Z",...,"path":"/internal/rpc","status":403,...}
{"level":"info","time":"2026-06-25T23:12:18.725Z",...,"path":"/internal/rpc","status":403,...}

What fixed it for me

Setting FLUXER_LIVEKIT_DEFAULT_REGION to a region JSON object in the the docker-compose.yml ensures the voice.defaultRegion startup condition is satisfied. docker-compose.yml
  FLUXER_LIVEKIT_ENABLED: "true"
  FLUXER_LIVEKIT_API_KEY: ${LIVEKIT_API_KEY:?set LIVEKIT_API_KEY in .env}
  FLUXER_LIVEKIT_API_SECRET: ${LIVEKIT_API_SECRET:?set LIVEKIT_API_SECRET in .env}
  FLUXER_LIVEKIT_WEBHOOK_URL: http://api:8080/webhooks/livekit
  FLUXER_LIVEKIT_URL: wss://${FLUXER_DOMAIN}/livekit
  # Ensures startup condition voice.defaultRegion is set, this example sets it to Europe/Oslo
  FLUXER_LIVEKIT_DEFAULT_REGION: '{"id":"home","name":"Home","emoji":"🏠","latitude":59.91,"longitude":10.75}' 
LLM disclosure
LLM has been utilized for troubleshooting purposes. However, none of the text in this report is generated.
Suggested change
The documentation does not make it clear that a Voice Region is mandatory. Ship a sensible default region by adding FLUXER_LIVEKIT_DEFAULT_REGION to deploy/self-hosting/docker-compose.yml, or at minimum make the join-time error explicitly state "no voice region provisioned".
Original by Rex
Show

Unset default voice region disables LiveKit

Reproduction steps

  1. Follow the official 'Get Started' guide for deployment. Use the provided deploy/self-hosting/docker-compose.yml
  2. Put the Fluxer instance behind reverse proxy (may not be necessary for reproduction)
  3. Attempt to join a community VC

Expected behaviour

Joining a VC on a self-hosted instance works with default env vars. If voice region is not set to a sensible default automatically, LiveKit should fail loudly at startup.

Actual behaviour

Joining a VC fails with a 403, implying that VC features are disabled.

Details

What needs fixing?

Summary

VC is disabled unless a Voice Region is set, either in the Fluxer Admin panel or in the env var FLUXER_LIVEKIT_DEFAULT_REGION.

What the problem may be

The region topology is empty with default configuration. The 403 error symptom appears to occur due to the getVoiceToken RPC giving a FeatureTemporarilyDisabledError if the voice region DB is empty. the 403 symptom surfaced in the API logs:
{"level":"info","time":"2026-06-25T22:40:48.542Z","service":"fluxer-api",...,"path":"/internal/rpc","status":403,"durationMs":24,"msg":"Request completed"}
{"level":"info","time":"2026-06-25T23:09:11.441Z",...,"path":"/internal/rpc","status":403,...}
{"level":"info","time":"2026-06-25T23:12:18.725Z",...,"path":"/internal/rpc","status":403,...}

What fixed it for me

Setting FLUXER_LIVEKIT_DEFAULT_REGION to a region JSON object in the the docker-compose.yml ensures the voice.defaultRegion startup condition is satisfied. docker-compose.yml
  FLUXER_LIVEKIT_ENABLED: "true"
  FLUXER_LIVEKIT_API_KEY: ${LIVEKIT_API_KEY:?set LIVEKIT_API_KEY in .env}
  FLUXER_LIVEKIT_API_SECRET: ${LIVEKIT_API_SECRET:?set LIVEKIT_API_SECRET in .env}
  FLUXER_LIVEKIT_WEBHOOK_URL: http://api:8080/webhooks/livekit
  FLUXER_LIVEKIT_URL: wss://${FLUXER_DOMAIN}/livekit
  # Ensures startup condition voice.defaultRegion is set, this example sets it to Europe/Oslo
  FLUXER_LIVEKIT_DEFAULT_REGION: '{"id":"home","name":"Home","emoji":"🏠","latitude":59.91,"longitude":10.75}' 
LLM disclosure
LLM has been utilized for troubleshooting purposes. However, none of the text in this report is generated.
Location
No response
Suggested change
The documentation does not make it clear that a Voice Region is mandatory. Ship a sensible default region by adding FLUXER_LIVEKIT_DEFAULT_REGION to deploy/self-hosting/docker-compose.yml, or at minimum make the join-time error explicitly state "no voice region provisioned".
Checks
  • ☑ I searched existing issues.
  • ☑ I wrote this report in my own words, except for direct translation if needed.