# LiveKit — local dev Self-hosted SFU for voice + video. Runs in Docker on host-network mode so WebRTC UDP ports work natively. ## Start / Stop ```bash # from repo root docker compose -f infra/livekit/docker-compose.yml up -d docker compose -f infra/livekit/docker-compose.yml logs -f livekit docker compose -f infra/livekit/docker-compose.yml down ``` ## Endpoints | Purpose | URL / Port | |---------------|-----------------------| | Signaling WS | `ws://localhost:7880` | | TCP fallback | `tcp://localhost:7881`| | UDP RTC | `50000-50100/udp` | | coturn | `3478/udp+tcp` | ## Dev keys Baked into `livekit.yaml`: - `LIVEKIT_API_KEY=devkey` - `LIVEKIT_API_SECRET=devsecret-at-least-32-bytes-long-please` - `LIVEKIT_URL=ws://localhost:7880` Same values go into `apps/desktop/.env` (via `VITE_LIVEKIT_URL`) and into the edge function's `supabase/functions/.env`. ## Prod (later) Same image on the Hetzner VPS. Caddy terminates TLS at `wss://livekit.netralax.cloud`. coturn exposed on `turn.netralax.cloud:5349` (TURNS). Secrets generated via `openssl rand -hex 32` and stored in the server env + Supabase edge secrets.