> system-ops

Lightweight operations console and telemetry dashboard for single Ubuntu VPS deployments.

What is it?

system-ops is a fast, low-overhead operations dashboard engineered specifically for single-node Ubuntu servers. It monitors Ollama local LLMs, PM2 process fleets, system health, PostgreSQL backup logs, and real-time Nginx traffic with GeoIP mapping.

Unlike Prometheus or Grafana stacks that consume 500MB+ of RAM, system-ops operates in under 35MB of memory as a single self-contained Node.js service.

Core Capabilities

Installation (Native Systemd)

Automated installer on Ubuntu 22.04 / 24.04:

git clone https://github.com/dineshkorukonda/system-ops.git /opt/system-ops
cd /opt/system-ops
sudo bash scripts/install.sh

Manual installation:

# 1. Create unprivileged ops user
useradd -r -s /bin/false -d /opt/system-ops ops
usermod -aG systemd-journal,adm ops

# 2. Install dependencies & configure env
npm ci --omit=dev
cp .env.example .env
nano .env

# 3. Setup permissions and sudoers rules
chown -R ops:ops /opt/system-ops
chmod 750 /opt/system-ops && chmod 600 /opt/system-ops/.env
cp sudoers/system-ops-sudoers /etc/sudoers.d/system-ops
chmod 0440 /etc/sudoers.d/system-ops

# 4. Enable systemd service
cp systemd/system-ops.service /etc/systemd/system/
systemctl daemon-reload && systemctl enable --now system-ops.service

Installation (Docker Compose)

Run containerized with read-only host mounts:

git clone https://github.com/dineshkorukonda/system-ops.git
cd system-ops
cp .env.example .env
docker compose up -d

Environment Configuration

Variable Default Description
APP_PASSWORD (required) Console login password
SESSION_SECRET (required) Cookie signing secret
PORT 9080 Loopback HTTP listen port
HOST 127.0.0.1 Network interface binding
PM2_USERS deploy,root Users whose PM2 daemons to inspect
OLLAMA_URL http://127.0.0.1:11434 Local Ollama API endpoint
NGINX_LOG_PATH /var/log/nginx/access.log Access log path for traffic analytics
BACKUPS_DIR /var/backups Directory where backup dump files are stored

API Reference

Method Endpoint Auth Description
GET /health No Liveness health check
POST /api/login No Session login
POST /api/logout No Session logout
GET /api/v2/system/snapshot Yes Host health snapshot
GET /api/v2/system/processes Yes Top process table
GET /api/v2/pm2/snapshot Yes PM2 process fleet
GET /api/v2/pm2/logs Yes PM2 application logs
GET /api/v2/backups/files Yes Backup dump files
GET /api/v2/traffic/analytics Yes Traffic analytics & GeoIP

Architecture & Security

system-ops runs strictly on localhost (127.0.0.1:9080) behind Nginx with SSL termination. All host inspection commands (systemctl, journalctl, pm2) execute through fine-grained passwordless sudo rules in /etc/sudoers.d/system-ops.