update docs.

This commit is contained in:
Miroslav Šedivý 2025-03-22 18:53:45 +01:00
parent 6f3760e5b9
commit e3cdad3f81
41 changed files with 213 additions and 198 deletions

View file

@ -1,7 +0,0 @@
---
sidebar_position: 4
---
# Logging & Monitoring
How to track logs and monitor system performance.

View file

@ -1,7 +0,0 @@
---
sidebar_position: 2
---
# Networking
Required network settings and firewall rules for smooth operation.

View file

@ -1,5 +1,5 @@
--- ---
sidebar_position: 3 sidebar_position: 4
--- ---
# Customizing the UI # Customizing the UI

View file

@ -1,7 +0,0 @@
---
sidebar_position: 4
---
# WebRTC Configuration
Adjusting WebRTC settings for different browsers and improving compatibility.

View file

@ -1,7 +0,0 @@
---
sidebar_position: 3
---
# CI/CD Pipelines
Automating deployments using CI/CD workflows.

View file

@ -1,7 +0,0 @@
---
sidebar_position: 2
---
# Kubernetes & Helm Chart Deployment
How to deploy and manage Neko using Kubernetes and Helm.

View file

@ -1,7 +0,0 @@
---
sidebar_position: 4
---
# Load Balancing & High Availability
Scaling Neko for high-traffic use cases.

View file

@ -1,7 +0,0 @@
---
sidebar_position: 1
---
# Self-Hosting on Linux
Deploying and maintaining Neko on bare metal or virtual machines.

59
webpage/docs/faq.md Normal file
View file

