's'
This commit is contained in:
6
d2ypp2/services/filebrowser/config/settings.json
Normal file
6
d2ypp2/services/filebrowser/config/settings.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"address": "0.0.0.0",
|
||||
"port": 80,
|
||||
"baseURL": "",
|
||||
"log": "stdout"
|
||||
}
|
||||
22
d2ypp2/services/filebrowser/docker-compose.yml
Normal file
22
d2ypp2/services/filebrowser/docker-compose.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
version: "3.3"
|
||||
|
||||
services:
|
||||
filebrowser:
|
||||
image: filebrowser/filebrowser:latest
|
||||
container_name: live-filebrowser
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${FILEBROWSER_PORT:-8082}:80"
|
||||
volumes:
|
||||
- ./database:/database
|
||||
- ./config:/config
|
||||
- ../..:/srv/app
|
||||
- "${SHELLCRASH_DIR:-/etc/ShellCrash}:/srv/shellcrash"
|
||||
- /home/live:/srv/home-live
|
||||
command:
|
||||
- --database
|
||||
- /database/filebrowser.db
|
||||
- --config
|
||||
- /config/settings.json
|
||||
- --root
|
||||
- /srv
|
||||
34
d2ypp2/services/homepage/config/services.yaml
Normal file
34
d2ypp2/services/homepage/config/services.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
- Infrastructure:
|
||||
- Live Console:
|
||||
href: http://__HOST__:8001
|
||||
description: Douyin / YouTube / HDMI orchestration
|
||||
- WebTTY:
|
||||
href: http://__HOST__:7681
|
||||
description: Browser terminal as live user
|
||||
- Cockpit:
|
||||
href: https://__HOST__:9090
|
||||
description: System administration
|
||||
- File Browser:
|
||||
href: http://__HOST__:8082
|
||||
description: Beginner-friendly file manager
|
||||
- ShellCrash:
|
||||
href: http://__HOST__:8001
|
||||
description: Rules and YAML editing from the main console
|
||||
- Netdata:
|
||||
href: http://__HOST__:19999
|
||||
description: Metrics and health monitoring
|
||||
- mitmproxy:
|
||||
href: http://__HOST__:8086
|
||||
description: Web proxy capture and traffic inspection
|
||||
- VS Code Server:
|
||||
href: http://__HOST__:8440
|
||||
description: Browser IDE mounted to the live workspace
|
||||
- Uptime Kuma:
|
||||
href: http://__HOST__:3001
|
||||
description: Endpoint health checks and alert dashboards
|
||||
- SRS:
|
||||
href: http://__HOST__:8080
|
||||
description: FLV and HLS preview endpoint
|
||||
- OpenClaw:
|
||||
href: http://__HOST__:18789
|
||||
description: Automation gateway and web workspace
|
||||
7
d2ypp2/services/homepage/config/settings.yaml
Normal file
7
d2ypp2/services/homepage/config/settings.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
title: Live Control Hub
|
||||
description: Unified LAN dashboard for streaming, networking, and device control
|
||||
color: slate
|
||||
layout:
|
||||
Infrastructure:
|
||||
style: row
|
||||
columns: 3
|
||||
4
d2ypp2/services/homepage/config/widgets.yaml
Normal file
4
d2ypp2/services/homepage/config/widgets.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
- resources:
|
||||
cpu: true
|
||||
memory: true
|
||||
disk: /
|
||||
14
d2ypp2/services/homepage/docker-compose.yml
Normal file
14
d2ypp2/services/homepage/docker-compose.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
version: "3.3"
|
||||
|
||||
services:
|
||||
homepage:
|
||||
image: ghcr.io/gethomepage/homepage:latest
|
||||
container_name: live-homepage
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${HOMEPAGE_PORT:-80}:3000"
|
||||
environment:
|
||||
HOMEPAGE_ALLOWED_HOSTS: "*"
|
||||
volumes:
|
||||
- ./config:/app/config
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
26
d2ypp2/services/mitmproxy/docker-compose.yml
Normal file
26
d2ypp2/services/mitmproxy/docker-compose.yml
Normal file
@@ -0,0 +1,26 @@
|
||||
version: "3.3"
|
||||
|
||||
services:
|
||||
mitmproxy:
|
||||
image: mitmproxy/mitmproxy:latest
|
||||
container_name: live-mitmproxy
|
||||
restart: unless-stopped
|
||||
command:
|
||||
- mitmweb
|
||||
- --web-host
|
||||
- 0.0.0.0
|
||||
- --web-port
|
||||
- "8081"
|
||||
- --listen-host
|
||||
- 0.0.0.0
|
||||
- --listen-port
|
||||
- "8080"
|
||||
- --set
|
||||
- web_open_browser=false
|
||||
- --set
|
||||
- block_global=false
|
||||
ports:
|
||||
- "${MITMPROXY_WEB_PORT:-8086}:8081"
|
||||
- "${MITMPROXY_PROXY_PORT:-8087}:8080"
|
||||
volumes:
|
||||
- ./data:/home/mitmproxy/.mitmproxy
|
||||
1
d2ypp2/services/neko/.gitignore
vendored
Normal file
1
d2ypp2/services/neko/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
data/
|
||||
85
d2ypp2/services/neko/browser-launch.sh
Normal file
85
d2ypp2/services/neko/browser-launch.sh
Normal 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"
|
||||
33
d2ypp2/services/neko/chromium.conf
Normal file
33
d2ypp2/services/neko/chromium.conf
Normal 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
|
||||
80
d2ypp2/services/neko/docker-compose.yml
Normal file
80
d2ypp2/services/neko/docker-compose.yml
Normal 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"
|
||||
33
d2ypp2/services/neko/google-chrome.conf
Normal file
33
d2ypp2/services/neko/google-chrome.conf
Normal 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
|
||||
21
d2ypp2/services/neko/policies/policies.json
Normal file
21
d2ypp2/services/neko/policies/policies.json
Normal 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
|
||||
}
|
||||
39
d2ypp2/services/openclaw/docker-compose.yml
Normal file
39
d2ypp2/services/openclaw/docker-compose.yml
Normal file
@@ -0,0 +1,39 @@
|
||||
version: "3.3"
|
||||
|
||||
services:
|
||||
openclaw-gateway:
|
||||
image: "${OPENCLAW_IMAGE:-ghcr.io/openclaw/openclaw:latest}"
|
||||
container_name: live-openclaw
|
||||
restart: unless-stopped
|
||||
init: true
|
||||
environment:
|
||||
HOME: /home/node
|
||||
TERM: xterm-256color
|
||||
OPENCLAW_GATEWAY_TOKEN: "${OPENCLAW_GATEWAY_TOKEN:-12345678}"
|
||||
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS: "${OPENCLAW_ALLOW_INSECURE_PRIVATE_WS:-1}"
|
||||
TZ: "${OPENCLAW_TZ:-UTC}"
|
||||
volumes:
|
||||
- "${OPENCLAW_CONFIG_DIR:-/var/lib/live-openclaw/config}:/home/node/.openclaw"
|
||||
- "${OPENCLAW_WORKSPACE_DIR:-/var/lib/live-openclaw/workspace}:/home/node/.openclaw/workspace"
|
||||
ports:
|
||||
- "${OPENCLAW_GATEWAY_PORT:-18789}:18789"
|
||||
- "${OPENCLAW_BRIDGE_PORT:-18790}:18790"
|
||||
command:
|
||||
- node
|
||||
- dist/index.js
|
||||
- gateway
|
||||
- --allow-unconfigured
|
||||
- --bind
|
||||
- "${OPENCLAW_GATEWAY_BIND:-lan}"
|
||||
- --port
|
||||
- "18789"
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- node
|
||||
- -e
|
||||
- fetch('http://127.0.0.1:18789/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 20s
|
||||
41
d2ypp2/services/srs/conf/srs.conf
Normal file
41
d2ypp2/services/srs/conf/srs.conf
Normal file
@@ -0,0 +1,41 @@
|
||||
listen 1935;
|
||||
max_connections 1000;
|
||||
daemon off;
|
||||
srs_log_tank console;
|
||||
|
||||
http_api {
|
||||
enabled on;
|
||||
listen 1985;
|
||||
}
|
||||
|
||||
http_server {
|
||||
enabled on;
|
||||
listen 8080;
|
||||
dir ./objs/nginx/html;
|
||||
}
|
||||
|
||||
srt_server {
|
||||
enabled on;
|
||||
listen 10080;
|
||||
}
|
||||
|
||||
vhost __defaultVhost__ {
|
||||
tcp_nodelay on;
|
||||
min_latency on;
|
||||
play {
|
||||
gop_cache off;
|
||||
queue_length 1;
|
||||
}
|
||||
|
||||
http_remux {
|
||||
enabled on;
|
||||
mount [vhost]/[app]/[stream].flv;
|
||||
}
|
||||
|
||||
hls {
|
||||
enabled on;
|
||||
hls_path ./objs/nginx/html;
|
||||
hls_fragment 3;
|
||||
hls_window 18;
|
||||
}
|
||||
}
|
||||
51
d2ypp2/services/srs/data/index.html
Normal file
51
d2ypp2/services/srs/data/index.html
Normal file
@@ -0,0 +1,51 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>SRS · Live Hub</title>
|
||||
<style>
|
||||
:root { color-scheme: dark; }
|
||||
body { font-family: system-ui, sans-serif; max-width: 42rem; margin: 2rem auto; padding: 0 1rem;
|
||||
background: #0c0c0f; color: #e4e4e7; line-height: 1.5; }
|
||||
h1 { font-size: 1.25rem; margin-bottom: 0.5rem; }
|
||||
p { color: #a1a1aa; font-size: 0.9rem; }
|
||||
ul { padding-left: 1.2rem; }
|
||||
a { color: #7dd3fc; text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
.card { border: 1px solid #27272a; border-radius: 0.75rem; padding: 1rem 1.25rem; margin-top: 1rem;
|
||||
background: #18181b; }
|
||||
code { background: #27272a; padding: 0.1em 0.35em; border-radius: 0.25rem; font-size: 0.85em; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>SRS 流媒体(本机)</h1>
|
||||
<p>此页由仓库内 <code>services/srs/data/index.html</code> 提供;静态目录挂载后根路径不再 404。</p>
|
||||
<div class="card">
|
||||
<p><strong>常用入口</strong></p>
|
||||
<ul>
|
||||
<li><a id="api-versions" href="#">SRS HTTP API — 版本信息 (JSON)</a></li>
|
||||
<li><a id="api-summaries" href="#">SRS — 摘要接口</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="card">
|
||||
<p><strong>端口说明(默认)</strong></p>
|
||||
<ul>
|
||||
<li><code>1935</code> RTMP 推/拉流</li>
|
||||
<li><code>1985</code> HTTP API</li>
|
||||
<li><code>8080</code> 本页与 HLS/HTTP 静态</li>
|
||||
<li><code>10080/udp</code> SRT</li>
|
||||
</ul>
|
||||
</div>
|
||||
<script>
|
||||
(function () {
|
||||
var h = location.hostname || "live.local";
|
||||
var api = "http://" + h + ":1985";
|
||||
var av = document.getElementById("api-versions");
|
||||
var as = document.getElementById("api-summaries");
|
||||
if (av) { av.href = api + "/api/v1/versions"; }
|
||||
if (as) { as.href = api + "/api/v1/summaries"; }
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
16
d2ypp2/services/srs/docker-compose.yml
Normal file
16
d2ypp2/services/srs/docker-compose.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
version: "3.3"
|
||||
|
||||
services:
|
||||
srs:
|
||||
image: ossrs/srs:5
|
||||
container_name: live-srs
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${SRS_RTMP_PORT:-1935}:1935"
|
||||
- "${SRS_API_PORT:-1985}:1985"
|
||||
- "${SRS_HTTP_PORT:-8080}:8080"
|
||||
- "${SRS_SRT_PORT:-10080}:10080/udp"
|
||||
volumes:
|
||||
- ./conf/srs.conf:/usr/local/srs/conf/live.conf:ro
|
||||
- ./data:/usr/local/srs/objs/nginx/html
|
||||
command: ["./objs/srs", "-c", "conf/live.conf"]
|
||||
11
d2ypp2/services/uptime-kuma/docker-compose.yml
Normal file
11
d2ypp2/services/uptime-kuma/docker-compose.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
version: "3.3"
|
||||
|
||||
services:
|
||||
uptime-kuma:
|
||||
image: louislam/uptime-kuma:1
|
||||
container_name: live-uptime-kuma
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${UPTIME_KUMA_PORT:-3001}:3001"
|
||||
volumes:
|
||||
- ./data:/app/data
|
||||
21
d2ypp2/services/vscode-server/docker-compose.yml
Normal file
21
d2ypp2/services/vscode-server/docker-compose.yml
Normal file
@@ -0,0 +1,21 @@
|
||||
version: "3.3"
|
||||
|
||||
services:
|
||||
code-server:
|
||||
image: codercom/code-server:latest
|
||||
container_name: live-code-server
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
PASSWORD: "${VSCODE_SERVER_PASSWORD:-12345678}"
|
||||
HOME: /home/coder
|
||||
command:
|
||||
- --bind-addr
|
||||
- 0.0.0.0:8080
|
||||
- --auth
|
||||
- password
|
||||
- /workspace
|
||||
ports:
|
||||
- "${VSCODE_SERVER_PORT:-8440}:8080"
|
||||
volumes:
|
||||
- ./config:/home/coder/.local/share/code-server
|
||||
- ../..:/workspace
|
||||
Reference in New Issue
Block a user