mrkeyoor.com_
Sat 17 Oct 13:34 UTC
Self-Hostedevaluationupdated 26 Aug 2026

neko review

Neko runs a browser, Linux application, or desktop on a server and streams it to one or more people through WebRTC. Participants see the same session, hear its audio, and can hand over control, which makes it useful for watch parties, guided support, shared browsing, and disposable remote workspaces.

+33stars / 7d
Verdict

Our Neko server built in 43 seconds, but its Go test step produced build failures in 17 of 18 package results, so source adopters need to reproduce that command before trusting a fork. The released Docker route is still a good choice for a shared, audio-capable browser room when you understand WebRTC networking and change every sample credential. Choose Guacamole or noVNC when independent remote sessions matter more than several people controlling one screen.

We ran it

Lab card: what happened when we ran nekoScreenshot of neko (neko.m1k1o.net)
Install✓ · 28s94 packages
Build✓ · 43s
Tests✗ · 17s1 passed · 17 failed of 18 (go test)
Repo720 files~52,748 lines of source · 10.8 MB · 14 CI workflows · Dockerfile

Answers from our run

Does neko build from source?

Dependencies installed in 28 seconds (94 packages), and the build succeeded in 43 seconds. We cloned commit baf21c1 into a clean Debian container with 3 CPUs and no project-specific setup.

Do neko's tests pass?

No. The project's own test command finished in 17 seconds and reported 1 passed, 17 failed (go test).

Who should not use neko?

Administrators who cannot expose or relay WebRTC traffic: the sample Compose file maps UDP ports 52000 through 52100 and requires a client-reachable NAT address.

What are the alternatives to neko?

Apache Guacamole, noVNC, LinuxServer Firefox. Our Neko server built in 43 seconds, but its Go test step produced build failures in 17 of 18 package results, so source adopters need to reproduce that command before trusting a fork.

Setup3/5Compose is direct, but UDP, NAT, credentials, and codecs need care
Docs4/5Dedicated guides cover installation, configuration, migration, and fixes
Community4/5Pushed August 2026 with recent releases and active pull requests
Maturity4/5Established Docker images and use cases; source tests failed here

Discussed on

  1. hnShow HN: Neko – Self hosted virtual browser that runs in Docker and uses WebRTC227 points
  2. hnN.eko – open-source self-hosted virtual browser9 points
  3. hnNeko – A self hosted virtual browser that runs in Docker and uses WebRTC3 points

Who it’s for

Self-hosters who want one shared browser session with synchronized video, audio, chat, and control.
Support and teaching teams that need to guide someone inside a disposable remote environment.
Developers embedding a virtual browser through the separate room-management API.
Operators comfortable routing WebRTC UDP traffic and securing a container that can reach the web.

Who it’s NOT for

Administrators who cannot expose or relay WebRTC traffic: the sample Compose file maps UDP ports 52000 through 52100 and requires a client-reachable NAT address.
Teams seeking a traditional multi-desktop gateway: every Neko room is a shared session, while Apache Guacamole is a closer fit for independent remote hosts.
Deployments that would leave sample credentials unchanged: the repository Compose file uses neko and admin as user and administrator passwords.
Buyers who need a passing source test command in a plain Go container: our run produced build failures in 17 of 18 package results.
NVIDIA users depending on multi-pipeline H.265 configuration without verification: issue 689 reports that the plural pipelines environment variable is ignored in v3.1.5.

Setup reality

Our sandbox installed 94 Go packages in 28 seconds and built the server in 43 seconds. Tests failed after 17 seconds: the Go summary showed 1 passed and 17 failed out of 18, with the failing packages marked build failed.

The log tail names failures in auth, drop, GStreamer, X event, and Xorg packages but does not include the compiler messages, so it does not show why they failed. The 10.8 MB checkout had 720 files, about 52,748 source lines, 14 CI workflows, and a Dockerfile.

The supported deployment is Docker. The sample reserves 2 GB of shared memory, maps TCP 8080 plus UDP 52000 to 52100, requires a reachable NAT address, and needs changed user and admin passwords. Reverse proxies, persistence, codecs, and GPU acceleration add more configuration.

One shared desktop is the product

Neko streams a Linux desktop or application through WebRTC. Its default images run browsers, but the repository also points to VLC, Remmina, XFCE, KDE, and other applications. Multiple people join the same room, receive synchronized video and audio, chat, and can take control. That shared state separates Neko from ordinary remote desktop gateways built around one private session per user.

The fit is specific. A support engineer can guide a customer inside a clean browser. A teacher can hand control to a student. Friends can operate one player during a watch party, and a product can embed a remote browser using the separate neko-rooms API. If every user needs a personal desktop, duplicating rooms and profiles changes the capacity plan considerably.

