Skip to content

Repository files navigation

Server Manager

CILicense: MITNode.js

A self-hosted, mobile-first Linux observability dashboard. Install it on a VPS to inspect CPU, memory, swap, disks, network throughput, active sessions, and processes by system user in real time — without sending telemetry to a third-party SaaS.

Open the live demo →

What it solves

Small VPS deployments often need more than htop on a laptop but less than a full Prometheus/Grafana stack. Server Manager gives operators an installable PWA with a three-second Server-Sent Events stream and a deliberately small operational footprint.

Highlights

  • real Linux telemetry through systeminformation;
  • Server-Sent Events instead of polling every widget;
  • processes grouped by Unix user and ranked by resource use;
  • installable responsive PWA;
  • HttpOnly, SameSite session cookies with rolling expiration;
  • login rate limiting and timing-safe password comparison;
  • production fail-closed when SM_PASSWORD is absent;
  • process command lines and login IPs removed from the browser payload;
  • Nginx, HTTPS, PM2, UFW, and boot persistence automation;
  • CI tests, dependency audit, public-boundary gate, and full-history Gitleaks.

Architecture

Linux host
└─ systeminformation collectors
└─ sanitized telemetry snapshot
└─ Express API + authenticated SSE
└─ dependency-free PWA

The public demo renders clearly marked simulated telemetry. A self-hosted installation uses the same UI with live host metrics.

Quick start

git clone https://github.com/lippdev/servermanager.git
cd servermanager
npm ci
SM_PASSWORD='use-a-long-random-password' npm start

The development server binds to 127.0.0.1:3000. Set HOST explicitly only when you understand the network exposure.

Production deployment

Download and inspect the installer before executing it as root:

curl -fsSLO https://raw.githubusercontent.com/lippdev/servermanager/main/deploy/install.sh
less install.sh
sudo DOMAIN=panel.example.com SM_PASSWORD='use-a-long-random-password' CERTBOT_EMAIL=ops@example.com bash install.sh

See DEPLOY.md for prerequisites, verification, upgrades, and operation.

Configuration

VariableDefaultPurpose
HOST127.0.0.1HTTP bind address
PORT3000Internal HTTP port
SM_PASSWORDnoneRequired when NODE_ENV=production
NODE_ENVdevelopmentEnables fail-closed production behavior and secure cookies

Security model

Server Manager exposes sensitive host telemetry and must stay behind HTTPS. It is intentionally read-only: it does not kill processes, run commands, or mutate the host. Authentication sessions live in memory, expire after 12 hours of inactivity, and reset on process restart. For multi-user organizations or SSO, place an identity-aware proxy in front rather than expanding the built-in single-operator auth.

Development

npm ci
npm test
npm run audit:public
npm audit --omit=dev --audit-level=high

Tests exercise fail-closed production startup, cookie authentication, anonymous rejection, and telemetry redaction.

Author

Built by Filipe Moreira, full-stack software engineer — GitHub.

License

MIT

About

Self-hosted, real-time Linux VPS observability dashboard and mobile PWA

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages