// the find
m1k1o/neko
A self hosted virtual browser that runs in docker and uses WebRTC.
Neko runs a full desktop or browser inside a Docker container and streams it to multiple users over WebRTC. The original use case was watching video with friends, but it's grown into a general-purpose containerized desktop streaming platform. Think Apache Guacamole but with real audio, smooth video, and collaborative input control.
WebRTC instead of WebSocket image-pushing means actual smooth video and synchronized audio — the gap between this and noVNC is immediately noticeable. The multi-participant input model (one user controls, others watch, or control can be passed) is built into the protocol, not bolted on. Docker image variety is genuinely useful: Firefox, Chromium, Tor, ungoogled-chromium, full XFCE/KDE desktops, VLC — each with separate Nvidia GPU variants. The Go server is clean and the Vue client is well-structured with proper locale support across 15+ languages.
Network setup is the biggest pain point — WebRTC requires UDP port ranges to be open and correctly configured, and the documentation on getting this right behind NAT or a reverse proxy is scattered. The v2-to-v3 migration broke the API, so any tooling built on top of neko-rooms or the old client SDK needs rework. No authentication beyond a single shared password by default; running this exposed to the internet without putting something in front of it is asking for trouble. The client is Vue 2 with Options API, which is end-of-life territory and will become a maintenance burden.