Neko: Your Virtual Team Browser – Installation with Docker
Install Neko as a virtual browser on your own server. Collaborative surfing with Docker Compose – self-hosted, private, and team-ready. Complete setup guide!
Table of Contents
CAUTION
This blog post was originally written in German and translated for your convenience. While I’ve made every effort to ensure accuracy, translation errors may occur. I appreciate any corrections via comments or email.
Imagine being able to share a browser tab with friends or colleagues as if you were all sitting in front of the same screen – without laggy screen-sharing or privacy concerns with tools like TeamViewer & Co. This is exactly what Neko, a self-hosted virtual browser based on Docker and WebRTC, makes possible.
In this guide, I’ll show you how to install the current version of Neko on your own server. By the end, you’ll have your own private space for shared online activities, whether it’s for a watch party, a programming session, collaborative research, or opening suspicious links.
Key Takeaways
| Aspect | Description |
|---|---|
| What is Neko? | A self-hosted, virtual browser running in a Docker container and streamed via WebRTC. |
| Main Advantages | Low latency, collaborative browsing for multiple users, full data control, and no dependency on third-party tools. |
| Technology | Based on Docker for easy installation and WebRTC for fast peer-to-peer video and audio transmission. |
| Installation | Straightforward via Docker Compose. |
| Configuration | Important settings like passwords and screen resolution are controlled via environment variables in the compose.yaml file. |
| Networking (Important!) | For a reliable connection over the internet (especially behind NAT), configuring STUN/TURN servers is crucial. |
Prerequisites
- A Server: A VPS or a home server with a Linux OS installed (e.g., Ubuntu 24.04). The hardware requirements are not trivial: plan for at least 2-4 CPU cores and 3-4 GB of RAM for a smooth 720p session.
- Docker and Docker Compose: Must be installed on the server.
- A Domain: Recommended for secure access via HTTPS with a reverse proxy.
- Basic Terminal Skills: You should be able to connect to your server via SSH and execute commands.
Step 1: Prepare the Server and Create a Directory
Connect to your server via SSH. First, let’s ensure Docker and Docker Compose are up to date.
# Update the system
sudo apt update && sudo apt upgrade -y
# Install Docker and Docker Compose (if not already done)
# Follow the official documentation on docs.docker.com
Now, let’s create a folder structure for our Neko project.
# Create and change into the directory
mkdir ~/neko
cd ~/neko
Step 2: Create the compose.yaml for Neko
Create a compose.yaml file. Here, we define the Neko service.
nano compose.yaml
Paste the following content. We’ll start with a configuration for Firefox.
services:
neko:
image: ghcr.io/m1k1o/neko/firefox:latest # You can also choose other browsers like 'chromium' or 'google-chrome' here
container_name: neko
restart: unless-stopped
shm_size: "2gb" # Important for browser performance, especially for Chromium-based browsers
cap_add:
- SYS_ADMIN
ports:
- "8080:8080" # Host-Port:Container-Port for the Web UI
- "52000-52100:52000-52100/udp" # Ports for WebRTC streaming
environment:
- NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD=your_secure_admin_password # Password for admins
- NEKO_MEMBER_MULTIUSER_USER_PASSWORD=your_secure_user_password # Password for normal users
- NEKO_DESKTOP_SCREEN=1920x1080@30 # Resolution and frame rate of the virtual desktop
- NEKO_WEBRTC_EPR=52000-52100 # Port range for WebRTC (must match 'ports')
# - NEKO_WEBRTC_ICESERVERS=[{"urls":["stun:stun.l.google.com:19302"]}] # Example for a public STUN server
Important Adjustments:
image: The images are now provided via the GitHub Container Registry (ghcr.io). Choose your preferred image. You can find a list in the documentation.shm_size:2gbis a good starting value. Browsers require a lot of shared memory, especially Chromium-based ones.ports: Port8080is for the web interface. The UDP port range52000-52100is essential for the WebRTC connection. Make sure these ports are open in your firewall if you have one.environment: Here we are using the new v3 configuration variables.NEKO_MEMBER_MULTIUSER_..._PASSWORD: Replace the passwords with your own secure values.NEKO_WEBRTC_ICESERVERS: This is crucial for Neko to work behind most routers (NAT). The example uses a public STUN server from Google in JSON format. This is not necessary for an external VPS.
Save the file and start the container:
sudo docker compose up -d
Step 3: First Access and Usage
Open your browser and enter your server’s IP address followed by port 8080: http://YOUR_SERVER_IP:8080.
You will be prompted for a password. Enter the NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD. You should now see the streamed Firefox browser in your browser!
- Left Sidebar: Here you’ll find the chat and the user list.
- Top Bar: As an admin, you can hand over control to other users here.
- Bottom Bar: Here you can also take control yourself.
Invite a friend by giving them the link and the user password. You can now browse together, watch videos, or edit documents.
Conclusion
Neko is a fantastic tool for collaborative browsing and an excellent, privacy-friendly alternative to traditional screen sharing. The installation with Docker is straightforward, and with a few configurations, you have a stable and secure platform for yourself and your friends.
What's the difference between the admin and user password?
Why is my audio or video not working? (Connection error)
I only see a black screen with Chromium-based browsers.
Can I install browser extensions?
Related Articles
Install Claper: Self-Host Interactive Presentations with Docker
Create interactive presentations with Claper. This guide shows you step-by-step how to install and secure Claper on your own server using Docker and Docker Compose.
Install Gitea with Docker: Your Own Lightweight Git Server
Install Gitea with Docker and Caddy as a reverse proxy. A beginner-friendly, step-by-step guide to setting up your own lightweight, self-hosted Git server.
Install Karakeep: Self-Hosted Bookmark Manager with Docker
Install Karakeep as your self-hosted bookmark manager with Docker. Includes Caddy reverse proxy and optional AI integration – full control over your bookmarks!
Open WebUI Setup: ChatGPT Alternative with Docker & Ollama
Install Open WebUI with Docker and Ollama on your own server for a private, powerful ChatGPT alternative. Step-by-step guide to a local, privacy-first AI setup!