Arena Watcher Persistent Setup ============================== 新 Muse 一鍵起返晒:bash ~/workspace/arena-system/persistent/setup.sh 檔案: - setup.sh:主 setup(檢查套件→venv→起 services) - start-all.sh:起 Xvnc + websockify + tunnel(nohup,唔靠 systemd) - scripts/chrome-policy-unlock.sh:解鎖三個 policy - scripts/chrome-policy-lock.sh:鎖返(用戶確認後) - requirements.txt:Python 依賴(全部 == 鎖死) - VERSIONS.txt:版本鎖定 注意: - 唔用 systemctl --user(呢部機用唔到),用 nohup background - 全部喺 ~/workspace/,reboot 唔會唔見 - 重啟後跑 setup.sh 即還原(除咗要人手登入) 【RAM 監察鐵律】(2026-10-05 19:10 HKT) Headed browser 長跑越嚟越食 RAM(死症)。必須: 1. 定時 free -h 睇 RAM。 2. 可用 RAM 跌到危險線前,主動重啟 browser。 3. 3 個 headed 同開係上限。 4. 重啟後確認 watcher 返嚟、登入正常。 【VNC 長開鐵律】(2026-10-05 19:35 HKT owner 下令) 每個 Muse 嘅 VNC 必須長開,畀 owner 隨時入去睇。冧機/斷線要自己起返。 - 龍壹:5902/websockify-a234→18082(Xvfb :99,1400x2700) - 龍捌:5903/websockify-a567→18091 - 龍義:5904/websockify-a8910→18092 架構:x11vnc(display)→ websockify(6080)→ reverse tunnel(ssh -R)→ server 對應 port → nginx noVNC。 長開做法: 1. x11vnc:nohup x11vnc -display :99 -rfbport 5900 -shared -forever -nopw 2. websockify:nohup websockify 6080 127.0.0.1:5900 3. tunnel:vnc-tunnel-keep.sh loop 每 10 秒檢查,斷咗自動重開 4. 三個全部用 keep script 睇住,死咗自動起返 5. 開機自起:加喺 crontab @reboot 或 systemd(睇機而定) Browser 尺寸標準:viewport 必須 1400x900(v0.92 強制)。 X display 1400x2700,三個 browser 上中下(y=0/900/1800)。 【Browser 排位鐵律】(2026-10-05 19:44 HKT owner 下令,必須) 三個 headed browser 必須上中下排好,唔可以疊埋一齊: - 第一席:y=0 - 第二席:y=900 - 第三席:y=1800 全部 x=0,闊 1400(viewport 1400x900)。 排位指令: WIDS=$(DISPLAY=:99 xdotool search --onlyvisible --name "Arena") i=0; for w in $WIDS; do DISPLAY=:99 xdotool windowmove $w 0 $((i*900)); i=$((i+1)); done watcher.py 起 browser 嗰陣要自動排位,唔係等人手排。 每次重啟 browser 後都要驗證排位。 【尺寸硬性規定】(2026-10-05 19:49 HKT owner 下令) WATCHER 運行時如果唔係 1408x900(viewport 1400x900),一律唔准運行。 watcher.py 每個 cycle 會檢查,唔啱就較,較唔返就跳過成個 cycle。 呢個係硬規則,唔係建議。