This commit is contained in:
eric
2026-03-28 15:08:59 -05:00
parent 92ecc14e43
commit d74f3046a3
14 changed files with 1889 additions and 245 deletions

View File

@@ -59,6 +59,22 @@ compose_run() {
fi
}
compose_in_service_dir() {
local compose_file="$1"
shift
local d base
d="$(cd "$(dirname "$compose_file")" && pwd)"
base="$(basename "$compose_file")"
(
cd "$d" || exit 1
if docker compose version >/dev/null 2>&1; then
docker compose -f "$base" "$@"
else
docker-compose -f "$base" "$@"
fi
)
}
as_live() {
runuser -u live -- bash -lc "cd '$ROOT_DIR' && $*"
}
@@ -435,10 +451,7 @@ install_neko_browser() {
export NEKO_WEBRTC_NAT1TO1
fi
export NEKO_PLUGINS_ENABLED="${NEKO_PLUGINS_ENABLED:-true}"
(
cd "$neko_dir" || exit 1
compose_run "$neko_dir/docker-compose.yml" up -d
)
compose_in_service_dir "$neko_dir/docker-compose.yml" up -d
}
configure_adb_udev() {
@@ -642,7 +655,7 @@ prepare_homepage() {
fi
log "Preparing Homepage"
render_homepage_services
compose_run "$ROOT_DIR/services/homepage/docker-compose.yml" up -d
compose_in_service_dir "$ROOT_DIR/services/homepage/docker-compose.yml" up -d
}
prepare_filebrowser() {
@@ -660,7 +673,7 @@ prepare_filebrowser() {
rm -f "$fb_db"
touch "$fb_db"
chmod -R 0777 "$ROOT_DIR/services/filebrowser/database" "$ROOT_DIR/services/filebrowser/config"
compose_run "$ROOT_DIR/services/filebrowser/docker-compose.yml" down >/dev/null 2>&1 || true
compose_in_service_dir "$ROOT_DIR/services/filebrowser/docker-compose.yml" down >/dev/null 2>&1 || true
docker run --rm \
-v "$fb_db_dir:/database" \
@@ -736,7 +749,7 @@ PY
rm -f "$fb_cfg_dir/users.backup.json"
rm -f "$fb_tmp_json"
compose_run "$ROOT_DIR/services/filebrowser/docker-compose.yml" up -d
compose_in_service_dir "$ROOT_DIR/services/filebrowser/docker-compose.yml" up -d
}
prepare_srs() {
@@ -745,7 +758,7 @@ prepare_srs() {
fi
log "Starting SRS"
mkdir -p "$ROOT_DIR/services/srs/data"
compose_run "$ROOT_DIR/services/srs/docker-compose.yml" up -d
compose_in_service_dir "$ROOT_DIR/services/srs/docker-compose.yml" up -d
}
run_hardware_probe() {
@@ -775,9 +788,9 @@ install_live_edge_proxy() {
if [ -f "$ROOT_DIR/config/system-stack.env" ] && grep -q '^HOMEPAGE_PORT=80' "$ROOT_DIR/config/system-stack.env"; then
sed -i 's/^HOMEPAGE_PORT=80$/HOMEPAGE_PORT=3080/' "$ROOT_DIR/config/system-stack.env" || true
fi
compose_run "$ROOT_DIR/services/homepage/docker-compose.yml" down >/dev/null 2>&1 || true
compose_in_service_dir "$ROOT_DIR/services/homepage/docker-compose.yml" down >/dev/null 2>&1 || true
render_homepage_services
compose_run "$ROOT_DIR/services/homepage/docker-compose.yml" up -d || true
compose_in_service_dir "$ROOT_DIR/services/homepage/docker-compose.yml" up -d || true
fi
fi

View File

@@ -88,6 +88,24 @@ compose_run() {
fi
}
# docker-compose v1 将 ./卷 解析为当前工作目录,必须在 compose 文件所在目录执行(与 Neko 一致)
compose_in_service_dir() {
local compose_file="$1"
shift
local d base
d="$(cd "$(dirname "$compose_file")" && pwd)"
base="$(basename "$compose_file")"
(
cd "$d" || exit 1
cmd="$(compose_bin)" || exit 1
if [ "$cmd" = "docker compose" ]; then
docker compose -f "$base" "$@"
else
docker-compose -f "$base" "$@"
fi
)
}
docker_container_status() {
local name="$1"
if ! have docker; then
@@ -227,12 +245,12 @@ service_srs_status() {
}
service_srs_start() {
compose_run "$SRS_COMPOSE" up -d
compose_in_service_dir "$SRS_COMPOSE" up -d
kv message "SRS started"
}
service_srs_stop() {
compose_run "$SRS_COMPOSE" down
compose_in_service_dir "$SRS_COMPOSE" down
kv message "SRS stopped"
}
@@ -310,12 +328,12 @@ service_filebrowser_status() {
}
service_filebrowser_start() {
compose_run "$FILEBROWSER_COMPOSE" up -d
compose_in_service_dir "$FILEBROWSER_COMPOSE" up -d
kv message "File Browser started"
}
service_filebrowser_stop() {
compose_run "$FILEBROWSER_COMPOSE" down
compose_in_service_dir "$FILEBROWSER_COMPOSE" down
kv message "File Browser stopped"
}
@@ -339,12 +357,12 @@ service_homepage_status() {
}
service_homepage_start() {
compose_run "$HOMEPAGE_COMPOSE" up -d
compose_in_service_dir "$HOMEPAGE_COMPOSE" up -d
kv message "Homepage started"
}
service_homepage_stop() {
compose_run "$HOMEPAGE_COMPOSE" down
compose_in_service_dir "$HOMEPAGE_COMPOSE" down
kv message "Homepage stopped"
}
@@ -451,7 +469,12 @@ service_chromium_status() {
}
service_chromium_start() {
nohup "$BROWSER_LAUNCHER" >/tmp/live-browser.log 2>&1 &
if [ -z "${DISPLAY:-}" ] && command -v xvfb-run >/dev/null 2>&1; then
nohup xvfb-run -a "$BROWSER_LAUNCHER" >/tmp/live-browser.log 2>&1 &
else
[ -z "${DISPLAY:-}" ] && export DISPLAY=:0
nohup "$BROWSER_LAUNCHER" >/tmp/live-browser.log 2>&1 &
fi
disown || true
kv message "Chromium launched"
}
@@ -503,8 +526,6 @@ service_neko_start() {
kv message "Neko compose missing"
return 0
fi
local neko_dir
neko_dir="$(cd "$(dirname "$NEKO_COMPOSE")" && pwd)"
local prof="${NEKO_PROFILE_HOST_DIR:-$ROOT_DIR/services/neko/data/chromium-profile}"
mkdir -p "$prof"
chmod 777 "$prof" 2>/dev/null || true
@@ -520,18 +541,7 @@ service_neko_start() {
export NEKO_WEBRTC_NAT1TO1="$(hostname -I 2>/dev/null | awk '{print $1}')"
fi
export NEKO_PLUGINS_ENABLED="${NEKO_PLUGINS_ENABLED:-true}"
cmd="$(compose_bin)" || {
kv message "docker compose unavailable"
return 0
}
(
cd "$neko_dir" || exit 1
if [ "$cmd" = "docker compose" ]; then
docker compose -f docker-compose.yml up -d
else
docker-compose -f docker-compose.yml up -d
fi
)
compose_in_service_dir "$NEKO_COMPOSE" up -d
kv message "Neko stack started"
}
@@ -540,20 +550,7 @@ service_neko_stop() {
kv message "Neko compose missing"
return 0
fi
local neko_dir
neko_dir="$(cd "$(dirname "$NEKO_COMPOSE")" && pwd)"
cmd="$(compose_bin)" || {
kv message "docker compose unavailable"
return 0
}
(
cd "$neko_dir" || exit 1
if [ "$cmd" = "docker compose" ]; then
docker compose -f docker-compose.yml down
else
docker-compose -f docker-compose.yml down
fi
)
compose_in_service_dir "$NEKO_COMPOSE" down
kv message "Neko stack stopped"
}