talkincode/toughradius
A powerful, open-source RADIUS server
Welcome to the TOUGHRADIUS project!
_____ _____ _ _ _____ _ _ _____ ___ _____ _ _ _ _____
|_ _| / _ \ | | | | / ___| | | | | | _ \ / | | _ \ | | | | | | / ___/
| | | | | | | | | | | | | |_| | | |_| | / /| | | | | | | | | | | | | |___
| | | | | | | | | | | | _ | _ | | _ / / / | | | | | | | | | | | | \___ \
| | | |_| | | |_| | | |_| | | | | | | | \ \ / / | | | |_| | | | | |_| | ___| |
|_| \_____/ \_____/ \_____/ |_| |_| |_| \_\ /_/ |_| |_____/ |_| \_____/ /_____/
TOUGHRADIUS
A powerful, open-source RADIUS server designed for ISPs, enterprise networks, and carriers. Supports standard RADIUS protocols, RadSec (RADIUS over TLS), and a modern Web management interface.
โจ Core Features
RADIUS Protocol Support
- ๐ Standard RADIUS - Full support for RFC 2865/2866 authentication and accounting protocols
- ๐ RadSec - TLS encrypted RADIUS over TCP (RFC 6614)
- ๐ Multi-Vendor Support - Compatible with major network devices like Cisco, Mikrotik, Huawei, etc.
- โก High Performance - Built with Go, supporting high concurrency processing
Management Features
- ๐ React Admin Interface - Modern Web management dashboard
- ๐ฅ User Management - Complete user account and profile management
- ๐ Real-time Monitoring - Online session monitoring and accounting record queries
- ๐ Log Auditing - Detailed authentication and accounting logs
Integration Capabilities
- Multi-Database Support - PostgreSQL, SQLite
- ๐ Flexible Extension - Supports custom authentication and accounting logic
- ๐ก Multi-Vendor VSA - Huawei, Mikrotik, Cisco, H3C, etc.
๐ Quick Start
Prerequisites
- Go 1.24+ (for building from source)
- PostgreSQL or SQLite
- Node.js 18+ (for frontend development)
Installation
1. Build from Source
# Clone repository
git clone https://github.com/talkincode/toughradius.git
cd toughradius
# Build frontend
cd web
npm install
npm run build
cd ..
# Build backend
go build -o toughradius main.go2. Use Pre-compiled Version
Download the latest version from the Releases page.
Configuration
- Copy the configuration template:
cp toughradius.yml toughradius.prod.yml- Edit
toughradius.prod.ymlconfiguration file:
system:
appid: ToughRADIUS
location: Asia/Shanghai
workdir: ./rundata
database:
type: sqlite # or postgres
name: toughradius.db
# PostgreSQL configuration
# host: localhost
# port: 5432
# user: toughradius
# passwd: your_password
radiusd:
enabled: true
host: 0.0.0.0
auth_port: 1812 # RADIUS authentication port
acct_port: 1813 # RADIUS accounting port
radsec_port: 2083 # RadSec port
web:
host: 0.0.0.0
port: 1816 # Web management interface portEAP Configuration
You can fine-tune authentication behavior via system configuration (sys_config):
radius.EapMethod: Preferred EAP method (defaulteap-md5).radius.EapEnabledHandlers: List of allowed EAP handlers, separated by commas, e.g.,eap-md5,eap-mschapv2. Use*to enable all registered handlers.
This allows you to quickly disable unauthorized EAP methods without interrupting the service.
Running
# Initialize database
./toughradius -initdb -c toughradius.prod.yml
# Start service
./toughradius -c toughradius.prod.ymlAccess Web Management Interface: http://localhost:1816
Default Admin Account:
- Username: admin
- Password: Please check the initialization log output
๐ Documentation
- Architecture - v9 version architecture design
- React Admin Refactor - Frontend management interface explanation
- SQLite Support - SQLite database configuration
- Environment Variables - Environment variable configuration guide
๐๏ธ Project Structure
toughradius/
โโโ cmd/ # Application entry points
โโโ internal/ # Private application code
โ โโโ adminapi/ # Admin API (New version)
โ โโโ radiusd/ # RADIUS service core
โ โโโ domain/ # Data models
โ โโโ webserver/ # Web server
โโโ pkg/ # Public libraries
โโโ web/ # React Admin frontend
โโโ docs/ # Documentation
๐ง Development
Backend Development
# Run tests
go test ./...
# Run benchmark tests
go test -bench=. ./internal/radiusd/
# Start development mode
go run main.go -c toughradius.ymlFrontend Development
cd web
npm install
npm run dev # Development server
npm run build # Production build
npm run lint # Code linting๐ค Contribution
We welcome contributions in various forms, including but not limited to:
- ๐ Submitting Bug reports and feature requests
- ๐ Improving documentation
- ๐ป Submitting code patches and new features
- ๐ Helping with translation
๐ License
This project is licensed under the MIT License.
Third-Party Resources
The RADIUS dictionary files in the share/ directory are derived from the FreeRADIUS project and are licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0).
๐ Related Links
๐ Sponsors
Thanks to JetBrains for supporting this project!