npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

monitorix-webui

v0.2.1

Published

Interactive web UI for Monitorix. Reads RRD files directly via rrdtool, serves a React + Tailwind dashboard with live charts, summary cards, and auto-discovered modules.

Downloads

332

Readme

monitorix-webui

npm version license node

Interactive web UI for Monitorix — reads RRD files directly, serves a React + Tailwind dashboard with real interactive charts.

npx monitorix-webui

That's it. Point it at a host running Monitorix, get a modern dashboard with zoom, pan, time-range filters, summary cards, and live refresh — without touching Monitorix itself.

Why

Monitorix ships static PNG graphs by design. They're great, but you can't zoom, pan, hover, or filter by time. This tool keeps Monitorix's lightweight Perl/RRD backend completely untouched and adds an opt-in interactive UI on top:

  • Reads /etc/monitorix/monitorix.conf (including conf.d/ overrides)
  • Reads *.rrd files from /var/lib/monitorix/
  • Auto-discovers every enabled module — no per-module config required
  • Tier 1 (curated): system, kern, proc, net, fs — polished charts + summary cards
  • Tier 2 (fallback): every other enabled module — auto-grouped DSes, generic styling

Requirements

  • Node.js 20+
  • rrdtool binary in PATH (already installed if you're running Monitorix)
  • Read access to the Monitorix data directory (run as the monitorix user, or as a member of its group)

Default port is 8088. Port 8080 is intentionally avoided — Monitorix's built-in httpd_builtin daemon listens on 8080 by default.

Install / run

# Run without installing
npx monitorix-webui

# Install globally
npm install -g monitorix-webui
monitorix-webui

# With basic auth + custom port
npx monitorix-webui --port 9000 --auth admin:s3cret

# Custom paths
npx monitorix-webui \
  --conf /etc/monitorix/monitorix.conf \
  --rrd-path /var/lib/monitorix \
  --port 8088

# All env vars
MONITORIX_CONF=/etc/monitorix/monitorix.conf \
MONITORIX_RRD_PATH=/var/lib/monitorix \
PORT=8088 BASIC_AUTH=admin:s3cret \
npx monitorix-webui

CLI flags

| Flag | Env | Default | |----------------------|----------------------|--------------------------------------| | --rrd-path <dir> | MONITORIX_RRD_PATH | (read from monitorix.conf base_lib) | | --conf <file> | MONITORIX_CONF | /etc/monitorix/monitorix.conf | | --port <n> | PORT | 8088 | | --host <addr> | HOST | 0.0.0.0 | | --base-path <p> | BASE_PATH | / | | --auth <user:pass> | BASIC_AUTH | (none) | | --refresh <sec> | | 60 | | --rrdtool <bin> | RRDTOOL_BIN | rrdtool | | -h, --help | | | | -v, --version | | |

Reverse proxy

Mount it under a sub-path behind nginx, Caddy, or anything else:

monitorix-webui --base-path /monitorix-ui --port 8088
location /monitorix-ui/ {
    proxy_pass http://127.0.0.1:8088;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
}

systemd unit

# /etc/systemd/system/monitorix-webui.service
[Unit]
Description=Monitorix interactive web UI
After=monitorix.service
Requires=monitorix.service

[Service]
User=monitorix
Group=monitorix
ExecStart=/usr/bin/npx -y monitorix-webui --port 8088 --auth admin:CHANGEME
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now monitorix-webui

API

The web UI is just a client over a tiny JSON API. Use it directly if you want to wire metrics into other dashboards.

| Endpoint | Description | |------------------------------------------|----------------------------------------------| | GET /api/system | Hostname, rrdtool version, baseLib | | GET /api/catalog | Discovered modules + chart specs (cached 60s)| | GET /api/series/:module/:chartId | Time-series JSON for one curated chart | | GET /api/latest/:module?ds=a,b,c | Most-recent value per DS | | GET /api/raw/:module | Flat dump of every DS in a module's RRD | | GET /healthz | Liveness |

from and to query params accept anything rrdtool xport accepts: now, now-6h, now-1d, now-7d, ISO-8601, or unix epoch.

Architecture

                ┌──────────────────────────────────────┐
                │  monitorix-webui (Node 20+, Hono)    │
                │  ├─ Apache-style monitorix.conf parser
                │  ├─ rrdtool xport / info bridge      │
                │  ├─ 60s catalog cache                │
                │  └─ static SPA (React + Tailwind v4) │
                └──────────────────────────────────────┘
                                  ▲   reads
                                  │
                  ┌───────────────┴────────────────┐
                  │  /etc/monitorix/monitorix.conf │
                  │  /var/lib/monitorix/*.rrd      │
                  └────────────────────────────────┘
                                  ▲   spawns
                                  │
                                  rrdtool (existing system binary)

Zero native dependencies. Single Node process. Designed to live alongside Monitorix on the same host.

Development

git clone https://github.com/mrbeandev/monitorix-webui
cd monitorix-webui
npm install

# Backend on :8088
npm run dev:server -- --conf /etc/monitorix/monitorix.conf

# Frontend with HMR on :5173 (proxies /api to :8088)
npm run dev:webui

# Production build (webui → packages/server/static, server → dist/)
npm run build
node packages/server/dist/cli.js

Roadmap

  • [ ] More Tier-1 curated metadata (netstat, disk, process, mail, common services)
  • [ ] URL-state for time-range + selected module (shareable links)
  • [ ] CSV export per chart
  • [ ] Multi-host dashboard
  • [ ] Dark/light theme toggle (currently dark-only)
  • [ ] Per-DS color overrides via config

Contributing

Issues and pull requests welcome. For larger changes, please open an issue first to discuss what you'd like to change.

License

MIT