update docs and add examples + ungoogled chromium svg.

This commit is contained in:
Miroslav Šedivý 2025-02-16 23:40:55 +01:00
parent d1a2717ec1
commit 2dd5585b49
10 changed files with 179 additions and 23 deletions

View file

@ -149,7 +149,7 @@ member:
:::tip :::tip
For easier configuration, you can specify only passwords using environment variables: For easier configuration, you can specify only passwords using environment variables:
```yaml title="docker-compose.yml" ```yaml title="docker-compose.yaml"
environment: environment:
NEKO_MEMBER_MULTIUSER_USER_PASSWORD: "neko" NEKO_MEMBER_MULTIUSER_USER_PASSWORD: "neko"
NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: "admin" NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: "admin"

View file

@ -453,7 +453,7 @@ sudo modprobe v4l2loopback exclusive_caps=1
This is needed even if neko is running inside a Docker container. In that case, the v4l2loopback module must be loaded on the host machine and the device must be mounted inside the container. This is needed even if neko is running inside a Docker container. In that case, the v4l2loopback module must be loaded on the host machine and the device must be mounted inside the container.
```yaml title="docker-compose.yml" ```yaml title="docker-compose.yaml"
services: services:
neko: neko:
... ...

View file

@ -66,7 +66,7 @@ import TabItem from '@theme/TabItem';
<TabItem value="docker-compose" label="Docker Compose configuration"> <TabItem value="docker-compose" label="Docker Compose configuration">
```yaml title="docker-compose.yml" ```yaml title="docker-compose.yaml"
cap_add: cap_add:
- SYS_ADMIN - SYS_ADMIN
shm_size: 2g shm_size: 2g
@ -79,7 +79,7 @@ import TabItem from '@theme/TabItem';
| ---- | ---- | ------------ | | ---- | ---- | ------------ |
| <img src="/img/icons/chromium.svg" width="60" height="60" /> | [Chromium](https://www.chromium.org/chromium-projects/) <br /> The open-source project behind Google Chrome. | [`ghcr.io/m1k1o/neko/chromium`](https://ghcr.io/m1k1o/neko/chromium) | | <img src="/img/icons/chromium.svg" width="60" height="60" /> | [Chromium](https://www.chromium.org/chromium-projects/) <br /> The open-source project behind Google Chrome. | [`ghcr.io/m1k1o/neko/chromium`](https://ghcr.io/m1k1o/neko/chromium) |
| <img src="/img/icons/google-chrome.svg" width="60" height="60" /> | [Google Chrome](https://www.google.com/chrome/) <br /> The most popular browser in the world. | [`ghcr.io/m1k1o/neko/google-chrome`](https://ghcr.io/m1k1o/neko/google-chrome) | | <img src="/img/icons/google-chrome.svg" width="60" height="60" /> | [Google Chrome](https://www.google.com/chrome/) <br /> The most popular browser in the world. | [`ghcr.io/m1k1o/neko/google-chrome`](https://ghcr.io/m1k1o/neko/google-chrome) |
| <img src="/img/icons/chromium.svg" width="60" height="60" /> | [Ungoogled Chromium](https://github.com/Eloston/ungoogled-chromium) <br /> A fork of Chromium without Google integration. | [`ghcr.io/m1k1o/neko/ungoogled-chromium`](https://ghcr.io/m1k1o/neko/ungoogled-chromium) | | <img src="/img/icons/ungoogled-chromium.svg" width="60" height="60" /> | [Ungoogled Chromium](https://ungoogled-software.github.io/) <br /> A fork of Chromium without Google integration. | [`ghcr.io/m1k1o/neko/ungoogled-chromium`](https://ghcr.io/m1k1o/neko/ungoogled-chromium) |
| <img src="/img/icons/microsoft-edge.svg" width="60" height="60" /> | [Microsoft Edge](https://www.microsoft.com/edge) <br/> The new Microsoft Edge is based on Chromium. | [`ghcr.io/m1k1o/neko/microsoft-edge`](https://ghcr.io/m1k1o/neko/microsoft-edge) | | <img src="/img/icons/microsoft-edge.svg" width="60" height="60" /> | [Microsoft Edge](https://www.microsoft.com/edge) <br/> The new Microsoft Edge is based on Chromium. | [`ghcr.io/m1k1o/neko/microsoft-edge`](https://ghcr.io/m1k1o/neko/microsoft-edge) |
| <img src="/img/icons/brave.svg" width="60" height="60" /> | [Brave](https://brave.com/) <br /> A privacy-focused browser. | [`ghcr.io/m1k1o/neko/brave`](https://ghcr.io/m1k1o/neko/brave) | | <img src="/img/icons/brave.svg" width="60" height="60" /> | [Brave](https://brave.com/) <br /> A privacy-focused browser. | [`ghcr.io/m1k1o/neko/brave`](https://ghcr.io/m1k1o/neko/brave) |
| <img src="/img/icons/vivaldi.svg" width="60" height="60" /> | [Vivaldi](https://vivaldi.com/) <br /> A highly customizable browser. | [`ghcr.io/m1k1o/neko/vivaldi`](https://ghcr.io/m1k1o/neko/vivaldi) | | <img src="/img/icons/vivaldi.svg" width="60" height="60" /> | [Vivaldi](https://vivaldi.com/) <br /> A highly customizable browser. | [`ghcr.io/m1k1o/neko/vivaldi`](https://ghcr.io/m1k1o/neko/vivaldi) |

View file

@ -44,7 +44,7 @@ You can also use Docker Compose to run Neko. It is preferred to use Docker Compo
Create a `docker-compose.yml` file with the following content: Create a `docker-compose.yml` file with the following content:
```yaml title="docker-compose.yml" ```yaml title="docker-compose.yaml"
services: services:
neko: neko:
image: ghcr.io/m1k1o/neko/firefox:latest image: ghcr.io/m1k1o/neko/firefox:latest

View file

@ -0,0 +1,121 @@
---
sidebar_position: 7
---
# Examples
Here are some examples to get you started with Neko. You can use these examples as a reference to create your own configurations.
## Firefox
```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"
volumes:
- <your-host-path>:/home/neko/.mozilla/firefox # persist firexfox settings
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: <your-IP>
```
## Chromium
```yaml title="docker-compose.yaml"
services:
neko:
image: "ghcr.io/m1k1o/neko/chromium:latest"
restart: "unless-stopped"
shm_size: "2gb"
cap_add:
- SYS_ADMIN
ports:
- "8080:8080"
- "52000-52100:52000-52100/udp"
volumes:
- <your-host-path>:/home/neko/.config/chromium # persist chromium settings
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: <your-IP>
```
## VLC
```yaml title="docker-compose.yaml"
services:
neko:
image: "ghcr.io/m1k1o/neko/vlc:latest"
restart: "unless-stopped"
shm_size: "2gb"
cap_add:
- SYS_ADMIN
volumes:
- "<your-video-folder>:/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: <your-IP>
```
## Raspberry Pi
```yaml title="config.yaml"
capture:
video:
codec: h264
ids: [ main ]
pipelines:
main:
gst_pipeline: |
ximagesrc display-name=%s use-damage=0 show-pointer=true use-damage=false
! video/x-raw,framerate=30/1
! videoconvert
! queue
! video/x-raw,framerate=30/1,format=NV12
! v4l2h264enc extra-controls="controls,h264_profile=1,video_bitrate=1250000;"
! h264parse config-interval=3
! video/x-h264,stream-format=byte-stream,profile=constrained-baseline
```
```yaml title="docker-compose.yaml"
services:
neko:
# see docs for more variants
image: "ghcr.io/m1k1o/neko/arm-chromium:latest"
restart: "unless-stopped"
# increase on rpi's with more then 1gb ram.
shm_size: "520mb"
ports:
- "8088:8080"
- "52000-52100:52000-52100/udp"
# note: this is important since we need a GPU for hardware acceleration alternatively
# mount the devices into the docker.
privileged: true
volumes:
- "./config.yaml:/etc/neko/neko.yaml"
environment:
NEKO_DESKTOP_SCREEN: '1280x720@30'
NEKO_MEMBER_MULTIUSER_USER_PASSWORD: 'neko'
NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: 'admin'
NEKO_WEBRTC_EPR: 52000-52100
NEKO_WEBRTC_ICELITE: 1
```

View file

@ -1,5 +1,5 @@
--- ---
sidebar_position: 7 sidebar_position: 6
--- ---
# Troubleshooting # Troubleshooting
@ -27,7 +27,7 @@ Check that your ephemeral port range `NEKO_WEBRTC_EPR` is correctly exposed as a
In the following example, the specified range `52000-52100` must also be exposed using Docker. You can't map it to a different range, e.g. `52000-52100:53000-53100/udp`. If you want to use a different range, you must change the range in `NEKO_WEBRTC_EPR` too. In the following example, the specified range `52000-52100` must also be exposed using Docker. You can't map it to a different range, e.g. `52000-52100:53000-53100/udp`. If you want to use a different range, you must change the range in `NEKO_WEBRTC_EPR` too.
```yaml title="docker-compose.yml" ```yaml title="docker-compose.yaml"
services: services:
neko: neko:
image: "ghcr.io/m1k1o/neko/firefox:latest" image: "ghcr.io/m1k1o/neko/firefox:latest"
@ -95,7 +95,7 @@ You should see this:
If your IP is not correct, you can specify your own IP resolver using `NEKO_WEBRTC_IP_RETRIEVAL_URL`. It needs to return the IP address that will be used. If your IP is not correct, you can specify your own IP resolver using `NEKO_WEBRTC_IP_RETRIEVAL_URL`. It needs to return the IP address that will be used.
```yaml title="docker-compose.yml" ```yaml title="docker-compose.yaml"
services: services:
neko: neko:
image: "ghcr.io/m1k1o/neko/firefox:latest" image: "ghcr.io/m1k1o/neko/firefox:latest"
@ -117,7 +117,7 @@ services:
Or you can specify your IP address manually using `NEKO_WEBRTC_NAT1TO1`: Or you can specify your IP address manually using `NEKO_WEBRTC_NAT1TO1`:
```yaml title="docker-compose.yml" ```yaml title="docker-compose.yaml"
services: services:
neko: neko:
image: "ghcr.io/m1k1o/neko/firefox:latest" image: "ghcr.io/m1k1o/neko/firefox:latest"
@ -167,7 +167,7 @@ If you put a local IP as `NEKO_WEBRTC_NAT1TO1`, external clients try to connect
To see verbose information from the n.eko server, you can enable debug mode using `NEKO_DEBUG`. To see verbose information from the n.eko server, you can enable debug mode using `NEKO_DEBUG`.
```yaml title="docker-compose.yml" ```yaml title="docker-compose.yaml"
services: services:
neko: neko:
image: "ghcr.io/m1k1o/neko/firefox:latest" image: "ghcr.io/m1k1o/neko/firefox:latest"

View file

@ -1,7 +0,0 @@
---
sidebar_position: 6
---
# Updating & Upgrading
Best practices for keeping Neko updated and migrating between versions.

View file

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="500"
height="500"
viewBox="0 0 500 500"
fill="none"
version="1.1"
xmlns="http://www.w3.org/2000/svg">
<path
style="fill:url(#linearGradient40);stroke:none;fill-opacity:1"
d="M 374.9901,33.513004 125.00964,466.49187 A 249.98,249.98 0 0 0 466.48762,374.9917 249.98,249.98 0 0 0 374.9901,33.513004 Z" />
<path
style="fill:url(#linearGradient36);stroke:none;fill-opacity:1"
d="M 374.98841,33.512029 A 249.98,249.98 0 0 0 33.510434,125.0122 a 249.98,249.98 0 0 0 91.497516,341.4787 249.98,249.98 0 0 0 0.0348,0.0178 L 375.02224,33.531559 a 249.98,249.98 0 0 0 -0.0338,-0.01953 z" />
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="m 364.271,472.415 c 7.135,-3.673 14.07,-7.679 20.786,-11.998 L 135.743,27.6081 c -7.134,3.6761 -14.067,7.6856 -20.781,12.0078 z"
fill="#ffffff"
transform="matrix(-1,0,0,1,500.019,0)" />
<path
d="m 124.998,250.002 c 0,69.035 55.966,125.001 125.001,125.001 69.036,0 125.002,-55.966 125.002,-125.001 0,-69.035 -55.966,-125.001 -125.002,-125.001 -69.035,0 -125.001,55.966 -125.001,125.001 z"
fill="#ffffff" />
<path
d="m 148.435,250.002 c 0,56.091 45.473,101.563 101.564,101.563 56.092,0 101.564,-45.472 101.564,-101.563 0,-56.091 -45.472,-101.564 -101.564,-101.564 -56.091,0 -101.564,45.473 -101.564,101.564"
fill="url(#linearGradient30)" />
<defs>
<linearGradient id="linearGradient40" x1="135.748" y1="472.41501" x2="385.04446" y2="39.638107" gradientUnits="userSpaceOnUse">
<stop stop-color="#ff0000" />
<stop offset="1" stop-color="#ff6666" />
</linearGradient>
<linearGradient id="linearGradient36" x1="364.24796" y1="27.656727" x2="114.962" y2="460.41699" gradientUnits="userSpaceOnUse">
<stop stop-color="#800000" />
<stop offset="1" stop-color="#330000" />
</linearGradient>
<linearGradient id="linearGradient30" x1="148.435" y1="351.565" x2="351.56503" y2="148.43497" gradientUnits="userSpaceOnUse">
<stop stop-color="#bf0000" offset="0.5" />
<stop stop-color="#ff0000" offset="1" />
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -8,7 +8,7 @@ sidebar_position: 7
To see verbose information from n.eko server, you can enable debug mode using `NEKO_DEBUG`. To see verbose information from n.eko server, you can enable debug mode using `NEKO_DEBUG`.
```yaml title="docker-compose.yml" ```yaml title="docker-compose.yaml"
version: "3.4" version: "3.4"
services: services:
neko: neko:
@ -38,7 +38,7 @@ There exists an extension [Google Input Tools](https://chrome.google.com/webstor
Check if you did not forget to add cap_add to your docker-compose file. Check if you did not forget to add cap_add to your docker-compose file.
```yaml title="docker-compose.yml" ```yaml title="docker-compose.yaml"
version: "3.4" version: "3.4"
services: services:
neko: neko:

View file

@ -27,7 +27,7 @@ Check that your ephemeral port range `NEKO_EPR` is correctly exposed as `/udp` p
In following example, specified range `52000-52100` must be also exposed using docker. In following example, specified range `52000-52100` must be also exposed using docker.
```yaml title="docker-compose.yml" ```yaml title="docker-compose.yaml"
version: "3.4" version: "3.4"
services: services:
neko: neko:
@ -95,7 +95,7 @@ You should see this:
If your IP is not correct, you can specify own IP resolver using `NEKO_IPFETCH`. It needs to return IP address that will be used. If your IP is not correct, you can specify own IP resolver using `NEKO_IPFETCH`. It needs to return IP address that will be used.
```yaml title="docker-compose.yml" ```yaml title="docker-compose.yaml"
version: "3.4" version: "3.4"
services: services:
neko: neko:
@ -118,7 +118,7 @@ services:
Or you can specify your IP address manually using `NEKO_NAT1TO1`: (It's read as NAT 1 to 1, so it's capital letter 'O', not zero '0', in NAT1`TO`1) Or you can specify your IP address manually using `NEKO_NAT1TO1`: (It's read as NAT 1 to 1, so it's capital letter 'O', not zero '0', in NAT1`TO`1)
```yaml title="docker-compose.yml" ```yaml title="docker-compose.yaml"
version: "3.4" version: "3.4"
services: services:
neko: neko:
@ -165,7 +165,7 @@ If you put local ip as `NEKO_NAT1TO1`, external clients try to connect to that i
To see verbose information from n.eko server, you can enable debug mode using `NEKO_DEBUG`. To see verbose information from n.eko server, you can enable debug mode using `NEKO_DEBUG`.
```yaml title="docker-compose.yml" ```yaml title="docker-compose.yaml"
version: "3.4" version: "3.4"
services: services:
neko: neko: