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

151 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```
### Acceptance After Install
On the target Linux node, run the built-in health checks:
```bash
sudo bash doctor.sh
sudo bash probe-live.sh
```
From a dev machine, you can also verify the remote node over SSH:
```bash
LIVE_DEPLOY_HOST=192.168.x.x python3 tools/verify_live_console.py
```
The control plane now exposes a structured acceptance report at:
```text
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-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.