Files

Migration from V2

Neko v3 accepts many V2 configuration options as deprecated aliases, which are mapped to their V3 equivalents. When both forms are set, the V3 option takes precedence. The V2 API and client compatibility layer have been removed; clients must use the V3 API.

Docker Images

Previously, neko was available primarily on Dockerhub as m1k1o/neko. While it stays as an option there, now the primary location is ghcr.io/m1k1o/neko.

ARM images were previously available as an flavor e.g. m1k1o/neko:arm-firefox or ghcr.io/m1k1o/neko/arm-firefox. Now, the ARM images are available as multi-arch images under the same tags as the amd64 images., e.g. ghcr.io/m1k1o/neko/firefox.

All applications available in the V2 images are also available in the V3 images. See the Docker Images documentation for more details.

Configuration

V3 continues to accept the V2 configuration aliases listed below. This does not enable or restore the V2 API.

The configuration in Neko V3 has been structured differently compared to V2. The V3 configuration is more modular and allows for more flexibility. The V3 configuration is split into multiple sections, each section is responsible for a specific part of the application. This allows for better organization and easier management of the configuration.

In order to migrate from V2 to V3, you need to update the configuration to the new format. The following table shows the mapping between the V2 and V3 configuration options.

V2 Configuration V3 Configuration
NEKO_LOGS=true NEKO_LOG_DIR=/var/log/neko, V3 allows specifying the log directory
NEKO_CERT NEKO_SERVER_CERT
NEKO_KEY NEKO_SERVER_KEY
NEKO_BIND NEKO_SERVER_BIND
NEKO_PROXY NEKO_SERVER_PROXY
NEKO_STATIC NEKO_SERVER_STATIC
NEKO_PATH_PREFIX NEKO_SERVER_PATH_PREFIX
NEKO_CORS NEKO_SERVER_CORS
NEKO_LOCKS NEKO_SESSION_LOCKED_CONTROLS and NEKO_SESSION_LOCKED_LOGINS,
V3 allows separate locks for controls and logins
NEKO_IMPLICIT_CONTROL NEKO_SESSION_IMPLICIT_HOSTING
NEKO_CONTROL_PROTECTION NEKO_SESSION_CONTROL_PROTECTION
NEKO_HEARTBEAT_INTERVAL NEKO_SESSION_HEARTBEAT_INTERVAL
NEKO_FILE_TRANSFER_ENABLED NEKO_FILETRANSFER_ENABLED
NEKO_FILE_TRANSFER_PATH NEKO_FILETRANSFER_DIR

See the V3 configuration options. For file transfer, see the File Transfer Plugin.

WebRTC Video

See the V3 configuration options for the WebRTC Video.

V2 Configuration V3 Configuration
NEKO_DISPLAY NEKO_CAPTURE_VIDEO_DISPLAY and NEKO_DESKTOP_DISPLAY,
consider using DISPLAY env variable if both should be the same
NEKO_VIDEO_CODEC NEKO_CAPTURE_VIDEO_CODEC
NEKO_AV1=true deprecated NEKO_CAPTURE_VIDEO_CODEC=av1
NEKO_H264=true deprecated NEKO_CAPTURE_VIDEO_CODEC=h264
NEKO_VP8=true deprecated NEKO_CAPTURE_VIDEO_CODEC=vp8
NEKO_VP9=true deprecated NEKO_CAPTURE_VIDEO_CODEC=vp9
NEKO_VIDEO NEKO_CAPTURE_VIDEO_PIPELINE, V3 allows multiple video pipelines
NEKO_VIDEO_BITRATE removed, use custom pipeline instead
NEKO_HWENC removed, use custom pipeline instead
NEKO_MAX_FPS removed, use custom pipeline instead

V2 video settings map to a single V3 video pipeline. The V3 client renders the cursor separately from the video stream.

WebRTC Audio

See the V3 configuration options for the WebRTC Audio.

V2 Configuration V3 Configuration
NEKO_DEVICE NEKO_CAPTURE_AUDIO_DEVICE
NEKO_AUDIO_CODEC NEKO_CAPTURE_AUDIO_CODEC
NEKO_G722=true deprecated NEKO_CAPTURE_AUDIO_CODEC=g722
NEKO_OPUS=true deprecated NEKO_CAPTURE_AUDIO_CODEC=opus
NEKO_PCMA=true deprecated NEKO_CAPTURE_AUDIO_CODEC=pcma
NEKO_PCMU=true deprecated NEKO_CAPTURE_AUDIO_CODEC=pcmu
NEKO_AUDIO NEKO_CAPTURE_AUDIO_PIPELINE
NEKO_AUDIO_BITRATE removed, use custom pipeline instead

Broadcast

See the V3 configuration options for the Broadcast.

V2 Configuration V3 Configuration
NEKO_BROADCAST_PIPELINE NEKO_CAPTURE_BROADCAST_PIPELINE
NEKO_BROADCAST_URL NEKO_CAPTURE_BROADCAST_URL
NEKO_BROADCAST_AUTOSTART NEKO_CAPTURE_BROADCAST_AUTOSTART

Desktop

See the V3 configuration options for the Desktop.

V2 Configuration V3 Configuration
NEKO_SCREEN NEKO_DESKTOP_SCREEN

Authentication

See the V3 configuration options for the Authentication.

V2 Configuration V3 Configuration
NEKO_PASSWORD NEKO_MEMBER_MULTIUSER_USER_PASSWORD with NEKO_MEMBER_PROVIDER=multiuser
NEKO_PASSWORD_ADMIN NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD with NEKO_MEMBER_PROVIDER=multiuser

The V2 password settings map to the Multi-user provider.

:::warning Limitation V2 clients might not be compatible with any other authentication provider than the multiuser. :::

WebRTC

See the V3 configuration options for the WebRTC.

V2 Configuration V3 Configuration
NEKO_NAT1TO1 NEKO_WEBRTC_NAT1TO1
NEKO_TCPMUX NEKO_WEBRTC_TCPMUX
NEKO_UDPMUX NEKO_WEBRTC_UDPMUX
NEKO_ICELITE NEKO_WEBRTC_ICELITE
NEKO_ICESERVERS or NEKO_ICESERVER NEKO_WEBRTC_ICESERVERS_FRONTEND and NEKO_WEBRTC_ICESERVERS_BACKEND,
V3 allows separate ICE servers for frontend and backend
NEKO_IPFETCH NEKO_WEBRTC_IP_RETRIEVAL_URL
NEKO_EPR NEKO_WEBRTC_EPR

Full V2 Configuration Reference

Here is a full list of V2 configuration options that remain available as deprecated aliases in Neko V3.

import { ConfigurationTab } from '@site/src/components/Configuration'; import configOptions from './help.json';

See the full V3 configuration reference for more details.

API

The V2 API compatibility layer has been removed. Migrate clients to the V3 API; the V2 /ws endpoint and V2 HTTP endpoints are no longer available.

Limitations

In v2, locks and muted users were managed using a simple map that tracked who set the lock and what was locked. In v3, locks are now implemented as setting options and no longer store the session_id of the user who applied the lock. As a result, if a client refreshes the page or reconnects, the lock information is lost, and the user who set the lock is displayed as Somebody.

Currently, the v3 has no native support for pipeline generation, meaning that the user has to manually specify the pipeline for video and audio if he wants to customize it. The v2 had a simple built-in support for setting the video bitrate, fps, audio bitrate, and hardware encoding. Since the introduction of multiple video pipelines in v3, this feature has been removed.