The sample deployment opens 101 UDP ports

The supplied Compose file uses the Firefox image, reserves 2 GB of shared memory, publishes TCP port 8080, and maps UDP 52000 through 52100. It also requires NEKO_WEBRTC_NAT1TO1 to contain an address clients can reach. Those details are the real quick start. Launching a container is easy; making WebRTC work through home NAT, cloud firewalls, and a separate reverse proxy can take longer.

Issue 477 captures that confusion. Its author had Nginx on one machine and Neko on another and asked whether the UDP range should traverse the proxy. The open documentation issue includes both HTTP proxy and UDP stream examples. Operators should design the media route explicitly and test it from outside the local network rather than treating a successful same-LAN session as proof.

What happened when we ran it

Our sandbox entered ./server/, installed 94 Go packages in 28 seconds, and completed the build in 43 seconds. The checkout at commit baf21c1 had 720 files, about 52,748 source lines, and occupied 10.8 MB. It included 14 CI workflow files and a Dockerfile, which fits a project distributed mainly as container images.

The Go test step failed after 17 seconds. Its summary showed 1 passed package result and 17 failed out of 18. The visible tail marked packages including pkg/auth, pkg/drop, pkg/gst, pkg/xevent, and pkg/xorg as build failed; several type and utility packages said they had no test files.

The provided tail does not include the compiler diagnostics that preceded those lines. We cannot say whether a system package, build tag, generated file, or code defect caused the failures. The defensible finding is narrower: the repository built with the harness command, while the test command could not compile most package targets in the same fresh Debian container.

WebRTC gives Neko audio and group control

The README compares Neko with Guacamole and noVNC. Those tools commonly deliver remote displays through established protocols or images over WebSockets. Neko's WebRTC path targets smoother video, built-in audio, and several participants controlling the same environment. Release v3.1.5 added H.265 encoding, reduced audio jitter-buffer latency, and updated NVIDIA encoding for driver 590 or newer.

Codec choice complicates deployment. Hardware acceleration depends on the image, GPU, driver, GStreamer pipeline, and browser support. Issue 689 reports that v3.1.5 ignored NEKO_CAPTURE_VIDEO_PIPELINES and fell back to VP8, while the singular pipeline setting produced H.265. Anyone investing in GPU capacity or multiple quality tiers should verify the active codec from logs and client playback, not only from environment variables.

Browser isolation does not secure the service by itself

Running a browser in a container keeps its cookies and history away from the viewer's local browser. Profiles can be ephemeral or mounted for persistence. The README also suggests Tor Browser or a VPN for additional anonymity and describes a jump-host use case for internal applications. Those are useful building blocks, but exposing a controllable browser creates a sensitive service with credentials, outbound access, and possibly persistent sessions.

The sample Compose values set the normal user's password to neko and the administrator password to admin. They are examples, not safe deployment values. Replace them before the first public bind, terminate TLS, restrict who can reach the room, and decide whether the container may access private networks. A disposable browser that can reach internal services is still an internal access path.

Version 3 is active and still changing

GitHub showed 22,193 stars and 147 combined open issues and pull requests when fetched. The last push was August 25, 2026, and v3.1.5 shipped on August 5. Current work includes OIDC-only member authentication, AMD GPU acceleration, pointer capture controls, example Compose configurations, and additional browser images. That is healthy activity, while the combined open count is not a bug count.

The Apache-2.0 license is straightforward, and the project has dedicated migration, installation, configuration, FAQ, and troubleshooting documentation. Neko earns a trial when several people truly need one remote screen. Budget the network route and shared memory, change the credentials, pin an image instead of relying forever on latest, and run the failed Go test command on your build host before maintaining custom server code.

Alternatives

ProjectWhat it isPick it when
Apache GuacamoleA browser-accessible gateway for RDP, VNC, and SSH sessions.pick this instead when users need separate access to existing machines and standard remote-desktop protocols.
noVNCA VNC client that runs in a web browser over WebSockets.pick this instead when an existing VNC server is enough and shared WebRTC audio is unnecessary.
LinuxServer FirefoxA containerized Firefox desktop accessed through a browser.pick this instead when one remote browser per user matters more than synchronized group control.

What people are saying

  1. [github-trending] foru17/neko-master
  2. [github-trending] m1k1o/neko

Sources

  1. Neko README
  2. Neko repository
  3. Neko v3.1.5 release
  4. Neko Docker Compose example
  5. WebRTC UDP reverse proxy question
  6. Video pipelines environment issue

More self-hosted reviews

playport · edge-smart-doh · Comma · ProsperoEden · zulu · node_exporter · the whole board →