This commit is contained in:
eric
2026-05-16 19:24:30 -05:00
parent 19beec12a5
commit 75a0ca4e31
260 changed files with 51345 additions and 1 deletions

1
d2ypp2/services/neko/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
data/

View File

@@ -0,0 +1,85 @@
#!/bin/sh
set -eu
family="${1:-chromium}"
start_url="${NEKO_START_URL:-about:blank}"
arch="$(uname -m 2>/dev/null || echo unknown)"
prune_path() {
target="${1:-}"
[ -n "$target" ] || return 0
[ -e "$target" ] || return 0
rm -rf "$target"
}
find_bin() {
if [ "$family" = "google-chrome" ]; then
command -v google-chrome 2>/dev/null || command -v google-chrome-stable 2>/dev/null || true
else
command -v chromium 2>/dev/null || command -v chromium-browser 2>/dev/null || true
fi
}
browser_bin="$(find_bin)"
if [ -z "$browser_bin" ]; then
exit 0
fi
profile_dir="/home/neko/.config/chromium"
if [ "$family" = "google-chrome" ]; then
profile_dir="/home/neko/.config/google-chrome"
fi
render_mode="${NEKO_BROWSER_RENDER_MODE:-auto}"
render_flags="--disable-gpu --use-gl=swiftshader --enable-unsafe-swiftshader"
session_flags=""
case "$render_mode" in
auto)
case "$arch:$family" in
x86_64:google-chrome|amd64:google-chrome)
render_flags="--disable-gpu --disable-software-rasterizer"
session_flags="--bwsi"
;;
esac
;;
gpu)
render_flags=""
;;
legacy|x11|disable-gpu)
render_flags="--disable-gpu --disable-software-rasterizer"
;;
software|swiftshader)
render_flags="--disable-gpu --use-gl=swiftshader --enable-unsafe-swiftshader"
;;
esac
mkdir -p "$profile_dir"
prune_path "$profile_dir/SingletonCookie"
prune_path "$profile_dir/SingletonLock"
prune_path "$profile_dir/SingletonSocket"
prune_path "$profile_dir/SingletonStartupLock"
prune_path "$profile_dir/BrowserMetrics"
prune_path "$profile_dir/Crash Reports"
prune_path "$profile_dir/Crashpad"
prune_path "$profile_dir/ShaderCache"
prune_path "$profile_dir/GrShaderCache"
prune_path "$profile_dir/GraphiteDawnCache"
prune_path "$profile_dir/Default/Cache"
prune_path "$profile_dir/Default/Code Cache"
prune_path "$profile_dir/Default/GPUCache"
prune_path "$profile_dir/Default/DawnGraphiteCache"
prune_path "$profile_dir/Default/DawnWebGPUCache"
exec "$browser_bin" \
${render_flags} \
--window-position=0,0 \
--display="${DISPLAY:?DISPLAY is required}" \
--user-data-dir="$profile_dir" \
--password-store=basic \
--no-first-run \
${session_flags} \
--start-maximized \
--force-dark-mode \
--disable-file-system \
--disable-dev-shm-usage \
"$start_url"

View File

@@ -0,0 +1,33 @@
[program:chromium]
environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s"
command=/usr/bin/chromium
--window-position=0,0
--display=%(ENV_DISPLAY)s
--user-data-dir=/home/neko/.config/chromium
--no-first-run
--start-maximized
--bwsi
--force-dark-mode
--disable-file-system
--disable-gpu
--disable-software-rasterizer
--disable-dev-shm-usage
stopsignal=INT
autorestart=true
priority=800
user=%(ENV_USER)s
stdout_logfile=/var/log/neko/chromium.log
stdout_logfile_maxbytes=100MB
stdout_logfile_backups=10
redirect_stderr=true
[program:openbox]
environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s"
command=/usr/bin/openbox --config-file /etc/neko/openbox.xml
autorestart=true
priority=300
user=%(ENV_USER)s
stdout_logfile=/var/log/neko/openbox.log
stdout_logfile_maxbytes=100MB
stdout_logfile_backups=10
redirect_stderr=true

View File

