### Install Project Dependencies Source: https://github.com/m1k1o/neko/blob/master/webpage/README.md Run this command to install all necessary project dependencies. ```bash $ npm run install ``` -------------------------------- ### Install xf86-input-neko Source: https://github.com/m1k1o/neko/blob/master/utils/xorg-deps/xf86-input-neko/README.md Standard build and installation commands for the driver. Ensure you are in the extracted directory. ```bash ./configure --prefix=/usr make sudo make install ``` -------------------------------- ### File Provider Example Members JSON Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/configuration/authentication.md An example `members.json` file demonstrating two users, 'admin' and 'user', with their respective passwords and profiles. Passwords are in plain text in this example. ```json { "admin": { "password": "admin", "profile": { "name": "Administrator", "is_admin": true, "can_login": true, "can_connect": true, "can_watch": true, "can_host": true, "can_share_media": true, "can_access_clipboard": true, "sends_inactive_cursor": true, "can_see_inactive_cursors": true, "plugins": {} } }, "user": { "password": "neko", "profile": { "name": "User", "is_admin": false, "can_login": true, "can_connect": true, "can_watch": true, "can_host": true, "can_share_media": true, "can_access_clipboard": true, "sends_inactive_cursor": true, "can_see_inactive_cursors": false, "plugins": {} } } } ``` -------------------------------- ### JSON Configuration Example Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/configuration/README.md Example configuration in JSON format. This can be used as an alternative to YAML. ```json { "capture": { "screencast": { "enabled": false } }, "server": { "pprof": true }, "desktop": { "screen": "1920x1080@60" }, "member": { "provider": "multiuser", "multiuser": { "admin_password": "admin", "user_password": "neko" } }, "session": { "merciful_reconnect": true, "implicit_hosting": false, "inactive_cursors": true, "cookie": { "enabled": false } }, "webrtc": { "icelite": true, "iceservers": { "backend": [ { "urls": [ "stun:stun.l.google.com:19302" ] } ], "frontend": [ { "urls": [ "stun:stun.l.google.com:19305" ] } ] } } } ``` -------------------------------- ### YAML Configuration Example Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/configuration/README.md Example configuration in YAML format. This is the default format used throughout the documentation. ```yaml capture: screencast: enabled: false server: pprof: true desktop: screen: "1920x1080@60" member: provider: "multiuser" multiuser: admin_password: "admin" user_password: "neko" session: merciful_reconnect: true implicit_hosting: false inactive_cursors: true cookie: enabled: false webrtc: icelite: true iceservers: # Backend servers are ignored if icelite is true. backend: - urls: [ stun:stun.l.google.com:19302 ] frontend: - urls: [ stun:stun.l.google.com:19305 ] ``` -------------------------------- ### TOML Configuration Example Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/configuration/README.md Example configuration in TOML format. This is another supported configuration file format. ```toml [capture.screencast] enabled = false [server] pprof = true [desktop] screen = "1920x1080@60" [member] provider = "multiuser" [member.multiuser] admin_password = "admin" user_password = "neko" [session] merciful_reconnect = true implicit_hosting = false inactive_cursors = true [session.cookie] enabled = false [webrtc] icelite = true [[webrtc.iceservers.backend]] urls = [ "stun:stun.l.google.com:19302" ] [[webrtc.iceservers.frontend]] urls = [ "stun:stun.l.google.com:19305" ] ``` -------------------------------- ### Start Local Development Server Source: https://github.com/m1k1o/neko/blob/master/webpage/README.md Starts a local development server for live previewing changes. Changes are reflected without server restarts. ```bash $ npm run start ``` -------------------------------- ### Install Docker Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/quick-start.md Installs the stable channel of Docker using a script. Ensure you have curl installed. ```shell curl -sSL https://get.docker.com/ | CHANNEL=stable bash ``` -------------------------------- ### Manage Extension Installation Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/customization/browsers.md Control extension installation by setting the 'installation_mode' for all extensions or specific ones. Use 'blocked' to prevent installation, 'allowed' to permit user installation, or 'force_installed' to automatically install and prevent removal. ```json { "policies": { "ExtensionSettings": { "*": { "installation_mode": "blocked" }, "sponsorBlocker@ajay.app": { "install_url": "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi", "installation_mode": "force_installed" }, "uBlock0@raymondhill.net": { "install_url": "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi", "installation_mode": "force_installed" } } } } ``` -------------------------------- ### Envfile Configuration Example Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/configuration/README.md Example configuration in .env file format. This format is useful for environment variable-based configuration. ```env CAPTURE_SCREENCAST_ENABLED=false SERVER_PPROF=true DESKTOP_SCREEN=1920x1080@60 MEMBER_PROVIDER=multiuser MEMBER_MULTIUSER_ADMIN_PASSWORD=admin MEMBER_MULTIUSER_USER_PASSWORD=neko SESSION_MERCIFUL_RECONNECT=true SESSION_IMPLICIT_HOSTING=false SESSION_INACTIVE_CURSORS=true SESSION_COOKIE_ENABLED=false WEBRTC_ICELITE=true WEBRTC_ICESERVERS_BACKEND="[{"urls":["stun:stun.l.google.com:19302"]}]" WEBRTC_ICESERVERS_FRONTEND="[{"urls":["stun:stun.l.google.com:19305"]}]" ``` -------------------------------- ### HCL Configuration Example Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/configuration/README.md Example configuration in HCL format. This format is also supported for Neko configuration. ```hcl capture { screencast { enabled = false } } server { pprof = true } desktop { screen = "1920x1080@60" } member { provider = "multiuser" multiuser { admin_password = "admin" user_password = "neko" } } session { merciful_reconnect = true implicit_hosting = false inactive_cursors = true cookie { enabled = false } } webrtc { icelite = true iceservers { backend { urls = [ "stun:stun.l.google.com:19302" ] } frontend { urls = [ "stun:stun.l.google.com:19305" ] } } } ``` -------------------------------- ### Object Provider Example Configuration Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/configuration/authentication.md An example `config.yaml` file demonstrating the object provider configuration with two users, 'admin' and 'user', including their passwords and profiles. ```yaml member: provider: object object: users: - username: "admin" password: "admin" profile: name: "Administrator" is_admin: true can_login: true can_connect: true can_watch: true can_host: true can_share_media: true can_access_clipboard: true sends_inactive_cursor: true can_see_inactive_cursors: true - username: "user" password: "neko" profile: name: "User" is_admin: false can_login: true can_connect: true can_watch: true can_host: true can_share_media: true can_access_clipboard: true sends_inactive_cursor: true can_see_inactive_cursors: false ``` -------------------------------- ### Download and Start Neko with Docker Compose Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/quick-start.md Downloads the docker-compose.yaml file and starts Neko in detached mode. You can edit the docker-compose.yaml file to configure Neko, for example, to set a local IP address using NEKO_NAT1TO1. ```shell wget https://raw.githubusercontent.com/m1k1o/neko/master/docker-compose.yaml sudo docker compose up -d ``` -------------------------------- ### Java Properties Configuration Example Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/configuration/README.md Example configuration in Java Properties format. This is another supported format for Neko configuration. ```properties capture.screencast.enabled = false server.pprof = true desktop.screen = 1920x1080@60 member.provider = multiuser member.multiuser.admin_password = admin member.multiuser.user_password = neko session.merciful_reconnect = true session.implicit_hosting = false session.inactive_cursors = true session.cookie.enabled = false webrtc.icelite = true ``` -------------------------------- ### Install PulseAudio Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/developer-guide/README.md Installs the PulseAudio sound server package on Debian/Ubuntu-based systems for audio support. ```shell sudo apt-get install pulseaudio; ``` -------------------------------- ### Remmina Configuration File Example Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/installation/docker-images.md This is an example of a Remmina profile configuration file. Bind-mount this file into the container and set the REMMINA_PROFILE environment variable to use it. ```ini [remmina] name=Default protocol=VNC server=server.local port=5900 ``` -------------------------------- ### Install and Load v4l2loopback Module Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/configuration/capture.md Installs necessary packages and loads the v4l2loopback kernel module for webcam capture. Load the module with `exclusive_caps=1` to allow multiple applications to access the virtual webcam. ```bash # Install the required packages (Debian/Ubuntu) sudo apt install v4l2loopback-dkms v4l2loopback-utils linux-headers-`uname -r` linux-modules-extra-`uname -r` # Load the module with exclusive_caps=1 to allow multiple applications to access the virtual webcam sudo modprobe v4l2loopback exclusive_caps=1 ``` -------------------------------- ### Install netcat Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/troubleshooting.md If the 'nc' command is not found, install the netcat package using your system's package manager. ```shell sudo apt-get install netcat ``` -------------------------------- ### Nginx Reverse Proxy Configuration Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/reverse-proxy-setup.md Nginx configuration file example for proxying requests to Neko. This setup includes WebSocket support and header forwarding. Ensure `server.proxy=true` is set in Neko's config. ```nginx server { listen 443 ssl http2; server_name example.com; location / { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_cache_bypass $http_upgrade; } } ``` -------------------------------- ### Install Server Build Dependencies Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/developer-guide/build.md Install system dependencies required for building the Neko server. This includes X11, GTK, and GStreamer libraries. ```bash sudo apt-get install -y --no-install-recommends libx11-dev libxrandr-dev libxtst-dev libgtk-3-dev libxcvt-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev ``` -------------------------------- ### Start Neko with Docker Compose Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/installation/README.md Command to start the Neko service defined in your docker-compose.yml file in detached mode. ```sh docker compose up -d ``` -------------------------------- ### H264 Pipeline Configuration Example Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/configuration/capture.md Example configuration for an H264 video pipeline, demonstrating dynamic width and height expressions, Gstreamer prefix/suffix, and encoder parameters for 'main' quality. ```yaml capture: video: codec: h264 ids: [ main ] pipelines: main: width: (width / 3) * 2 height: (height / 3) * 2 fps: 20 gst_prefix: "! video/x-raw,format=I420" gst_encoder: "x264enc" gst_params: threads: 4 bitrate: 4096 key-int-max: 15 byte-stream: true tune: zerolatency speed-preset: veryfast gst_suffix: "! video/x-h264,stream-format=byte-stream" ``` -------------------------------- ### VP8 Pipeline Configuration Example Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/configuration/capture.md Example configuration for a VP8 video pipeline, specifying codec, pipeline IDs, and detailed Gstreamer encoder parameters for 'hq' and 'lq' quality settings. ```yaml capture: video: codec: vp8 # HQ is the default pipeline ids: [ hq, lq ] pipelines: hq: fps: 25 gst_encoder: vp8enc gst_params: target-bitrate: round(3072 * 650) cpu-used: 4 end-usage: cbr threads: 4 deadline: 1 undershoot: 95 buffer-size: (3072 * 4) buffer-initial-size: (3072 * 2) buffer-optimal-size: (3072 * 3) keyframe-max-dist: 25 min-quantizer: 4 max-quantizer: 20 lq: fps: 25 gst_encoder: vp8enc gst_params: target-bitrate: round(1024 * 650) cpu-used: 4 end-usage: cbr threads: 4 deadline: 1 undershoot: 95 buffer-size: (1024 * 4) buffer-initial-size: (1024 * 2) buffer-optimal-size: (1024 * 3) keyframe-max-dist: 25 min-quantizer: 4 max-quantizer: 20 ``` -------------------------------- ### Install Other Dependencies Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/developer-guide/README.md Installs additional utilities and libraries, including xdotool, xclip, GTK+ 3, Opus, and VPX, on Debian/Ubuntu-based systems. ```shell sudo apt-get install xdotool xclip libgtk-3-0 libgtk-3-dev libopus0 libvpx6; ``` -------------------------------- ### Install X.org Dependencies Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/developer-guide/README.md Installs X11 development libraries and utilities necessary for X.org server interaction on Debian/Ubuntu-based systems. ```shell sudo apt-get install libx11-dev libxrandr-dev libxtst-dev libxcvt-dev xorg; ``` -------------------------------- ### Install Docker Compose Plugin Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/quick-start.md Installs the Docker Compose plugin for managing multi-container Docker applications. Requires apt package manager. ```shell sudo apt-get update sudo apt-get install docker-compose-plugin ``` -------------------------------- ### GHCR Docker Image Versioning Examples Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/installation/docker-images.md Examples of version tags available for Neko Docker images on GHCR, following Semantic Versioning. ```text ghcr.io/m1k1o/neko/firefox:latest ``` ```text ghcr.io/m1k1o/neko/firefox:3 ``` ```text ghcr.io/m1k1o/neko/firefox:3.0 ``` ```text ghcr.io/m1k1o/neko/firefox:3.0.0 ``` -------------------------------- ### Install GStreamer Dependencies Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/developer-guide/README.md Installs GStreamer development libraries and plugins required for video processing on Debian/Ubuntu-based systems. ```shell sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ gstreamer1.0-plugins-base gstreamer1.0-plugins-good \ gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \ gstreamer1.0-pulseaudio; ``` -------------------------------- ### Build Neko Frontend Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/developer-guide/build.md Install frontend dependencies and build the production version of the frontend. Requires Node.js and npm. ```bash cd client; npm install; npm run build; ``` -------------------------------- ### GET /api/room/screen/configurations Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/api/screen-configurations-list.api.mdx Retrieve a list of all available screen configurations. ```APIDOC ## GET /api/room/screen/configurations ### Description Retrieve a list of all available screen configurations. ### Method GET ### Endpoint /api/room/screen/configurations ### Response #### Success Response (200) - **width** (integer) - The width of the screen. - **height** (integer) - The height of the screen. - **rate** (integer) - The refresh rate of the screen. #### Error Response (401) - **message** (string) - Detailed error message. #### Error Response (403) - **message** (string) - Detailed error message. ### Response Example ```json [ { "width": 1280, "height": 720, "rate": 30 } ] ``` ``` -------------------------------- ### Manage Extensions in Chromium Browsers Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/customization/browsers.md Control extension installation using ExtensionInstallForcelist, ExtensionInstallAllowlist, and ExtensionInstallBlocklist. The ExtensionInstallBlocklist defaults to blocking all extensions. ```json { "ExtensionInstallForcelist": [ "ddkjiahejlhfcafbddmgiahcphecmpfh;https://clients2.google.com/service/update2/crx", "mnjggcdmjocbbbhaepdhchncahnbgone;https://clients2.google.com/service/update2/crx" ], "ExtensionInstallAllowlist": [ "ddkjiahejlhfcafbddmgiahcphecmpfh", "mnjggcdmjocbbbhaepdhchncahnbgone" ], "ExtensionInstallBlocklist": [ "*" ] } ``` -------------------------------- ### Example Configuration Merge Order Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/configuration/README.md Demonstrates the order in which Neko applies configuration values from different sources. The final value is determined by the last source in the merge order. ```bash # Default Value: 127.0.0.1:8080 # Config File cat config.yaml </?pwd=neko&usr=guest&cast=1 ``` -------------------------------- ### Build Neko Server Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/developer-guide/build.md Navigate to the server directory and execute the build script to compile the Neko server binary and its plugins. Requires Go (version 1.18+). ```bash cd server; ./build; ``` -------------------------------- ### Clone and Build Neko Client Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/customization/ui.md Clone the Neko repository, navigate to the client directory, install dependencies, and build the project to prepare for UI customization. ```bash # Clone the repository git clone https://github.com/m1k1o/neko # Change to the client directory cd neko/client # Install the dependencies npm install # Build the project npm run build ``` -------------------------------- ### Coturn Server in Docker Compose Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/configuration/webrtc.md Set up a Coturn TURN server within a Docker Compose environment. This example configures essential parameters like realm, ports, and user credentials for the TURN server. ```yaml services: coturn: image: 'coturn/coturn:latest' network_mode: "host" command: | -n --realm=localhost --fingerprint --listening-ip=0.0.0.0 --external-ip= --listening-port=3478 --min-port=49160 --max-port=49200 --log-file=stdout --user=neko:neko --lt-cred-mech ``` -------------------------------- ### DTLS Transport Not Started Error Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/troubleshooting.md This warning indicates that the DTLS transport has not started, preventing SrtcpSession from opening. Ensure UDP ports are correctly exposed and reachable. ```log WRN undeclaredMediaProcessor failed to open SrtcpSession: the DTLS transport has not started yet module=webrtc subsystem= ``` -------------------------------- ### Configure General Plugin Settings Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/configuration/plugins.md Use this to enable/disable plugin support, set plugins as required, and specify the directory for plugin files. Ensure 'plugins.enabled' is true to load any plugins. ```json { "plugins.enabled": true, "plugins.required": false, "plugins.dir": "./plugins" } ``` -------------------------------- ### Run Basic Neko Container with Docker Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/installation/README.md Use this command to start a Neko container in detached mode. It maps necessary ports and sets essential environment variables for WebRTC and user authentication. The container is automatically removed upon exit. ```sh docker run -d --rm \ -p 8080:8080 \ -p 56000-56100:56000-56100/udp \ -e NEKO_WEBRTC_EPR=56000-56100 \ -e NEKO_WEBRTC_NAT1TO1=127.0.0.1 \ -e NEKO_MEMBER_MULTIUSER_USER_PASSWORD=neko \ -e NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD=admin \ ghcr.io/m1k1o/neko/firefox:latest ``` -------------------------------- ### Copying Default Supervisord Configuration Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/customization/README.md These bash commands demonstrate how to create a temporary container, copy the default supervisord configuration file for Firefox, and then remove the container. This is a prerequisite for modifying the default configuration. ```bash # Create a container without starting it docker create --name neko ghcr.io/m1k1o/neko/firefox:latest # Copy the default configuration file to your local machine docker cp neko:/etc/neko/supervisord/firefox.conf ./firefox.conf # Remove the container docker rm -f neko ``` -------------------------------- ### GET /metrics Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/api/metrics.api.mdx Retrieve metrics for the API. ```APIDOC ## GET /metrics ### Description Retrieve metrics for the API. ### Method GET ### Endpoint /metrics ### Response #### Success Response (200) - **Metrics** (object) - Metrics retrieved successfully. #### Response Example { "example": "Metrics retrieved successfully." } ``` -------------------------------- ### GET /api/members Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/api/members-list.api.mdx Retrieve a list of all members. ```APIDOC ## GET /api/members ### Description Retrieve a list of all members. ### Method GET ### Endpoint /api/members ### Parameters #### Query Parameters - **limit** (number) - Optional - - **offset** (number) - Optional - ### Response #### Success Response (200) - **[Response fields not specified in the source text]** #### Response Example { "example": "response body" } ``` -------------------------------- ### Run VLC with Neko using Media URL Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/installation/docker-images.md Execute this command to play a media file in VLC through Neko by providing the media URL via the VLC_MEDIA environment variable. ```bash docker run \ -e VLC_MEDIA=http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4 \ ghcr.io/m1k1o/neko/vlc ``` -------------------------------- ### GET /api/sessions Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/api/sessions-get.api.mdx Retrieve a list of all active sessions. ```APIDOC ## GET /api/sessions ### Description Retrieve a list of all active sessions. ### Method GET ### Endpoint /api/sessions ### Parameters ### Request Body ### Request Example ### Response #### Success Response (200) #### Response Example ``` -------------------------------- ### GET /health Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/api/healthcheck.api.mdx Check the health status of the API. ```APIDOC ## GET /health ### Description Check the health status of the API. ### Method GET ### Endpoint /health ### Response #### Success Response (200) - **description** (string) - The API is healthy. ``` -------------------------------- ### GET /api/whoami Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/api/whoami.api.mdx Retrieve information about the current user session. ```APIDOC ## GET /api/whoami ### Description Retrieve information about the current user session. ### Method GET ### Endpoint /api/whoami ### Parameters ### Request Body ### Request Example ### Response #### Success Response (200) - **field** (type) - Description #### Response Example ```json { "example": "response body" } ``` ``` -------------------------------- ### Neko VLC Docker Compose Configuration Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/installation/examples.md Configure Neko to run with VLC. Mount your video folder to /video to access your media files. Remember to replace and with your actual paths and IP address. ```yaml services: neko: image: "ghcr.io/m1k1o/neko/vlc:latest" restart: "unless-stopped" shm_size: "2gb" volumes: - ":/video" # mount your video folder ports: - "8080:8080" - "52000-52100:52000-52100/udp" environment: NEKO_DESKTOP_SCREEN: '1920x1080@30' NEKO_MEMBER_MULTIUSER_USER_PASSWORD: neko NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: admin NEKO_WEBRTC_EPR: 52000-52100 NEKO_WEBRTC_ICELITE: 1 NEKO_WEBRTC_NAT1TO1: ``` -------------------------------- ### Get Stats Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/api/stats.api.mdx Retrieve statistics about the server and user sessions. ```APIDOC ## GET /api/stats ### Description Retrieve statistics about the server and user sessions. ### Method GET ### Endpoint /api/stats ### Response #### Success Response (200) - **has_host** (boolean) - Indicates if there is a host currently. - **host_id** (string) - The ID of the current host, if any. - **server_started_at** (string) - The timestamp when the server started. - **total_users** (integer) - The total number of users connected. - **last_user_left_at** (string) - The timestamp when the last user left, if any. - **total_admins** (integer) - The total number of admins connected. - **last_admin_left_at** (string) - The timestamp when the last admin left, if any. #### Response Example { "has_host": true, "host_id": "some-host-id", "server_started_at": "2023-10-27T10:00:00Z", "total_users": 150, "last_user_left_at": "2023-10-27T10:30:00Z", "total_admins": 5, "last_admin_left_at": "2023-10-27T09:45:00Z" } #### Error Response (401) - **message** (string) - Detailed error message. #### Error Response (403) - **message** (string) - Detailed error message. ``` -------------------------------- ### GET /m1k1o/neko Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/api/session-get.api.mdx Retrieves the current session details for the user. ```APIDOC ## GET /m1k1o/neko ### Description Retrieves the current session details for the user. ### Method GET ### Endpoint /m1k1o/neko ### Response #### Success Response (200) - **id** (string) - The unique identifier of the session. - **profile** (object) - The profile information of the user. - **name** (string) - The name of the member. - **is_admin** (boolean) - Indicates if the member is an admin. - **can_login** (boolean) - Indicates if the member can log in. - **can_connect** (boolean) - Indicates if the member can connect. - **can_watch** (boolean) - Indicates if the member can watch. - **can_host** (boolean) - Indicates if the member can host. - **can_share_media** (boolean) - Indicates if the member can share media. - **can_access_clipboard** (boolean) - Indicates if the member can access the clipboard. - **sends_inactive_cursor** (boolean) - Indicates if the member sends inactive cursor. - **can_see_inactive_cursors** (boolean) - Indicates if the member can see inactive cursors. - **plugins** (object) - Additional plugin settings. - **state** (object) - The current state of the session. - **is_connected** (boolean) - Indicates if the user is connected. - **is_watching** (boolean) - Indicates if the user is watching. #### Response Example ```json { "id": "session-id-123", "profile": { "name": "John Doe", "is_admin": true, "can_login": true, "can_connect": true, "can_watch": true, "can_host": true, "can_share_media": true, "can_access_clipboard": true, "sends_inactive_cursor": false, "can_see_inactive_cursors": true, "plugins": {}, "name": "John Doe", "is_admin": true, "can_login": true, "can_connect": true, "can_watch": true, "can_host": true, "can_share_media": true, "can_access_clipboard": true, "sends_inactive_cursor": false, "can_see_inactive_cursors": true, "plugins": {} }, "state": { "is_connected": true, "is_watching": false } } ``` #### Error Response (401) - **message** (string) - Detailed error message. #### Error Response (403) - **message** (string) - Detailed error message. #### Error Response (404) - **message** (string) - Detailed error message. ``` -------------------------------- ### Multi-User Provider Configuration Example Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/configuration/authentication.md This YAML configuration defines the multi-user provider, including passwords and detailed profiles for both admin and regular users. Note the 'is_admin' flag and other permissions that differentiate user roles. ```yaml member: provider: multiuser multiuser: admin_password: "admin" admin_profile: name: "" # if empty, the login username is used is_admin: true can_login: true can_connect: true can_watch: true can_host: true can_share_media: true can_access_clipboard: true sends_inactive_cursor: true can_see_inactive_cursors: true user_password: "neko" user_profile: name: "" # if empty, the login username is used is_admin: false can_login: true can_connect: true can_watch: true can_host: true can_share_media: true can_access_clipboard: true sends_inactive_cursor: true can_see_inactive_cursors: false ``` -------------------------------- ### Get Room Settings Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/api/settings-get.api.mdx Retrieve the current settings of the room. ```APIDOC ## GET /api/room/settings ### Description Retrieve the current settings of the room. ### Method GET ### Endpoint /api/room/settings ### Response #### Success Response (200) - **private_mode** (boolean) - Indicates if the room is in private mode. - **locked_controls** (boolean) - Indicates if the room controls are locked. - **implicit_hosting** (boolean) - Indicates if implicit hosting is enabled. - **inactive_cursors** (boolean) - Indicates if inactive cursors are shown. - **merciful_reconnect** (boolean) - Indicates if merciful reconnect is enabled. - **plugins** (object) - Additional plugin settings. #### Response Example ```json { "private_mode": true, "locked_controls": false, "implicit_hosting": true, "inactive_cursors": false, "merciful_reconnect": true, "plugins": {} } ``` #### Error Response (401) - **message** (string) - Detailed error message. #### Error Response (403) - **message** (string) - Detailed error message. ``` -------------------------------- ### POST /api/room/broadcast/start Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/api/broadcast-start.api.mdx Initiates a broadcast for the current room's content. Requires a valid broadcast URL. ```APIDOC ## POST /api/room/broadcast/start ### Description Start broadcasting the room's content. ### Method POST ### Endpoint /api/room/broadcast/start ### Request Body - **url** (string) - Required - The URL of the broadcast. - **is_active** (boolean) - Optional - Indicates if the broadcast is active. ### Request Example ```json { "url": "rtmp://localhost/live", "is_active": true } ``` ### Response #### Success Response (204) No content is returned on successful broadcast start. #### Error Response (400) - **message** (string) - Detailed error message, e.g., "Missing broadcast URL." #### Error Response (401) - **message** (string) - Detailed error message, e.g., "The request requires user authentication." #### Error Response (403) - **message** (string) - Detailed error message, e.g., "The server understood the request, but refuses to authorize it." #### Error Response (422) - **message** (string) - Detailed error message, e.g., "Server is already broadcasting." #### Error Response (500) - **message** (string) - Detailed error message, e.g., "Unable to start broadcast." ``` -------------------------------- ### GET /api/room/screen Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/api/screen-configuration.api.mdx Retrieve the current screen configuration of the room. ```APIDOC ## GET /api/room/screen ### Description Retrieve the current screen configuration of the room. ### Method GET ### Endpoint /api/room/screen ### Parameters ### Request Body ### Request Example ### Response #### Success Response (200) - **width** (integer) - The width of the screen. - **height** (integer) - The height of the screen. - **rate** (integer) - The refresh rate of the screen. #### Error Response (401) - **message** (string) - Detailed error message. #### Error Response (403) - **message** (string) - Detailed error message. #### Error Response (500) - **message** (string) - Detailed error message. #### Response Example ```json { "width": 1280, "height": 720, "rate": 30 } ``` ``` -------------------------------- ### Multiple ICE Servers in YAML Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/configuration/webrtc.md Configure multiple ICE servers, including TURN and STUN, using YAML format. Ensure the TURN server URL includes the correct port and credentials if required. ```yaml - urls: "turn::3478" username: "neko" credential: "neko" - urls: "stun:stun.l.google.com:19302" ``` -------------------------------- ### GET /m1k1o/neko/members Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/api/members-list.api.mdx Retrieves a list of members with their profile information. ```APIDOC ## GET /m1k1o/neko/members ### Description Retrieves a list of members, including their unique identifiers and detailed profile information. ### Method GET ### Endpoint /m1k1o/neko/members ### Parameters #### Query Parameters None ### Request Example None ### Response #### Success Response (200) - **id** (string) - The unique identifier of the member. - **profile** (object) - The profile information of the member. - **name** (string) - The name of the member. - **is_admin** (boolean) - Indicates if the member is an admin. - **can_login** (boolean) - Indicates if the member can log in. - **can_connect** (boolean) - Indicates if the member can connect. - **can_watch** (boolean) - Indicates if the member can watch. - **can_host** (boolean) - Indicates if the member can host. - **can_share_media** (boolean) - Indicates if the member can share media. - **can_access_clipboard** (boolean) - Indicates if the member can access the clipboard. - **sends_inactive_cursor** (boolean) - Indicates if the member sends inactive cursor. - **can_see_inactive_cursors** (boolean) - Indicates if the member can see inactive cursors. - **plugins** (object) - Additional plugin settings. #### Response Example ```json [ { "id": "member-123", "profile": { "name": "Alice", "is_admin": true, "can_login": true, "can_connect": true, "can_watch": true, "can_host": false, "can_share_media": true, "can_access_clipboard": false, "sends_inactive_cursor": false, "can_see_inactive_cursors": true, "plugins": {} } } ] ``` #### Error Response (401) - **message** (string) - Detailed error message. #### Error Response (403) - **message** (string) - Detailed error message. ``` -------------------------------- ### Run VLC with Neko using Local Playlist Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/installation/docker-images.md This command runs VLC with Neko, playing media from a local playlist. Ensure the media directory is mounted and the VLC_MEDIA variable points to the playlist file within the container. ```bash docker run \ -v /path/to/media:/media \ -e VLC_MEDIA=/media/playlist.xspf \ ghcr.io/m1k1o/neko/vlc ``` -------------------------------- ### Get Screencast Image Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/api/screen-cast-image.api.mdx Retrieve the current screencast image. ```APIDOC ## GET /api/room/screen/cast.jpg ### Description Retrieve the current screencast image. ### Method GET ### Endpoint /api/room/screen/cast.jpg ### Parameters ### Request Body ### Request Example ### Response #### Success Response (200) - **image/jpeg** (binary) - Screencast image retrieved successfully. #### Error Response (400) - **application/json** (object) - Screencast is not enabled. - **message** (string) - Detailed error message. #### Error Response (401) - **application/json** (object) - The request requires user authentication. - **message** (string) - Detailed error message. #### Error Response (403) - **application/json** (object) - The server understood the request, but refuses to authorize it. - **message** (string) - Detailed error message. #### Error Response (500) - **application/json** (object) - Unable to fetch image. - **message** (string) - Detailed error message. #### Response Example (Binary image data for success, JSON error object for errors) ``` -------------------------------- ### GET /api/room/keyboard/map Source: https://github.com/m1k1o/neko/blob/master/webpage/docs/api/keyboard-map-get.api.mdx Retrieve the current keyboard map configuration. ```APIDOC ## GET /api/room/keyboard/map ### Description Retrieve the current keyboard map configuration. ### Method GET ### Endpoint /api/room/keyboard/map ### Response #### Success Response (200) - **layout** (string) - The keyboard layout. - **variant** (string) - The keyboard variant. #### Response Example ```json { "layout": "sk", "variant": "qwerty" } ``` #### Error Response (401) - **message** (string) - Detailed error message. #### Error Response (403) - **message** (string) - Detailed error message. #### Error Response (500) - **message** (string) - Detailed error message. ```