voxhub
Self-hosted voice & screen-sharing server for up to 5 people using WebRTC/LiveKit SFU, React client, Electron desktop app. Tuned for 1080p60 game streaming with TLS, systemd, auto-reload, TURN support.
Ficha actualizada 22 sept 2026, 18:51 · upstream 22 sept 2026, 18:40 · release v0.2.0
Qué es voxhub
Descripción editorial construida a partir del repositorio, su documentación y sus señales de mantenimiento.
voxhub is a self-hosted voice and screen-sharing server designed for small groups of up to five people. It uses WebRTC/LiveKit SFU architecture instead of peer-to-peer connections, which allows one streamer to encode once while distributing four encoded copies across multiple participants in a mesh network. The project was built because free Discord's 720p30 screen sharing limit is insufficient for high-quality game streaming at 1080p60 with audio.
The server runs on its own VPS and supports both browser-based access (via Chrome) and a standalone Electron desktop application. It includes TLS encryption, systemd service management, automatic client updates, TURN relay support for unreliable networks, and several network-level bug fixes including dual public IP handling, IPv6 candidates with VPN interfaces, and echo suppression from system loopback.
The architecture prioritizes quality over simplicity: the SFU approach ensures consistent encoding regardless of participant count, while the dedicated port 8446 separates signaling (HTTP) from media traffic (UDP), allowing direct UDP delivery without nginx proxying. TURN is enabled to handle edge cases where direct UDP connections fail due to strict NATs or mobile networks.
The quality settings are carefully tuned for gaming: VP9 video codec with configurable bitrate per preset, voice isolation for quiet environments, and a dedicated DTX flag that suppresses the first syllable of speech to reduce bandwidth usage. The design intentionally avoids complex client-side audio processing in Electron, instead relying on system-level loopback capture which has limitations but provides full system sound access.
- Host a private voice chat room for up to five friends or family members
- Stream game footage (1080p60) with high-quality audio to Discord or other platforms
- Create a secure, self-hosted communication channel without relying on third-party services
- Enable screen sharing in meetings or presentations where external tools are restricted
- Provide a lightweight alternative to paid video conferencing solutions for small groups
- Run as a standalone desktop application for offline use with full system audio access
- SFU architecture ensures consistent encoding quality regardless of the number of participants, unlike P2P which degrades in mesh networks
- Dedicated port 8446 separates signaling from media traffic, allowing direct UDP delivery without nginx proxying overhead
- Built-in TURN relay with TLS support handles unreliable networks and strict NATs where direct UDP connections fail
- VP9 video codec with configurable bitrate per preset provides better quality than H.264 on text-heavy content
- Voice isolation (voice-to-speech) mode intelligently filters out background noise from other participants
- No persistent chat history — messages are stored only in memory via data channels and disappear when the connection drops
- File sharing is not supported due to the small size of WebRTC data channels
- Only one shared password exists, requiring all five participants to share credentials (no individual accounts)
- Maximum participant count is limited to 5 by a hard-coded constraint in deploy/livekit.yaml
- No video recording capability — streams are live only
- Echo occurs when screen sharing without headphones because the system audio capture includes voices from other participants
Perfil de infraestructura
Estimación inicial derivada del repositorio y de los servicios detectados.
Despliegue detectado
Qué señales reales de instalación hemos encontrado.
Deploy voxhub using Docker Compose with docker-compose.yml. Configure nginx to serve web traffic on port 8446 and proxy media to LiveKit's internal UDP port 7882. Set up a systemd service for the token server running on port 3000. Obtain a Let's Encrypt certificate and configure server_name in nginx. For production, use separate public IPs or a VPN tunnel if your provider blocks certain ports. Update client versions via npm run build before deployment to prevent version mismatches between server and Electron app.
Stack y dependencias
Componentes inferidos a partir de manifests, configuración y documentación.
Puede sustituir a
Relaciones detectadas por el análisis del repositorio y su categoría.
Experiencia real de la comunidad
Ayuda a contrastar la estimación automática con instalaciones reales.
Todavía no hay datos comunitarios para este proyecto.