README

Welcome to the TOUGHRADIUS project!

 _____   _____   _   _   _____   _   _   _____        ___   _____   _   _   _   _____
|_   _| /  _  \ | | | | /  ___| | | | | |  _  \      /   | |  _  \ | | | | | | /  ___/
  | |   | | | | | | | | | |     | |_| | | |_| |     / /| | | | | | | | | | | | | |___
  | |   | | | | | | | | | |  _  |  _  | |  _  /    / / | | | | | | | | | | | | \___  \
  | |   | |_| | | |_| | | |_| | | | | | | | \ \   / /  | | | |_| | | | | |_| |  ___| |
  |_|   \_____/ \_____/ \_____/ |_| |_| |_|  \_\ /_/   |_| |_____/ |_| \_____/ /_____/

TOUGHRADIUS

License Go Version Release Build Status codecov Docker Pulls

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.go

2. Use Pre-compiled Version

Download the latest version from the Releases page.

Configuration

  1. Copy the configuration template:

cp toughradius.yml toughradius.prod.yml
  1. Edit toughradius.prod.yml configuration 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 port

EAP Configuration

You can fine-tune authentication behavior via system configuration (sys_config):

  • radius.EapMethod: Preferred EAP method (default eap-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.yml

Access Web Management Interface: http://localhost:1816

Default Admin Account:

  • Username: admin

  • Password: Please check the initialization log output

📖 Documentation

🏗️ 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.yml

Frontend 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).

💎 Sponsors

Thanks to JetBrains for supporting this project!

JetBrains Logo

Last updated

Was this helpful?