Skip to content

talkincode/toughradius

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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

πŸ”— Related Links

πŸ’Ž Sponsors

Thanks to JetBrains for supporting this project!

JetBrains Logo