- JSON 52.1%
- Vue.js Component 23.8%
- TypeScript 18.7%
- Markdown 4%
- Yaml 0.6%
- Shell 0.6%
- JavaScript 0.2%
- XML 0%
- Scss 0%
ControlCenter
Next-Generation Zero-Trust Infrastructure & Server Management Dashboard
Real-time machine telemetry, Web-based SSH terminals, Obsidian-style infrastructure star graph, and zero-trust daemon orchestration.
๐ 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.