neko/webpage/docs/getting-started/installation/docker-setup.md
Miroslav Šedivý b23ca1af04 WIP new docs.
2025-02-08 20:30:40 +01:00

7.6 KiB

sidebar_position
1

Docker Setup

Use the following docker images from Docker Hub for x86_64:

  • m1k1o/neko:latest or m1k1o/neko:firefox - for Firefox.
  • m1k1o/neko:chromium - for Chromium (needs --cap-add=SYS_ADMIN, see the security implications).
  • m1k1o/neko:google-chrome - for Google Chrome (needs --cap-add=SYS_ADMIN, see the security implications).
  • m1k1o/neko:ungoogled-chromium - for Ungoogled Chromium (needs --cap-add=SYS_ADMIN, see the security implications) (by @whalehub).
  • m1k1o/neko:microsoft-edge - for Microsoft Edge (needs --cap-add=SYS_ADMIN, see the security implications).
  • m1k1o/neko:brave - for Brave Browser (needs --cap-add=SYS_ADMIN, see the security implications).
  • m1k1o/neko:vivaldi - for Vivaldi Browser (needs --cap-add=SYS_ADMIN, see the security implications) (by @Xeddius).
  • m1k1o/neko:opera for Opera Browser (requires extra steps to enable DRM, see instructions here. libffmpeg is already configured.) (by @prophetofxenu)
  • m1k1o/neko:tor-browser - for Tor Browser.
  • m1k1o/neko:remmina - for remote desktop connection (by @lowne).
    • Pass env var REMMINA_URL=<proto>://[<username>[:<password>]@]server[:port] (proto being vnc, rdp or spice).
    • Or create your custom configuration with remmina locally (it's saved in ~/.local/share/remmina/path_to_profile.remmina) and bind-mount it, then pass env var REMMINA_PROFILE=<path_to_profile.remmina>.
  • m1k1o/neko:vlc - for VLC Video player (needs volume mounted to /media with local video files, or setting VLC_MEDIA=/media path).
  • m1k1o/neko:xfce or m1k1o/neko:kde - for a shared desktop / installing shared software.
  • m1k1o/neko:base - for custom base.

Dockerhub images are built using GitHub actions on every push and on weekly basis to keep all browsers up-to-date.

All images are also available on GitHub Container Registry for faster pulls:

  • ghcr.io/m1k1o/neko/firefox:latest
  • ghcr.io/m1k1o/neko/chromium:latest
  • ghcr.io/m1k1o/neko/google-chrome:latest
  • ghcr.io/m1k1o/neko/ungoogled-chromium:latest
  • ghcr.io/m1k1o/neko/microsoft-edge:latest
  • ghcr.io/m1k1o/neko/brave:latest
  • ghcr.io/m1k1o/neko/vivaldi:latest
  • ghcr.io/m1k1o/neko/opera:latest
  • ghcr.io/m1k1o/neko/tor-browser:latest
  • ghcr.io/m1k1o/neko/remmina:latest
  • ghcr.io/m1k1o/neko/vlc:latest
  • ghcr.io/m1k1o/neko/xfce:latest
  • ghcr.io/m1k1o/neko/kde:latest

For ARM-based images (like Raspberry Pi - with GPU hardware acceleration, Oracle Cloud ARM tier). Currently, not all images are available for ARM, because not all applications are available for ARM. Please note, that m1k1o/neko:arm-* images from dockerhub are currently not maintained and they can contain outdated software. Please use images below:

  • ghcr.io/m1k1o/neko/arm-firefox:latest
  • ghcr.io/m1k1o/neko/arm-chromium:latest
  • ghcr.io/m1k1o/neko/arm-ungoogled-chromium:latest
  • ghcr.io/m1k1o/neko/arm-vlc:latest
  • ghcr.io/m1k1o/neko/arm-xfce:latest

For images with VAAPI GPU hardware acceleration using intel drivers use:

  • ghcr.io/m1k1o/neko/intel-firefox:latest
  • ghcr.io/m1k1o/neko/intel-chromium:latest
  • ghcr.io/m1k1o/neko/intel-google-chrome:latest
  • ghcr.io/m1k1o/neko/intel-ungoogled-chromium:latest
  • ghcr.io/m1k1o/neko/intel-microsoft-edge:latest
  • ghcr.io/m1k1o/neko/intel-brave:latest
  • ghcr.io/m1k1o/neko/intel-vivaldi:latest
  • ghcr.io/m1k1o/neko/intel-opera:latest
  • ghcr.io/m1k1o/neko/intel-tor-browser:latest
  • ghcr.io/m1k1o/neko/intel-remmina:latest
  • ghcr.io/m1k1o/neko/intel-vlc:latest
  • ghcr.io/m1k1o/neko/intel-xfce:latest
  • ghcr.io/m1k1o/neko/intel-kde:latest

For images with Nvidia GPU hardware acceleration using EGL (see example below) use (please note, there is a known issue with EGL and Chromium-based browsers, see here):

  • ghcr.io/m1k1o/neko/nvidia-firefox:latest
  • ghcr.io/m1k1o/neko/nvidia-chromium:latest
  • ghcr.io/m1k1o/neko/nvidia-google-chrome:latest
  • ghcr.io/m1k1o/neko/nvidia-microsoft-edge:latest
  • ghcr.io/m1k1o/neko/nvidia-brave:latest

GHCR images are built using GitHub actions for every tag.

Running Neko with Docker

To start a basic Neko container, use the following command:

docker run -d --rm \
  -p 8080:8080 \
  -p 56000-56100:56000-56100/udp \
  -e NEKO_EPR=56000-56100 \
  -e NEKO_PASSWORD=neko \
  -e NEKO_PASSWORD_ADMIN=admin \
  -e NEKO_NAT1TO1=<your-ip> \
  --shm-size=2g \
  m1k1o/neko:latest

Explanation

  • -d - Run the container in the background.
  • --rm - Automatically remove the container when it exits.
  • -p 8080:8080 - Map the host's port 8080 to the container's port 8080.
  • -p 56000-56100:56000-56100/udp - Map the host's ports 56000-56100 to the container's ports 56000-56100 using UDP.
  • -e NEKO_EPR=56000-56100 - Set the range of ports for the WebRTC connection, it must match the port range mapped above.
  • -e NEKO_PASSWORD=neko and -e NEKO_PASSWORD_ADMIN=admin - Set passwords for the user and admin user.
  • -e NEKO_NAT1TO1=<your-ip> - Set the public or local IP address for the NAT1:1 connection.
  • --shm-size=2g - Set the shared memory size to 2GB, otherwise, the browser may crash.
  • m1k1o/neko:latest - The name of the image to run, change it to the desired image.

Now, open your browser and go to: http://localhost:8080. You should see the Neko interface.

Using Docker Compose

You can also use Docker Compose to run Neko. Create a docker-compose.yml file with the following content:

services:
  neko:
    image: m1k1o/neko:latest
    shm_size: 2g
    ports:
      - "8080:8080"
      - "56000-56100:56000-56100/udp"
    environment:
      NEKO_EPR: 56000-56100
      NEKO_PASSWORD: neko
      NEKO_PASSWORD_ADMIN: admin
      NEKO_NAT1TO1: <your-ip>

Then, run the following command:

docker compose up -d