Rob Bond a4bf56bdd0 feat: auto-expand single node and filter-matched nodes
- When only one node exists, expand its list by default
- When filtering, auto-expand all nodes with matching results
- Use useMemo for filter/grouping performance

Backlog: mark Search/Filter as done

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 13:50:18 +01:00
2026-05-07 06:41:36 +01:00
2026-05-07 06:41:36 +01:00
2026-05-07 06:41:36 +01:00
2026-05-07 06:41:36 +01:00
2026-05-07 06:41:36 +01:00
2026-05-07 06:41:36 +01:00
2026-05-07 06:41:36 +01:00
2026-05-07 06:41:36 +01:00

Proxmox Monitor

A real-time dashboard for monitoring Proxmox VE nodes, VMs, and LXC containers.

Features

  • Node overview — CPU, memory, uptime, and load for each Proxmox node
  • VM & LXC tracking — status, resource usage across all nodes
  • Summary cards — total nodes, running/stopped VMs, aggregate memory
  • Auto-refresh — polling every 30s (configurable)
  • Tabbed navigation — switch between Nodes, VMs, and LXCs

Tech Stack

  • Framework — Next.js 15 (App Router)
  • UI — React 19, Tailwind CSS 4
  • Data fetching — SWR (auto-refresh), Axios
  • Proxmox — API2 Token-based auth

Getting Started

1. Configure environment variables

Copy the example file and fill in your Proxmox credentials:

cp .env.example .env.local

.env.local contents:

PROXMOX_API_URL=https://your-proxmox-host:8006/api2/json
PROXMOX_TOKEN_ID=root@pam!token-name
PROXMOX_TOKEN_SECRET=your-secret-uuid
API_POLL_INTERVAL=30000
NODE_TLS_REJECT_UNAUTHORIZED=0

Creating an API token in Proxmox: Datacenter > Permissions > API Tokens

2. Install dependencies

npm install

3. Run the development server

npm run dev

Open http://localhost:3000 in your browser.

4. Build for production

npm run build
npm start

Project Structure

src/
├── app/
│   ├── api/
│   │   ├── nodes/route.js   # Proxmox node stats
│   │   ├── vms/route.js     # QEMU VMs across all nodes
│   │   ├── lxc/route.js     # LXC containers across all nodes
│   │   └── status/route.js  # Aggregated summary
│   ├── layout.js
│   └── page.js
├── components/
│   ├── Dashboard.js          # Main dashboard with tabs & summary
│   ├── NodeList.js           # Node cards
│   ├── NodeCard.js           # Single node display
│   ├── VMList.js             # VM list view
│   ├── LXCList.js            # LXC list view
│   └── StatusBadge.js        # Online/good/warn/error/dead
└── lib/
    └── proxmox.js            # Proxmox API client & data mappers

Environment Variables

Variable Required Description
PROXMOX_API_URL Yes Base URL of the Proxmox API
PROXMOX_TOKEN_ID Yes API token ID (e.g. root@pam!monitorapp)
PROXMOX_TOKEN_SECRET Yes API token secret
API_POLL_INTERVAL No Refresh interval in ms (default: 30000)
NODE_TLS_REJECT_UNAUTHORIZED No Set to 0 for self-signed certs

API Routes

Route Method Description
/api/nodes GET All Proxmox nodes
/api/vms GET All QEMU VMs
/api/lxc GET All LXC containers
/api/status GET Aggregated summary stats
Description
monitor proxmox
Readme 266 KiB
Languages
JavaScript 98.5%
CSS 1%
TypeScript 0.5%