Jump in. Zero friction. 🚀
Shroom is a blazingly fast, completely frictionless WebRTC video conferencing platform. Designed to eliminate the annoyance of long sign-up forms, downloaded clients, and lobby screens, Shroom lets users instantly spin up secure, high-quality video rooms and share them with a single link.
- Zero-Friction Entry: No accounts, no passwords. Type a name and you're in.
- Enterprise WebRTC: Powered by the LiveKit engine, supporting 1080p simulcast, dynamic network adaptation, and ultra-low latency.
- Strict-Firewall Bypass: Built-in TURN server relay automatically routes traffic over TCP for clients trapped behind strict corporate firewalls or symmetric NATs.
- Auto-Rejoin Engine: Seamlessly survives page refreshes and network drops. If you disconnect, Shroom automatically re-authenticates and drops you straight back into the video grid without showing you a single lobby screen.
- Zero-Dependency Audio: Custom, lightweight Web Audio API synthesizer generates pleasant entry/exit chimes mathematically using sine waves (0 bytes of MP3s required).
- Collapsible Reactions: Real-time floating emoji engine with a responsive, collapsible drawer to save screen real estate on mobile devices.
- Mobile Optimized: Fluid
100dvhlayouts natively support iOS Safari's dynamic toolbars without clipping.
- Frontend: React 18, Vite, TypeScript, TailwindCSS, Zustand, Framer Motion,
@livekit/components-react - Backend: Go 1.26, Chi Router, JWT Authentication
- Infrastructure: Docker Compose, Caddy (Native HTTPS Proxy), LiveKit Server
- Databases: PostgreSQL (Analytics & Persistence), Redis (State & Caching)
- CI/CD: GitHub Actions (Automated zero-downtime SSH deployments)
Shroom is containerized and managed via Docker Compose. The production environment utilizes Caddy to natively terminate SSL/TLS and perfectly route WebRTC signaling WebSockets.
You must open the following ports on your Ubuntu VPS (ufw):
sudo ufw allow 80/tcp # HTTP (Caddy challenges)
sudo ufw allow 443/tcp # HTTPS (Web traffic)
sudo ufw allow 7881/tcp # LiveKit WebRTC TCP Fallback
sudo ufw allow 7882/udp # LiveKit WebRTC UDP
sudo ufw allow 3478/tcp # LiveKit TURN Relay TCP
sudo ufw allow 3478/udp # LiveKit TURN Relay UDPEnsure your server's public IP address is hardcoded in docker/livekit/livekit.prod.yaml:
rtc:
node_ip: YOUR_SERVER_PUBLIC_IPThe production Compose file uses the bundled postgres, redis, and livekit
services by default. If those services are external, set PROD_DATABASE_URL,
PROD_REDIS_URL, and PROD_LIVEKIT_URL in the server environment; do not use
the host-oriented development URLs for the production container.
The deployment workflow requires Docker Compose v2 (docker compose). On an
Ubuntu VPS using the legacy docker-compose command, install the
docker-compose-plugin once before deploying.
To deploy automatically on every push to main, add the following Secrets to your GitHub Repository:
VPS_HOST: Your server's public IP address.VPS_USERNAME: Your SSH username (must be part of thedockergroup viasudo usermod -aG docker <user>).VPS_SSH_KEY: Your private SSH key.
Once configured, GitHub Actions will automatically connect, pull the latest code, and orchestrate the Docker container swap!
- Clone the repository.
- Run the infrastructure:
docker-compose up -d postgres redis livekit
- Start the Go backend:
cd backend go run cmd/server/main.go - Start the Vite frontend:
cd frontend npm install npm run dev
Built for speed. Built for quality. Built for the modern web.