diff --git a/webpage/docs/advanced-topics/logging-monitoring.md b/webpage/docs/advanced-topics/logging-monitoring.md deleted file mode 100644 index d2b4e5b5..00000000 --- a/webpage/docs/advanced-topics/logging-monitoring.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 4 ---- - -# Logging & Monitoring - -How to track logs and monitor system performance. diff --git a/webpage/docs/advanced-topics/networking.md b/webpage/docs/advanced-topics/networking.md deleted file mode 100644 index a74c0d8b..00000000 --- a/webpage/docs/advanced-topics/networking.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Networking - -Required network settings and firewall rules for smooth operation. diff --git a/webpage/docs/advanced-topics/customizing-ui.md b/webpage/docs/app-customization/customizing-ui.md similarity index 82% rename from webpage/docs/advanced-topics/customizing-ui.md rename to webpage/docs/app-customization/customizing-ui.md index 278a6b48..cccd3aa7 100644 --- a/webpage/docs/advanced-topics/customizing-ui.md +++ b/webpage/docs/app-customization/customizing-ui.md @@ -1,5 +1,5 @@ --- -sidebar_position: 3 +sidebar_position: 4 --- # Customizing the UI diff --git a/webpage/docs/app-customization/webrtc-configuration.md b/webpage/docs/app-customization/webrtc-configuration.md deleted file mode 100644 index 2f31d828..00000000 --- a/webpage/docs/app-customization/webrtc-configuration.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 4 ---- - -# WebRTC Configuration - -Adjusting WebRTC settings for different browsers and improving compatibility. diff --git a/webpage/docs/deployment-and-scaling/cicd-pipelines.md b/webpage/docs/deployment-and-scaling/cicd-pipelines.md deleted file mode 100644 index 8a1c4bde..00000000 --- a/webpage/docs/deployment-and-scaling/cicd-pipelines.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 3 ---- - -# CI/CD Pipelines - -Automating deployments using CI/CD workflows. diff --git a/webpage/docs/deployment-and-scaling/kubernetes-helm-deployment.md b/webpage/docs/deployment-and-scaling/kubernetes-helm-deployment.md deleted file mode 100644 index 30093aff..00000000 --- a/webpage/docs/deployment-and-scaling/kubernetes-helm-deployment.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Kubernetes & Helm Chart Deployment - -How to deploy and manage Neko using Kubernetes and Helm. diff --git a/webpage/docs/deployment-and-scaling/load-balancing-ha.md b/webpage/docs/deployment-and-scaling/load-balancing-ha.md deleted file mode 100644 index 3a31da0b..00000000 --- a/webpage/docs/deployment-and-scaling/load-balancing-ha.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 4 ---- - -# Load Balancing & High Availability - -Scaling Neko for high-traffic use cases. diff --git a/webpage/docs/deployment-and-scaling/self-hosting-linux.md b/webpage/docs/deployment-and-scaling/self-hosting-linux.md deleted file mode 100644 index 27a8f726..00000000 --- a/webpage/docs/deployment-and-scaling/self-hosting-linux.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Self-Hosting on Linux - -Deploying and maintaining Neko on bare metal or virtual machines. diff --git a/webpage/docs/faq.md b/webpage/docs/faq.md new file mode 100644 index 00000000..bdb1dc2f --- /dev/null +++ b/webpage/docs/faq.md @@ -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://: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. + diff --git a/webpage/docs/getting-started/overview-of-neko.md b/webpage/docs/getting-started/README.md similarity index 85% rename from webpage/docs/getting-started/overview-of-neko.md rename to webpage/docs/getting-started/README.md index 489b1f76..1fbc024b 100644 --- a/webpage/docs/getting-started/overview-of-neko.md +++ b/webpage/docs/getting-started/README.md @@ -1,9 +1,8 @@ --- -title: Overview of Neko 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. @@ -31,3 +30,11 @@ Neko runs on various platforms, including: - **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. + +## Next Steps + +import DocCardList from '@theme/DocCardList'; +import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; + + item.docId !== 'getting-started/README')} /> + diff --git a/webpage/docs/getting-started/configuration/_category_.json b/webpage/docs/getting-started/configuration/_category_.json deleted file mode 100644 index 41613f32..00000000 --- a/webpage/docs/getting-started/configuration/_category_.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "position": 5, - "label": "Configuration", - "collapsed": false, - "collapsible": false -} diff --git a/webpage/docs/getting-started/docker-run.md b/webpage/docs/getting-started/installation/README.md similarity index 58% rename from webpage/docs/getting-started/docker-run.md rename to webpage/docs/getting-started/installation/README.md index 4db2f43d..efbcecad 100644 --- a/webpage/docs/getting-started/docker-run.md +++ b/webpage/docs/getting-started/installation/README.md @@ -2,7 +2,11 @@ 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: @@ -19,26 +23,31 @@ docker run -d --rm \ ### Explanation -- `-d` - Run the container in the background. -- `--rm` - Automatically remove the container when it exits. +- `-d --rm` - Run the container in the background and automatically remove the container when it exits. - `-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`. -- `-e NEKO_WEBRTC_EPR=56000-56100` - Set the WebRTC endpoint range, must match the mapped ports. - - See [WebRTC Ephemeral Port Range](/docs/v3/getting-started/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. +- `-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/reference/configuration/webrtc#ephemeral-udp-port-range) for more information about this setting. + - 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 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. - - 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_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. -- `ghcr.io/m1k1o/neko/firefox:latest` - The Neko Docker image to use. - - See [Available Docker Images](/docs/v3/getting-started/docker-images) for more information about the available images. + - See [Multiuser Configuration](/docs/v3/reference/configuration/authentication#multi-user-provider) for more information about this setting. + - There are other authentication providers available, see [Authentication Providers](/docs/v3/reference/configuration/authentication#member-providers). +- `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. -## 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. diff --git a/webpage/docs/getting-started/installation/_category_.json b/webpage/docs/getting-started/installation/_category_.json new file mode 100644 index 00000000..931749d4 --- /dev/null +++ b/webpage/docs/getting-started/installation/_category_.json @@ -0,0 +1,5 @@ +{ + "position": 3, + "label": "Installation", + "collapsed": false +} diff --git a/webpage/docs/getting-started/docker-images.md b/webpage/docs/getting-started/installation/docker-images.md similarity index 99% rename from webpage/docs/getting-started/docker-images.md rename to webpage/docs/getting-started/installation/docker-images.md index 8d6df986..9d8c8df2 100644 --- a/webpage/docs/getting-started/docker-images.md +++ b/webpage/docs/getting-started/installation/docker-images.md @@ -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. diff --git a/webpage/docs/getting-started/examples.md b/webpage/docs/getting-started/installation/examples.md similarity index 99% rename from webpage/docs/getting-started/examples.md rename to webpage/docs/getting-started/installation/examples.md index 14b7cd0e..517c094f 100644 --- a/webpage/docs/getting-started/examples.md +++ b/webpage/docs/getting-started/installation/examples.md @@ -1,5 +1,5 @@ --- -sidebar_position: 7 +sidebar_position: 2 --- # Examples diff --git a/webpage/docs/getting-started/troubleshooting.md b/webpage/docs/getting-started/troubleshooting.md index 7c137c5f..ee986ffd 100644 --- a/webpage/docs/getting-started/troubleshooting.md +++ b/webpage/docs/getting-started/troubleshooting.md @@ -1,5 +1,5 @@ --- -sidebar_position: 6 +sidebar_position: 4 --- # Troubleshooting @@ -155,7 +155,7 @@ Example for pfsense with truecharts docker container: - Test externally to confirm it works. - Internally you have to access it using `: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 @@ -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. -## 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" services: 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" + # highlight-start shm_size: "2gb" + # highlight-end ports: - "8080:8080" - "52000-52100:52000-52100/udp" @@ -181,15 +189,8 @@ services: NEKO_MEMBER_MULTIUSER_USER_PASSWORD: neko NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: admin 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 ``` @@ -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 @@ -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. +--- + +``` +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 See [related issue](https://github.com/m1k1o/neko/issues/276). diff --git a/webpage/docs/integration-and-extensibility/automating-with-webhooks.md b/webpage/docs/integration-and-extensibility/automating-with-webhooks.md deleted file mode 100644 index 0428d6a0..00000000 --- a/webpage/docs/integration-and-extensibility/automating-with-webhooks.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Automating with Webhooks - -Using webhooks to trigger actions in response to Neko events. diff --git a/webpage/docs/integration-and-extensibility/custom-configurations.md b/webpage/docs/integration-and-extensibility/custom-configurations.md deleted file mode 100644 index 922697fa..00000000 --- a/webpage/docs/integration-and-extensibility/custom-configurations.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Custom Configurations - -Advanced settings and custom scripts for extending Neko’s functionality. diff --git a/webpage/docs/integration-and-extensibility/embedding-neko.md b/webpage/docs/integration-and-extensibility/embedding-neko.md deleted file mode 100644 index 56b21446..00000000 --- a/webpage/docs/integration-and-extensibility/embedding-neko.md +++ /dev/null @@ -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. diff --git a/webpage/docs/getting-started/configuration/README.md b/webpage/docs/reference/configuration/README.md similarity index 100% rename from webpage/docs/getting-started/configuration/README.md rename to webpage/docs/reference/configuration/README.md diff --git a/webpage/docs/reference/configuration/_category_.json b/webpage/docs/reference/configuration/_category_.json new file mode 100644 index 00000000..6d0d373c --- /dev/null +++ b/webpage/docs/reference/configuration/_category_.json @@ -0,0 +1,5 @@ +{ + "position": 1, + "label": "Configuration", + "collapsed": false +} diff --git a/webpage/docs/getting-started/configuration/authentication.md b/webpage/docs/reference/configuration/authentication.md similarity index 99% rename from webpage/docs/getting-started/configuration/authentication.md rename to webpage/docs/reference/configuration/authentication.md index 8d6f565e..2bc8a1ea 100644 --- a/webpage/docs/getting-started/configuration/authentication.md +++ b/webpage/docs/reference/configuration/authentication.md @@ -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 | | `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 | -| `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 TabItem from '@theme/TabItem'; diff --git a/webpage/docs/getting-started/configuration/capture.md b/webpage/docs/reference/configuration/capture.md similarity index 100% rename from webpage/docs/getting-started/configuration/capture.md rename to webpage/docs/reference/configuration/capture.md diff --git a/webpage/docs/getting-started/configuration/desktop.md b/webpage/docs/reference/configuration/desktop.md similarity index 100% rename from webpage/docs/getting-started/configuration/desktop.md rename to webpage/docs/reference/configuration/desktop.md diff --git a/webpage/docs/getting-started/configuration/help.json b/webpage/docs/reference/configuration/help.json similarity index 100% rename from webpage/docs/getting-started/configuration/help.json rename to webpage/docs/reference/configuration/help.json diff --git a/webpage/docs/getting-started/configuration/help.txt b/webpage/docs/reference/configuration/help.txt similarity index 100% rename from webpage/docs/getting-started/configuration/help.txt rename to webpage/docs/reference/configuration/help.txt diff --git a/webpage/docs/getting-started/configuration/plugins.md b/webpage/docs/reference/configuration/plugins.md similarity index 100% rename from webpage/docs/getting-started/configuration/plugins.md rename to webpage/docs/reference/configuration/plugins.md diff --git a/webpage/docs/getting-started/configuration/webrtc.md b/webpage/docs/reference/configuration/webrtc.md similarity index 98% rename from webpage/docs/getting-started/configuration/webrtc.md rename to webpage/docs/reference/configuration/webrtc.md index 6de3b8cd..0064a02c 100644 --- a/webpage/docs/getting-started/configuration/webrtc.md +++ b/webpage/docs/reference/configuration/webrtc.md @@ -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: - [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 @@ -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`. ::: -### UDP/TCP multiplexing +### UDP/TCP multiplexing {#udp-tcp-multiplexing} The UDP/TCP multiplexing port can be configured using the following configuration: diff --git a/webpage/docs/advanced-topics/reverse-proxy-setup.md b/webpage/docs/reference/reverse-proxy-setup.md similarity index 99% rename from webpage/docs/advanced-topics/reverse-proxy-setup.md rename to webpage/docs/reference/reverse-proxy-setup.md index 421376b4..21ae0793 100644 --- a/webpage/docs/advanced-topics/reverse-proxy-setup.md +++ b/webpage/docs/reference/reverse-proxy-setup.md @@ -1,5 +1,5 @@ --- -sidebar_position: 1 +sidebar_position: 2 --- # Reverse Proxy Setup diff --git a/webpage/docs/getting-started/v2-migration/README.md b/webpage/docs/reference/v2-migration/README.md similarity index 92% rename from webpage/docs/getting-started/v2-migration/README.md rename to webpage/docs/reference/v2-migration/README.md index d13ab20a..a8e7a2b7 100644 --- a/webpage/docs/getting-started/v2-migration/README.md +++ b/webpage/docs/reference/v2-migration/README.md @@ -1,5 +1,5 @@ --- -sidebar_position: 8 +sidebar_position: 3 --- # V2 Migration Guide @@ -43,7 +43,7 @@ See the V3 [configuration options](/docs/v3/getting-started/configuration). ### 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** | |---------------------------------------|-----------------------------------------------------------| @@ -65,7 +65,7 @@ V2 did not have client-side cursor support, the cursor was always part of the vi ### 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** | |---------------------------------------|-----------------------------------------------------------| @@ -80,7 +80,7 @@ See the V3 configuration options for the [WebRTC Audio](/docs/v3/getting-started ### 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** | |---------------------------------------|-----------------------------------------------------------| @@ -90,7 +90,7 @@ See the V3 configuration options for the [Broadcast](/docs/v3/getting-started/co ### 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** | |---------------------------------------|-----------------------------------------------------------| @@ -98,14 +98,14 @@ See the V3 configuration options for the [Desktop](/docs/v3/getting-started/conf ### 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** | |---------------------------------------|-----------------------------------------------------------| | `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` | -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 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 -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** | |---------------------------------------|-----------------------------------------------------------| @@ -134,7 +134,7 @@ import configOptions from './help.json'; -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 @@ -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. -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 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 -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` @@ -219,7 +219,7 @@ Returns a screenshot of the desktop as a JPEG image. #### 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 diff --git a/webpage/docs/getting-started/v2-migration/help.json b/webpage/docs/reference/v2-migration/help.json similarity index 100% rename from webpage/docs/getting-started/v2-migration/help.json rename to webpage/docs/reference/v2-migration/help.json diff --git a/webpage/docs/getting-started/v2-migration/help.txt b/webpage/docs/reference/v2-migration/help.txt similarity index 100% rename from webpage/docs/getting-started/v2-migration/help.txt rename to webpage/docs/reference/v2-migration/help.txt diff --git a/webpage/docs/user-guide/authentication-and-roles.md b/webpage/docs/user-guide/authentication-and-roles.md deleted file mode 100644 index ca188c12..00000000 --- a/webpage/docs/user-guide/authentication-and-roles.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Authentication & User Roles - -Configuring authentication, user roles, and access permissions. diff --git a/webpage/docs/user-guide/connecting-and-using-neko.md b/webpage/docs/user-guide/connecting-and-using-neko.md deleted file mode 100644 index ab14d45f..00000000 --- a/webpage/docs/user-guide/connecting-and-using-neko.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Connecting & Using Neko - -How users can connect to a Neko session and interact with it. diff --git a/webpage/docs/user-guide/managing-sessions.md b/webpage/docs/user-guide/managing-sessions.md deleted file mode 100644 index 6b20c069..00000000 --- a/webpage/docs/user-guide/managing-sessions.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Managing Sessions - -Guide to starting, stopping, and managing Neko sessions. diff --git a/webpage/docs/user-guide/performance-tuning.md b/webpage/docs/user-guide/performance-tuning.md deleted file mode 100644 index 90db795c..00000000 --- a/webpage/docs/user-guide/performance-tuning.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 4 ---- - -# Performance Tuning - -Optimizing video quality, latency, and encoding settings (Low Latency, Encoding, etc.). diff --git a/webpage/docs/user-guide/security-best-practices.md b/webpage/docs/user-guide/security-best-practices.md deleted file mode 100644 index 30f43bc1..00000000 --- a/webpage/docs/user-guide/security-best-practices.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 5 ---- - -# Security Best Practices - -Tips for securing a Neko deployment, including encryption and firewall settings. diff --git a/webpage/docusaurus.config.ts b/webpage/docusaurus.config.ts index a45ce6fc..a016ef11 100644 --- a/webpage/docusaurus.config.ts +++ b/webpage/docusaurus.config.ts @@ -37,7 +37,7 @@ const config: Config = { docs: { sidebarPath: './sidebars.ts', 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', versions: { current: { @@ -80,12 +80,6 @@ const config: Config = { position: 'left', label: 'Docs', }, - { - type: 'docSidebar', - sidebarId: 'apiSidebar', - position: 'left', - label: 'API', - }, { to: 'contributing', label: 'Contributing', diff --git a/webpage/package.json b/webpage/package.json index 886f9186..1a3f6ad6 100644 --- a/webpage/package.json +++ b/webpage/package.json @@ -10,8 +10,8 @@ "deploy": "docusaurus deploy", "clear": "docusaurus clear", "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:v2": "node ./src/components/Configuration/generate.js ./docs/getting-started/v2-migration/help.txt ./docs/getting-started/v2-migration/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/reference/v2-migration/help.txt ./docs/reference/v2-migration/help.json", "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids", "gen-api-docs": "./gen-api-docs.sh", diff --git a/webpage/sidebars.ts b/webpage/sidebars.ts index 6ec5d332..ddac3db0 100644 --- a/webpage/sidebars.ts +++ b/webpage/sidebars.ts @@ -1,4 +1,5 @@ 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...) @@ -17,45 +18,50 @@ const sidebars: SidebarsConfig = { { type: 'category', label: 'Getting Started', + className: 'menu__list-item-flat', + collapsible: false, items: [{ type: "autogenerated", dirName: "getting-started" }] }, { type: 'category', - label: 'User Guide', - items: [{ type: "autogenerated", dirName: "user-guide" }] + label: 'Reference', + 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', - label: 'Hardware Acceleration', - items: [{ type: "autogenerated", dirName: "hardware-acceleration" }] + label: 'Help & Support', + className: 'menu__list-item-flat', + collapsible: false, + items: [ + 'faq', + 'release-notes', + 'roadmap', + ] }, - { - type: 'category', - 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', - 'roadmap', ], apiSidebar: require("./docs/api/sidebar.js"), }; diff --git a/webpage/src/css/custom.css b/webpage/src/css/custom.css index c36c3bed..38a6b564 100644 --- a/webpage/src/css/custom.css +++ b/webpage/src/css/custom.css @@ -78,3 +78,29 @@ content: "patch"; 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; +}