Some checks failed
CD Pipeline / deploy (push) Failing after 59s
- 建立 Gitea Actions CD pipeline (.gitea/workflows/cd.yaml) - 部署模式: rsync Python 檔案至 188 → docker restart (volume mount) - Dockerfile/requirements 變動時自動重建 Docker image - 部署通知: Telegram (開始/成功/失敗) - 健康檢查: https://mo.wooo.work/health (最多 5 次重試) - 同步最新 CLAUDE.md / ADR-008 / memory (2026-04-19) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
MOMO Pro System - 一鍵部署指南 v2.0
將 MOMO Pro System 完整部署到新的 VM 環境 支援 Docker Compose、Kubernetes、Harbor Registry、監控堆疊
目錄
快速開始
Docker Compose 部署(最簡單)
# 1. 進入部署目錄
cd deploy
# 2. 執行部署腳本
chmod +x deploy.sh
./deploy.sh deploy
# 3. 依照提示完成配置
Kubernetes 部署
# 部署到 K8s(含 Harbor 映像推送)
./deploy.sh --k8s deploy
# 或分步驟執行
./deploy.sh harbor-push # 建構並推送映像
./deploy.sh k8s-deploy # 部署到 K8s
完整部署流程(生產環境)
# 1. 環境檢查
./deploy.sh check
# 2. 部署應用 + 設定開機自動啟動
./deploy.sh --with-systemd deploy
# 3. 設定 SSL 憑證
./deploy.sh -d mo.wooo.work ssl
# 4. 部署監控堆疊
./deploy.sh monitoring-deploy
# 5. 健康檢查
./deploy.sh health
部署模式
模式 A: Docker Compose 本地部署
./deploy.sh deploy
# 或
./deploy.sh --local deploy
適用場景:
- 開發/測試環境
- 單機部署
模式 B: Kubernetes 部署
./deploy.sh --k8s deploy
適用場景:
- 生產環境
- 需要高可用性
- 需要自動擴展
模式 C: SSH 遠端部署
./deploy.sh --ssh \
-h 192.168.1.100 \
-u wooo \
-p /opt/momo-pro-system \
deploy
前置需求:
- SSH 金鑰已設定(無密碼登入)
- 遠端主機已安裝 Docker
模式 D: 匯出部署包
# 不含資料
./deploy.sh --export
# 含資料庫備份
./deploy.sh --export --with-data
輸出檔案:
momo-pro-system_20260129_143000.tar.gz
K8s 部署
K8s 命令
| 命令 | 說明 |
|---|---|
./deploy.sh k8s-deploy |
部署到 Kubernetes |
./deploy.sh k8s-status |
查看部署狀態 |
./deploy.sh k8s-logs |
查看應用日誌 |
./deploy.sh k8s-rollback |
回滾到上一版本 |
./deploy.sh k8s-cleanup |
清理所有 K8s 資源 |
K8s 選項
| 選項 | 說明 |
|---|---|
-n, --namespace |
K8s 命名空間(預設: momo) |
K8s 部署流程
# 1. 建構並推送映像
./deploy.sh harbor-push
# 2. 部署到 K8s
./deploy.sh -n momo k8s-deploy
# 3. 查看狀態
./deploy.sh k8s-status
# 4. 查看日誌
./deploy.sh k8s-logs
K8s 回滾
# 回滾 momo-app
./deploy.sh k8s-rollback
# 回滾特定 deployment
kubectl rollout undo deployment/momo-scheduler -n momo
Harbor 管理
Harbor 命令
| 命令 | 說明 |
|---|---|
./deploy.sh harbor-install |
安裝 Harbor Registry |
./deploy.sh harbor-push |
建構並推送映像 |
./deploy.sh harbor-scan |
執行容器安全掃描 |
./deploy.sh harbor-health |
檢查 Harbor 健康狀態 |
Harbor 選項
| 選項 | 說明 |
|---|---|
--registry |
Harbor URL(預設: harbor.wooo.work) |
--harbor-user |
Harbor 用戶名(預設: admin) |
--harbor-pass |
Harbor 密碼 |
使用 Harbor
# 登入 Harbor
docker login harbor.wooo.work -u admin
# 建構並推送映像
./deploy.sh harbor-push
# 安全掃描
./deploy.sh harbor-scan
監控堆疊
監控命令
| 命令 | 說明 |
|---|---|
./deploy.sh monitoring-deploy |
部署監控堆疊 |
./deploy.sh monitoring-status |
查看監控狀態 |
監控組件
| 組件 | 端口 | 用途 |
|---|---|---|
| Prometheus | 9090 | 指標收集 |
| Grafana | 3000 | 視覺化儀表板 |
| Alertmanager | 9093 | 告警管理 |
| Node Exporter | 9100 | 主機監控 |
| cAdvisor | 8080 | 容器監控 |
| Loki | 3100 | 日誌收集 |
部署監控
# Docker 環境
./deploy.sh monitoring-deploy
# K8s 環境(使用 Helm)
./deploy.sh --k8s monitoring-deploy
存取監控
| 服務 | URL | 帳號 |
|---|---|---|
| Grafana | http://localhost:3000 | admin / Wooo_Grafana_2026 |
| Prometheus | http://localhost:9090 | - |
Systemd 服務
Systemd 命令
| 命令 | 說明 |
|---|---|
./deploy.sh systemd-setup |
設定開機自動啟動 |
./deploy.sh systemd-status |
查看服務狀態 |
設定開機啟動
# 方法一:部署時設定
./deploy.sh --with-systemd deploy
# 方法二:單獨設定
./deploy.sh systemd-setup
服務管理
# 查看服務狀態
systemctl status momo-pro-system
# 重啟服務
sudo systemctl restart momo-pro-system
# 停止服務
sudo systemctl stop momo-pro-system
建立的 Systemd 服務
| 服務 | 說明 |
|---|---|
momo-pro-system.service |
主應用程式 |
harbor.service |
Harbor Registry |
gitlab.service |
GitLab CE |
n8n.service |
n8n 自動化 |
momo-monitoring.service |
監控堆疊 |
momo-health-check.timer |
健康監控定時器 |
環境需求
硬體需求
| 項目 | 最低需求 | 建議配置 |
|---|---|---|
| CPU | 4 核心 | 8 核心 |
| RAM | 8 GB | 16 GB |
| 硬碟 | 50 GB SSD | 100 GB SSD |
軟體需求
| 軟體 | 版本 | 說明 |
|---|---|---|
| Docker | 20.10+ | 容器運行環境 |
| Docker Compose | v2.0+ | 容器編排 |
| kubectl | 1.28+ | K8s 客戶端(K8s 模式) |
| Helm | 3.0+ | K8s 套件管理(監控用) |
| curl | - | HTTP 請求 |
端口需求
| 端口 | 服務 | 必要 |
|---|---|---|
| 80/443 | Nginx | ✓ |
| 5001 | Flask App | ✓(Docker 模式) |
| 5432 | PostgreSQL | ✓ |
| 3000 | Grafana | 選填 |
| 9090 | Prometheus | 選填 |
| 5678 | n8n | 選填 |
| 5050 | Harbor | 選填 |
配置說明
互動式配置
部署時會提示輸入以下配置:
資料庫配置
──────────────────────────────────
PostgreSQL 用戶名 [momo]:
PostgreSQL 密碼 [自動生成]:
應用程式配置
──────────────────────────────────
Flask Secret Key [自動生成]:
Ollama AI 配置
──────────────────────────────────
Ollama Host [http://192.168.0.188:11434]:
通知服務配置
──────────────────────────────────
Telegram Bot Token []:
Telegram Chat ID []:
使用預設配置
./deploy.sh -y deploy
使用自訂配置檔
# 複製模板
cp deploy/configs/.env.template .env
# 編輯配置
nano .env
# 使用自訂配置部署
./deploy.sh -e .env deploy
備份與還原
完整備份
./deploy.sh backup
備份內容:
- PostgreSQL 完整資料庫(SQL 格式)
- 所有資料表的 CSV 匯出
- 配置檔案(.env, docker-compose.yml)
- n8n 工作流程
輸出位置:
backups/momo_backup_20260129_143000.tar.gz
從備份還原
./deploy.sh -b backups/momo_backup_20260129.tar.gz restore
定時備份
# 每天凌晨 2 點備份
0 2 * * * cd /opt/momo-pro-system && ./deploy/deploy.sh -y backup
SSL 憑證
申請 Let's Encrypt 憑證
./deploy.sh -d momo.example.com ssl
前置需求:
- 域名已解析到此伺服器
- 端口 80 可被外部存取
手動續期
certbot renew --force-renewal
docker restart momo-nginx
命令參考
基本命令
| 命令 | 說明 |
|---|---|
deploy |
執行完整部署 |
backup |
備份現有環境 |
restore |
從備份還原 |
check |
環境檢查 |
health |
健康檢查 |
ssl |
設定 SSL 憑證 |
export |
匯出部署包 |
K8s 命令
| 命令 | 說明 |
|---|---|
k8s-deploy |
部署到 K8s |
k8s-status |
查看 K8s 狀態 |
k8s-logs |
查看 K8s 日誌 |
k8s-rollback |
回滾 K8s 部署 |
k8s-cleanup |
清理 K8s 資源 |
Harbor 命令
| 命令 | 說明 |
|---|---|
harbor-install |
安裝 Harbor |
harbor-push |
推送映像 |
harbor-scan |
安全掃描 |
harbor-health |
健康檢查 |
監控命令
| 命令 | 說明 |
|---|---|
monitoring-deploy |
部署監控 |
monitoring-status |
監控狀態 |
Systemd 命令
| 命令 | 說明 |
|---|---|
systemd-setup |
設定服務 |
systemd-status |
服務狀態 |
選項參考
| 選項 | 說明 |
|---|---|
--local |
Docker Compose 部署 |
--k8s |
Kubernetes 部署 |
--ssh |
SSH 遠端部署 |
--export |
匯出部署包 |
-h, --host |
SSH 目標主機 |
-u, --user |
SSH 用戶名 |
-p, --path |
遠端路徑 |
-n, --namespace |
K8s 命名空間 |
--registry |
Harbor URL |
-e, --env-file |
環境變數檔案 |
-d, --domain |
域名 |
-b, --backup |
備份檔案路徑 |
--no-monitoring |
不部署監控 |
--with-data |
包含資料 |
--with-systemd |
設定開機啟動 |
-y, --yes |
跳過確認 |
故障排除
Docker 連線失敗
sudo systemctl restart docker
K8s 部署失敗
# 查看 Pod 狀態
kubectl get pods -n momo
# 查看詳細事件
kubectl describe pod <pod-name> -n momo
# 查看日誌
kubectl logs deployment/momo-app -n momo
Harbor 登入失敗
# 確認 Harbor 運行中
docker ps | grep harbor
# 重啟 Harbor
cd /home/wooo/devops/harbor/harbor
docker compose restart
服務無法啟動
# 查看容器日誌
docker compose logs
# 查看 systemd 日誌
journalctl -u momo-pro-system -f
目錄結構
deploy/
├── deploy.sh # 主入口腳本 v2.0
├── README.md # 本文件
├── lib/
│ ├── common.sh # 通用函數
│ ├── check.sh # 環境檢查
│ ├── config.sh # 配置生成
│ ├── docker.sh # Docker 操作
│ ├── database.sh # 資料庫備份/還原
│ ├── ssl.sh # SSL 憑證
│ ├── health.sh # 健康檢查
│ ├── k8s.sh # K8s 部署(新增)
│ ├── harbor.sh # Harbor 管理(新增)
│ ├── monitoring.sh # 監控堆疊(新增)
│ └── systemd.sh # Systemd 服務(新增)
└── configs/
└── .env.template # 環境變數模板
更新記錄
-
2026-01-29: v2.0.0
- 新增 Kubernetes 部署支援
- 新增 Harbor Registry 整合
- 新增監控堆疊部署 (Prometheus/Grafana/Loki)
- 新增 Systemd 服務管理
- 新增容器安全掃描功能
- 增強健康監控和自動修復
-
2026-01-26: v1.0.0
- 初始版本
- 支援本地、SSH、匯出三種部署模式
- 完整資料庫備份/還原
- Let's Encrypt SSL 自動化