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) <noreply@anthropic.com>
This commit is contained in:
229
API.md
Normal file
229
API.md
Normal file
@@ -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名稱>=<secret-uuid>`
|
||||||
|
|
||||||
|
### 現有 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/<UPID>/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/<UPID>/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`
|
||||||
51
CLAUDE.md
Normal file
51
CLAUDE.md
Normal file
@@ -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 (繁體中文,台灣用語).
|
||||||
361
PVECluster_Architecture.md
Normal file
361
PVECluster_Architecture.md
Normal file
@@ -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 | 監控 |
|
||||||
128
PVE_API.md
Normal file
128
PVE_API.md
Normal file
@@ -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=<ticket>"
|
||||||
|
|
||||||
|
# 3. POST/PUT/DELETE 請求需額外帶 CSRF header
|
||||||
|
curl -sk -X POST https://192.168.88.247:8006/api2/json/<端點> \
|
||||||
|
-b "PVEAuthCookie=<ticket>" \
|
||||||
|
-H "CSRFPreventionToken: <csrf-token>" \
|
||||||
|
-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/<名稱>
|
||||||
|
```
|
||||||
176
QUICKSTART.md
Normal file
176
QUICKSTART.md
Normal file
@@ -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 皆可進入同一管理介面。
|
||||||
59
README.md
Normal file
59
README.md
Normal file
@@ -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"
|
||||||
|
```
|
||||||
118
SUMMARY.md
Normal file
118
SUMMARY.md
Normal file
@@ -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 子網對外連線
|
||||||
Reference in New Issue
Block a user