# StkWebScreen 橋接 ─ 搬移到新電腦 程序

> 把「網頁版遠端桌面橋接」整套搬到另一台電腦。對應可攜包:`StkWebScreen_portable.zip`。

---

## 0. 架構(先懂)

橋接(`Stk_WebScreen.exe`)是「網頁 ↔ Relay ↔ Agent」的中介,本身不存資料。

| 元件 | 角色 |
|---|---|
| Stk_WebScreen.exe(橋接) | 本機監聽 :8080 提供網頁;同時當 commander 連 Relay。**要搬的就是它**。 |
| Relay(asiaware.tplinkdns.com:9530) | 訊號轉接中心(現場伺服器 s001,9530 已對外轉發)。 |
| Agent(各工作站) | 推桌面、收操作。搬橋接不動它。 |
| 對外入口 | route A=`http://asiaware.tplinkdns.com:9530/`;route C=`https://remote.asiaware-stk.com` |

**三個要處理的面向**:① 檔案(可攜包) ② 路線 A(Relay 要知道新橋接 IP) ③ 路線 C(tunnel 憑證跟著走)。

**網路前提**:route C 主動外連→新橋接放哪都行;route A 由 Relay 區網轉發→**新橋接需與 Relay 同區網**。

---

## 1. 取得可攜包

擇一:
- **STK_UPLOADER**:上傳後在 FTP `files/SOCKET/webscreen/StkWebScreen_portable.zip` 下載。
- **區網/隨身碟**:複製 `E:\ConvertFW\SOCKET\StkWebScreen_portable.zip`。

解壓到固定位置(建議 `C:\StkWebScreen`),**整包**一起,勿只拷部分。

---

## 2. 逐步程序

### 步驟 0 ─ 舊電腦先停(重要)
同一條 tunnel 不可兩台同時跑。
1. 工作管理員結束 `Stk_WebScreen.exe` 與 `cloudflared.exe`。
2. 移除舊機開機自啟:`Win+R` → `shell:startup` → 刪 auto_start 捷徑。
3. (若裝過服務)管理員執行 `cloudflared.exe service uninstall`。

### 步驟 1 ─ 解壓可攜包
解壓到 `C:\StkWebScreen`。確認憑證 `b53c50a3-...json`、`cf_config.yml`、`ffmpeg7.exe`、`cloudflared.exe` 都在。

### 步驟 2 ─ 查新機區網 IP
命令提示字元輸入 `ipconfig`,記下「IPv4 位址」(例 192.168.0.50)。

### 步驟 3 ─ 開放防火牆 8080
對 `allow_8080.bat` 按右鍵 →「以系統管理員身分執行」。

### 步驟 4 ─ 路線 A:設定 Relay 的 WEB_BRIDGE
- WEB_BRIDGE 由 Relay 從**自己資料夾的 relay_agent.ini** 讀,且**只在啟動時讀一次**。檔案:
  - `\s001\stk\Socket\Relay\relay_agent.ini`
  - (= 該機 `C:\Stk\Socket\Relay\relay_agent.ini`)
- ★這個檔**原本沒有 WEB_BRIDGE 這一行**,程式預設 `127.0.0.1:8080`(橋接原本與 Relay 同一台)。
- ★新橋接在**不同機器**時,在 `[Relay]` 區段**新增一行**:
  ```
  WEB_BRIDGE = 192.168.0.50:8080
  ```
- ★改完**必須重啟 Relay**(Relay 機以管理員跑 `update_relay.bat`,或重啟服務/行程)。
- ★橋接與 Relay 同機 → 不用加;不在同區網 → route A 不可用,改用 route C。

### 步驟 5 ─ 路線 C:Cloudflare tunnel(免重登入)
憑證已在資料夾、DNS 早指向此 tunnel,直接 run 就通。要換網域/重建才需在新機跑 `setup_named_tunnel.bat`。

### 步驟 6 ─ 首次測試
雙擊 `auto_start.bat`,等 5~10 秒:
- 本機 `http://localhost:8080` 看到登入頁
- route C `https://remote.asiaware-stk.com` 可登入操控
- route A `http://asiaware.tplinkdns.com:9530/` 看到登入頁

### 步驟 7 ─ 開機自啟
對 `auto_start.bat` 建捷徑 → 丟到 `shell:startup`。

### 步驟 8 ─ 驗收
| 項 | 預期 |
|---|---|
| localhost:8080 | 登入頁 |
| route C https | 可登入、影像/操控正常 |
| route A :9530 | 登入頁 |
| 客戶登入 | `stkview+前四碼`,標題顯示公司名、列出工作站 |
| HLS 純看頁 | iPhone 有影像(ffmpeg7.exe 正常) |
| 開機自啟 | 重開機後自動啟動 |

