ControlCenter
<div align="center"> <h3>Next-Generation Zero-Trust Infrastructure & Server Management Dashboard</h3> <p>Real-time machine telemetry, Web-based SSH terminals, Obsidian-style infrastructure star graph, and zero-trust daemon orchestration.</p> <p> <a href="https://code.weexnes.dev/ControlCenter"><strong>Web Dashboard Repository</strong></a> β’ <a href="https://code.weexnes.dev/ControlCenter/ControlCenter.Daemon"><strong>Daemon Agent Repository</strong></a> </p> </div>
π Overview
ControlCenter is a self-hosted, lightweight, and database-free infrastructure management hub built with Nuxt 3, Vue 3, TailwindCSS, and DaisyUI.
It provides enterprise-grade observability and control across physical servers, cloud VMs, edge devices, and local networking equipment (routers, switches, firewalls, subnets) with out-of-the-box HTTPS/WSS security and zero open incoming ports on managed nodes.
β¨ Key Features
- π Zero-Trust Outgoing Node Connections: Managed nodes run the lightweight
controlcenter-daemonand initiate outbound secure WebSocket (wss://) connections to the server. No incoming ports need to be forwarded or exposed on client machines. - π Obsidian-Style Star Graph Topology (
/topology):- Interactive HTML5 canvas with custom force-directed spring and repulsion physics.
- Multi-homed IP matching: Nodes with multiple network interfaces (physical LAN, Netmaker VPN, Wireguard, Docker bridges) automatically link to matching router CIDR subnets simultaneously.
- Satellite port badges displaying live reachability dots, latency, and custom Public Domain / Reverse Proxy URLs.
- Interactive Device & Network Inventory list below canvas with search, filter tabs, and 1-click graph visibility toggles.
- π» Integrated Web-SSH Terminal (
xterm.js):- Seamless, low-latency interactive SSH terminal right in your browser over encrypted WebSockets.
- Automated Ed25519 SSH keypair generation and management with zero-touch node authentication.
- π Real-Time Telemetry & Observability:
- Live streaming CPU usage, RAM utilization, storage mounts, network transfer rates, system uptime, and OS details.
- π‘οΈ Zero-Database File Architecture:
- Fast, portable, and clean state persistence directly in
~/.controlcenter/settings.json.
- Fast, portable, and clean state persistence directly in
- π Out-of-the-Box HTTPS & Certificate Fingerprint Pinning:
- Auto-generated self-signed SSL certificate with full SAN IP/DNS mapping.
- Preloaded ESM SSL injector ensuring native HTTPS/WSS when run under
systemd,AUR, or CLI without manual environment configuration.
ποΈ Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β User Web Browser β
β (Nuxt 3 / Vue 3 SPA + xterm.js + Canvas Graph) β
ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
β HTTPS / WSS
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ControlCenter Server (Nitro / H3) β
β - Auto-SSL Preloader (HTTPS / WSS on Port 4382) β
β - Zero-Trust Daemon Manager & Web-SSH Gateway β
β - CIDR Multi-Homed Network Engine & Reachability Prober β
β - State Storage: ~/.controlcenter/settings.json β
ββββββββββββββββ²ββββββββββββββββββββββββββββββββ²βββββββββββββββ
β WSS Outbound Handshake β WSS Outbound Handshake
β (Port 4382) β (Port 4382)
ββββββββββββββββ΄βββββββββββββββ ββββββββββββββββ΄βββββββββββββββ
β Node 1 (Linux Server / VM) β β Node 2 (Edge / Multi-Homed) β
β ControlCenter.Daemon β β ControlCenter.Daemon β
β - CPU, RAM, Disk, Net β β - LAN: 192.168.178.67 β
β - Process Collector β β - VPN: 100.64.0.12 β
βββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββ
π Quick Start
Option 1: Arch Linux / AUR Installation (Recommended)
# Install ControlCenter Web from AUR
yay -S controlcenter
# Enable and start the background service
sudo systemctl enable --now controlcenter
Access the dashboard at https://<server-ip>:4382.
Option 2: Manual Installation & Build
# Clone the repository
git clone https://code.weexnes.dev/ControlCenter.git
cd ControlCenter.Web
# Install dependencies
npm install
# Build the production application
npm run build
# Start the server (runs native HTTPS/WSS)
PORT=4382 node .output/server/index.mjs
# or use the helper script:
./start.sh
π‘ Connecting Nodes (Daemon Setup)
On any machine you want to monitor, install and connect the daemon:
# Download and install daemon
curl -sSL https://code.weexnes.dev/ControlCenter/ControlCenter.Daemon/~raw/master/install.sh | sudo bash
# Connect daemon to ControlCenter server (replaces 100.64.0.4 with your server IP)
controlcenter-daemon --address 100.64.0.4:4382
New nodes automatically appear in Pending Approval on your dashboard for zero-trust authorization.
π§ͺ Security & Testing
ControlCenter includes an automated security test suite (Vitest) covering:
- Authentication & JWT token security
- Unauthenticated API endpoint blocking
- WebSocket handshake authorization (
/ws/daemon&/ws/ssh) - Machine auto-enrollment authorization
- CIDR multi-homed subnet matching
- SSH keypair generation and permission safety
Run all tests:
npx vitest run
π Project Structure
ControlCenter.Web/
βββ .docs/ # Developer documentation & architecture specs
βββ components/ # Vue components (Graph, Drawer, Inventory List, Modals)
βββ core/ # TypeScript definitions & global settings schema
βββ pages/ # Frontend routes (Dashboard, Topology, Login, Setup)
βββ server/
β βββ api/ # REST API endpoints (Auth, Machines, Infrastructure, SSH)
β βββ middleware/ # JWT Authentication middleware
β βββ routes/ws/ # Encrypted WebSocket handlers (/ws/daemon & /ws/ssh)
β βββ util/ # Daemon manager, CIDR matcher, TCP reachability prober
βββ tests/security/ # Vitest security & integration test suites
βββ nuxt.config.ts # Nuxt configuration & Nitro auto-SSL preloader
βββ start.sh # Startup and certificate initialization script
π License
GPL-3.0 License. Built with β€οΈ for self-hosters and system administrators.
Build Artifacts
Download successful build outputs & binaries