文件 v0.1.7

部署

本頁說明以 Release 執行檔或 systemd 常駐執行 go-pve-qemu 時,工作目錄需要具備哪些檔案。

工作目錄需求

服務所有相對路徑都以啟動時的工作目錄為基準:

路徑 用途 缺少時
.env 環境變數 僅警告,改讀行程環境變數
sh/ 以 /sh/* 對外提供 OS 初始化腳本 新 VM 下載腳本失敗,SSH 初始化階段中止並清除 VM
.go_qemu_disabled 停用清單 VM 清單與狀態檢查全部失敗
.go_qemu_pubkey_admin 額外注入的管理者公鑰 略過
.go_qemu_cpu_type CPU 類型快取 首次建立 VM 時自動產生

新 VM 透過 http://<NODE_{MAIN_NODE}>:<PORT>/sh/<os>_<version>.sh 下載腳本,因此 VM 網段必須能連到主節點的 PORT。

Release 執行檔

推送 v* tag 時,GitHub Actions 在 ubuntu-latest 以 Go 1.25 執行 go build -o app ./cmd/api,並將 app 打包為 go-pve-qemu@<tag>.tar.gz 附加到該 Release。

git clone https://github.com/pardnchiu/go-pve-qemu.git /opt/go-pve-qemu
cd /opt/go-pve-qemu
curl -fsSL -o release.tar.gz \
  "https://github.com/pardnchiu/go-pve-qemu/releases/download/<tag>/go-pve-qemu@<tag>.tar.gz"
tar -xzf release.tar.gz
cp .env.example .env
touch .go_qemu_disabled
./app

clone 是為了取得 sh/ 腳本與 .env.example;執行檔本身不內嵌這些檔案。

systemd 常駐

[Unit]
Description=go-pve-qemu API
After=network-online.target

[Service]
User=root
WorkingDirectory=/opt/go-pve-qemu
ExecStart=/opt/go-pve-qemu/go-pve-qemu
Restart=on-failure

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now go-pve-qemu
journalctl -u go-pve-qemu -f

WorkingDirectory 必須指向含 sh/ 與 .env 的目錄;User=root 是 qm/pvesh 與節點間 SSH 的前提。

升級

  1. 取得新版執行檔(重新建置或下載新 Release)
  2. git pull 更新 sh/ 腳本
  3. systemctl restart go-pve-qemu

節點硬體更換後刪除 .go_qemu_cpu_type,下次建立 VM 會重新偵測 CPU 基準。

EN