Skip to content
Forkshelf
Menu

Self-host Neko

License
Apache-2.0
GitHub stars
22,614, as of 8 Nov 2026
Latest release
v3.2.0, as of 8 Nov 2026
Host needs
Not stated in official docs
Install method
Docker; Docker Compose
One-click template
None listed

Neko describes itself as "a self-hosted virtual browser that runs in Docker and uses WebRTC technology".

Neko is released under the Apache License, version 2.0 (Apache-2.0). The repo has no enterprise folders, and we saw no dual licence.

  • Last commit: 7 Nov 2026 18:39 SGT, as of 8 Nov 2026. The repository is not archived.

Requirements

The docs say "The preferred way to install Neko is to use Docker".
Images are built for linux/amd64 and linux/arm64, which covers boards such as the Raspberry Pi 4 and Apple M1 or M2 machines. On ARM, the docs warn that fewer applications are available.
Chromium-based browsers need --shm-size=2g or more to work properly. In Docker Compose this is shm_size: 2gb. That setting sizes the container's shared memory, which is separate from the host's RAM. Firefox-based browsers do not need the larger shared memory size.
The docs focus on CPU images, and they say GPU support might not work as expected.
CPU core count and RAM size are not documented.

Ports

  • HTTP is published with -p 8080:8080, which maps container port 8080 to host port 8080.
  • WebRTC uses one UDP range, -p 56000-56100:56000-56100/udp. Set NEKO_WEBRTC_EPR=56000-56100, because the docs say the endpoint range must match the mapped ports.
  • Expose the same ports on the host without any remapping, and open the whole range on the server's firewall.
  • If you would like a single port, NEKO_WEBRTC_UDPMUX and NEKO_WEBRTC_TCPMUX let the server use one port for both UDP and TCP.
  • WebRTC traffic does not use HTTP, so nginx and other reverse proxies cannot forward it.

Configuration

Neko reads default values, a configuration file, environment variables and command-line arguments. Point to a config file with NEKO_CONFIG=/path/to/config.yaml.
The install docs use NEKO_WEBRTC_EPR, NEKO_WEBRTC_NAT1TO1 (the address the WebRTC client should connect to), NEKO_MEMBER_MULTIUSER_USER_PASSWORD and NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD.
The server listens on NEKO_SERVER_BIND, which defaults to 127.0.0.1:8080.
Neko v3 still accepts many v2 option names as deprecated aliases. When both forms are set, the v3 option wins. For example, NEKO_PASSWORD maps to NEKO_MEMBER_MULTIUSER_USER_PASSWORD with NEKO_MEMBER_PROVIDER=multiuser, and NEKO_EPR maps to NEKO_WEBRTC_EPR.

Install methods

  • Docker. The docs start a basic container with docker run -d --rm -p 8080:8080 plus further options.
  • Docker Compose, which the docs also support.

The docs treat any other install method as out of scope.

Hosting options

Neko is self-hosted. We found no managed hosting in the pages we read.

Backups and updates

Backup and restore are not documented in the pages we read.
To update a Compose install, run docker compose pull and then docker compose up -d.
Image tags come as latest, a major version such as ghcr.io/m1k1o/neko/firefox:3, or a full MAJOR.MINOR.PATCH release. The docs recommend the GHCR registry, since Docker Hub only carries images without flavors and only for AMD64.
Moving from v2 to v3 means updating your configuration to the new format. The v2 API and client compatibility layer have been removed, so clients must use the v3 API.

Sources (fetched 30 Oct 2026)