aMule Web Controller v2.0.0
Major Release - Complete Refactoring & New Features
This is a major release featuring a complete codebase refactoring and numerous new features that significantly enhance functionality and user experience. Version 2.0 brings professional-grade features like Sonarr/Radarr integration, GeoIP support, and a complete UI/UX overhaul.
π Highlights
- π§ Interactive Setup Wizard - Easy first-time configuration with guided steps and real-time validation
- π Sonarr/Radarr Integration - Full *arr compatibility with Torznab indexer + qBittorrent download client APIs
- π GeoIP Support - See geographic locations of upload peers with country flags and city information
- π Category Management - Organize downloads into color-coded categories
- βΈοΈ Pause/Resume - Full control over individual download states
- π Enhanced Statistics - Fixed calculation bugs, accurate historical data across all time ranges
- π¨ Improved UI/UX - Better mobile support, persistent preferences, enhanced dark mode
- π§ Web-Based Settings - Manage all configuration through the interface with live testing
π₯ Installation
Docker (Recommended)
# Create required directories
mkdir -p data logs
sudo chown -R 1000:1000 data logs
# Pull the latest image
docker pull g0t3nks/amule-web-controller:latest
# Start with docker compose
docker compose up -dQuick Start
services:
amule-web:
image: g0t3nks/amule-web-controller:latest
user: "1000:1000"
ports:
- "4000:4000"
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- ./logs:/usr/src/app/server/logs
- ./data:/usr/src/app/server/data
restart: unless-stoppedSee the README for complete installation instructions.
β¨ What's New
Configuration Management
- Interactive Setup Wizard - First-run guided configuration with real-time validation
- Settings Page - Manage all settings through the web interface with live testing
- Persistent Configuration - Settings saved to
config.jsonwith smart fallback to environment variables - Test Before Save - Validate individual sections or all settings before applying
Sonarr/Radarr Integration
- Torznab Indexer API - Makes the ED2K network searchable from Sonarr/Radarr
- qBittorrent Download Client - Works as a download client for *arr applications
- Automatic Library Scanning - Configurable interval-based searches for missing content
- Quality Profile Support - Respects quality upgrade preferences
- Interactive Search - Manual searches directly from Sonarr/Radarr interface
- Smart Rate Limiting - Prevents ED2K server flood protection bans
- Search Result Caching - Efficient pagination handling
GeoIP Integration
- MaxMind GeoLite2 Support - Display geographic location of upload peers
- Country Flags - Visual country indicators in uploads view
- City Information - Detailed location data when available
- Docker Integration - Optional GeoIP updater container for automatic database updates
- Graceful Degradation - Works without databases, feature is fully optional
Download Management
- Category Management - Create, edit, and delete download categories with custom colors
- Category Assignment - Organize downloads by assigning them to categories
- Pause/Resume Downloads - Control individual download states
- Multiple ED2K Links - Add multiple ED2K links at once (one per line)
- Segments Bar - Visual representation of file parts availability
- Detailed Source Counts - Shows total, current, transferring, and A4AF sources
- Last Seen Indicators - Color-coded freshness indicators for complete sources
User Experience
- Persistent Sorting - Sort preferences saved across sessions
- Secondary Sorting - Alphabetical sorting when primary values are equal
- Improved Mobile UI - Better touch interactions and responsive design
- Enhanced Dark Mode - Improved contrast and visual hierarchy throughout
Historical Statistics
- Interactive Charts - Beautiful Chart.js visualizations for speeds and transfers
- Multiple Time Ranges - 24h, 7d, and 30d views with appropriate data aggregation
- Accurate Calculations - Fixed all statistics calculation bugs
- Peak Speed Tracking - True peak speeds from raw data, not averaged buckets
- Database Optimization - Efficient queries for large datasets
π§ Technical Improvements
Codebase Refactoring
- Modular Server Architecture - Separated concerns into focused, maintainable modules
- Component-Based Frontend - Organized React components with hooks and utilities
- Improved Code Reusability - Extracted common patterns and utilities
- Better Error Handling - Comprehensive error catching with user-friendly feedback
- Performance Optimizations - Memoization, efficient queries, reduced re-renders
API Improvements
- RESTful Endpoints - Proper HTTP methods and status codes
- Consistent Response Format - Standardized JSON responses across all endpoints
- Better Error Messages - Actionable error information for debugging
- WebSocket Protocol - Cleaner message structure for real-time updates
Database Enhancements
- Efficient Queries - New helper methods for common operations
- Better Indexing - Optimized timestamp lookups for statistics
- Cleanup Routines - Automatic old data retention management
π Bug Fixes
Statistics Calculations
- Fixed 30d totals showing less than 7d (100k record limit issue)
- Fixed peak speeds calculated from averaged buckets instead of raw data
- Fixed average speeds incorrectly averaging already-averaged bucket data
- Now uses proper calculations: total/time for averages, MAX() for peaks
UI/UX Fixes
- Secondary sorting now works alphabetically when primary values are equal
- Improved dark mode consistency across all views
- Better mobile touch interactions with improved tap targets
- Proper category color rendering
- More stable WebSocket reconnection handling
- Smooth progress bar animations with accurate percentages
β οΈ Breaking Changes
Configuration Structure
The configuration structure has changed significantly. Automatic migration is handled on first run:
- Old environment variable setups will continue to work
- Settings are now stored in
server/data/config.json - Configuration precedence: config file > env vars > defaults
API Endpoints
Some API endpoints have been restructured for better RESTful design. If you have custom integrations, review the updated API documentation in the README.
Docker Compose
- Updated to modern Docker Compose format (removed
version:field) - Changed from
docker-composetodocker composecommand - Requires creating
data/andlogs/directories with proper permissions before first run
π¦ Upgrading from v1.x
-
Backup your data:
cp -r data data.backup
-
Pull the new image:
docker pull g0t3nks/amule-web-controller:latest
-
Update docker-compose.yml:
- Remove
version:field - Update command from
docker-composetodocker compose - Ensure
data/andlogs/directories exist with proper permissions
- Remove
-
Restart:
docker compose down docker compose up -d
-
Complete the setup wizard or review settings in the web interface
Your existing configuration will be automatically migrated to the new format.
π Documentation
- README - Complete setup and usage guide
- QUICKSTART - Get running in 5 minutes
- CHANGELOG - Full version history
Full Changelog: v1.0.1...v2.0.0
Hope you enjoy the new features and improvements! π
If you encounter any issues, please open an issue on GitHub.