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

View File

@@ -0,0 +1,120 @@
# Linux Install Profiles
## Quick Start
Use one of these entrypoints from the repo root on Debian, Ubuntu, or Armbian:
```bash
sudo bash install-hub.sh
sudo bash install-business.sh
sudo bash install-all.sh
```
### After `git pull` (no full reinstall)
刷新依赖、重建前端、重启 `live-console``live-edge`**不要**为此再跑 `install-all.sh`,除非你要重做整机栈):
```bash
cd /home/live/douyinyoutube # 或你的克隆路径
sudo bash upgrade-live.sh
```
若仓库只更新了 **`live-console.service` 模板**(例如 `StartLimitIntervalSec`),可单独刷新单元:
```bash
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.local` — **refused 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` 里的 `youtube``tiktok`,执行 `pm2 start ecosystem.config.cjs && pm2 save`
- **多频道 Pro**:每路直播需要**独立的** `config/youtube.ini``config/URL_config.ini`(或整份独立工作目录)。为第二路及以后各复制一份目录(或符号链接脚本外的配置),在 PM2 里为每个 app 设置不同的 `cwd``name` 与 Web 控制台 Pro 线路建议名一致(如 `youtube2__<channelId>`)。
- **硬件编码**`sudo python3 scripts/hardware_probe.py --write` 会写入 `config/hardware.env``hardware-profile.json`;推流侧可选 `LIVE_VIDEO_ENCODER`RKMPP / V4L2M2M / VA-API / QSV 等,见 `config/hardware.env.example`。NVIDIA 一般由 `douyin_youtube_ffplay.py` 自动走 NVENC。
- **音频链**:与 GitLab 分支 `ffmpegAudioRMFoode``douyin_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.