---

## 3. 常見問題

| 症狀 | 解法 |
|---|---|
| 網頁全打不開 | 橋接/tunnel 沒跑;手動跑 auto_start.bat。 |
| 某裝置開不了、別台可以 | 該裝置 DNS 未更新;先用 route A,或該裝置 WiFi 關開、改 DNS 1.1.1.1。 |
| route C 通、route A 不通 | WEB_BRIDGE 沒設新 IP、或沒重啟 Relay、或新機不在同區網、或防火牆 8080 沒開。 |
| 全螢幕 ESC 沒進 STK | 需 Chrome/Edge + https(route C);http 用畫面「ESC」鈕。 |
| HLS 無影像 | ffmpeg7.exe 不在或 ini 路徑錯。 |
| 一直重連 | tunnel 同時兩台跑;確認舊機已停。 |

---

## 4. 回滾
1. 新機結束 `Stk_WebScreen.exe`、`cloudflared.exe`。
2. Relay `relay_agent.ini` 的 WEB_BRIDGE 改回舊機 IP(或移除該行)→ 重啟 Relay。
3. 舊機重跑 `auto_start.bat`(或還原啟動捷徑)。

---

## 5. 若整個 Server(含 Relay)一起搬到這台 ★重要

Relay 的「自動更新 / 自動切換」靠兩個 **Windows 排程工作**,跑在 Relay 那台機器上。
**排程工作不會跟著檔案搬走**——搬 server 到新機,必須在新機**重新安裝**,否則自動機制全失效(本次 route A 失敗就是 relay 停在手動啟動的舊版、watchdog 沒切到新版)。

| 排程工作 | 作用 / 重裝 |
|---|---|
| `watchdog_relay.bat` | 每 5 分(SYSTEM)挑 A/B 槽最新 exe,沒在跑就切換。重裝:管理員跑 `install_relay.bat` 重新註冊。 |
| `stk_updater` | 從 FTP 拉新檔放進閒置 A/B 槽。確認新機也已安裝/排程。 |

- 驗證:`schtasks /query /fo LIST | findstr /i relay`;之後 `update_relay.log` 會持續長紀錄。
- ★watchdog 開頭有 `net session` 檢查,**非 SYSTEM/管理員身分跑會靜默結束**。
- ★Relay 與橋接同在這台時,`relay_agent.ini` 的 `WEB_BRIDGE = 127.0.0.1:8080`。

---

## 6. 搬機血淚教訓(2026-06-08 實戰)★必看

| 坑 / 症狀 | 原因與解法 |
|---|---|
| WEB_BRIDGE 用 LAN IP → 全體串流 0-3fps | Relay 與橋接同機時,WEB_BRIDGE 設自己 LAN IP 會走防火牆/網路堆疊,route-A 轉發 timeout 累積拖垮 Relay → 串流被壓死。★同機一律 `WEB_BRIDGE = 127.0.0.1:8080`,改完重啟 Relay。 |
| 複製到 \server 沒生效、exe 時間沒變 | "\server" 在不同機器可能解析到不同主機,複製到的不是橋接真正執行的資料夾。★工作管理員→Stk_WebScreen.exe→「開啟檔案位置」確認真正路徑,覆蓋到那裡(先停橋接)。 |
| 多觀看者→越來越卡→全 0(死亡螺旋) | fps 低→凍結 watchdog 重連→每次開新 viewer 舊的清不掉→viewers 累積到 24-36→橋接塞爆。★修正版:每站 viewer 上限 8、逾時 30s→10s 快清、凍結門檻 9s→15s。 |
| 搬機後 watchdog/自動更新失效 | 排程工作不會跟檔案搬走。★新機管理員跑 `install_relay.bat` 重裝(見第 5 節)。 |
| route A reset 但 localhost:8080 正常 | Relay 是舊版(無 route A)或 WEB_BRIDGE 指到死掉的舊橋接。★換含 route A 的新版 + WEB_BRIDGE 指對 + 重啟。 |
| console 一直印 ConnectionResetError(10054) | 觀看端離線正常現象,橋接有 except 接住,可忽略。 |

**診斷工具**
- 操控頁工具列即時數據:▶實際fps(瀏覽器 totalVideoFrames 算才準)、⬇掉幀、⏱落後live延遲。fps 全體一致偏低=共用瓶頸;單一裝置低=該裝置連線。
- Relay log(relay 資料夾elay_server.log):viewers= 有沒有異常累積、pusher BEGIN/END、WEB proxy connect fail(=WEB_BRIDGE 連不到)。