@ -0,0 +1,59 @@
# Frequently Asked Questions
### How to enable debug mode?
To see verbose information from the n.eko server, you can enable debug mode using `NEKO_DEBUG`.
```yaml title="docker-compose.yaml"
services:
neko:
image: "ghcr.io/m1k1o/neko/firefox:latest"
restart: "unless-stopped"
shm_size: "2gb"
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
# highlight-start
NEKO_DEBUG: 1
# highlight-end
```
And then view the logs using `docker logs -f neko`.
To see verbose information from the n.eko client, you need to visit the developer console in your browser. You can do this by pressing `F12` and then navigating to the `Console` tab.
### How to enable support for Chinese/Japanese/Korean input method?
There exists an extension [Google Input Tools](https://chrome.google.com/webstore/detail/mclkkofklkfljcocdinagocijmpgbhab) for Chrome that allows you to use Chinese input method.
### How can I embed the Neko desktop into web page without login prompt coming up for viewers?
You can use the following URL to embed the Neko desktop into a web page without login prompt coming up for viewers:
```
http://<your-neko-server-ip>:8080/?usr=neko&pwd=neko
```
https://stackoverflow.com/questions/15276929/how-to-make-a-video-fullscreen-when-it-is-placed-inside-an-iframe
Your iframe needs an attribute: `allowfullscreen="true" webkitallowfullscreen="true" mozallowfullscreen="true"` or more modern `allow="fullscreen *"`. For the second you can remove the star if your iframe has the same origin or replace it with your iframe origin.
### Can I use neko without docker?
Yes, you can, but it is not recommended. Neko is based on Debian and uses Xorg and Pulseaudio. Just follow the steps in the Dockerfile to install all dependencies.
However, it is recommend to start with existing system that has GUI with desktop manager, is based on Xorg and uses Pulseaudio (e.g. Ubuntu Desktop 24.04). For that matter you only need to install gstreamer dependencies, configure pulseaudio properly and run neko binary (you don't need to build it from scratch, you can copy it from docker image).
### Why does the clipboard button does not show up?
When you are using HTTPS connection and a compatible host browser (currently only Chromium-based browsers) which supports the Clipboard API, the clipboard button will not show up. Instead, you can use the native clipboard functionality of your host browser.
### Why am I unable to install extensions in the Neko browser?
The browser in Neko uses policies to restrict the installation of extensions. You can either add extensions to the policy file or disable the policy.

View file

@ -1,9 +1,8 @@
--- ---
title: Overview of Neko
sidebar_position: 1 sidebar_position: 1
--- ---
# Overview of Neko # Overview
Neko is an open-source self-hosted virtual browser solution that allows multiple users to share a single web browser instance remotely. It is designed for use cases such as collaborative browsing, remote access to web-based applications, and private cloud-based browsing. Neko is an open-source self-hosted virtual browser solution that allows multiple users to share a single web browser instance remotely. It is designed for use cases such as collaborative browsing, remote access to web-based applications, and private cloud-based browsing.
@ -31,3 +30,11 @@ Neko runs on various platforms, including:
- **Raspberry Pi & ARM Devices** Optimized versions for embedded and low-power hardware. - **Raspberry Pi & ARM Devices** Optimized versions for embedded and low-power hardware.
Explore the documentation to learn how to deploy, configure, and optimize Neko for your use case. Explore the documentation to learn how to deploy, configure, and optimize Neko for your use case.
## Next Steps
import DocCardList from '@theme/DocCardList';
import {useCurrentSidebarCategory} from '@docusaurus/theme-common';
<DocCardList items={useCurrentSidebarCategory().items.filter((item) => item.docId !== 'getting-started/README')} />

View file

@ -1,6 +0,0 @@
{
"position": 5,
"label": "Configuration",
"collapsed": false,
"collapsible": false
}

View file

@ -2,7 +2,11 @@
sidebar_position: 3 sidebar_position: 3
--- ---
# Running Neko in Docker # Installation
The preferred way to install Neko is to use Docker. This method is easy to set up and manage, it contains all the necessary dependencies, and it is isolated from the host system. Other installation methods are out of scope for this documentation.
## Docker Run
To start a basic Neko container, use the following command: To start a basic Neko container, use the following command:
@ -19,26 +23,31 @@ docker run -d --rm \
### Explanation ### Explanation
- `-d` - Run the container in the background. - `-d --rm` - Run the container in the background and automatically remove the container when it exits.
- `--rm` - Automatically remove the container when it exits.
- `-p 8080:8080` - Map the container's port `8080` to the host's port `8080`. - `-p 8080:8080` - Map the container's port `8080` to the host's port `8080`.
- `-p 56000-56100:56000-56100/udp` - Map the container's UDP ports `56000-56100` to the host's ports `56000-56100`. - `-p 56000-56100:56000-56100/udp` - Map the container's UDP ports `56000-56100` to the host's ports `56000-56100`.
- `-e NEKO_WEBRTC_EPR=56000-56100` - Set the WebRTC endpoint range, must match the mapped ports. - `-e NEKO_WEBRTC_EPR=56000-56100` - Set the WebRTC endpoint range, this value must match the mapped ports above.
- See [WebRTC Ephemeral Port Range](/docs/v3/getting-started/configuration/webrtc#ephemeral-udp-port-range) for more information about this setting. - See [WebRTC Ephemeral Port Range](/docs/v3/reference/configuration/webrtc#ephemeral-udp-port-range) for more information about this setting.
- `-e NEKO_WEBRTC_NAT1TO1=127.0.0.1` - Set the NAT1TO1 IP address. - There is an alternative to use only a single port, see [WebRTC UDP/TCP multiplexing](/docs/v3/reference/configuration/webrtc#udp-tcp-multiplexing).
- `-e NEKO_WEBRTC_NAT1TO1=127.0.0.1` - Set the address where the WebRTC client should connect to.
- To test only on the local computer, use `127.0.0.1`. - To test only on the local computer, use `127.0.0.1`.
- To use it in a private network, use the host's IP address (e.g., `192.168.1.5`). - To use it in a private network, use the host's IP address (e.g., `192.168.1.5`).
- To use it in a public network, you need to correctly set up port forwarding on your router and remove this env variable. - To use it in a public network, you need to correctly set up port forwarding on your router and remove this env variable.
- See [WebRTC Server IP Address](/docs/v3/getting-started/configuration/webrtc#server-ip-address) for more information about this setting. - See [WebRTC Server IP Address](/docs/v3/reference/configuration/webrtc#server-ip-address) for more information about this setting.
- `-e NEKO_MEMBER_MULTIUSER_USER_PASSWORD=neko` - Set the password for the user account. - `-e NEKO_MEMBER_MULTIUSER_USER_PASSWORD=neko` - Set the password for the user account.
- `-e NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD=admin` - Set the password for the admin account. - `-e NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD=admin` - Set the password for the admin account.
- See [Multiuser Configuration](/docs/v3/getting-started/configuration/authentication#multi-user-provider) for more information about this setting. - See [Multiuser Configuration](/docs/v3/reference/configuration/authentication#multi-user-provider) for more information about this setting.
- `ghcr.io/m1k1o/neko/firefox:latest` - The Neko Docker image to use. - There are other authentication providers available, see [Authentication Providers](/docs/v3/reference/configuration/authentication#member-providers).
- See [Available Docker Images](/docs/v3/getting-started/docker-images) for more information about the available images. - `ghcr.io/m1k1o/neko/firefox:latest` - The Docker image to use.
- See available [Docker Images](/docs/v3/getting-started/installation/docker-images).
Now, open your browser and go to: `http://localhost:8080`. You should see the Neko interface. Now, open your browser and go to: `http://localhost:8080`. You should see the Neko interface.
## Using Docker Compose ### Further Configuration
You can configure Neko by setting environment variables or configuration file. See the [Configuration Reference](/docs/v3/reference/configuration) for more information.
## Docker Compose
You can also use Docker Compose to run Neko. It is preferred to use Docker Compose for running Neko in production because you can easily manage the container, update it, and configure it. You can also use Docker Compose to run Neko. It is preferred to use Docker Compose for running Neko in production because you can easily manage the container, update it, and configure it.

View file

@ -0,0 +1,5 @@
{
"position": 3,
"label": "Installation",
"collapsed": false
}

View file

@ -1,8 +1,8 @@
--- ---
sidebar_position: 4 sidebar_position: 1
--- ---
# Available Docker Images # Docker Images
Neko as a standalone streaming server is available as a Docker image. But that is rarely interesting for general use. The real power of Neko is in its ability to accommodate custom applications in the virtual desktop environment. This is where the various flavors of Neko Docker images come in. Neko as a standalone streaming server is available as a Docker image. But that is rarely interesting for general use. The real power of Neko is in its ability to accommodate custom applications in the virtual desktop environment. This is where the various flavors of Neko Docker images come in.

View file

@ -1,5 +1,5 @@
--- ---
sidebar_position: 7 sidebar_position: 2
--- ---
# Examples # Examples

View file

@ -1,5 +1,5 @@
--- ---
sidebar_position: 6 sidebar_position: 4
--- ---
# Troubleshooting # Troubleshooting
@ -155,7 +155,7 @@ Example for pfsense with truecharts docker container:
- Test externally to confirm it works. - Test externally to confirm it works.
- Internally you have to access it using `<your-public-ip>:port` - Internally you have to access it using `<your-public-ip>:port`
If your router does not support NAT Loopback (NAT Hairpinning), you can use turn servers to overcome this issue. See [more details here](/docs/v3/getting-started/configuration/webrtc#ice-servers) on how to set up a local coturn instance. If your router does not support NAT Loopback (NAT Hairpinning), you can use turn servers to overcome this issue. See [more details here](/docs/v3/reference/configuration/webrtc#ice-servers) on how to set up a local coturn instance.
### Neko works locally, but not externally ### Neko works locally, but not externally
@ -163,16 +163,24 @@ Make sure that you are exposing your ports correctly.
If you put a local IP as `NEKO_WEBRTC_NAT1TO1`, external clients try to connect to that IP. But it is unreachable for them because it is your local IP. You must use your public IP address with port forwarding. If you put a local IP as `NEKO_WEBRTC_NAT1TO1`, external clients try to connect to that IP. But it is unreachable for them because it is your local IP. You must use your public IP address with port forwarding.
## Debug mode ## Frequently Encountered Errors
To see verbose information from the n.eko server, you can enable debug mode using `NEKO_DEBUG`. ### Getting a black screen with a cursor, but no browser for Chromium-based browsers
Check if you did not forget to add `cap_add` to your `docker-compose.yaml` file. Make sure that the `shm_size` is set to `2gb` or higher.
```yaml title="docker-compose.yaml" ```yaml title="docker-compose.yaml"
services: services:
neko: neko:
image: "ghcr.io/m1k1o/neko/firefox:latest" image: "ghcr.io/m1k1o/neko/chromium:latest"
# highlight-start
cap_add:
- SYS_ADMIN
# highlight-end
restart: "unless-stopped" restart: "unless-stopped"
# highlight-start
shm_size: "2gb" shm_size: "2gb"
# highlight-end
ports: ports:
- "8080:8080" - "8080:8080"
- "52000-52100:52000-52100/udp" - "52000-52100:52000-52100/udp"
@ -181,15 +189,8 @@ services:
NEKO_MEMBER_MULTIUSER_USER_PASSWORD: neko NEKO_MEMBER_MULTIUSER_USER_PASSWORD: neko
NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: admin NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: admin
NEKO_WEBRTC_EPR: 52000-52100 NEKO_WEBRTC_EPR: 52000-52100
# highlight-start
NEKO_DEBUG: 1
# highlight-end
``` ```
Ensure that you have enabled debug mode in the JavaScript console too, in order to see verbose information from the client.
## Frequently Encountered Errors
### Common server errors ### Common server errors
``` ```
@ -225,10 +226,10 @@ Check if your TCP port is exposed correctly and your reverse proxy is correctly
--- ---
``` ```
Getting a black screen with a cursor, but no browser. NotAllowedError: play() failed because the user didn't interact with the document first
``` ```
Most likely you forgot to add `-cap-add=SYS_ADMIN` when using chromium-based browsers. This error occurs when the browser blocks the video from playing because the user has not interacted with the document. You just need to manually click on the play button to start the video.
### Unrelated server errors ### Unrelated server errors
@ -238,6 +239,20 @@ Most likely you forgot to add `-cap-add=SYS_ADMIN` when using chromium-based bro
This error originates from the browser, that it could not connect to dbus. This does not affect us and can be ignored. This error originates from the browser, that it could not connect to dbus. This does not affect us and can be ignored.
---
```
I: [pulseaudio] client.c: Created 0 "Native client (UNIX socket client)"
I: [pulseaudio] protocol-native.c: Client authenticated anonymously.
I: [pulseaudio] source-output.c: Trying to change sample spec
I: [pulseaudio] sink.c: Reconfigured successfully
I: [pulseaudio] source.c: Reconfigured successfully
I: [pulseaudio] client.c: Freed 0 "neko"
I: [pulseaudio] protocol-native.c: Connection died.
```
These are just logs from pulseaudio. Unless you have audio issues, you can ignore them.
### Broadcast pipeline not working with some ingest servers ### Broadcast pipeline not working with some ingest servers
See [related issue](https://github.com/m1k1o/neko/issues/276). See [related issue](https://github.com/m1k1o/neko/issues/276).

View file

@ -1,7 +0,0 @@
---
sidebar_position: 2
---
# Automating with Webhooks
Using webhooks to trigger actions in response to Neko events.

View file

@ -1,7 +0,0 @@
---
sidebar_position: 3
---
# Custom Configurations
Advanced settings and custom scripts for extending Nekos functionality.

View file

@ -1,7 +0,0 @@
---
sidebar_position: 1
---
# Embedding Neko in Web Apps
How to embed Neko as an iframe or integrate it into existing web applications.

View file

@ -0,0 +1,5 @@
{
"position": 1,
"label": "Configuration",
"collapsed": false
}

View file

@ -26,7 +26,7 @@ A member profile is a structure that describes the user and what the user is all
| `can_access_clipboard` | Whether the user can read and write to the room's clipboard. | boolean | | `can_access_clipboard` | Whether the user can read and write to the room's clipboard. | boolean |
| `sends_inactive_cursor` | Whether the user sends the cursor position even when the user is not hosting the room, this is used to show the cursor of the user to other users. | boolean | | `sends_inactive_cursor` | Whether the user sends the cursor position even when the user is not hosting the room, this is used to show the cursor of the user to other users. | boolean |
| `can_see_inactive_cursors` | Whether the user can see the cursor of other users even when they are not hosting the room. | boolean | | `can_see_inactive_cursors` | Whether the user can see the cursor of other users even when they are not hosting the room. | boolean |
| `plugins` | A map of plugin names and their configuration, plugins can use this to store user-specific settings, see the [Plugins Configuration](/docs/v3/getting-started/configuration/plugins) for more information. | object | | `plugins` | A map of plugin names and their configuration, plugins can use this to store user-specific settings, see the [Plugins Configuration](/docs/v3/reference/configuration/plugins) for more information. | object |
import Tabs from '@theme/Tabs'; import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem'; import TabItem from '@theme/TabItem';

View file

@ -155,7 +155,7 @@ WebRTC does not use the HTTP protocol, therefore it is not possible to use nginx
There exist two types of connections: There exist two types of connections:
- [Ephemeral UDP port range](#ephemeral-udp-port-range): The range of UDP ports that the server uses to establish a connection with the client. Every time a new connection is established, a new port from this range is used. This range should be open on the server's firewall. - [Ephemeral UDP port range](#ephemeral-udp-port-range): The range of UDP ports that the server uses to establish a connection with the client. Every time a new connection is established, a new port from this range is used. This range should be open on the server's firewall.
- [UDP/TCP multiplexing](#udptcp-multiplexing): The server can use a single port for multiple connections. This port should be open on the server's firewall. - [UDP/TCP multiplexing](#udp-tcp-multiplexing): The server can use a single port for multiple connections. This port should be open on the server's firewall.
### Ephemeral UDP port range ### Ephemeral UDP port range
@ -181,7 +181,7 @@ ports:
It is important to expose the same ports to the host machine, without any remapping e.g. `49000-49100:59000-59100/udp` instead of `59000-59100:59000-59100/udp`. It is important to expose the same ports to the host machine, without any remapping e.g. `49000-49100:59000-59100/udp` instead of `59000-59100:59000-59100/udp`.
::: :::
### UDP/TCP multiplexing ### UDP/TCP multiplexing {#udp-tcp-multiplexing}
The UDP/TCP multiplexing port can be configured using the following configuration: The UDP/TCP multiplexing port can be configured using the following configuration:

View file

@ -1,5 +1,5 @@
--- ---
sidebar_position: 1 sidebar_position: 2
--- ---
# Reverse Proxy Setup # Reverse Proxy Setup

View file

@ -1,5 +1,5 @@
--- ---
sidebar_position: 8 sidebar_position: 3
--- ---
# V2 Migration Guide # V2 Migration Guide
@ -43,7 +43,7 @@ See the V3 [configuration options](/docs/v3/getting-started/configuration).
### WebRTC Video ### WebRTC Video
See the V3 configuration options for the [WebRTC Video](/docs/v3/getting-started/configuration/capture#webrtc-video). See the V3 configuration options for the [WebRTC Video](/docs/v3/reference/configuration/capture#webrtc-video).
| **V2 Configuration** | **V3 Configuration** | | **V2 Configuration** | **V3 Configuration** |
|---------------------------------------|-----------------------------------------------------------| |---------------------------------------|-----------------------------------------------------------|
@ -65,7 +65,7 @@ V2 did not have client-side cursor support, the cursor was always part of the vi
### WebRTC Audio ### WebRTC Audio
See the V3 configuration options for the [WebRTC Audio](/docs/v3/getting-started/configuration/capture#webrtc-audio). See the V3 configuration options for the [WebRTC Audio](/docs/v3/reference/configuration/capture#webrtc-audio).
| **V2 Configuration** | **V3 Configuration** | | **V2 Configuration** | **V3 Configuration** |
|---------------------------------------|-----------------------------------------------------------| |---------------------------------------|-----------------------------------------------------------|
@ -80,7 +80,7 @@ See the V3 configuration options for the [WebRTC Audio](/docs/v3/getting-started
### Broadcast ### Broadcast
See the V3 configuration options for the [Broadcast](/docs/v3/getting-started/configuration/capture#broadcast). See the V3 configuration options for the [Broadcast](/docs/v3/reference/configuration/capture#broadcast).
| **V2 Configuration** | **V3 Configuration** | | **V2 Configuration** | **V3 Configuration** |
|---------------------------------------|-----------------------------------------------------------| |---------------------------------------|-----------------------------------------------------------|
@ -90,7 +90,7 @@ See the V3 configuration options for the [Broadcast](/docs/v3/getting-started/co
### Desktop ### Desktop
See the V3 configuration options for the [Desktop](/docs/v3/getting-started/configuration/desktop). See the V3 configuration options for the [Desktop](/docs/v3/reference/configuration/desktop).
| **V2 Configuration** | **V3 Configuration** | | **V2 Configuration** | **V3 Configuration** |
|---------------------------------------|-----------------------------------------------------------| |---------------------------------------|-----------------------------------------------------------|
@ -98,14 +98,14 @@ See the V3 configuration options for the [Desktop](/docs/v3/getting-started/conf
### Authentication ### Authentication
See the V3 configuration options for the [Authentication](/docs/v3/getting-started/configuration/authentication). See the V3 configuration options for the [Authentication](/docs/v3/reference/configuration/authentication).
| **V2 Configuration** | **V3 Configuration** | | **V2 Configuration** | **V3 Configuration** |
|---------------------------------------|-----------------------------------------------------------| |---------------------------------------|-----------------------------------------------------------|
| `NEKO_PASSWORD` | `NEKO_MEMBER_MULTIUSER_USER_PASSWORD` with `NEKO_MEMBER_PROVIDER=multiuser` | | `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` | | `NEKO_PASSWORD_ADMIN` | `NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD` with `NEKO_MEMBER_PROVIDER=multiuser` |
In order for the legacy authentication to work, you need to set [Multi-user](http://localhost:3000/docs/v3/getting-started/configuration/authentication#multi-user-provider). In order for the legacy authentication to work, you need to set [Multi-user](http://localhost:3000/docs/v3/reference/configuration/authentication#multi-user-provider).
:::warning Limitation :::warning Limitation
V2 clients might not be compatible with any other authentication provider than the `multiuser`. V2 clients might not be compatible with any other authentication provider than the `multiuser`.
@ -113,7 +113,7 @@ V2 clients might not be compatible with any other authentication provider than t
### WebRTC ### WebRTC
See the V3 configuration options for the [WebRTC](/docs/v3/getting-started/configuration/webrtc). See the V3 configuration options for the [WebRTC](/docs/v3/reference/configuration/webrtc).
| **V2 Configuration** | **V3 Configuration** | | **V2 Configuration** | **V3 Configuration** |
|---------------------------------------|-----------------------------------------------------------| |---------------------------------------|-----------------------------------------------------------|
@ -134,7 +134,7 @@ import configOptions from './help.json';
<Configuration configOptions={configOptions} /> <Configuration configOptions={configOptions} />
See the full [V3 configuration reference](/docs/v3/getting-started/configuration/#full-configuration-reference) for more details. See the full [V3 configuration reference](/docs/v3/reference/configuration/#full-configuration-reference) for more details.
## API ## API
@ -144,7 +144,7 @@ V3 is compatible with the V2 API when legacy support is enabled. There was speci
In V2 there was only one authentication provider available, as in V3 called the `multiuser` provider. The API knew based on the provided password (as `?pwd=` query string) if the user is an admin or not. In V2 there was only one authentication provider available, as in V3 called the `multiuser` provider. The API knew based on the provided password (as `?pwd=` query string) if the user is an admin or not.
Since V3 handles authentication differently (see [API documentation](/docs/v3/api/neko-api#authentication)), there has been added `?usr=` query string to the API to specify the username. The password is still provided as `?pwd=` query string. The `?usr=` query string is still optional, if not provided, the API will generate a random username. Since V3 handles authentication differently (see [API documentation](/docs/v3/api#authentication)), there has been added `?usr=` query string to the API to specify the username. The password is still provided as `?pwd=` query string. The `?usr=` query string is still optional, if not provided, the API will generate a random username.
:::warning Limitation :::warning Limitation
For every request in the legacy API, a new user session is created based on the `?usr=&pwd=` query string. The session is destroyed after the API request is completed. So for HTTP API requests, the sessions are short-lived but for WebSocket API requests, the session is kept alive until the WebSocket connection is closed. For every request in the legacy API, a new user session is created based on the `?usr=&pwd=` query string. The session is destroyed after the API request is completed. So for HTTP API requests, the sessions are short-lived but for WebSocket API requests, the session is kept alive until the WebSocket connection is closed.
@ -163,7 +163,7 @@ V2 created a new data channel on the client side, V3 creates a new data channel
### HTTP API ### HTTP API
The V2 version had a very limited HTTP API, the V3 API is much more powerful and flexible. See the [API documentation](/docs/v3/api/neko-api) for more details. The V2 version had a very limited HTTP API, the V3 API is much more powerful and flexible. See the [API documentation](/docs/v3/api) for more details.
#### GET `/health` #### GET `/health`
@ -219,7 +219,7 @@ Returns a screenshot of the desktop as a JPEG image.
#### GET `/file` #### GET `/file`
The whole functionality of file transfer has been moved to a [File Transfer Plugin](/docs/v3/getting-started/configuration/plugins#file-transfer-plugin). The whole functionality of file transfer has been moved to a [File Transfer Plugin](/docs/v3/reference/configuration/plugins#file-transfer-plugin).
## Limitations ## Limitations

View file

@ -1,7 +0,0 @@
---
sidebar_position: 3
---
# Authentication & User Roles
Configuring authentication, user roles, and access permissions.

View file

@ -1,7 +0,0 @@
---
sidebar_position: 1
---
# Connecting & Using Neko
How users can connect to a Neko session and interact with it.

View file

@ -1,7 +0,0 @@
---
sidebar_position: 2
---
# Managing Sessions
Guide to starting, stopping, and managing Neko sessions.

View file

@ -1,7 +0,0 @@
---
sidebar_position: 4
---
# Performance Tuning
Optimizing video quality, latency, and encoding settings (Low Latency, Encoding, etc.).

View file

@ -1,7 +0,0 @@
---
sidebar_position: 5
---
# Security Best Practices
Tips for securing a Neko deployment, including encryption and firewall settings.

View file

@ -37,7 +37,7 @@ const config: Config = {
docs: { docs: {
sidebarPath: './sidebars.ts', sidebarPath: './sidebars.ts',
docItemComponent: "@theme/ApiItem", // Derived from docusaurus-theme-openapi docItemComponent: "@theme/ApiItem", // Derived from docusaurus-theme-openapi
editUrl: 'https://github.com/m1k1o/neko/tree/main/docs/', editUrl: 'https://github.com/m1k1o/neko/tree/main/webpage/',
lastVersion: 'current', lastVersion: 'current',
versions: { versions: {
current: { current: {
@ -80,12 +80,6 @@ const config: Config = {
position: 'left', position: 'left',
label: 'Docs', label: 'Docs',
}, },
{
type: 'docSidebar',
sidebarId: 'apiSidebar',
position: 'left',
label: 'API',
},
{ {
to: 'contributing', to: 'contributing',
label: 'Contributing', label: 'Contributing',

View file

@ -10,8 +10,8 @@
"deploy": "docusaurus deploy", "deploy": "docusaurus deploy",
"clear": "docusaurus clear", "clear": "docusaurus clear",
"serve": "docusaurus serve", "serve": "docusaurus serve",
"gen-help": "node ./src/components/Configuration/generate.js ./docs/getting-started/configuration/help.txt ./docs/getting-started/configuration/help.json", "gen-help": "node ./src/components/Configuration/generate.js ./docs/reference/configuration/help.txt ./docs/reference/configuration/help.json",
"gen-help:v2": "node ./src/components/Configuration/generate.js ./docs/getting-started/v2-migration/help.txt ./docs/getting-started/v2-migration/help.json", "gen-help:v2": "node ./src/components/Configuration/generate.js ./docs/reference/v2-migration/help.txt ./docs/reference/v2-migration/help.json",
"write-translations": "docusaurus write-translations", "write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids", "write-heading-ids": "docusaurus write-heading-ids",
"gen-api-docs": "./gen-api-docs.sh", "gen-api-docs": "./gen-api-docs.sh",

View file

@ -1,4 +1,5 @@
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs'; import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
import apiSidebar from './docs/api/sidebar';
// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...) // This runs in Node.js - Don't use client-side code here (browser APIs, JSX...)
@ -17,45 +18,50 @@ const sidebars: SidebarsConfig = {
{ {
type: 'category', type: 'category',
label: 'Getting Started', label: 'Getting Started',
className: 'menu__list-item-flat',
collapsible: false,
items: [{ type: "autogenerated", dirName: "getting-started" }] items: [{ type: "autogenerated", dirName: "getting-started" }]
}, },
{ {
type: 'category', type: 'category',
label: 'User Guide', label: 'Reference',
items: [{ type: "autogenerated", dirName: "user-guide" }] className: 'menu__list-item-flat',
collapsible: false,
items: [
{ type: "autogenerated", dirName: "reference" },
{
type: 'link',
label: 'API Reference',
href: '/docs/v3/api',
}
]
}, },
//{
// type: 'category',
// label: 'Hardware Acceleration',
// items: [{ type: "autogenerated", dirName: "hardware-acceleration" }]
//},
//{
// type: 'category',
// label: 'Application Customization',
// items: [{ type: "autogenerated", dirName: "app-customization" }]
//},
//{
// type: 'category',
// label: 'Developer Guide',
// items: [{ type: "autogenerated", dirName: "developer-guide" }]
//},
{ {
type: 'category', type: 'category',
label: 'Hardware Acceleration', label: 'Help & Support',
items: [{ type: "autogenerated", dirName: "hardware-acceleration" }] className: 'menu__list-item-flat',
}, collapsible: false,
{ items: [
type: 'category', 'faq',
label: 'Application Customization',
items: [{ type: "autogenerated", dirName: "app-customization" }]
},
{
type: 'category',
label: 'Advanced Topics',
items: [{ type: "autogenerated", dirName: "advanced-topics" }]
},
{
type: 'category',
label: 'Developer Guide',
items: [{ type: "autogenerated", dirName: "developer-guide" }]
},
{
type: 'category',
label: 'Deployment & Scaling',
items: [{ type: "autogenerated", dirName: "deployment-and-scaling" }]
},
{
type: 'category',
label: 'Integration & Extensibility',
items: [{ type: "autogenerated", dirName: "integration-and-extensibility" }]
},
'release-notes', 'release-notes',
'roadmap', 'roadmap',
]
},
], ],
apiSidebar: require("./docs/api/sidebar.js"), apiSidebar: require("./docs/api/sidebar.js"),
}; };

View file

@ -78,3 +78,29 @@
content: "patch"; content: "patch";
background-color: var(--openapi-code-orange); background-color: var(--openapi-code-orange);
} }
/*
* Custom CSS for the sidebar
*/
.menu__list-item-flat > .menu__list-item-collapsible > .menu__link:not([aria-expanded]) {
pointer-events: none;
user-select: none;
text-transform: uppercase;
font-size: 0.8em;
padding-top: 16px;
padding-bottom: 3px;
}
.menu__list-item-flat > .theme-doc-sidebar-item-category-level-1 > .menu__list-item-collapsible .menu__link:not([aria-expanded]) {
padding-top: 22px;
padding-bottom: 3px;
}
.menu__list-item-flat > .menu__list-item-collapsible:has(> .menu__link:not([aria-expanded])) + .menu__list {
padding-left: 0;
}
.menu__list-item-flat > .menu__list-item-collapsible:has(.menu__link:not([aria-expanded])) {
pointer-events: none;
}