Skip to main content
Integrations

VM and LXC Access

How virtual machines and LXC containers are accessed through Proxmox console, VNC proxy, terminal proxy, and API routes

February 23, 2026

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

MethodComponentUsed ForConnection
VNC ConsoleVNCEmbed (noVNC)Full VMs (graphical desktop)WebSocket via Proxmox VNC proxy
TerminalTerminalEmbed (xterm.js)LXC containers (CLI)WebSocket via Proxmox terminal proxy
API Proxy/api/Tarn-Host-adminbox, /api/gatewayManagement operationsHTTP proxy through Cloudflare Tunnel
SSHDirectEmergency/maintenanceSSH 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:

  1. Browser requests a VNC ticket from the Proxmox API
  2. Proxmox returns a one-time VNC ticket and websocket URL
  3. The noVNC client connects via WebSocket to wss://10.42.0.2:8006/api2/json/nodes/{node}/qemu/{vmid}/vncwebsocket
  4. 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:

  1. Browser requests a terminal ticket from Proxmox
  2. Connection via wss://10.42.0.2:8006/api2/json/nodes/{node}/lxc/{vmid}/vncproxy
  3. 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/pentest proxy

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

LabAccess MethodBackend
/playground/argo-osVNC + TerminalQEMU VM via lab engine
/playground/containersTerminal onlyLXC container via lab engine
/playground/terminalTerminal onlyLXC container via lab engine
/playground/networkingTerminal onlyLXC container via lab engine
/playground/iacTerminal onlyLXC container via lab engine
/playground/ollamaTerminal onlyLXC container via lab engine
/playground/ragTerminal onlyLXC container via lab engine

Lab Provisioning Flow

  1. User clicks “Launch Lab” → LabLauncher component sends request to /api/labs/health to check availability
  2. Lab engine (10.42.0.210:8094) provisions an ephemeral container or VM on Proxmox Izar-Host
  3. The lab network uses vmbr99 (10.99.0.1/24) — isolated from production
  4. SessionBar shows connection status and session timer
  5. TerminalEmbed/VNCEmbed connect to the provisioned instance
  6. 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/health checks both nodes
  • /api/playground/switch can move labs between nodes
  • /api/playground/node-control can 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)
proxmoxvncterminallxcvmnoVNCxterm