shihaam 1af12891a7
build-and-push / build (push) Failing after 34s
paginate views
2026-08-01 03:02:35 +05:00
2026-08-01 00:51:08 +05:00
2026-08-01 00:30:38 +05:00
2026-08-01 03:02:35 +05:00
2026-08-01 00:01:35 +05:00
2026-08-01 00:51:08 +05:00

radapi

SARLINK FreeRADIUS management stack: a REST API over the FreeRADIUS schema and a web admin portal for it.

.
├── backend/    FastAPI REST API over the FreeRADIUS MySQL/MariaDB schema
└── frontend/   React + Vite admin portal (radui)

Components

Dir What Stack
backend/ RESTful CRUD over FreeRADIUS tables FastAPI, SQLAlchemy 2.0, PyMySQL, Pydantic v2
frontend/ Admin UI for clients, devices and VLANs React 19, Vite, TypeScript, Tailwind v4

Auth across both is a shared secret sent in the X-API-Key header — the frontend collects the key on a login screen and the backend validates it.

Quick start

With Docker (dev)

Runs both services with hot-reload — the frontend on Vite, the backend on uvicorn --reload, each with its source volume-mounted from the host.

cp backend/.env.example backend/.env   # edit DB credentials + API_KEY
docker compose up --build              # frontend :5173, backend :8000

The frontend proxies /api/* to the backend service over the compose network, so log in at http://localhost:5173 with the API_KEY from backend/.env.

Manual

Backend (see backend/README.md for details):

cd backend
python3 -m venv venv
venv/bin/pip install -r requirements.txt
cp .env.example .env          # edit DB credentials + API_KEY
venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000

Frontend (see frontend/README.md for details):

cd frontend
npm install
VITE_API_TARGET=http://127.0.0.1:8000 npm run dev   # http://localhost:5173

Log in with the same value set as API_KEY in backend/.env. In dev, Vite proxies /api/* to the backend so requests stay same-origin.

S
Description
RADIUS Admin. API and UI for SAR Link admins to mange devices and Radius on the network
Readme
366 KiB
Languages
TypeScript 55.8%
Python 42.1%
CSS 1.3%
HTML 0.4%
Dockerfile 0.3%