Files
gitlab-instance-0a899031_sh/d2ypp2/docs/install-profiles.md
root 03dc47a569 s
2026-05-17 05:22:53 +00:00

6.7 KiB
Raw Blame History

Linux Install Profiles

Quick Start

Use one of these entrypoints from the repo root on Debian, Ubuntu, or Armbian:

sudo bash install-hub.sh
sudo bash install-business.sh
sudo bash install-all.sh

Acceptance After Install

On the target Linux node, run the built-in health checks:

sudo bash doctor.sh
sudo bash probe-live.sh

From a dev machine, you can also verify the remote node over SSH:

LIVE_DEPLOY_HOST=192.168.x.x python3 tools/verify_live_console.py

The control plane now exposes a structured acceptance report at:

http://127.0.0.1:8001/deploy/check

It focuses on the real delivery path for this project:

  • 127.0.0.1:8001/health
  • 127.0.0.1:80/health
  • http://live.local/health
  • http://live.local:8001/health
  • exported web-console/out/index.html
  • config/system-stack.env

After git pull (no full reinstall)

刷新依赖、重建前端、重启 live-consolelive-edge不要为此再跑 install-all.sh,除非你要重做整机栈):

cd /home/live/douyinyoutube   # 或你的克隆路径
sudo bash upgrade-live.sh

若仓库只更新了 live-console.service 模板(例如 StartLimitIntervalSec),可单独刷新单元:

sudo bash refresh-live-unit.sh

What Each Script Does

install-hub.sh

Use this when the Linux device should become the reusable super hub first.

  • Creates and refreshes the live account
  • Installs the shared control plane runtime
  • Enables live.local
  • Creates the default Wi-Fi profile live / 12345678 when wlan0 exists
  • Installs ShellCrash, WebTTY, Cockpit, File Browser, Homepage, and Netdata
  • Installs the Android web panel based on web-scrcpy
  • Builds the web console and enables live-console.service

install-business.sh

Use this when the device should only run the Douyin or YouTube business stack.

  • Creates and refreshes the live account
  • Installs the shared control plane runtime
  • Installs ffmpeg, mpv, ADB, Chromium
  • Installs the Android web panel based on web-scrcpy
  • Starts SRS
  • Builds the web console and enables live-console.service
  • Installs Caddy live-edge.service so http://live.local (port 80) reverse-proxies to the control plane (same as hub)
  • Generates the hardware profile for adaptive ARM or X86 defaults

http://live.local returns 502

502 means the edge proxy reached nothing usable on the upstream port (default 127.0.0.1:8001).

  1. Check the control plane: sudo systemctl status live-console.service and journalctl -u live-console.service -n 80 --no-pager.
  2. Check the edge: sudo systemctl status live-edge.service and confirm config/system-stack.env PORT matches what Caddy uses (regenerate with sudo bash scripts/linux/reinstall_live_edge.sh from the repo root).
  3. Quick probe: curl -sf http://127.0.0.1:8001/health — if this fails, fix live-console first (Python venv, web-console/out, or scripts/launch.py errors in the journal).

Older business installs (before install_live_edge_proxy was included) never installed Caddy; if you still see 502 on port 80, you likely had a prior hub/edge install—run sudo bash scripts/linux/reinstall_live_edge.sh after pulling the latest repo.

Browser: live.localrefused to connect (not 502)

That means the TCP connection was rejected or nothing listens on the address you used (often port 80 on the boxs IP).

  1. On the device, run: sudo bash probe-live.sh (or scripts/linux/probe_live_access.sh) and read the :80 / :8001 lines.
  2. If :8001 works but :80 fails: live-edge (Caddy) is down — sudo systemctl restart live-edge.service or sudo bash scripts/linux/reinstall_live_edge.sh.
  3. If both fail: live-console is down — sudo systemctl restart live-console.service and journalctl -u live-console.service -n 80.
  4. From a laptop/phone, open http://<device-LAN-IP>:8001/ first (same WiFi). If that works but http://live.local does not, the problem is mDNS (Windows often needs Bonjour) or youre not on the same LAN — use the IP bookmark.
  5. Firewall (nftables/ufw) blocking 80/8001 from WiFi will also show as “refused” from other hosts while loopback still works.

PM2单频道与多频道 ProLinux ARM / x86_64

  • 单频道:在项目根启用一个业务进程即可,例如取消注释 ecosystem.config.cjs 里的 youtubetiktok,执行 pm2 start ecosystem.config.cjs && pm2 save
  • 多频道 Pro:每路直播需要独立的 config/youtube.iniconfig/URL_config.ini(或整份独立工作目录)。为第二路及以后各复制一份目录(或符号链接脚本外的配置),在 PM2 里为每个 app 设置不同的 cwdname 与 Web 控制台 Pro 线路建议名一致(如 youtube2__<channelId>)。
  • 硬件编码sudo python3 scripts/hardware_probe.py --write 会写入 config/hardware.envhardware-profile.json;推流侧可选 LIVE_VIDEO_ENCODERRKMPP / V4L2M2M / VA-API / QSV 等,见 config/hardware.env.example。NVIDIA 一般由 douyin_youtube_ffplay.py 自动走 NVENC。
  • 音频链:与 GitLab 分支 ffmpegAudioRMFoodedouyin_youtube_ffplay.py 的 FFmpeg 处理思路一致(fast_audio、arnndn、EQ 等);当前主线在 Linux 上还包含板载编码探测与推流稳定性增强,以前端无需对齐 Electron 为准。

install-all.sh

Use this when the node should be both the super hub and the livestream business node.

  • Runs install-hub.sh
  • Runs install-business.sh
  • Reuses shared modules instead of replacing them

Shared Config

All install profiles read the same shared file:

  • config/system-stack.env

If the file does not exist, the installer copies:

  • config/system-stack.env.example

This keeps host identity, ports, Wi-Fi, ShellCrash path, and module toggles centralized.

Default Access URLs

With the default hostname and ports, a fresh hub exposes:

  • http://live.local:8001 main control plane
  • http://live.local:8001/shellcrash ShellCrash editor route
  • http://live.local:8001/android Android device center route
  • http://live.local:7681 WebTTY
  • http://live.local:8082 File Browser, default login live / 12345678
  • http://live.local:19999 Netdata

The ShellCrash and Android pages are separate routes on purpose, so they can be bookmarked directly instead of sharing the same tabbed root URL.

Separation Rules

  • The hub profile must keep working without SRS.
  • The business profile must keep working without Cockpit, Homepage, File Browser, or Netdata.
  • The control plane should show degraded modules as unavailable instead of crashing.
  • Every service must be removable by systemd or compose boundaries.