承接 nawasara/proxmox 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

nawasara/proxmox

Composer 安装命令:

composer require nawasara/proxmox

包简介

Proxmox VE management dashboard for the Nawasara superapp framework — cluster-aware VM/LXC inventory, lifecycle operations, snapshot management, and resource monitoring.

README 文档

README

Proxmox VE management for the Nawasara superapp framework — VM and LXC inventory, lifecycle control (start/stop/shutdown/reboot), snapshot management, live resource metrics, and a one-click console deep link, all surfaced from a local DB snapshot for speed and mutated through queue jobs for auditability.

Features

  • Cluster-aware inventory — single API token covers every node in a PVE cluster; one-shot fetch via /cluster/resources?type=vm
  • VM / LXC list — paginated, filterable by node, status, type, template; running/stopped/paused chips with live counts
  • Lifecycle actions — start, graceful shutdown, force stop, reboot, with wire:confirm dialogs that distinguish graceful from force-stop
  • Auto re-sync — every successful action chains a SyncProxmoxVmsJob so the UI reflects real Proxmox state (uptime, mem usage, locks) immediately after
  • Live status badges — in-row spinner while a queued/running action is in flight; red "X failed" hint for 5 minutes after a failure
  • Task log viewer — terminal-styled modal that streams the Proxmox task log (/nodes/{n}/tasks/{upid}/log) for any past action
  • Detail modal with:
    • Live (instant) CPU + Memory percentages from /status/current
    • 1h CPU and Memory sparklines from RRD AVERAGE (peak / avg supporting metrics)
    • Network interfaces parsed (MAC, bridge, firewall flag) from getVmConfig()
    • Disks listed with raw config string per device
    • OS type, boot order, description
  • Snapshot management — list, create (with optional vmstate / RAM capture for qemu), rollback, delete; UPID-tracked with up-to-10-minute timeout
  • Console deep link — opens the existing PVE web noVNC for the VM in a new tab (admins authenticate with their own browser session — API tokens can't issue cookie-bound vncproxy tickets)
  • Cluster overview — node summary cards (CPU / RAM / storage totals + per-node detail), polls every 30s idle, every 4s while a sync is in flight
  • Sync info bar showing last successful sync time, status counts, and a link to the audit log

The package follows the DB-cache + queue pattern from nawasara/sync: reads come from local snapshot tables; writes dispatch queue jobs that hit the Proxmox API and update the snapshot via content-hash diffing.

Installation

composer require nawasara/proxmox
php artisan migrate
php artisan db:seed --class="Nawasara\Proxmox\Database\Seeders\PermissionSeeder" --force

The package is auto-discovered by Laravel — no manual provider registration required.

Proxmox API Token Setup

The package authenticates with a PVE API Token, which can be revoked or scope-restricted from the Proxmox UI without touching the underlying user.

1. Sign in to the Proxmox web UI

Open https://your-proxmox-host:8006 and sign in as root@pam (or any user with Sys.Audit + VM.* permissions on /).

2. Open API Tokens

Navigate to Datacenter → Permissions → API Tokens.

3. Create a token

Click Add:

  • User — choose the user that owns the token (e.g. root@pam)
  • Token ID — short identifier (e.g. nawasara)
  • Privilege Separation — uncheck if you want the token to inherit the user's permissions, OR leave checked and assign granular permissions separately (recommended for least-privilege)
  • Expire — leave empty for permanent

Click Add. The dialog displays the token secret once — copy it now.

The token is identified by {user}@{realm}!{tokenid} (e.g. root@pam!nawasara).

4. Grant permissions

If you used Privilege Separation, the token has no permissions until you grant them:

Datacenter → Permissions → Add → API Token Permission:

Path Role Used for
/ PVEAuditor Read cluster, nodes, VM list, status
/vms/<vmid> (or /vms) PVEVMAdmin Lifecycle actions, snapshots
/nodes/<node> PVEAuditor Per-node detail, RRD data

For a quick start: grant PVEAdmin on / to a single dedicated token, then narrow it down later.

5. Self-signed certificates

If your Proxmox cluster uses a self-signed certificate (default on fresh installs), set Verify SSL to false in the Vault configuration below. For production, install a trusted certificate and keep verification on.

Storing credentials in Vault

  1. Open Nawasara → /nawasara-vault
  2. Choose the Proxmox group
  3. Fill in:
    • Hosthttps://pve.example.go.id:8006 (no trailing slash, include the port)
    • Token ID — full identifier user@realm!tokenname
    • Token Secret — the value displayed once in step 3
    • Verify SSLtrue if your PVE has a trusted cert, false for self-signed
  4. Click Test Connection — should respond with cluster version + node count
  5. Save

The package picks up credentials from Vault automatically.

Verification

  1. Sidebar — "Proxmox" workspace appears with "Virtual Machines" and "Nodes" entries
  2. Nodes page — cluster summary cards (Nodes, VMs, vCPU, Memory, Storage) populate after the first sync
  3. VMs page — list shows every VM and LXC across the cluster
  4. Click a row → Detail — sparklines render, network interfaces and disks listed, snapshot section visible (if you have proxmox.vm.snapshot)
  5. Click Start / Shutdown on a non-template VM — status badge shows a spinner; the table auto-refreshes when the task completes
  6. Click "Lihat Log" — modal shows the Proxmox task log for the most recent action

Error handling reference

Symptom Cause Fix
HTTP 401 on test connection Token ID or secret typo Re-paste from PVE; full ID format is user@realm!tokenname
HTTP 403 on lifecycle action Token lacks VM.PowerMgmt on /vms/<id> Grant PVEVMAdmin on /vms (or specific path)
HTTP 500: Not a HASH reference Mutation sent without form body (legacy bug) Already handled — client uses asForm() for all POST mutations
cURL: SSL certificate problem Self-signed cert + verify_ssl=true Set Vault verify_ssl to false, or install a trusted cert
Action stuck at "Starting…" forever Task didn't appear in /tasks/{upid}/status Check Proxmox /var/log/pveproxy/access.log; raise the job timeout if the task is genuinely slow
VMs missing from list Token can't see them Token needs at least PVEAuditor on the path containing the VMs (/vms or /pool/<poolname>)

Permissions

Permission Description
proxmox.node.view View cluster + node list
proxmox.vm.view View VM/LXC list and detail
proxmox.vm.lifecycle Start, stop, shutdown, reboot
proxmox.vm.snapshot Create, rollback, delete snapshots
proxmox.vm.console Open the noVNC console
proxmox.sync.execute Trigger a manual cluster re-sync

All permissions are auto-assigned to the developer role by the seeder.

Future cross-link with iTop

The nawasara_proxmox_vms table reserves an itop_server_id column (nullable, indexed). When the nawasara/itop integration ships, the sync job will populate this with the matched ItopServer.id (where finalclass = VirtualMachine) so a single VM can be navigated from either side.

Author

Pringgo J. Saputro <odyinggo@gmail.com>

License

MIT

nawasara/proxmox 适用场景与选型建议

nawasara/proxmox 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 73 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 05 月 09 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「laravel」 「Virtualization」 「cluster」 「vm」 「Proxmox」 「LXC」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 nawasara/proxmox 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 nawasara/proxmox 我们能提供哪些服务?
定制开发 / 二次开发

基于 nawasara/proxmox 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 73
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 47
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-05-09