Upgrade to debian trixie (#581)

* move flavored bookworm dockerfile to a new trixie dockerfile.

* fix opera openbox selector.

* fix remmina dependencies.

* remove chromium explicit bookworm source.

* Update apps to work with trixie (#624)

Co-authored-by: yesBad <me@bad.cash>

* remove SYS_ADMIN capability requirement for Chromium-based Docker images and update documentation accordingly.

* fix chromium package.

* change uBlock Origin to uBlock Origin Lite.

* restore waterfox in build matrix for GHCR workflows.

---------

Co-authored-by: Bad <87938689+yesBad@users.noreply.github.com>
Co-authored-by: yesBad <me@bad.cash>
This commit is contained in:
Miroslav Šedivý
2026-04-02 15:12:21 +02:00
committed by GitHub
parent a2f5f7ec79
commit a597d44680
43 changed files with 129 additions and 709 deletions
+3 -3
View File
@@ -213,16 +213,16 @@ By default, the browsers in Neko do not allow installing extensions except for t
- `ExtensionInstallAllowlist`: These extensions can be installed by the user when needed; they are not pre-installed.
- `ExtensionInstallBlocklist`: These extensions cannot be installed by the user, which is `*` (all extensions) by default.
The ID of the extension can be found in the URL of the extension in the Chrome Web Store. For example, the ID of the [uBlock Origin](https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm) extension is `cjpalhdlnbpafiamejdnhcphjbkeiagm`.
The ID of the extension can be found in the URL of the extension in the Chrome Web Store. For example, the ID of the [uBlock Origin Lite](https://chromewebstore.google.com/detail/ublock-origin-lite/ddkjiahejlhfcafbddmgiahcphecmpfh) extension is `ddkjiahejlhfcafbddmgiahcphecmpfh`.
```json title="policy.json"
{
"ExtensionInstallForcelist": [
"cjpalhdlnbpafiamejdnhcphjbkeiagm;https://clients2.google.com/service/update2/crx",
"ddkjiahejlhfcafbddmgiahcphecmpfh;https://clients2.google.com/service/update2/crx",
"mnjggcdmjocbbbhaepdhchncahnbgone;https://clients2.google.com/service/update2/crx"
],
"ExtensionInstallAllowlist": [
"cjpalhdlnbpafiamejdnhcphjbkeiagm",
"ddkjiahejlhfcafbddmgiahcphecmpfh",
"mnjggcdmjocbbbhaepdhchncahnbgone"
],
"ExtensionInstallBlocklist": [
+3 -4
View File
@@ -85,7 +85,9 @@ Check the [Firefox-based browsers customization guide](/docs/v3/customization/br
There are multiple flavors of Chromium-based browsers available as Neko Docker images.
They need `--cap-add=SYS_ADMIN` (see [security implications](https://www.redhat.com/en/blog/container-tidbits-adding-capabilities-container) for more information) and extended shared memory size (`--shm-size=2g`) to work properly.
Chromium is running with `--no-sandbox` flag, which is required to run it in a container without additional configuration. You can read more about it in [Quick introduction](https://www.google.com/googlebooks/chrome/med_26.html) to Chrome's sandbox. More in-depth [design document](https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/design/sandbox.md), with internal links to FAQ, etc.
Additionally, chromium-based browsers require `--shm-size=2g` (or more) to work properly. This is because the default shared memory size for Docker containers is too small for Chromium-based browsers, which can lead to crashes and other issues.
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
@@ -95,7 +97,6 @@ import TabItem from '@theme/TabItem';
```bash
docker run \
--cap-add=SYS_ADMIN \
--shm-size=2g \
ghcr.io/m1k1o/neko/chromium
```
@@ -105,8 +106,6 @@ import TabItem from '@theme/TabItem';
<TabItem value="docker-compose" label="Docker Compose configuration">
```yaml title="docker-compose.yaml"
cap_add:
- SYS_ADMIN
shm_size: 2g
```
-4
View File
@@ -36,8 +36,6 @@ services:
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"
@@ -60,8 +58,6 @@ services:
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:
+1 -7
View File
@@ -163,16 +163,12 @@ If you put a local IP as `NEKO_WEBRTC_NAT1TO1`, external clients try to connect
### Getting a black screen with a cursor, but no browser for Chromium-based browsers {#black-screen-with-cursor}
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.
Make sure that the `shm_size` is set to `2gb` or higher.
```yaml title="docker-compose.yaml"
services:
neko:
image: "ghcr.io/m1k1o/neko/chromium:latest"
# highlight-start
cap_add:
- SYS_ADMIN
# highlight-end
restart: "unless-stopped"
# highlight-start
shm_size: "2gb"
@@ -202,8 +198,6 @@ services:
- 1.1.1.1
- 8.8.8.8
# highlight-end
cap_add:
- SYS_ADMIN
restart: "unless-stopped"
shm_size: "2gb"
# ...
+6 -9
View File
@@ -22,12 +22,12 @@ title: Getting started
Use the following docker images from [Docker Hub](https://hub.docker.com/r/m1k1o/neko) for x86_64:
- `m1k1o/neko:latest` or `m1k1o/neko:firefox` - for Firefox.
- `m1k1o/neko:chromium` - for Chromium (needs `--cap-add=SYS_ADMIN`, see the [security implications](https://www.redhat.com/en/blog/container-tidbits-adding-capabilities-container)).
- `m1k1o/neko:google-chrome` - for Google Chrome (needs `--cap-add=SYS_ADMIN`, see the [security implications](https://www.redhat.com/en/blog/container-tidbits-adding-capabilities-container)).
- `m1k1o/neko:ungoogled-chromium` - for [Ungoogled Chromium](https://github.com/Eloston/ungoogled-chromium) (needs `--cap-add=SYS_ADMIN`, see the [security implications](https://www.redhat.com/en/blog/container-tidbits-adding-capabilities-container)) (by @whalehub).
- `m1k1o/neko:microsoft-edge` - for Microsoft Edge (needs `--cap-add=SYS_ADMIN`, see the [security implications](https://www.redhat.com/en/blog/container-tidbits-adding-capabilities-container)).
- `m1k1o/neko:brave` - for [Brave Browser](https://brave.com) (needs `--cap-add=SYS_ADMIN`, see the [security implications](https://www.redhat.com/en/blog/container-tidbits-adding-capabilities-container)).
- `m1k1o/neko:vivaldi` - for [Vivaldi Browser](https://vivaldi.com) (needs `--cap-add=SYS_ADMIN`, see the [security implications](https://www.redhat.com/en/blog/container-tidbits-adding-capabilities-container)) (by @Xeddius).
- `m1k1o/neko:chromium` - for Chromium.
- `m1k1o/neko:google-chrome` - for Google Chrome.
- `m1k1o/neko:ungoogled-chromium` - for [Ungoogled Chromium](https://github.com/Eloston/ungoogled-chromium) (by @whalehub).
- `m1k1o/neko:microsoft-edge` - for Microsoft Edge.
- `m1k1o/neko:brave` - for [Brave Browser](https://brave.com).
- `m1k1o/neko:vivaldi` - for [Vivaldi Browser](https://vivaldi.com) (by @Xeddius).
- `m1k1o/neko:opera` for [Opera Browser](https://opera.com) (requires extra steps to enable DRM, see instructions [here](https://www.reddit.com/r/operabrowser/wiki/opera/linux_widevine_config/). libffmpeg is already configured.) (by @prophetofxenu)
- `m1k1o/neko:tor-browser` - for Tor Browser.
- `m1k1o/neko:remmina` - for remote desktop connection (by @lowne).
@@ -267,7 +267,6 @@ docker run -d --gpus all \
-e NEKO_VIDEO_CODEC=h264 \
-e NEKO_HWENC=nvenc \
--shm-size=2gb \
--cap-add=SYS_ADMIN \
--name neko \
ghcr.io/m1k1o/neko/nvidia-google-chrome:latest
```
@@ -284,8 +283,6 @@ services:
ports:
- "8080:8080"
- "56000-56100:56000-56100/udp"
cap_add:
- SYS_ADMIN
environment:
NEKO_SCREEN: '1920x1080@30'
NEKO_PASSWORD: neko
@@ -38,8 +38,6 @@ services:
ports:
- "8080:8080"
- "52000-52100:52000-52100/udp"
cap_add:
- SYS_ADMIN
environment:
NEKO_SCREEN: '1920x1080@30'
NEKO_PASSWORD: neko
@@ -62,8 +60,6 @@ services:
ports:
- "8080:8080"
- "52000-52100:52000-52100/udp"
cap_add:
- SYS_ADMIN
environment:
NEKO_SCREEN: '1920x1080@30'
NEKO_PASSWORD: neko
-25
View File
@@ -34,31 +34,6 @@ Ensure, that you have enabled debug mode in javascript console too, in order to
There exists an extension [Google Input Tools](https://chrome.google.com/webstore/detail/mclkkofklkfljcocdinagocijmpgbhab) for Chrome that allows you to use Chinese input method.
## Only black screen is displayed but remote cursor is moving for Chromium-based browsers (Chrome, Edge, etc.)
Check if you did not forget to add cap_add to your docker-compose file.
```yaml title="docker-compose.yaml"
version: "3.4"
services:
neko:
image: "m1k1o/neko:chromium"
# highlight-start
cap_add:
- SYS_ADMIN
# highlight-end
restart: "unless-stopped"
shm_size: "2gb"
ports:
- "8080:8080"
- "52000-52100:52000-52100/udp"
environment:
NEKO_SCREEN: '1920x1080@30'
NEKO_PASSWORD: neko
NEKO_PASSWORD_ADMIN: admin
NEKO_EPR: 52000-52100
```
## 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:
@@ -227,8 +227,6 @@ Check if your TCP port is exposed correctly and your reverse proxy is correctly
Getting black screen with a cursor, but no browser.
```
Most likely you forgot to add `-cap-add=SYS_ADMIN` when using chromium-based browsers.
### Unrelated server errors
```