Files
OwnCord/Server/livekit.yaml.example
Claude b9180bdbeb feat(server): support dual-homed voice hosts and user-managed livekit.yaml
Servers reachable via both a LAN IP and a public IP could only serve voice
on one of them: config.yaml accepts a single voice.node_ip and OwnCord
regenerates data/livekit.yaml on every start, discarding manual edits.
LiveKit has no multi-IP list, but it does support advertising internal host
candidates alongside the external mapping.

- New voice.advertise_internal_ip (OWNCORD_VOICE_ADVERTISE_INTERNAL_IP):
  emits rtc.advertise_internal_ip: true so LAN clients get a reachable
  candidate while remote clients keep using node_ip.
- livekit.yaml escape hatch: if the file exists without the auto-generated
  marker header, OwnCord leaves it untouched, giving operators access to
  every LiveKit option (ips.includes, interfaces, stun_servers, ...). The
  generated header documents how to take ownership.

Closes #111

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LwtnpHAoSFr1ZibQgQkNQK
2026-07-19 10:50:11 +00:00

30 lines
1.0 KiB
Plaintext

# LiveKit server configuration for OwnCord
# Copy this file to livekit.yaml and fill in your values.
# The api_key and api_secret here MUST match the values in your .env file.
port: 7880
rtc:
tcp_port: 7881
port_range_start: 50000
port_range_end: 60000
# Your server's public IP address — required so browser WebRTC clients can
# reach LiveKit directly for media. Leave blank only if running entirely on
# localhost (development). On cloud VMs with a metadata service (AWS, GCP,
# DigitalOcean) you can set use_external_ip: true instead.
node_ip: "YOUR_SERVER_PUBLIC_IP"
# use_external_ip: true # uncomment on cloud VMs instead of node_ip
# If the server is reachable via both a LAN IP and a public IP (dual-homed),
# uncomment this so LiveKit also advertises the internal address — clients on
# the local network then connect via LAN while remote clients use node_ip.
# advertise_internal_ip: true
keys:
# Must match LIVEKIT_API_KEY / LIVEKIT_API_SECRET in your .env file
YOUR_API_KEY: YOUR_API_SECRET
logging:
level: info