@@ -0,0 +1,80 @@
x-neko-common: &neko-common
image: "${NEKO_IMAGE:-ghcr.io/m1k1o/neko/chromium:3.0.0}"
restart: unless-stopped
shm_size: "${NEKO_SHM_SIZE:-2gb}"
cap_add:
- SYS_ADMIN
x-neko-env: &neko-env
DISPLAY: ":99.0"
NEKO_DESKTOP_SCREEN: "${NEKO_DESKTOP_SCREEN}"
NEKO_SERVER_BIND: ":8080"
NEKO_MEMBER_PROVIDER: "multiuser"
NEKO_MEMBER_MULTIUSER_USER_PASSWORD: "${NEKO_USER_PASS}"
NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: "${NEKO_ADMIN_PASS}"
NEKO_WEBRTC_ICELITE: "${NEKO_WEBRTC_ICELITE}"
NEKO_WEBRTC_NAT1TO1: "${NEKO_WEBRTC_NAT1TO1}"
NEKO_PLUGINS_ENABLED: "${NEKO_PLUGINS_ENABLED}"
NEKO_PLUGINS_DIR: "/etc/neko/plugins/"
NEKO_START_URL: "${NEKO_START_URL}"
services:
neko1:
<<: *neko-common
container_name: live-neko-1
environment:
<<: *neko-env
NEKO_WEBRTC_EPR: "${NEKO_WEBRTC_EPR_1}"
NEKO_WEBRTC_TCPMUX: "${NEKO_WEBRTC_TCPMUX_1}"
NEKO_WEBRTC_UDPMUX: "${NEKO_WEBRTC_UDPMUX_1}"
ports:
- "${NEKO_HTTP_PORT_1}:8080"
- "${NEKO_WEBRTC_TCPMUX_1}:${NEKO_WEBRTC_TCPMUX_1}/tcp"
- "${NEKO_WEBRTC_UDPMUX_1}:${NEKO_WEBRTC_UDPMUX_1}/udp"
- "${NEKO_WEBRTC_UDP_RANGE_1}:${NEKO_WEBRTC_UDP_RANGE_1}/udp"
volumes:
- "${NEKO_PROFILE_HOST_DIR_1}:/home/neko/.config/chromium"
- "${NEKO_PROFILE_HOST_DIR_1}:/home/neko/.config/google-chrome"
- "./policies:/etc/chromium/policies/managed:ro"
- "./policies:/etc/opt/chrome/policies/managed:ro"
- "./${NEKO_BROWSER_SUPERVISOR_CONF}:/etc/neko/supervisord/browser.conf:ro"
neko2:
<<: *neko-common
container_name: live-neko-2
environment:
<<: *neko-env
NEKO_WEBRTC_EPR: "${NEKO_WEBRTC_EPR_2}"
NEKO_WEBRTC_TCPMUX: "${NEKO_WEBRTC_TCPMUX_2}"
NEKO_WEBRTC_UDPMUX: "${NEKO_WEBRTC_UDPMUX_2}"
ports:
- "${NEKO_HTTP_PORT_2}:8080"
- "${NEKO_WEBRTC_TCPMUX_2}:${NEKO_WEBRTC_TCPMUX_2}/tcp"
- "${NEKO_WEBRTC_UDPMUX_2}:${NEKO_WEBRTC_UDPMUX_2}/udp"
- "${NEKO_WEBRTC_UDP_RANGE_2}:${NEKO_WEBRTC_UDP_RANGE_2}/udp"
volumes:
- "${NEKO_PROFILE_HOST_DIR_2}:/home/neko/.config/chromium"
- "${NEKO_PROFILE_HOST_DIR_2}:/home/neko/.config/google-chrome"
- "./policies:/etc/chromium/policies/managed:ro"
- "./policies:/etc/opt/chrome/policies/managed:ro"
- "./${NEKO_BROWSER_SUPERVISOR_CONF}:/etc/neko/supervisord/browser.conf:ro"
neko3:
<<: *neko-common
container_name: live-neko-3
environment:
<<: *neko-env
NEKO_WEBRTC_EPR: "${NEKO_WEBRTC_EPR_3}"
NEKO_WEBRTC_TCPMUX: "${NEKO_WEBRTC_TCPMUX_3}"
NEKO_WEBRTC_UDPMUX: "${NEKO_WEBRTC_UDPMUX_3}"
ports:
- "${NEKO_HTTP_PORT_3}:8080"
- "${NEKO_WEBRTC_TCPMUX_3}:${NEKO_WEBRTC_TCPMUX_3}/tcp"
- "${NEKO_WEBRTC_UDPMUX_3}:${NEKO_WEBRTC_UDPMUX_3}/udp"
- "${NEKO_WEBRTC_UDP_RANGE_3}:${NEKO_WEBRTC_UDP_RANGE_3}/udp"
volumes:
- "${NEKO_PROFILE_HOST_DIR_3}:/home/neko/.config/chromium"
- "${NEKO_PROFILE_HOST_DIR_3}:/home/neko/.config/google-chrome"
- "./policies:/etc/chromium/policies/managed:ro"
- "./policies:/etc/opt/chrome/policies/managed:ro"
- "./${NEKO_BROWSER_SUPERVISOR_CONF}:/etc/neko/supervisord/browser.conf:ro"

View File

@@ -0,0 +1,33 @@
[program:google-chrome]
environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s"
command=/usr/bin/google-chrome
--window-position=0,0
--display=%(ENV_DISPLAY)s
--user-data-dir=/home/neko/.config/google-chrome
--no-first-run
--start-maximized
--bwsi
--force-dark-mode
--disable-file-system
--disable-gpu
--disable-software-rasterizer
--disable-dev-shm-usage
stopsignal=INT
autorestart=true
priority=800
user=%(ENV_USER)s
stdout_logfile=/var/log/neko/google-chrome.log
stdout_logfile_maxbytes=100MB
stdout_logfile_backups=10
redirect_stderr=true
[program:openbox]
environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s"
command=/usr/bin/openbox --config-file /etc/neko/openbox.xml
autorestart=true
priority=300
user=%(ENV_USER)s
stdout_logfile=/var/log/neko/openbox.log
stdout_logfile_maxbytes=100MB
stdout_logfile_backups=10
redirect_stderr=true

View File

@@ -0,0 +1,21 @@
{
"ExtensionInstallForcelist": [
"dhdgffkkebhmkfjojejmpbldmpobfkfo;https://clients2.google.com/service/update2/crx"
],
"ExtensionInstallAllowlist": ["*"],
"ExtensionInstallBlocklist": [],
"DownloadRestrictions": 0,
"AllowFileSelectionDialogs": true,
"URLAllowlist": ["file:///home/neko/Downloads/*"],
"DefaultCookiesSetting": 1,
"RestoreOnStartup": 1,
"AutoplayAllowed": true,
"DefaultPopupsSetting": 1,
"DefaultNotificationsSetting": 1,
"VideoCaptureAllowed": true,
"AudioCaptureAllowed": true,
"VideoCaptureAllowedUrls": ["https://*.google.com/*", "https://*.youtube.com/*"],
"AudioCaptureAllowedUrls": ["https://*.google.com/*", "https://*.youtube.com/*"],
"DeveloperToolsAvailability": 2,
"DefaultGeolocationSetting": 1
}