# MOMO Pro System - 快速部署指南 > 在全新主機上完成環境安裝 + 應用部署的完整流程 > 最後更新: 2026-02-06 --- ## 🚀 一鍵完整部署(推薦) ### 步驟 1: 複製專案到新主機 ```bash # 從本地複製到新主機 scp -r /path/to/momo-pro-system root@新主機IP:/opt/ # 或使用 Git clone ssh root@新主機IP git clone http://192.168.0.110:8929/root/momo-pro-system.git /opt/momo-pro-system ``` ### 步驟 2: 執行完整部署 ```bash ssh root@新主機IP cd /opt/momo-pro-system # 完整部署(環境 + 應用 + SSL) sudo ./deploy/scripts/full-deploy.sh --domain mo.example.com --ssl ``` **一個命令完成全部工作!** --- ## 📦 自動安裝的套件清單 | 分類 | 套件 | 說明 | |------|------|------| | **基礎工具** | curl, wget, git | 檔案下載與版本控制 | | | vim, htop, iotop | 編輯器與系統監控 | | | jq, rsync, unzip | JSON 處理、檔案同步 | | **Python** | python3, pip, venv | Python 執行環境 | | **容器** | Docker CE | 容器運行環境 | | | Docker Compose | 多容器編排 | | **Kubernetes** | K3s | 輕量級 Kubernetes | | | Helm | K8s 套件管理 | | **Web 伺服器** | Nginx | 反向代理 + 負載均衡 | | **SSL** | Certbot | Let's Encrypt 自動證書 | | **資料庫** | PostgreSQL Client | 資料庫客戶端工具 | | **安全** | Fail2Ban | 防暴力破解 | | | UFW | 防火牆 | | **監控** | Node Exporter | 主機指標收集 | | | Prometheus | 指標儲存與查詢 | | | Grafana | 監控儀表板 | --- ## 🔧 部署腳本說明 ### 1. 環境安裝腳本 (`setup-environment.sh`) 只安裝環境,不部署應用: ```bash sudo ./deploy/scripts/setup-environment.sh [選項] 選項: --user 部署用戶(預設: wooo) --domain 域名 --no-docker 不安裝 Docker --no-k3s 不安裝 K3s --no-nginx 不安裝 Nginx --no-firewall 不設定防火牆 ``` ### 2. 完整部署腳本 (`full-deploy.sh`) 環境安裝 + 應用部署: ```bash sudo ./deploy/scripts/full-deploy.sh [選項] 選項: --user 部署用戶(預設: wooo) --domain 域名 --ssl 設定 SSL 證書 --skip-env 跳過環境安裝 ``` ### 3. 快速部署腳本 (`build-and-deploy.sh`) 日常更新用(環境已準備好): ```bash ./scripts/deploy/build-and-deploy.sh ``` --- ## 📋 部署流程圖 ``` 執行 full-deploy.sh │ ▼ ╔═══════════════════════════════════════╗ ║ Phase 1: 環境安裝 ║ ║ • 檢測 OS (Ubuntu/Debian) ║ ║ • 安裝基礎套件 ║ ║ • 安裝 Docker + K3s ║ ║ • 安裝 Nginx + Certbot ║ ║ • 設定防火牆 + Fail2Ban ║ ╚═══════════════════════════════════════╝ │ ▼ ╔═══════════════════════════════════════╗ ║ Phase 2: K8s 配置 ║ ║ • 建立 momo namespace ║ ║ • 部署 Secrets/ConfigMap ║ ║ • 部署 PostgreSQL ║ ║ • 部署 momo-app + scheduler ║ ╚═══════════════════════════════════════╝ │ ▼ ╔═══════════════════════════════════════╗ ║ Phase 3: 映像建置 ║ ║ • docker build ║ ║ • k3s ctr images import ║ ║ • kubectl rollout restart ║ ╚═══════════════════════════════════════╝ │ ▼ ╔═══════════════════════════════════════╗ ║ Phase 4-5: Nginx + SSL ║ ║ • 配置反向代理 ║ ║ • Let's Encrypt 證書 ║ ╚═══════════════════════════════════════╝ │ ▼ ╔═══════════════════════════════════════╗ ║ Phase 6: 監控系統 ║ ║ • Prometheus + Grafana (Helm) ║ ╚═══════════════════════════════════════╝ │ ▼ ╔═══════════════════════════════════════╗ ║ Phase 7-8: 自動啟動 + 健康檢查 ║ ║ • systemd 服務設定 ║ ║ • Telegram 通知 ║ ╚═══════════════════════════════════════╝ ``` --- ## 💻 系統需求 | 項目 | 最低需求 | 建議配置 | |------|----------|----------| | **CPU** | 2 核心 | 4+ 核心 | | **RAM** | 4 GB | 8+ GB | | **硬碟** | 30 GB | 50+ GB SSD | | **作業系統** | Ubuntu 22.04 | Ubuntu 24.04 | | **網路** | 開放 80, 443 | 靜態 IP | --- ## 🔒 安全配置 ### 防火牆規則 (自動設定) | 端口 | 服務 | 存取範圍 | |------|------|---------| | 22 | SSH | 公開 | | 80 | HTTP | 公開 | | 443 | HTTPS | 公開 | | 6443 | K3s API | 僅內網 | ### Fail2Ban 規則 - SSH: 3 次失敗封鎖 1 小時 - Nginx: 5 次失敗封鎖 1 小時 --- ## 🔄 日常更新流程 環境已安裝後,日常更新只需: ```bash # 方法 1: 使用快速部署腳本 ./scripts/deploy/build-and-deploy.sh # 方法 2: 手動步驟 docker build -t momo-pro-system:local . docker save momo-pro-system:local | sudo k3s ctr images import - kubectl rollout restart deployment/momo-app deployment/momo-scheduler -n momo ``` --- ## ❓ 常見問題 ### Q: 部署中斷後如何繼續? ```bash # 跳過環境安裝,只部署應用 sudo ./deploy/scripts/full-deploy.sh --skip-env ``` ### Q: 如何只更新應用不重裝環境? ```bash ./scripts/deploy/build-and-deploy.sh ``` ### Q: 如何查看部署日誌? ```bash # K8s Pod 日誌 kubectl logs -f deployment/momo-app -n momo # 系統啟動日誌 journalctl -u momo-startup-complete.service ``` ### Q: SSL 證書申請失敗? ```bash # 手動申請 sudo certbot --nginx -d your-domain.com ``` --- ## 📞 聯絡資訊 - **Telegram 告警**: Bot `@wooowooowooobot` - **GitLab**: http://192.168.0.110:8929 - **正式網址**: https://mo.wooo.work