A modern, beautiful web dashboard for managing Proxmox Virtual Environment (PVE) with integrated Apache Guacamole console access.
- PAM (Local Users) and PVE (Proxmox Users) realm support
- Active Directory and LDAP integration ready
- Session management with secure token storage
- Auto-logout and session persistence
- Real-time Dashboard with live status updates
- Start, Stop, Reset operations with one click
- Resource Monitoring (CPU, Memory, Disk usage)
- Uptime Tracking for running instances
- Node-based Filtering and search capabilities
- Apache Guacamole Integration for seamless console access
- One-click console launch in new tabs
- Direct connection to VMs and LXCs
- No additional software required
- ShadCN UI Components for professional appearance
- Responsive Design - works on desktop, tablet, and mobile
- Dark/Light Mode support (coming soon)
- Real-time Updates every 30 seconds
- Progressive Web App capabilities
- Snapshot Management (restore last snapshot)
- Bulk Operations support
- Search and Filtering by name, status, and node
- Error Handling with user-friendly messages
- SSL Certificate handling for self-signed certificates
- Node.js 18+
- Proxmox VE Server (tested with PVE 7.x+)
- Apache Guacamole (optional, for console access)
- Clone the repository
git clone <your-repo-url>
cd proxmox-dashboard- Install dependencies
npm install- Configure your environment
cp .env.example .env.localEdit .env.local based on your setup:
For Local IP (self-signed certificates):
PROXMOX_HOST=https://192.168.50.7:8006
GUACAMOLE_HOST=http://192.168.50.183:8080
NODE_TLS_REJECT_UNAUTHORIZED=0 # Disable SSL verificationFor Domain (valid certificates):
PROXMOX_HOST=https://pve.sahane.in:8006
GUACAMOLE_HOST=https://guac.sahane.in
NODE_TLS_REJECT_UNAUTHORIZED=1 # Enable SSL verification- Start the development server
npm run dev- Open your browser
http://localhost:3000
- Clone and configure
git clone <your-repo-url>
cd proxmox-dashboard- Configure environment
Option A - Edit
docker-compose.ymlenvironment variables:
environment:
- PROXMOX_HOST=https://your-server:8006
- GUACAMOLE_HOST=http://your-guacamole:8080Option B - Create .env file (recommended):
cp .env.example .env
# Edit .env with your actual values- Deploy
docker-compose up -d# Build the container
podman build -t proxmox-dashboard .
# Run the container
podman run -d \
--name proxmox-dashboard \
-p 3000:3000 \
-e NODE_TLS_REJECT_UNAUTHORIZED=0 \
-e PROXMOX_HOST=https://192.168.50.7:8006 \
-e GUACAMOLE_HOST=http://192.168.50.183:8080 \
proxmox-dashboard# Build the image
docker build -t proxmox-dashboard .
# Run the container
docker run -d \
--name proxmox-dashboard \
-p 3000:3000 \
-e NODE_TLS_REJECT_UNAUTHORIZED=0 \
-e PROXMOX_HOST=https://192.168.50.7:8006 \
-e GUACAMOLE_HOST=http://192.168.50.183:8080 \
proxmox-dashboard-
API Access: Ensure your Proxmox user has appropriate permissions:
- VM.Audit (to view VMs)
- VM.PowerMgmt (to start/stop/reset VMs)
- VM.Console (for console access)
-
CORS Settings: If needed, configure CORS in Proxmox for your domain.
-
SSL Certificates: The dashboard handles self-signed certificates automatically.
- Connection Setup: Configure your VM connections in Guacamole
- User Permissions: Ensure users have access to their respective VMs
- Network Access: Ensure the dashboard can reach your Guacamole server
- Navigate to the dashboard URL
- Select your authentication realm (PAM, PVE, AD, LDAP)
- Enter your username and password
- Click "Sign in"
- View All VMs: Dashboard shows all accessible VMs and LXCs
- Start VM: Click the green "Start" button
- Stop VM: Click the red "Stop" button
- Reset VM: Use the dropdown menu and select "Reset"
- Console Access: Click "Console" to open Guacamole in a new tab
- Search: Use the search bar to find VMs by name or ID
- Filter by Status: Show only running, stopped, or all VMs
- Filter by Node: Show VMs from specific Proxmox nodes
- View Modes: Toggle between grid and table views
- Next.js 14 with App Router
- TypeScript for type safety
- ShadCN UI components with Tailwind CSS
- Zustand for state management
- React Query for server state management
- Next.js API Routes for secure proxying
- Proxmox REST API integration
- Apache Guacamole API integration
- JWT-based session management
- SSL/TLS support with self-signed certificate handling
- CSRF protection
- Input validation and sanitization
- Secure headers and CORS policies
- Framework: Next.js 14 with TypeScript
- UI Library: ShadCN UI (Radix UI + Tailwind CSS)
- State Management: Zustand + React Query
- HTTP Client: Axios
- Icons: Lucide React
- Styling: Tailwind CSS
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npm run type-check # Run TypeScript checkproxmox-dashboard/
├── src/
│ ├── app/ # Next.js App Router pages
│ │ ├── api/ # API routes (Proxmox proxy)
│ │ ├── dashboard/ # Dashboard page
│ │ └── login/ # Login page
│ ├── components/ # React components
│ │ ├── ui/ # ShadCN UI components
│ │ └── dashboard/ # Dashboard-specific components
│ └── lib/ # Utilities and services
│ ├── proxmox.ts # Proxmox API client
│ ├── store.ts # Zustand stores
│ └── utils.ts # Utility functions
├── public/ # Static assets
├── Containerfile # Docker/Podman container definition
├── docker-compose.yml # Docker Compose configuration
└── README.md # This file
1. SSL Certificate Errors
# Solution: Set environment variable
NODE_TLS_REJECT_UNAUTHORIZED=02. Authentication Failures
- Verify Proxmox server URL is correct
- Check username format (should include realm:
user@pve) - Ensure user has necessary permissions
3. VM Operations Not Working
- Check user permissions in Proxmox
- Verify VM is not locked or in a protected state
- Check Proxmox server logs for detailed errors
4. Console Access Issues
- Verify Guacamole server is accessible
- Check Guacamole connection configurations
- Ensure proper network connectivity
Enable debug logging by setting:
NODE_ENV=developmentWe welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Proxmox Team for the excellent virtualization platform
- Apache Guacamole for the remote desktop gateway
- ShadCN for the beautiful UI components
- Vercel for the Next.js framework
- Documentation: See this README and inline code comments
- Issues: Report bugs and feature requests via GitHub Issues
- Community: Join our discussions for help and feedback
Built with ❤️ for the Proxmox community