VM and LXC Access
How virtual machines and LXC containers are accessed through Proxmox console, VNC proxy, terminal proxy, and API routes
VM and LXC Access
Arcturus-Prime provides browser-based access to virtual machines (QEMU) and LXC containers running on Proxmox hypervisors. This doc covers the different access methods and how they connect.
Access Methods
| Method | Component | Used For | Connection |
|---|---|---|---|
| VNC Console | VNCEmbed (noVNC) | Full VMs (graphical desktop) | WebSocket via Proxmox VNC proxy |
| Terminal | TerminalEmbed (xterm.js) | LXC containers (CLI) | WebSocket via Proxmox terminal proxy |
| API Proxy | /api/Tarn-Host-adminbox, /api/gateway | Management operations | HTTP proxy through Cloudflare Tunnel |
| SSH | Direct | Emergency/maintenance | SSH over Tailscale |
Proxmox Console (/admin/proxmox)
The admin Proxmox console page provides a unified interface for managing VMs and containers on Proxmox Izar-Host (10.42.0.2):
VNC for VMs
For QEMU virtual machines (e.g., Argo-OS TestVM on Tarn-Host, Kali pentest VM), the page embeds a noVNC viewer:
- Browser requests a VNC ticket from the Proxmox API
- Proxmox returns a one-time VNC ticket and websocket URL
- The noVNC client connects via WebSocket to
wss://10.42.0.2:8006/api2/json/nodes/{node}/qemu/{vmid}/vncwebsocket - Full graphical console with keyboard/mouse passthrough
Features: clipboard sync, display scaling, connection quality indicator.
Terminal for LXC Containers
For LXC containers, xterm.js provides a native terminal experience:
- Browser requests a terminal ticket from Proxmox
- Connection via
wss://10.42.0.2:8006/api2/json/nodes/{node}/lxc/{vmid}/vncproxy - Full ANSI terminal with color, resizing, scrollback (10,000 lines)
Pentest Console (/admin/pentest/console)
The pentest suite has its own console page with both VNCEmbed and TerminalEmbed components. It targets the Kali VM used for penetration testing:
- VNC view — full Kali desktop for GUI tools
- Terminal view — direct shell for CLI tools
- Multi-node — routes to Izar-Host or Tarn-Host via
?node=parameter in the/api/admin/pentestproxy
Meridian-Host Terminal (/admin/mm-terminal)
Direct terminal access to the Meridian-Host Unraid server (192.168.20.50 via Tailscale 100.64.0.15.30). Uses xterm.js connected via WebSocket. Authenticates with SSH credentials from the homelab service registry. 30-minute idle timeout.
Useful for:
- Docker container management on Unraid
- Disk health monitoring (
smartctl,mdcmd status) - Managing drone-Meridian-Host build VM
- File operations on the 100TB storage array
Playground Labs
Playground labs use the same VNCEmbed and TerminalEmbed components but connect to ephemeral containers/VMs provisioned by the lab engine (10.42.0.210:8094):
Lab Types by Access Method
| Lab | Access Method | Backend |
|---|---|---|
/playground/argo-os | VNC + Terminal | QEMU VM via lab engine |
/playground/containers | Terminal only | LXC container via lab engine |
/playground/terminal | Terminal only | LXC container via lab engine |
/playground/networking | Terminal only | LXC container via lab engine |
/playground/iac | Terminal only | LXC container via lab engine |
/playground/ollama | Terminal only | LXC container via lab engine |
/playground/rag | Terminal only | LXC container via lab engine |
Lab Provisioning Flow
- User clicks “Launch Lab” → LabLauncher component sends request to
/api/labs/healthto check availability - Lab engine (10.42.0.210:8094) provisions an ephemeral container or VM on Proxmox Izar-Host
- The lab network uses vmbr99 (10.99.0.1/24) — isolated from production
- SessionBar shows connection status and session timer
- TerminalEmbed/VNCEmbed connect to the provisioned instance
- On session end, the lab engine destroys the ephemeral instance
Dual-Node Failover
Labs can run on either Proxmox Izar-Host (Milky Way) or Proxmox Tarn-Host (Andromeda):
/api/playground/healthchecks both nodes/api/playground/switchcan move labs between nodes/api/playground/node-controlcan enable/disable individual nodes- This provides redundancy if one hypervisor is down for maintenance
Connection Diagram
Browser
├─ /admin/proxmox ──────→ Proxmox Izar-Host (10.42.0.2:8006) ──→ VMs/CTs
├─ /admin/pentest/console → Proxmox Izar-Host/Tarn-Host ──→ Kali VM
├─ /admin/mm-terminal ───→ Meridian-Host (100.64.0.15.30) ──→ Unraid shell
└─ /playground/* ─────────→ Lab Engine (10.42.0.210:8094)
├─→ Ephemeral LXC (terminal)
└─→ Ephemeral VM (VNC + terminal)