Introduction¶
MonsterOps is a self-hosted network operations platform built around FreeRADIUS. It gives you a single dashboard for the whole operational surface around a RADIUS deployment — users and groups, NAS devices, live sessions and accounting, a safe firewall manager, VPN tunnels, automation, and a REST API — for ISPs, WISPs, and enterprise networks.
It reads and writes the standard FreeRADIUS SQL schema, so it sits alongside your existing FreeRADIUS rather than replacing it. One Python package, no Node.js, no build step.
How this documentation is organised¶
The left-hand navigation mirrors the application's own sidebar, so a page here maps to a tab you click in the app:
- Getting Started — install MonsterOps, create your first admin, and connect FreeRADIUS.
- RADIUS — the day-to-day: Users, Groups, IP Pools, and Realms & Authentication.
- Network — NAS clients, the NAS Manager, VPN, and the Firewall.
- Monitoring — Sessions, Logs, Reports, and Health.
- Automation, Alerting, and System — rules, notifications, webhooks, integrations, and settings.
- Reference — environment variables, the CLI, architecture, and the plugin system.
Every module page follows the same shape: what the module is for, where to configure things, the common tasks, and the problems you may hit with their fixes.
Where each page fits¶
Each module page tells you what it does, walks the real tabs and fields, lists the handful of things you actually do there, and — importantly — the gotchas, because a few features (the Firewall especially) can cut off access if used carelessly.
What MonsterOps is not¶
- It does not replace FreeRADIUS — it manages the data FreeRADIUS reads. FreeRADIUS still does the authentication.
- It does not rewrite your FreeRADIUS config files, except
proxy.confwhen you use the Realms module. - It is not multi-tenant SaaS — it's a self-hosted app you run on your own server.
Why I built MonsterOps¶
I've been a network engineer for many years, and throughout my career I've run into the same problem at multiple companies.
Most customer-facing devices (especially MikroTik CPEs) only supported local users or RADIUS, while only the core routers and switches were integrated with TACACS or managed through a jump server. Managing hundreds of devices that way quickly becomes painful.
At one company I decided to change that. Since TACACS wasn't an option for many of our devices, I built a FreeRADIUS-based authentication system for the entire CPE fleet. The project was progressing well, but before it could be fully deployed I left the company. Like many internal tools built by a single engineer, it slowly disappeared into the corporate void.
A few years later I started over from scratch.
Originally the project used Next.js, but over time I realized I was spending more time fighting the framework than building the application itself. MonsterOps doesn't need a massive JavaScript ecosystem — it needs to be simple to install, simple to maintain, and reliable. So I threw everything away and rebuilt it using plain Web Components, ES modules, FastAPI, and PostgreSQL. No Node.js. No build step. Just a Python package.
As I rebuilt it, I kept adding the tools I wished I'd had over the years: managing multiple NAS devices from one place, bulk operations across routers, configuration backups, authentication logs, VPN management, firewall automation, country blocking, Active Directory integration, reporting, and everything else that normally requires opening half a dozen different applications.
At some point I realized I wasn't building a FreeRADIUS GUI anymore.
I was building the operational control plane I always wanted to have.
MonsterOps exists because I got tired of stitching together dozens of disconnected tools just to manage a network. My goal isn't to replace excellent projects like FreeRADIUS, Grafana, or Zabbix — they each do their job incredibly well. The goal is to bring the operational workflow around them into a single place.
I'm sure there are things I haven't thought of yet. That's one of the reasons this project is open source. If you've run into the same problems I have, I hope MonsterOps saves you some time. If you find something that could be improved, or if there's a feature you've always wished existed, open an issue and let me know. Many of the features in MonsterOps started exactly that way: as something I needed on a production network.
Thanks for giving my project a try.
Ready? Head to Requirements, then Installation.
MonsterOps