# ADR-008:正式運行環境確認 — 188 Docker Compose(非 110 K3s) - **Status**: Accepted - **Date**: 2026-04-18 - **Decision Maker**: 統帥 - **Author**: Claude ## Context 2026-04-18 Claude 實地 SSH 盤點主機現況,發現先前多版 CLAUDE.md / ADR / 文件描述與真實運行環境嚴重不符: **文件宣稱**: - EwoooC(MOMO Pro)跑在 `wooo@192.168.0.110` K3s/K8s 叢集 - 專案路徑 `/home/wooo/momo_pro_system/` - 容器 port 5001 - 部署走 GitLab CI/CD → kubectl rollout restart **實地觀察**: - `192.168.0.110` 上完全沒有 momo/ewoooc/flask 容器在跑 - `/home/wooo/momo_pro_system/` 自 2026-02-15 起只剩 `docker/` + `venv/`,非 git repo - 110 承載的是: Harbor(完整堆疊)、Sentry self-hosted(30+ 容器)、SigNoz、Gitea、Langfuse、GitLab 域名反向代理(domain 存在但後端已撤)、VM Nginx、周邊 Exporter - **EwoooC 實際運行地**: `ollama@192.168.0.188:~/momo-pro/` - 部署方式: **純 Docker Compose**,無 K3s/K8s,檔案用 volume mount 直掛進 container ## Decision **認定事實並凍結現況描述**: | 項目 | 正式值 | |---|---| | 主要運行主機 | `ollama@192.168.0.188` | | 專案路徑 | `/home/ollama/momo-pro/` | | 部署工具 | Docker Compose(`docker-compose.yml` V12.0) | | 主要容器 | `momo-pro-system`、`momo-db`(pgvector/pg14)、`momo-scheduler`、`openclaw` | | Container Port | `127.0.0.1:5003:80`(gunicorn 4 workers on :80) | | 資料庫 | **pgvector/pgvector:pg14**(支援 AI 向量) | | Git 版控 | **非 git repo**,用 volume mount + scp 管理 | | SSH 進入路徑 | **必經 110 跳板**(ollama@188 只信任 110 的 SSH key) | | 輔助主機 110 | Harbor + Sentry + SigNoz + Gitea + Nginx 反代 + 周邊 Exporter | **部署更新流程(官方唯一路徑)**: 1. 本機修改 → `scp` 到 `ollama@192.168.0.188:~/momo-pro/`(透過 110 跳板) 2. Python 檔案(app.py/services/routes/templates/config.py)→ volume mount **直接生效**,只需 `docker restart momo-pro-system` 3. 若需新 Python 套件 → `docker compose build momo-app && docker compose up -d momo-app` 4. 資料庫 migration → 進入 `momo-db` 執行 SQL **Volume mount 清單(來自容器 inspect)**: ``` /home/ollama/momo-pro/app.py -> /app/app.py (ro) /home/ollama/momo-pro/scheduler.py -> /app/scheduler.py (ro) /home/ollama/momo-pro/config.py -> /app/config.py (ro) /home/ollama/momo-pro/auth.py -> /app/auth.py (ro) /home/ollama/momo-pro/config/ -> /app/config/ (rw) /home/ollama/momo-pro/database/ -> /app/database/ (ro) /home/ollama/momo-pro/templates/ -> /app/templates/ (ro) /home/ollama/momo-pro/services/ -> /app/services/ (ro) /home/ollama/momo-pro/routes/ -> /app/routes/ (ro) /home/ollama/momo-pro/data/ -> /app/data/ (rw) /home/ollama/momo-pro/logs/ -> /app/logs/ (rw) /home/ollama/momo-pro/backups/ -> /app/backups/ (rw) ``` **`docs/` 目錄未掛載** → ADR / CLAUDE.md 為人工查閱用,不影響 runtime。 ## Alternatives Considered | 方案 | 拒絕原因 | |---|---| | 假裝文件正確,讓實況符合文件(把 app 搬回 110 K3s) | 110 已超載(Load 14.5),且 188 有 GPU 鄰近優勢 | | 保留雙份描述(K3s + Docker) | 造成未來 Claude/統帥持續誤判,違反鐵律一 | | 只修 CLAUDE.md 不建 ADR | 違反 ADR 鐵律,未來無決策紀錄可查 | ## Consequences ### 須連動更新(已於本次 Session 處理) - `CLAUDE.md` — 所有 K3s/kubectl/PVC 指令改寫為 Docker Compose - `CLAUDE.md` — 專案路徑 `momo_pro_system` → `momo-pro`,主機 110 → 188 - `CLAUDE.md` — 承認 Harbor / Sentry / SigNoz / Gitea 在 110 仍運行 - `docs/memory/credentials_passbook.md` — 明確劃分 110 / 188 角色 - `docs/memory/README.md` — 索引指向本 ADR ### 須延後處理(記入 tech debt) - 110 上 VM Nginx `mo.wooo.work → 127.0.0.1:5001` 的**實際轉發機制未證實**(110 無明顯 5001 listener,188 的 5001 是 docker-registry,兩者不相通)。需要統帥於下次進入 110 時跑 `sudo ss -tlnp | grep :5001` 或 `sudo fuser 5001/tcp` 確認。 - 是否需把 EwoooC 專案轉為 git repo(目前 188 的 `/home/ollama/momo-pro/` 不是 git 管理,升級有版本追溯風險) - 110 超載問題(Load 14.5,3 人登入,遠高於建議值)→ 拆 Sentry / SigNoz / Harbor 的可行性 ### 廢止(明確不再做) - ❌ `kubectl rollout restart` 類指令 - ❌ `git push gitlab main` 類部署(GitLab 已撤) - ❌ K3s PVC / StatefulSet 配置 - ❌ `momo_pro_system` 路徑的一切引用(改為 `momo-pro`) ## Related ADRs - ADR-006 — 專案正名 EwoooC(延伸:Scope 更明確為 Docker-on-188) - ADR-007 — AI 學習雙寫(pgvector 在 188 的 `momo-db` 實現) ## Verification (2026-04-18 SSH 快照) ``` HOST 188 (ollama@192.168.0.188) Load avg: 5.58 Docker: momo-pro-system, momo-db (pgvector/pg14), momo-scheduler, openclaw, n8n, ollama, open-webui, ... Path: /home/ollama/momo-pro/ docker-compose.yml: V12.0 HOST 110 (wooo@192.168.0.110) Load avg: 14.5 (超載) Docker: Harbor x11, Sentry x30+, SigNoz, Gitea, Langfuse, ... NO momo/ewoooc containers /home/wooo/momo_pro_system/ 只剩 docker/ + venv/ ```