Skip to content
Taha Media

A self-hosted LiveKit voice server for a Flutter app

Audio rooms on your own server instead of per-minute billing, with a one-command install and audio-only tokens.

  • LiveKit
  • Redis
  • Caddy
  • TypeScript
  • Flutter
  • Docker

Measured result

30/30

audio tracks, 0% packet loss

The problem

Audio-room apps pay providers like ZEGOCLOUD and Agora per participant-minute, so the bill grows with every new user.

What I built

  • LiveKit with Redis, Caddy for automatic TLS and built-in TURN, installed by one script on Ubuntu 24.04 with a firewall.
  • Audio-room config: no participant limit, everyone hears everyone, video publishing blocked at the token level.
  • A TypeScript token server, and a Flutter service with a voice-room screen (speaking indicator, mic toggle).
  • An honest sizing table derived from LiveKit's official benchmark, an Arabic guide, and a ZEGOCLOUD migration checklist.

Measured result

  • Local load test (3 speakers × 10 listeners) on livekit-server v1.13.10: 30 of 30 audio tracks delivered, 0% packet loss.
  • Install scripts are shellcheck-clean, the Caddy config validates, the token server compiles, and video publishing is blocked as required.

This is a local functional test, not a capacity benchmark of a production server.

Need something similar?

Self-hosted LiveKit voice server for Flutter apps · $19

All case studies

13/13tests passing

WhatsApp Cloud API audit and a secure webhook

A toolkit that shows whether a WhatsApp integration is really official and who owns it, plus a webhook that verifies Meta's signature and never processes a message twice.

20/20evaluation cases

A document assistant that cites its sources

Answers only from your files, cites the file and section, says when the answer isn't there instead of inventing one, and flags instructions hidden in documents.