commit 40945cf625294f6c942879eda4461a8ed5047186 Author: Timmy Date: Wed Apr 15 16:02:48 2026 +0800 docs: 初始化 PVECluster (192.168.88.0/24) 文件庫 仿照 timmy/42_38 結構建立 7 份文件,涵蓋 3 節點 PVE 8.4.16 叢集 (pve-000/.73、pve-001/.249、pve-002/.247)的架構、API、儲存、 備份與服務分類。 Co-Authored-By: Claude Opus 4.6 (1M context) diff --git a/API.md b/API.md new file mode 100644 index 0000000..72032e6 --- /dev/null +++ b/API.md @@ -0,0 +1,229 @@ +# Proxmox VE API 參考手冊 + +> 適用版本:PVE 8.4.16 | 基底 URL:`https://192.168.88.247:8006/api2/json/` + +## 認證 + +### API Token(推薦) + +```bash +# 在 Header 中帶入 Token +curl -sk https://192.168.88.247:8006/api2/json/<端點> \ + -H "Authorization: PVEAPIToken=root@pam!claude=17e96169-a32f-4e2d-951e-859c77770306" +``` + +Token 格式:`PVEAPIToken=<使用者>!=` + +### 現有 Token + +| Token ID | privsep | 權限 | 狀態 | +|---|---|---|---| +| `root@pam!claude` | 0(繼承 root) | 完整權限 | 可用(本文件預設) | +| `root@pam!monitor` | 0(繼承 root) | 完整權限 | secret 已遺失 | + +### Ticket 認證(帳密登入,2 小時過期) + +```bash +# 步驟 1:取得 ticket + CSRF token +RESPONSE=$(curl -sk https://192.168.88.247:8006/api2/json/access/ticket \ + -d "username=root@pam&password=25915525") + +TICKET=$(echo $RESPONSE | python3 -c "import sys,json; print(json.load(sys.stdin)['data']['ticket'])") +CSRF=$(echo $RESPONSE | python3 -c "import sys,json; print(json.load(sys.stdin)['data']['CSRFPreventionToken'])") + +# 步驟 2:GET 請求 +curl -sk https://192.168.88.247:8006/api2/json/<端點> \ + -b "PVEAuthCookie=$TICKET" + +# 步驟 3:POST/PUT/DELETE 請求(需額外帶 CSRF) +curl -sk -X POST https://192.168.88.247:8006/api2/json/<端點> \ + -b "PVEAuthCookie=$TICKET" \ + -H "CSRFPreventionToken: $CSRF" \ + -d "參數=值" +``` + +## Token 管理 + +```bash +# 建立 token(SSH 到 PVE 執行,secret 只顯示一次) +pvesh create /access/users/root@pam/token/<名稱> --privsep 0 --expire 0 + +# 列出 token +pvesh get /access/users/root@pam/token --output-format json + +# 刪除 token +pvesh delete /access/users/root@pam/token/<名稱> + +# 透過 API 建立 +curl -sk -X POST https://192.168.88.247:8006/api2/json/access/users/root@pam/token/<名稱> \ + -H "Authorization: PVEAPIToken=root@pam!claude=17e96169-a32f-4e2d-951e-859c77770306" \ + -d "privsep=0&expire=0" +``` + +## 端點參考 + +以下所有端點前綴為 `https://192.168.88.247:8006/api2/json`。 + +### 叢集 + +| 方法 | 端點 | 說明 | +|---|---|---| +| GET | `/version` | API 版本 | +| GET | `/cluster/status` | 叢集狀態與 quorum | +| GET | `/cluster/resources` | 所有資源總覽 | +| GET | `/cluster/resources?type=vm` | 僅 VM/容器 | +| GET | `/cluster/resources?type=storage` | 僅儲存 | +| GET | `/cluster/resources?type=node` | 僅節點 | + +### 節點 + +| 方法 | 端點 | 說明 | +|---|---|---| +| GET | `/nodes` | 節點清單 | +| GET | `/nodes/{node}/status` | 節點詳細狀態 | +| GET | `/nodes/{node}/network` | 網路介面設定 | +| GET | `/nodes/{node}/storage` | 儲存清單 | +| GET | `/nodes/{node}/tasks` | 最近任務 | +| GET | `/nodes/{node}/tasks/{upid}/status` | 任務狀態 | + +> `{node}` 可用值:`pve-000`、`pve-001`、`pve-002` + +### QEMU 虛擬機 + +| 方法 | 端點 | 說明 | +|---|---|---| +| GET | `/nodes/{node}/qemu` | 列出該節點所有 VM | +| GET | `/nodes/{node}/qemu/{vmid}/status/current` | VM 當前狀態 | +| GET | `/nodes/{node}/qemu/{vmid}/config` | VM 設定 | +| PUT | `/nodes/{node}/qemu/{vmid}/config` | 修改 VM 設定 | +| POST | `/nodes/{node}/qemu/{vmid}/status/start` | 啟動 VM | +| POST | `/nodes/{node}/qemu/{vmid}/status/stop` | 強制關閉 VM | +| POST | `/nodes/{node}/qemu/{vmid}/status/shutdown` | 優雅關機 | +| POST | `/nodes/{node}/qemu/{vmid}/status/reboot` | 重啟 VM | +| POST | `/nodes/{node}/qemu/{vmid}/status/reset` | 硬重置 VM | +| POST | `/nodes/{node}/qemu/{vmid}/clone` | 複製 VM | +| POST | `/nodes/{node}/qemu/{vmid}/snapshot` | 建立快照 | +| GET | `/nodes/{node}/qemu/{vmid}/snapshot` | 列出快照 | +| DELETE | `/nodes/{node}/qemu/{vmid}` | 刪除 VM | + +### LXC 容器 + +| 方法 | 端點 | 說明 | +|---|---|---| +| GET | `/nodes/{node}/lxc` | 列出該節點所有容器 | +| GET | `/nodes/{node}/lxc/{vmid}/status/current` | 容器當前狀態 | +| GET | `/nodes/{node}/lxc/{vmid}/config` | 容器設定 | +| PUT | `/nodes/{node}/lxc/{vmid}/config` | 修改容器設定 | +| POST | `/nodes/{node}/lxc/{vmid}/status/start` | 啟動容器 | +| POST | `/nodes/{node}/lxc/{vmid}/status/stop` | 停止容器 | +| POST | `/nodes/{node}/lxc/{vmid}/status/shutdown` | 優雅關閉 | +| POST | `/nodes/{node}/lxc/{vmid}/status/reboot` | 重啟容器 | +| POST | `/nodes/{node}/lxc/{vmid}/clone` | 複製容器 | +| POST | `/nodes/{node}/lxc/{vmid}/snapshot` | 建立快照 | +| GET | `/nodes/{node}/lxc/{vmid}/snapshot` | 列出快照 | +| DELETE | `/nodes/{node}/lxc/{vmid}` | 刪除容器 | + +### 儲存 + +| 方法 | 端點 | 說明 | +|---|---|---| +| GET | `/nodes/{node}/storage` | 列出儲存 | +| GET | `/nodes/{node}/storage/{storage}/status` | 儲存狀態 | +| GET | `/nodes/{node}/storage/{storage}/content` | 儲存內容(ISO/備份/磁碟) | +| POST | `/nodes/{node}/storage/{storage}/upload` | 上傳 ISO/模板 | +| DELETE | `/nodes/{node}/storage/{storage}/content/{volume}` | 刪除內容 | + +> `{storage}` 可用值:`local`、`local-lvm`、`syno-iscsi`、`pve-iscsi-3t`、`backup1` + +### 備份 + +| 方法 | 端點 | 說明 | +|---|---|---| +| GET | `/cluster/backup` | 列出備份排程 | +| POST | `/cluster/backup` | 建立備份排程 | +| GET | `/cluster/backup/{id}` | 取得排程詳情 | +| PUT | `/cluster/backup/{id}` | 修改排程 | +| DELETE | `/cluster/backup/{id}` | 刪除排程 | +| POST | `/nodes/{node}/vzdump` | 立即執行備份 | + +### 使用者與權限 + +| 方法 | 端點 | 說明 | +|---|---|---| +| GET | `/access/users` | 列出使用者 | +| POST | `/access/users` | 建立使用者 | +| GET | `/access/roles` | 列出角色 | +| GET | `/access/acl` | 列出 ACL | +| PUT | `/access/acl` | 修改 ACL | + +### 防火牆 + +| 方法 | 端點 | 說明 | +|---|---|---| +| GET | `/nodes/{node}/firewall/rules` | 節點防火牆規則 | +| GET | `/nodes/{node}/qemu/{vmid}/firewall/rules` | VM 防火牆規則 | +| GET | `/nodes/{node}/lxc/{vmid}/firewall/rules` | CT 防火牆規則 | +| GET | `/cluster/firewall/groups` | 防火牆安全群組 | + +## 回傳格式 + +所有回傳皆為 JSON,結構統一: + +```json +{ + "data": <回傳資料(物件或陣列)> +} +``` + +錯誤時: + +```json +{ + "errors": { "<欄位>": "<錯誤訊息>" }, + "data": null +} +``` + +HTTP 狀態碼: +- `200` 成功 +- `400` 參數錯誤 +- `401` 未認證 +- `403` 無權限 +- `500` 伺服器錯誤 + +## 非同步任務 + +修改類操作(啟動、關閉、備份、複製等)會回傳 UPID(任務 ID),可用來追蹤進度: + +```bash +# 回傳範例 +{"data": "UPID:pve-002:000F4D1C:01234567:12345678:qmstart:115:root@pam!claude:"} + +# 查詢任務狀態 +curl -sk https://192.168.88.247:8006/api2/json/nodes/pve-002/tasks//status \ + -H "Authorization: PVEAPIToken=root@pam!claude=17e96169-a32f-4e2d-951e-859c77770306" + +# 查詢任務日誌 +curl -sk https://192.168.88.247:8006/api2/json/nodes/pve-002/tasks//log \ + -H "Authorization: PVEAPIToken=root@pam!claude=17e96169-a32f-4e2d-951e-859c77770306" +``` + +## pvesh CLI 對照 + +API 端點可直接用 `pvesh` 在 PVE 節點上執行,無需認證: + +```bash +# GET /cluster/resources +ssh root@192.168.88.247 "pvesh get /cluster/resources --output-format json" + +# POST /nodes/pve-000/lxc/104/status/start +ssh root@192.168.88.247 "pvesh create /nodes/pve-000/lxc/104/status/start" + +# PUT /nodes/pve-000/lxc/104/config +ssh root@192.168.88.247 "pvesh set /nodes/pve-000/lxc/104/config --memory 2048" + +# DELETE /nodes/pve-000/lxc/999 +ssh root@192.168.88.247 "pvesh delete /nodes/pve-000/lxc/999" +``` + +pvesh 方法對照:`GET → get`、`POST → create`、`PUT → set`、`DELETE → delete` diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..1a6aa61 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,51 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +This repository documents and manages a 3-node Proxmox VE cluster ("PVECluster") running at 192.168.88.73/249/247. It contains infrastructure documentation and will serve as the base for automation scripts and tooling. + +## Proxmox VE API Access + +All API calls go through `https://192.168.88.247:8006/api2/json/`. Authenticate with: + +``` +Authorization: PVEAPIToken=root@pam!claude=17e96169-a32f-4e2d-951e-859c77770306 +``` + +SSH is available to all three nodes (88.73, 88.249, 88.247) with password `25915525` (root@pam). Use `pvesh` over SSH for CLI-based management. Any node IP can serve as the API entry point — they share the same management interface. + +## Cluster Topology + +- **3 heterogeneous nodes**: + - `pve-000` (192.168.88.73) — 4C / 32 GB — runs most LXCs + medium VMs (16 guests) + - `pve-001` (192.168.88.249) — 24C / 132 GB — runs heavy Windows VMs and OpenArchiver (9 guests) + - `pve-002` (192.168.88.247) — 4C / 16 GB IBM x3250 M4 (Xeon E3-1220 v2) — currently idle, used as management/SSH entry point +- **Primary storage**: Synology DS1621 at 192.168.88.60 via iSCSI (`pve-iscsi-3t`, 4.5 TB shared LVM) +- **Backup storage**: Proxmox Backup Server (VM 101 at 192.168.88.169, datastore `backup1`, 1 TB) +- **Networking**: + - `vmbr0` — main 192.168.88.0/24 LAN (all nodes) + - `vmbr1` — 192.168.77.0/24 OpenWRT LAN (pve-000 only, IP .241) + - `vmbr2` — OpenWRT WAN bridge (pve-000 only, no IP) + - Default gateway: `192.168.88.1` (upstream router) +- **Internet routing**: VM 115 OpenWRT runs HiNet PPPoE (210.242.157.197) and serves the 192.168.77.0/24 subnet + +## Key Files + +- `PVE_API.md` — API authentication methods, endpoint reference, token management +- `API.md` — Full Proxmox VE API reference handbook +- `PVECluster_Architecture.md` — Full cluster architecture: nodes, VMs/CTs, storage, networking, backup strategy +- `SUMMARY.md` — Real-time cluster status snapshot +- `QUICKSTART.md` — 5-minute getting-started guide + +## Notable Points + +- VMs are tagged by owner (`veljko`, `chao`, `lucas`, `celia`, `gia`, `apollo`, `vic`, `timmy`) — useful for filtering +- Backup schedule is daily at 23:00, retains 7 daily, covers 14 critical VMs/CTs +- `pve-002` has zero workload — available as failover target or batch-job runner +- VM 115 (OpenWRT) is a single point of failure for the 192.168.77.0/24 subnet + +## Language + +Always respond in Traditional Chinese (繁體中文,台灣用語). diff --git a/PVECluster_Architecture.md b/PVECluster_Architecture.md new file mode 100644 index 0000000..f0b0128 --- /dev/null +++ b/PVECluster_Architecture.md @@ -0,0 +1,361 @@ +# PVECluster 叢集架構文件 + +> 最後更新:2026-04-15 + +## 一、叢集概覽 + +| 項目 | 值 | +|---|---| +| **叢集名稱** | PVECluster | +| **PVE 版本** | 8.4.16(Kernel 6.8.12-18-pve) | +| **節點數** | 3(異質配置) | +| **Quorum** | 正常(corosync_votequorum,3 votes) | +| **VM/容器總數** | 25(13 VM + 12 LXC,含 4 個 stopped) | +| **HA** | 未啟用 | + +## 二、節點硬體規格 + +> 三台節點規格不同,pve-001 為運算大節點,pve-002 為較舊備援節點。 + +### pve-000(192.168.88.73) + +| 項目 | 規格 | +|---|---| +| **CPU** | 4 cores(廠牌 / 詳細型號待確認) | +| **記憶體** | 32 GB | +| **系統碟** | 100 GB | +| **角色** | 一般工作節點(跑大量 LXC + 中型 VM) | +| **特別介面** | `vmbr1` (192.168.77.241/24)、`vmbr2`(OpenWRT WAN bridge) | + +### pve-001(192.168.88.249) + +| 項目 | 規格 | +|---|---| +| **CPU** | 24 cores | +| **記憶體** | 132 GB | +| **系統碟** | 83 GB | +| **角色** | 大型 VM 主機(多顆 Windows VM、HackMD、OpenArchiver) | + +### pve-002(192.168.88.247) + +| 項目 | 規格 | +|---|---| +| **品牌** | IBM System X3250 M4(型號 2583IOB) | +| **CPU** | Intel Xeon E3-1220 V2 @ 3.10GHz(4C/4T) | +| **記憶體** | 16 GB | +| **系統碟** | 100 GB | +| **角色** | 備援/閒置節點,本文件主要 SSH/API 進入點 | + +### 節點清單 + +| 節點 | IP | 角色 | 上線時間 | +|---|---|---|---| +| **pve-000** | 192.168.88.73 | 工作節點(16 guests) | ~17.3 天 | +| **pve-001** | 192.168.88.249 | 重型運算節點(9 guests) | ~17.3 天 | +| **pve-002** | 192.168.88.247 | 備援/管理節點(0 guests) | ~17.3 天 | + +### 節點資源使用(即時快照) + +| 節點 | CPU 使用率 | 記憶體使用 | 系統碟使用 | +|---|---|---|---| +| pve-000 | ~16% | 24.7 GB / 31.3 GB (79%) | 9.0 GB / 100 GB | +| pve-001 | ~15% | 56.0 GB / 125.8 GB (44%) | 60.5 GB / 83 GB | +| pve-002 | ~1% | 1.7 GB / 16 GB (10%) | 8.7 GB / 100 GB | + +## 三、網路架構 + +``` +HiNet ──PPPoE 210.242.157.197── [VM 115 OpenWRT] + │ + ┌─────────────────────┼─────────────────────┐ + │ │ │ + vmbr2 (WAN) vmbr0 (LAN) vmbr1 + (僅 pve-000) 192.168.88.0/24 192.168.77.0/24 + (僅 pve-000 有 IP .241) + ▲ ▲ ▲ + │ │ │ + 外網 PPPoE/路由 全節點 Bridge OpenWRT LAN 子網 + CT104 .77.10 + CT125 .77.21 + +192.168.88.1(上游 GW,全節點 default route) + │ + ├── pve-000 (vmbr0/enp0s31f6) .73 + ├── pve-001 (vmbr0/enp1s0f0) .249 + └── pve-002 (vmbr0/enp6s0) .247 +``` + +### 介面對應表 + +| 節點 | vmbr0 (88) | vmbr1 (77) | vmbr2 (WAN) | +|---|---|---|---| +| pve-000 | enp0s31f6 → .73 | enp6s0f0 → .241 | enp6s0f1(無 IP,bridge only) | +| pve-001 | enp1s0f0 → .249 | — | — | +| pve-002 | enp6s0 → .247 | — | — | + +- **Default Gateway**:`192.168.88.1`(上游路由器,三節點皆指向此) +- **OpenWRT LAN GW**:`192.168.77.1`(VM 115 提供,僅 pve-000 上的 vmbr1 使用) +- **VM/CT 多數靜態 IP 在 192.168.88.0/24**,少數使用 DHCP + +## 四、儲存架構 + +### 儲存池一覽 + +| 儲存名稱 | 類型 | 共享 | 容量 | 已用 | 用途 | +|---|---|---|---|---|---| +| **local** | dir | 否 | 83–100 GB/節點 | 8.7–60.5 GB | ISO、備份、模板 | +| **local-lvm** | lvmthin | 否 | 184–853 GB | 0–24 GB | VM 磁碟、CT rootfs(少用) | +| **syno-iscsi** | iSCSI Target | 是 | — | — | `pve-iscsi-3t` 的底層 target | +| **pve-iscsi-3t** | LVM (iSCSI) | 是 | 4.50 TB | 3.41 TB (74%) | **主要儲存**(VM 磁碟、CT rootfs) | +| **backup1** | PBS | 是 | 1.00 TB | 0.62 TB (62%) | Proxmox Backup Server 備份 | + +### 儲存拓撲 + +``` +Synology NAS (192.168.88.60, DS1621) +└── iSCSI Target iqn.2000-01.com.synology:DS1621.Target-8.d3b1c55b974 + └── syno-iscsi(raw block) ──► pve-iscsi-3t (LVM, 4.5TB, 共享) + └── 幾乎所有 VM/CT 磁碟存放於此(vg_pveiscsi) + +Proxmox Backup Server (192.168.88.169, VM 101) +└── PBS datastore "backup1" ──► backup1 (1TB, 共享) + └── 104 筆 VM/CT 快照備份(指紋 77:1c:e5:3e:aa:b0:5d:07:...) + +各節點本地 +├── /var/lib/vz ──► local +│ └── ISO、vztmpl、備份 +└── LVM thin pool ──► local-lvm + └── 部分 VM/CT 磁碟(CT107 等) +``` + +### 儲存設定(`/etc/pve/storage.cfg`) + +```ini +dir: local + path /var/lib/vz + content iso,backup,vztmpl + +lvmthin: local-lvm + thinpool data + vgname pve + content images,rootdir + +iscsi: syno-iscsi + portal 192.168.88.60 + target iqn.2000-01.com.synology:DS1621.Target-8.d3b1c55b974 + content images + +lvm: pve-iscsi-3t + vgname vg_pveiscsi + content rootdir,images + saferemove 0 + shared 1 + +pbs: backup1 + datastore backup1 + server 192.168.88.169 + content backup + fingerprint 77:1c:e5:3e:aa:b0:5d:07:41:2c:1a:2a:ce:ae:7c:78:04:75:85:56:68:5e:54:3d:2f:65:ab:31:09:1b:1c:b2 + prune-backups keep-all=1 + username root@pam +``` + +## 五、VM / 容器清單 + +### QEMU 虛擬機 + +| VMID | 節點 | 狀態 | CPU | 記憶體 | 磁碟 | 儲存 | Tags | 備註 | +|---|---|---|---|---|---|---|---|---| +| **100** | pve-000 | running | 4C | 8 GB | 128 GB | pve-iscsi-3t | veljko;windows | Windows(IDE bus) | +| **101** | pve-000 | running | 2C | 4 GB | 64G+1T | pve-iscsi-3t | proxmoxbackupserver | **PBS Server**(IP 192.168.88.169) | +| **102** | pve-001 | **stopped** | 4C | 8 GB | 32 GB | local-lvm | apollo;vic;windows | Windows | +| **110** | pve-000 | **stopped** | 4C | 8 GB | 128 GB | pve-iscsi-3t | — | 用途待確認 | +| **111** | pve-001 | running | 1C | 8 GB | 200 GB | pve-iscsi-3t | chao;windows | Windows | +| **114** | pve-001 | running | 1C | 8 GB | 300 GB | pve-iscsi-3t | celia;windows | Windows | +| **115** | pve-000 | running | 1C×2 | 2 GB | 4G+124M | pve-iscsi-3t | openwrt;timmy | **OpenWRT**(PPPoE WAN + LAN 192.168.77.1) | +| **116** | pve-001 | running | 1C | 8 GB | 256 GB | pve-iscsi-3t | lucas;windows | Windows | +| **119** | pve-001 | **stopped** | 1C | 16 GB | 60 GB | pve-iscsi-3t | timmy;ubuntu | Ubuntu(vmxnet3 介面) | +| **120** | pve-001 | running | 1C | 8 GB | 250 GB | pve-iscsi-3t | chao;hackmd;ubuntu | **HackMD**(vmxnet3) | +| **121** | pve-000 | running | 1C | 2 GB | 60 GB | pve-iscsi-3t | timmy;ubuntu | Ubuntu | +| **123** | pve-001 | running | 4C | 16 GB | 264 GB | pve-iscsi-3t | veljko;windows | Windows(backup=0) | +| **124** | pve-000 | running | 1C | 4 GB | 100 GB | pve-iscsi-3t | lucas;veljko | virtio + writeback | + +### LXC 容器 + +| VMID | 節點 | 狀態 | CPU | 記憶體 | 磁碟 | IP | Tags / 用途 | +|---|---|---|---|---|---|---|---| +| **103** | pve-001 | running | 2C | 2 GB | 16 GB | DHCP | amc-stage;chao(容器名 CT108) | +| **104** | pve-000 | running | 2C | 1 GB | 8 GB | 192.168.77.10/24 | **NPM + Headscale**(vmbr1) | +| **105** | pve-001 | running | 16C | 16 GB | 32 GB | 192.168.88.89 | **OpenArchiver**(重型容器) | +| **106** | pve-000 | running | 1C | 1 GB | 24 GB | DHCP | b2b;chao | +| **107** | pve-000 | running | 1C | 512 MB | 8 GB | 192.168.88.14 | gia;patent(local-lvm) | +| **108** | pve-000 | running | 2C | 2 GB | 16 GB | DHCP | amc;chao;jira-report | +| **109** | pve-000 | running | 1C | 2 GB | 8 GB | DHCP | cashier-portal;chao | +| **112** | pve-000 | **stopped** | 1C | 1 GB | 24 GB | DHCP | chao;supabase | +| **113** | pve-000 | running | 2C | 4 GB | 32 GB | DHCP | chao;dify;n8n;nocodb | +| **117** | pve-000 | running | 1C | 256 MB | 8 GB | DHCP | tailscale;timmy | +| **122** | pve-000 | running | 8C | 16 GB | 196 GB | 192.168.88.174 | lucas;timmy;ubuntu(重型容器) | +| **125** | pve-000 | running | 1C | 512 MB | 8 GB | 192.168.77.21/24 | tailscale;timmy(vmbr1) | + +### 狀態統計 + +| 狀態 | 數量 | +|---|---| +| Running | 21 | +| Stopped | 4 (VM 102/110/119, CT 112) | +| Template | 0 | + +### 各節點負載分佈 + +| 節點 | VM (running) | LXC (running) | 分配 vCPU | 分配記憶體 | +|---|---|---|---|---| +| **pve-000** | 5 (100,101,115,121,124) | 10 (104,106,107,108,109,113,117,122,125) + 1 stopped | 24+ | ~36 GB | +| **pve-001** | 6 (111,114,116,120,123) | 2 (103,105) + 多個 stopped | 30+ | ~78 GB | +| **pve-002** | 0 | 0 | 0 | 0 | + +## 六、備份策略 + +### Proxmox Backup Server + +- **位置**:VM 101(pve-000),IP `192.168.88.169:8007` +- **Datastore**:`backup1`(1.00 TB,已用 ~622 GB / 62%) +- **PVE 端 Storage 名稱**:`backup1` +- **保留策略**:`keep-all=1`(PBS storage 層) +- **指紋**:`77:1c:e5:3e:aa:b0:5d:07:41:2c:1a:2a:ce:ae:7c:78:04:75:85:56:68:5e:54:3d:2f:65:ab:31:09:1b:1c:b2` + +### 備份排程(目前啟用) + +| ID | 排程 | 對象 | 儲存 | 模式 | 保留 | +|---|---|---|---|---|---| +| `backup-71950ae1-101d` | 每日 23:00 | VM/CT 104,106,108,109,113,117,122,125,115,111,114,116,120,121 | backup1 | snapshot | keep-daily=7 | + +> 註解:「每日備份(保留近7日)」,notes-template 使用 `{{guestname}}`。 + +### PBS 備份統計(按 VMID) + +| VMID | 筆數 | VMID | 筆數 | VMID | 筆數 | +|---|---|---|---|---|---| +| 100 | 1 | 109 | 7 | 117 | 7 | +| 101 | 1 | 111 | 7 | 118 | 1 | +| 104 | 7 | 112 | 1 | 119 | 1 | +| 106 | 7 | 113 | 7 | 120 | 7 | +| 107 | 1 | 114 | 7 | 121 | 7 | +| 108 | 7 | 115 | 7 | 122 | 7 | +| | | 116 | 7 | 125 | 7 | + +**總計 104 筆**。標記為 7 筆者為排程內常規目標。 + +### 未在排程內的 VM/CT + +- VM 100(veljko Windows)、102(apollo stopped)、123(veljko, scsi backup=0)、124(lucas/veljko) +- VM 119(停機)、110(停機) +- CT 103(amc-stage)、105(openarchiver,16C/16GB 大容器)、107(gia patent)、112(停機) + +> 涉及客戶資料的 Windows VM 與重型容器,建議評估是否納入排程。 + +## 七、關鍵服務架構圖 + +``` +┌─────────────────────────────────────────────────────────────────────┐ +│ PVECluster │ +│ 192.168.88.73 / .249 / .247 │ +├───────────────┬───────────────────────────┬───────────────────────────┤ +│ pve-000 (.73)│ pve-001 (.249) │ pve-002 (.247) │ +│ 4C / 32GB │ 24C / 132GB │ 4C / 16GB(IBM x3250) │ +├───────────────┴───────────────────────────┴───────────────────────────┤ +│ │ +│ 【網路 / 路由】 │ +│ VM115 OpenWRT ── HiNet PPPoE 210.242.157.197 │ +│ LAN GW 192.168.77.1(vmbr1 子網,僅 pve-000) │ +│ 上游 GW 192.168.88.1 ── 主 LAN 全節點共用 vmbr0 │ +│ CT104 NPM + Headscale (192.168.77.10) ── 反向代理 / VPN 控制 │ +│ CT117, CT125 ── Tailscale 子網 routing │ +│ │ +│ 【備份】 │ +│ VM101 PBS ── 192.168.88.169:8007 (1TB datastore "backup1") │ +│ Synology DS1621 (192.168.88.60) ── iSCSI Target 4.5TB shared LVM │ +│ │ +│ 【自動化 / 開發】 │ +│ VM120 HackMD (chao, Ubuntu 250G) │ +│ CT113 Dify + n8n + NocoDB (chao, 4C/4G/32G) │ +│ CT105 OpenArchiver (16C/16G/32G — 大型郵件歸檔) │ +│ CT112 Supabase (stopped) │ +│ VM121 / CT122 通用 Ubuntu (timmy / lucas) │ +│ │ +│ 【客戶 Windows 桌面】 │ +│ VM100 veljko VM111 chao │ +│ VM102 apollo/vic (stop) VM114 celia │ +│ VM116 lucas VM123 veljko (264G) │ +│ │ +│ 【業務應用(chao 系列)】 │ +│ CT103 AMC-Stage CT106 B2B │ +│ CT108 AMC + Jira-Report CT109 Cashier-Portal │ +│ │ +│ 【其他客戶】 │ +│ CT107 gia / patent │ +└──────────────────────────────────────────────────────────────────────┘ +``` + +## 八、已知問題與注意事項 + +### `pve-iscsi-3t` 共享儲存使用率偏高(74%) + +主要儲存 4.5TB 已用 3.41TB,新增大型 VM/CT 前需評估,或考慮: +- 將完全停機的 VM (102/110/112/119) 評估刪除或遷出 +- 客戶 Windows VM 內部清理(暫存檔、回收筒) + +### `pve-001:local` 系統碟 73% 使用率 + +83GB 內已用 60GB,多半是舊 ISO 與 vzdump 殘留。建議: + +```bash +# 檢查 +ssh root@192.168.88.249 "du -sh /var/lib/vz/* 2>/dev/null | sort -h" + +# 清理 ISO/Template +ssh root@192.168.88.249 "ls -lah /var/lib/vz/template/iso/" +``` + +### pve-002 完全閒置 + +IBM x3250 M4 雖然規格較舊(4C Xeon E3-1220 v2 / 16GB),但完全沒有任何 guest 在跑。可作為: +- HA failover 目標(需先啟用 HA) +- 排程批次任務節點(如備份壓縮、報表) +- 短期測試 VM + +### OpenWRT (VM 115) 為單點故障 + +PPPoE 撥接與 192.168.77.0/24 子網皆依賴此 VM,一旦停機: +- 192.168.77.0/24 內主機(CT104 NPM、CT125 Tailscale)對外失聯 +- HiNet PPPoE 連線中斷(如果上游 .88.1 路由器不直接擔當 PPPoE) + +建議:定期備份 + 至少在另一節點放冷備份映像。 + +## 九、Corosync 叢集通訊 + +``` +totem: + cluster_name: PVECluster + config_version: 5 + transport: knet + secauth: on + +nodelist: + pve-000 (nodeid=1, ring0=192.168.88.73, votes=1) + pve-001 (nodeid=2, ring0=192.168.88.249, votes=1) + pve-002 (nodeid=3, ring0=192.168.88.247, votes=1, local) + +quorum: + provider: corosync_votequorum + expected votes: 3 + required quorum: 2 (需要 2/3 節點在線才能維持 quorate) +``` + +## 十、API 認證 + +詳見 [PVE_API.md](PVE_API.md) 與 [API.md](API.md)。 + +| Token | Secret | privsep | 用途 | +|---|---|---|---| +| `root@pam!claude` | `17e96169-a32f-4e2d-951e-859c77770306` | 0(繼承 root) | Claude / 自動化 | +| `root@pam!monitor` | (未知,舊 token) | 0 | 監控 | diff --git a/PVE_API.md b/PVE_API.md new file mode 100644 index 0000000..164bfa0 --- /dev/null +++ b/PVE_API.md @@ -0,0 +1,128 @@ +# Proxmox VE API 筆記 + +## 環境資訊 + +| 項目 | 值 | +|---|---| +| **PVE 版本** | 8.4.16 | +| **主機 IP(API 入口)** | 192.168.88.247(pve-002) | +| **叢集名稱** | PVECluster | +| **節點** | pve-000 (.73)、pve-001 (.249)、pve-002 (.247) | +| **VM/容器數量** | 25(13 VM + 12 LXC) | + +> 三節點任一個 IP 都可以當 API 入口(同一管理介面)。 + +## API Token + +| 項目 | 值 | +|---|---| +| **Token ID** | `root@pam!claude` | +| **Secret** | `17e96169-a32f-4e2d-951e-859c77770306` | +| **權限** | privsep=0(繼承 root 完整權限) | +| **到期** | 永不過期 | + +另有舊 token `root@pam!monitor`(privsep=0),secret 已遺失。 + +## API 基本格式 + +``` +https://192.168.88.247:8006/api2/json/<路徑> +``` + +## 認證方式 + +### API Token(推薦) + +```bash +curl -sk https://192.168.88.247:8006/api2/json/<端點> \ + -H "Authorization: PVEAPIToken=root@pam!claude=17e96169-a32f-4e2d-951e-859c77770306" +``` + +### Ticket(帳密登入,2 小時過期) + +```bash +# 1. 取得 ticket +curl -sk https://192.168.88.247:8006/api2/json/access/ticket \ + -d "username=root@pam&password=25915525" + +# 回傳 ticket 和 CSRFPreventionToken + +# 2. GET 請求 +curl -sk https://192.168.88.247:8006/api2/json/<端點> \ + -b "PVEAuthCookie=" + +# 3. POST/PUT/DELETE 請求需額外帶 CSRF header +curl -sk -X POST https://192.168.88.247:8006/api2/json/<端點> \ + -b "PVEAuthCookie=" \ + -H "CSRFPreventionToken: " \ + -d "參數=值" +``` + +## 常用 API 端點 + +### 叢集與節點 + +| 用途 | 方法 | 端點 | +|---|---|---| +| API 版本 | GET | `/version` | +| 叢集狀態 | GET | `/cluster/status` | +| 叢集資源總覽 | GET | `/cluster/resources` | +| 僅 VM/容器 | GET | `/cluster/resources?type=vm` | +| 僅儲存 | GET | `/cluster/resources?type=storage` | +| 節點清單 | GET | `/nodes` | +| 單一節點狀態 | GET | `/nodes/{node}/status` | + +### 虛擬機(QEMU) + +| 用途 | 方法 | 端點 | +|---|---|---| +| 列出 VM | GET | `/nodes/{node}/qemu` | +| VM 狀態 | GET | `/nodes/{node}/qemu/{vmid}/status/current` | +| VM 設定 | GET | `/nodes/{node}/qemu/{vmid}/config` | +| 啟動 VM | POST | `/nodes/{node}/qemu/{vmid}/status/start` | +| 關閉 VM | POST | `/nodes/{node}/qemu/{vmid}/status/stop` | +| 重啟 VM | POST | `/nodes/{node}/qemu/{vmid}/status/reboot` | + +### LXC 容器 + +| 用途 | 方法 | 端點 | +|---|---|---| +| 列出容器 | GET | `/nodes/{node}/lxc` | +| 容器狀態 | GET | `/nodes/{node}/lxc/{vmid}/status/current` | +| 啟動容器 | POST | `/nodes/{node}/lxc/{vmid}/status/start` | +| 停止容器 | POST | `/nodes/{node}/lxc/{vmid}/status/stop` | + +### 儲存 + +| 用途 | 方法 | 端點 | +|---|---|---| +| 列出儲存 | GET | `/nodes/{node}/storage` | +| 儲存內容 | GET | `/nodes/{node}/storage/{storage}/content` | + +### 使用者與權限 + +| 用途 | 方法 | 端點 | +|---|---|---| +| 列出使用者 | GET | `/access/users` | +| 列出角色 | GET | `/access/roles` | +| 列出 ACL | GET | `/access/acl` | + +### 任務 + +| 用途 | 方法 | 端點 | +|---|---|---| +| 最近任務 | GET | `/nodes/{node}/tasks` | +| 任務狀態 | GET | `/nodes/{node}/tasks/{upid}/status` | + +## Token 管理 + +```bash +# 建立新 token(SSH 到 PVE 主機執行,secret 只顯示一次) +pvesh create /access/users/root@pam/token/<名稱> --privsep 0 --expire 0 + +# 列出 token +pvesh get /access/users/root@pam/token --output-format json + +# 刪除 token +pvesh delete /access/users/root@pam/token/<名稱> +``` diff --git a/QUICKSTART.md b/QUICKSTART.md new file mode 100644 index 0000000..131964b --- /dev/null +++ b/QUICKSTART.md @@ -0,0 +1,176 @@ +# 快速上手指南 + +5 分鐘內開始操作 PVECluster(192.168.88.0/24)。 + +## 前置條件 + +- 可連線至 `192.168.88.0/24` 網段 +- 已安裝 `curl` 和 `python3`(用於解析 JSON) +- root 密碼:`25915525`(SSH 用) + +## 1. 確認連線 + +```bash +# SSH(三台任一皆可) +ssh root@192.168.88.247 "pveversion" +# 預期輸出:pve-manager/8.4.16/... + +# API +curl -sk https://192.168.88.247:8006/api2/json/version \ + -H "Authorization: PVEAPIToken=root@pam!claude=17e96169-a32f-4e2d-951e-859c77770306" +# 預期輸出:{"data":{"version":"8.4.16",...}} +``` + +## 2. 設定環境變數(方便後續操作) + +```bash +export PVE_HOST="https://192.168.88.247:8006/api2/json" +export PVE_AUTH="Authorization: PVEAPIToken=root@pam!claude=17e96169-a32f-4e2d-951e-859c77770306" + +# 定義快捷函式 +pve-get() { curl -sk "$PVE_HOST$1" -H "$PVE_AUTH"; } +pve-post() { curl -sk -X POST "$PVE_HOST$1" -H "$PVE_AUTH" "${@:2}"; } +``` + +## 3. 查看叢集狀態 + +```bash +# 節點概覽 +pve-get /nodes | python3 -m json.tool + +# 所有 VM/容器 +pve-get /cluster/resources?type=vm | python3 -c " +import sys, json +data = json.load(sys.stdin)['data'] +data.sort(key=lambda x: x['vmid']) +print(f\"{'VMID':<6} {'Type':<5} {'Status':<9} {'Node':<10} {'Name':<14} {'CPU':>4} {'Mem':>8}\") +print('-' * 70) +for d in data: + mem = f\"{d['mem'] // 1048576}M\" if d['mem'] else '-' + print(f\"{d['vmid']:<6} {d['type']:<5} {d['status']:<9} {d['node']:<10} {d['name']:<14} {d.get('maxcpu','?'):>4} {mem:>8}\") +" +``` + +## 4. 常用操作範例 + +### 啟動 / 停止容器 + +```bash +# 啟動 CT104(NPM + Headscale) +pve-post /nodes/pve-000/lxc/104/status/start + +# 優雅關閉 CT104 +pve-post /nodes/pve-000/lxc/104/status/shutdown + +# 強制停止 +pve-post /nodes/pve-000/lxc/104/status/stop +``` + +### 啟動 / 停止 VM + +```bash +# 啟動 VM 120(HackMD) +pve-post /nodes/pve-001/qemu/120/status/start + +# 關閉 VM +pve-post /nodes/pve-001/qemu/120/status/shutdown +``` + +### 查看單一 VM/容器狀態 + +```bash +# CT 狀態 +pve-get /nodes/pve-000/lxc/104/status/current | python3 -m json.tool + +# VM 狀態(OpenWRT) +pve-get /nodes/pve-000/qemu/115/status/current | python3 -m json.tool +``` + +### 查看 / 修改設定 + +```bash +# 查看 CT104 設定 +pve-get /nodes/pve-000/lxc/104/config | python3 -m json.tool + +# 透過 SSH 修改記憶體(改為 2GB) +ssh root@192.168.88.247 "pvesh set /nodes/pve-000/lxc/104/config --memory 2048" +``` + +### 儲存使用狀況 + +```bash +pve-get /cluster/resources?type=storage | python3 -c " +import sys, json +data = json.load(sys.stdin)['data'] +seen = set() +print(f\"{'Storage':<18} {'Type':<8} {'Shared':<7} {'Used':>10} {'Total':>10} {'Usage':>6}\") +print('-' * 65) +for d in sorted(data, key=lambda x: x['storage']): + key = d['storage'] + if key in seen: continue + seen.add(key) + total = d.get('maxdisk', 0) + used = d.get('disk', 0) + pct = f\"{used/total*100:.0f}%\" if total else '-' + print(f\"{key:<18} {d['plugintype']:<8} {'yes' if d.get('shared') else 'no':<7} {used//1073741824:>8} GB {total//1073741824:>8} GB {pct:>6}\") +" +``` + +### 立即備份 + +```bash +# 備份 CT113(Dify/n8n/NocoDB)到 PBS +pve-post /nodes/pve-000/vzdump \ + -d "vmid=113" \ + -d "storage=backup1" \ + -d "mode=snapshot" \ + -d "notes-template={{guestname}}" +``` + +### 建立快照 + +```bash +# CT 快照 +pve-post /nodes/pve-000/lxc/104/snapshot \ + -d "snapname=before-upgrade" \ + -d "description=升級前快照" + +# 列出快照 +pve-get /nodes/pve-000/lxc/104/snapshot | python3 -m json.tool +``` + +## 5. 節點與 VMID 對照速查 + +操作 API 需要知道目標在哪個節點上: + +| VMID 範圍 | 節點 | 類型 | 主要用途 | +|---|---|---|---| +| 100, 101, 110, 115, 121, 124 | pve-000 | qemu | Veljko/PBS/OpenWRT/Ubuntu | +| 102, 111, 114, 116, 119, 120, 123 | pve-001 | qemu | Windows VMs / HackMD | +| 104, 106-109, 112, 113, 117, 122, 125 | pve-000 | lxc | NPM/業務應用 | +| 103, 105 | pve-001 | lxc | AMC-stage / OpenArchiver | + +> 不確定在哪個節點?用 `/cluster/resources?type=vm` 查詢即可: +> ```bash +> pve-get /cluster/resources?type=vm | python3 -c " +> import sys,json +> for v in json.load(sys.stdin)['data']: +> print(f\"{v['vmid']} {v['type']} -> {v['node']}\") +> " +> ``` + +## 6. 重要服務速查 + +| 服務 | 位置 | 連線方式 | +|---|---|---| +| PVE Web UI | https://192.168.88.247:8006 | root / `25915525` | +| PBS Web UI | https://192.168.88.169:8007 | root | +| OpenWRT | http://192.168.77.1 | (需在 192.168.77.0/24 子網內) | +| Synology NAS | http://192.168.88.60 | DSM / iSCSI portal | +| HackMD | VM 120(pve-001) | 需查內部 IP | +| Nginx Proxy Manager | CT 104 (192.168.77.10) | 需經 OpenWRT | + +## 7. Web UI + +瀏覽器開啟 `https://192.168.88.247:8006`,使用 `root` / PAM 認證登入(密碼 `25915525`)。 +三個節點任一 IP 皆可進入同一管理介面。 diff --git a/README.md b/README.md new file mode 100644 index 0000000..350cfb3 --- /dev/null +++ b/README.md @@ -0,0 +1,59 @@ +# 88_247 — PVECluster 基礎建設文件庫 + +管理與記錄 PVECluster(3 節點 Proxmox VE 叢集,192.168.88.0/24)的架構、API 操作指南及相關自動化工具。 + +## 叢集簡介 + +| 項目 | 值 | +|---|---| +| 叢集名稱 | PVECluster | +| PVE 版本 | 8.4.16(Kernel 6.8.12-18-pve) | +| 節點 | pve-000 (192.168.88.73)、pve-001 (.249)、pve-002 (.247) | +| 硬體 | 異質配置(i3 / Xeon E3 / Xeon 24C) | +| VM/容器 | 25(21 running / 4 stopped) | +| 主要儲存 | Synology iSCSI 共享 LVM 4.5 TB(`pve-iscsi-3t`) | +| 備份 | Proxmox Backup Server (192.168.88.169,1 TB) | + +## 文件索引 + +| 文件 | 說明 | +|---|---| +| [QUICKSTART.md](QUICKSTART.md) | 快速上手:連線、API 呼叫、常用操作 | +| [API.md](API.md) | Proxmox VE API 完整參考手冊 | +| [PVE_API.md](PVE_API.md) | API 認證/Token 速查 | +| [PVECluster_Architecture.md](PVECluster_Architecture.md) | 叢集架構詳細文件(硬體/網路/儲存/VM 清單) | +| [SUMMARY.md](SUMMARY.md) | 叢集狀態摘要與服務一覽 | +| [CLAUDE.md](CLAUDE.md) | Claude Code 工作指引 | + +## 網路拓撲 + +``` +HiNet PPPoE 210.242.157.197 + │ + ▼ + [VM 115 OpenWRT] ─── vmbr2 (WAN) / vmbr1 192.168.77.1 (LAN) + │ + └── CT104, CT125(Tailscale/Headscale 子網) + +192.168.88.1 (上游 GW) ─── vmbr0 (192.168.88.0/24) + │ + ├── pve-000 (.73) 4C/32GB 16 guests + ├── pve-001 (.249) 24C/132GB 9 guests + └── pve-002 (.247) 4C/16GB (備援節點,目前無工作負載) +``` + +## 快速存取 + +```bash +# SSH 連線(root 密碼:25915525) +ssh root@192.168.88.247 # pve-002(本文件主要連線點) +ssh root@192.168.88.73 # pve-000 +ssh root@192.168.88.249 # pve-001 + +# Web UI +https://192.168.88.247:8006 + +# API 呼叫 +curl -sk https://192.168.88.247:8006/api2/json/cluster/resources \ + -H "Authorization: PVEAPIToken=root@pam!claude=17e96169-a32f-4e2d-951e-859c77770306" +``` diff --git a/SUMMARY.md b/SUMMARY.md new file mode 100644 index 0000000..d48f6d5 --- /dev/null +++ b/SUMMARY.md @@ -0,0 +1,118 @@ +# PVECluster 狀態摘要 + +> 快照日期:2026-04-15 + +## 叢集健康狀態 + +| 指標 | 狀態 | +|---|---| +| 叢集 Quorum | 正常(3/3 節點在線,Quorate) | +| HA | 未啟用 | +| 備份排程 | 1 個排程(每日 23:00,enabled=1) | +| 儲存 | 全部可用 | + +## 節點資源 + +| 節點 | IP | 硬體 | CPU | 記憶體 | 系統碟 | Running | +|---|---|---|---|---|---|---| +| pve-000 | .73 | 4C / 32 GB | 16% (4C) | 24.7 / 31.3 GB (79%) | 9.0 / 100 GB | 16 | +| pve-001 | .249 | 24C / 132 GB | 15% (24C) | 56.0 / 125.8 GB (44%) | 60.5 / 83 GB | 9 | +| pve-002 | .247 | 4C / 16 GB(IBM x3250 M4 / Xeon E3-1220 v2) | 1% (4C) | 1.7 / 16 GB (10%) | 8.7 / 100 GB | 0 | +| **合計** | — | — | **32C / 180 GB** | **82.4 / 173 GB (48%)** | **78 / 283 GB** | **25** | + +## 儲存使用 + +| 儲存 | 類型 | 共享 | 容量 | 已用 | 使用率 | +|---|---|---|---|---|---| +| pve-iscsi-3t | LVM (iSCSI 共享) | 是 | 4.50 TB | 3.41 TB | **74%** | +| backup1 (PBS) | PBS(共享) | 是 | 1.00 TB | 0.62 TB | **62%** | +| syno-iscsi | iSCSI(底層) | 是 | — | — | — | +| local (pve-000) | dir | 否 | 100 GB | 9.0 GB | 9% | +| local (pve-001) | dir | 否 | 83 GB | 60.5 GB | **73%** | +| local (pve-002) | dir | 否 | 100 GB | 8.7 GB | 9% | +| local-lvm (pve-000) | LVM thin | 否 | 374 GB | 3.5 GB | 1% | +| local-lvm (pve-001) | LVM thin | 否 | 184 GB | 23.7 GB | 13% | +| local-lvm (pve-002) | LVM thin | 否 | 853 GB | 0 | 0% | + +> **注意**:`pve-iscsi-3t` 已用 74%、`pve-001:local` 已用 73%(系統碟內含舊 ISO/備份)需關注。 + +## 服務分類總覽 + +### 基礎設施 / 網路 + +| 服務 | VMID | 節點 | 狀態 | Tags | +|---|---|---|---|---| +| OpenWRT 路由 (HiNet PPPoE 210.242.157.197 / LAN 192.168.77.1) | VM 115 | pve-000 | running | openwrt;timmy | +| Headscale + Nginx Proxy Manager | CT 104 | pve-000 | running | headscale;nginxproxymanager;timmy | +| Tailscale 子網 routing | CT 117 | pve-000 | running | tailscale;timmy | +| Tailscale 子網 routing | CT 125 | pve-000 | running | tailscale;timmy | + +### 備份 + +| 服務 | VMID | IP | 節點 | 狀態 | +|---|---|---|---|---| +| Proxmox Backup Server | VM 101 | 192.168.88.169 | pve-000 | running | + +### 自動化 / 開發平台 + +| 服務 | VMID | 節點 | 狀態 | 用途 | +|---|---|---|---|---| +| HackMD | VM 120 | pve-001 | running | 共筆/文件 | +| Dify + n8n + NocoDB | CT 113 | pve-000 | running | LLM 工作流、自動化、低代碼資料庫 | +| OpenArchiver (16C/16GB) | CT 105 | pve-001 | running | 大型郵件/檔案歸檔 | +| Supabase | CT 112 | pve-000 | **stopped** | 後端 BaaS | +| Ubuntu 通用節點 | VM 121 | pve-000 | running | timmy 開發 | +| Ubuntu 大型容器 (8C/16GB/192GB) | CT 122 | pve-000 | running | lucas;timmy | + +### 客戶 Windows 桌面 / 工作站 + +| 服務 | VMID | 節點 | 狀態 | 擁有人 | +|---|---|---|---|---| +| Windows VM | VM 100 | pve-000 | running | veljko | +| Windows VM | VM 102 | pve-001 | **stopped** | apollo / vic | +| Windows VM (8C/8GB/200G) | VM 111 | pve-001 | running | chao | +| Windows VM (1C/8GB/300G) | VM 114 | pve-001 | running | celia | +| Windows VM (1C/8GB/256G) | VM 116 | pve-001 | running | lucas | +| Windows VM (4C/16GB/264G) | VM 123 | pve-001 | running | veljko | +| 通用 VM (4C/4GB/100G) | VM 124 | pve-000 | running | lucas / veljko | + +### 客戶業務應用(chao 系列) + +| 服務 | VMID | 節點 | 狀態 | 用途 | +|---|---|---|---|---| +| AMC-Stage | CT 103 | pve-001 | running | AMC 預備環境 | +| B2B | CT 106 | pve-000 | running | B2B 服務 | +| AMC + Jira-report | CT 108 | pve-000 | running | AMC 主環境 + Jira 報表 | +| Cashier-Portal | CT 109 | pve-000 | running | 收銀平台 | + +### 客戶業務應用(其他) + +| 服務 | VMID | 節點 | 狀態 | 用途 | +|---|---|---|---|---| +| Patent | CT 107 | pve-000 | running | gia / 專利相關 | + +### 已停用 / 模板 + +| 名稱 | VMID | 節點 | 狀態 | +|---|---|---|---| +| VM110 | VM 110 | pve-000 | stopped | +| VM119 (Ubuntu) | VM 119 | pve-001 | stopped | +| VM102 (Windows) | VM 102 | pve-001 | stopped | +| CT112 (Supabase) | CT 112 | pve-000 | stopped | + +## 備份排程狀態 + +| 排程 | 對象 | 儲存 | 保留策略 | 狀態 | +|---|---|---|---|---| +| 每日 23:00 | 14 個(CT104,106,108,109,113,117,122,125 + VM111,114,115,116,120,121) | backup1 (PBS) | keep-daily=7 | **enabled** | + +PBS 中目前累計 **104 筆** 備份。 + +## 需注意事項 + +1. **pve-iscsi-3t 共享儲存使用率 74%** — 4.5TB 已用 3.4TB,新增大型 VM/CT 前需評估 +2. **pve-001 系統碟使用率 73%** — `local` 目錄(83GB)累積大量 ISO/Backup,建議清理 +3. **pve-002 完全閒置** — IBM x3250 M4 (4C/16GB),可作為備援/HA failover 目標或排程任務節點 +4. **HA 未啟用** — 單節點故障時 VM/CT 不會自動遷移 +5. **多個 Windows VM 未在排程內**(VM 100、102、123、124)— 若為客戶資料需評估是否補上 +6. **OpenWRT 為單點故障** — VM 115 跑 PPPoE,停機會影響 192.168.77.0/24 子網對外連線