Net2Net-Local-RADIUS-Manager

Net2Net-Local-RADIUS-Manager

Docker app from Chris Nortje's Repository

Overview

Local, per-WISP MikroTik PPPoE RADIUS manager. Stores data inside the mapped appdata folder. Exposes the web portal on 8080 and RADIUS authentication/accounting on UDP 1812/1813.

Net2Net Local RADIUS Manager

Standalone, per-WISP RADIUS management software for MikroTik PPPoE networks. It replaces MikroTik User Manager, integrates with the WISP's local UISP CRM, and provides branded portals for Net2Net, WISP staff, and customers.

Current milestone

The first working scaffold includes:

  • FastAPI service with health, bootstrap, dashboard, package, subscriber, router and IP-pool endpoints
  • PostgreSQL-first schema designed to coexist with the standard FreeRADIUS SQL tables
  • React/Vite web dashboard with permanent Net2Net sub-branding
  • Windows + WSL2 bootstrap scripts (no Docker)
  • Explicit boundaries for UISP sync, MikroTik API, CoA and User Manager import work

Docker / Unraid beta

The container runs the web portal, management API and RADIUS authentication/accounting service in one local WISP appliance. It persists all operational data under /data.

Ports:

  • 8080/tcp — administrator and client portal
  • 1812/udp — RADIUS authentication
  • 1813/udp — RADIUS accounting

Before the first start, set the initial Super Admin and WISP Admin passwords. Those are used only when the database is empty. After signing in, set the Application secret, RADIUS shared secret and UISP API settings under Settings → Local platform secrets. Include the mapped /data directory in the Unraid backup schedule.

For a local Docker test:

Copy-Item .env.example .env
# Replace every secret in .env first.
docker compose up --build

Open http://SERVER-IP:8080. The manual Unraid import template is unraid/net2net-local-radius.xml. It is intentionally a beta template until an image registry and final public repository URL are selected.

The Super Admin can create and download consistent SQLite backups from Settings → Backup and move. The backup includes local platform settings. The container retains the latest 14 backups by default. For a complete server migration, stop the old container, copy its mapped /data appdata folder, deploy the new container, restore the backup from the web interface, and point MikroTiks to the new RADIUS address.

Run the development build

Web interface

cd apps/web
npm install
npm run dev

Open http://localhost:5173.

API (Windows preview)

cd apps/api
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -e ".[dev]"
Copy-Item ..\..\.env.example ..\..\.env
uvicorn app.main:app --reload --port 8000

The API uses in-memory preview data until DATABASE_URL is connected in the next milestone. Open http://localhost:8000/docs.

WSL2 services

Run PowerShell as Administrator:

.\scripts\install-windows.ps1

The installer enables WSL2/Ubuntu when needed and then installs PostgreSQL, FreeRADIUS, its PostgreSQL driver, Redis, Python and supporting tools inside Ubuntu. It intentionally does not alter any MikroTik router.

Operating model

  • One isolated installation per WISP
  • WISP-specific branding with permanent "Powered by Net2Net Local RADIUS Manager"
  • UISP is the CRM and billing source of truth
  • A confirmed UISP customer can own multiple PPPoE services
  • UISP suspension throttles every linked PPPoE service to 8k/8k
  • Packages show advertised rates while storing separate provisioned rates (for example 5/5 displayed, 6/6 provisioned)
  • Private and public address pools allocate the next available address
  • Routers are registered manually by OSPF loopback IP and use the internal RouterOS API

See docs/architecture.md for the working architecture and delivery stages.

Download Statistics

227
Total Downloads

Related apps

Details

Repository
botchris/net2netradius:latest
Last Updated2026-09-29
First Seen2026-09-17

Runtime arguments

Web UI
http://[IP]:[PORT:8080]
Network
bridge
Shell
sh
Privileged
false

Template configuration

Web portalPorttcp

Administrator and customer portal.

Target
8080
Default
8080
Value
8080
RADIUS authenticationPortudp

MikroTik RADIUS authentication port.

Target
1812
Default
1812
Value
1812
RADIUS accountingPortudp

MikroTik RADIUS accounting port.

Target
1813
Default
1813
Value
1813
Application dataPathrw

Persistent database, branding, and backups. Include this folder in Unraid backups.

Target
/data
Default
/mnt/user/appdata/net2net-radius
Value
/mnt/user/appdata/net2net-radius
Initial Super Admin passwordVariable

Used only on the first start, when the database is empty.

Target
BOOTSTRAP_SUPERADMIN_PASSWORD
Initial WISP Admin passwordVariable

Used only on the first start, when the database is empty.

Target
BOOTSTRAP_WISPADMIN_PASSWORD
Private RADIUS client networkVariable

Optional private CIDR allowed to source RADIUS requests, for example 10.10.0.0/16. Leave blank to permit only registered router addresses.

Target
RADIUS_CLIENT_NETWORK
Hide lab recordsVariable

Keep false in production.

Target
SHOW_LAB_DATA
Default
false
Value
false