Files
ewoooc/deploy
OoO d6d8777e41
All checks were successful
CD Pipeline / deploy (push) Successful in 1m12s
V10.601 收斂 Gemini 與密鑰治理
2026-06-06 14:52:46 +08:00
..

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

前置需求:

  1. 域名已解析到此伺服器
  2. 端口 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 自動化