A modern, responsive web-based management interface for AllStar Link nodes, built with Vue.js 3 and PHP 8. This is a complete rewrite of the original Supermon with enhanced features, better security, and modern web technologies.
- Modern Vue.js 3 Frontend - Responsive, fast, and intuitive interface
- Real-time Node Monitoring - Live status updates and statistics
- HamClock Integration - Embedded HamClock display with modal support
- Node Status Management - Automated Asterisk variable updates
- User Authentication - Secure login system with role-based permissions
- System Information - CPU, memory, disk usage, and temperature monitoring
- Configuration Management - Web-based editing of configuration files
- Custom Theming - Support for custom header backgrounds
- Log Viewing - Access to system and application logs
- Control Panel - Execute AllStar commands remotely
- Operating System: Debian 11+ or Ubuntu 20.04+ (ASL3+ compatible)
- PHP: 8.0+ with extensions:
sqlite3,curl,mbstring,json - Apache: 2.4+ with modules:
rewrite,proxy,proxy_http,proxy_wstunnel,headers,expires - RAM: 512MB minimum, 1GB recommended
- Storage: 200MB free space
- AllStar Link: ASL3+ installation with Asterisk
Download and extract the latest release tarball:
# Download the release to your home directory (avoids /tmp permission issues) cd $HOME wget https://github.com/hardenedpenguin/supermon-ng/releases/download/V4.0.6/supermon-ng-V4.0.6.tar.xz # Extract to your home directory tar -xJf supermon-ng-V4.0.6.tar.xz # Run installation script cd $HOME/supermon-ng sudo ./install.shThe installation script supports several options:
# Normal installation with automatic Apache configuration sudo ./install.sh # Installation without Apache configuration (for advanced users) sudo ./install.sh --skip-apache # Show help and available options sudo ./install.sh --helpUse this option if you want to:
- Manage your own web server configuration
- Use Nginx or another web server instead of Apache
- Deploy in a containerized environment
- Have custom Apache configuration requirements
When using --skip-apache:
- β Backend service is still installed and started
- β Apache configuration template is still created for reference
- β All other components are installed normally
β οΈ You must manually configure your web serverβ οΈ The backend API will be available onhttp://localhost:8000/api
The install.sh script automatically handles:
- Dependency Installation: PHP, Apache modules, ACL tools
- Frontend Setup: Deploys pre-built Vue.js application
- Apache Configuration: Creates optimized virtual host with proxy support
- Security Setup: Configures sudoers, file permissions, and ACLs
- Systemd Services: Sets up node status update service and timer
- User Management: Installs password management tools
- Log Access: Configures proper permissions for Apache and Asterisk logs
The installation script automatically configures Apache for you! It handles:
- β
Enabling required Apache modules (
proxy,proxy_http,proxy_wstunnel,rewrite,headers) - β
Creating the site configuration file (
/etc/apache2/sites-available/supermon-ng.conf) - β Enabling the supermon-ng site
- β Testing the Apache configuration
- β Restarting Apache
No manual configuration required! The installer does everything automatically.
Edit /var/www/html/supermon-ng/user_files/allmon.ini:
# Example node configuration [node_12345] host=localhost:5038 username=admin password=your_secure_password menu=yes system=Nodes hiddenNodeURL=no # Set the default node (shown on initial load) default_node=12345To enable HamClock integration, edit /var/www/html/supermon-ng/user_files/global.inc:
// ======================================== // HAMCLOCK INTEGRATION // ======================================== // Enable or disable HamClock integration // NOTE: HamClock MUST be configured with a reverse proxy to work properly // Direct access to HamClock without reverse proxy will not work $HAMCLOCK_ENABLED = "True"; // HamClock URL for local network access (e.g., 192.168.x.x) $HAMCLOCK_URL_INTERNAL = "http://192.168.1.100/hamclock/live.html"; // HamClock URL for external internet access $HAMCLOCK_URL_EXTERNAL = "https://your-domain.com/hamclock/live.html";Important Notes:
- HamClock requires reverse proxy configuration in Apache (see Apache configuration section)
- Replace
192.168.1.100with your HamClock server's local IP address - Replace
your-domain.comwith your external domain name - The
/hamclock/live.htmlpath should remain as shown - You must also uncomment and configure the HamClock proxy lines in your Apache configuration
You can customize the header background by placing an image file in /var/www/html/supermon-ng/user_files/:
Filename Requirements:
- Must be named
header-backgroundwith appropriate extension - Supported formats:
header-background.jpg,header-background.jpeg,header-background.png,header-background.gif,header-background.webp
Installation:
# Copy your image to the user_files directory sudo cp /path/to/your/image.jpg /var/www/html/supermon-ng/user_files/header-background.jpg # Set proper permissions sudo chown www-data:www-data /var/www/html/supermon-ng/user_files/header-background.jpg sudo chmod 644 /var/www/html/supermon-ng/user_files/header-background.jpgNotes:
- Recommended size: 900x164 pixels (matches current header dimensions)
- System automatically detects the first
header-background.*file found - Images are cached for better performance
Configure automatic node status updates by creating /var/www/html/supermon-ng/user_files/sbin/node_info.ini:
[general] NODE = 546051 546055 546056 WX_CODE = 77511 WX_LOCATION = Alvin, Texas TEMP_UNIT = F [autosky] MASTER_ENABLE = yes ALERT_INI = /usr/local/bin/AUTOSKY/AutoSky.ini WARNINGS_FILE = /var/www/html/AUTOSKY/warnings.txt CUSTOM_LINK = https://alerts.weather.gov/cap/wwaatmget.php?x=TXC039&y=1Configuration Options:
- Replace node numbers in
NODE =with your actual node numbers (space-separated) - Set
WX_CODEto your local weather station code - Update
WX_LOCATIONwith your location - Set
TEMP_UNITtoF(Fahrenheit) orC(Celsius) - AutoSky Integration: Configure AutoSky paths if using weather alerts
- Alternative: If AutoSky isn't available, use
CUSTOM_LINKto set a clickable weather/alert link instead (e.g., weather.gov, local emergency management, etc.)
Dashboard Configuration: Users with SYSINFUSER permissions can configure node status settings directly through the web dashboard using the "Node Status" button.
This enables the systemd service that updates Asterisk variables every 3 minutes.
Access your dashboard at:
- HTTP:
http://your-server-ip - HTTPS:
https://your-server-ip(if SSL configured)
- Node Selection: Choose nodes from dropdown menu
- Real-time Stats: Live connection counts and node status
- Control Panel: Execute AllStar commands (authenticated users)
- System Information: View system stats (authenticated users)
- Display Configuration: Customize interface appearance
Create user accounts using the included tools:
# Advanced user management sudo php /var/www/html/supermon-ng/scripts/manage_users.php --helpImportant Note: The authentication system only manages the .htaccess file for user credentials. It does not modify any other system files, Apache configuration, or application settings.
After creating user accounts, configure role-based permissions by editing /var/www/html/supermon-ng/user_files/authusers.inc:
Single User Setup: If you're the only user, replace "anarchy" with your username throughout the file:
# Replace all instances of "anarchy" with your username sudo sed -i 's/"anarchy"/"yourusername"/g' /var/www/html/supermon-ng/user_files/authusers.incMultiple User Setup: For multiple users, edit the file manually or use sed commands:
# Add a second user to all permissions sudo sed -i 's/array("anarchy")/array("anarchy", "newuser")/g' /var/www/html/supermon-ng/user_files/authusers.incPermission Categories:
- Basic Access: Connect, Disconnect, Monitor buttons (
$CONNECTUSER,$DISCUSER,$MONUSER) - Advanced Features: DTMF, RPT Stats, Favorites (
$DTMFUSER,$RSTATUSER,$FAVUSER) - Administrative: Control Panel, Config Editor, System Control (
$CTRLUSER,$CFGEDUSER,$SYSINFUSER)
Security Note: Administrative permissions marked with (*) are security-sensitive. Only grant these to trusted users.
- Application runs as
www-datauser - Sensitive files protected with appropriate permissions
- ACLs configured for log file access
- Limited sudo access for
www-datauser - Only specific commands allowed without password
- Secure script execution for system information
- Session-based authentication system
- Role-based permissions (SYSINFUSER, CTRLUSER, etc.)
- Secure password hashing
Supermon-NG Backend Service:
The backend service provides the API endpoints for the web interface:
# Check backend service status sudo systemctl status supermon-ng-backend # Start/stop/restart backend service sudo systemctl start supermon-ng-backend sudo systemctl stop supermon-ng-backend sudo systemctl restart supermon-ng-backend # Enable/disable automatic startup sudo systemctl enable supermon-ng-backend sudo systemctl disable supermon-ng-backend # View backend service logs sudo journalctl -u supermon-ng-backend -f # Test backend API directly curl http://localhost:8000/api/system/infoOther Services:
# Check Apache status sudo systemctl status apache2 # Restart Apache (after configuration changes) sudo systemctl restart apache2 # Check node status service (if configured) sudo systemctl status supermon-ng-node-status.service # View node status logs sudo journalctl -u supermon-ng-node-status.service -f- Apache Access:
/var/log/apache2/supermon-ng_access.log - Apache Error:
/var/log/apache2/supermon-ng_error.log - Node Status:
/var/log/supermon-ng-node-status.log - Asterisk:
/var/log/asterisk/messages
Error: Package dependencies not met
sudo apt update && sudo apt upgrade sudo ./install.shApache configuration test fails
# Check configuration syntax sudo apache2ctl configtest # Common issues and fixes: # 1. Missing modules (should be enabled automatically during installation) sudo a2enmod proxy proxy_http proxy_wstunnel rewrite headers # 2. Permission issues sudo chown -R www-data:www-data /var/www/html/supermon-ng/ sudo chmod -R 755 /var/www/html/supermon-ng/Site not accessible
# Check Apache status sudo systemctl status apache2 # View Apache error logs sudo tail -f /var/log/apache2/supermon-ng_error.log # Check if backend service is running sudo systemctl status supermon-ng-backend # Test backend directly curl http://localhost:8000/api/system/infoProxy errors (502 Bad Gateway)
# Backend service not running sudo systemctl start supermon-ng-backend sudo systemctl enable supermon-ng-backend # Check backend logs sudo journalctl -u supermon-ng-backend -fDashboard shows 404 errors
# Check Apache configuration sudo apache2ctl configtest sudo systemctl restart apache2 # Verify files are in place ls -la /var/www/html/supermon-ng/public/AMI connection failures
# Check Asterisk status sudo systemctl status asterisk sudo asterisk -rx "manager show connected" # Note: AMI configuration is covered in the AllStar documentationNode Status button not visible
- Ensure you're logged in with proper permissions
- Check that
SYSINFUSERpermission is granted to your user - Verify
/var/www/html/supermon-ng/user_files/node_info.iniexists
# Fix file permissions sudo chown -R www-data:www-data /var/www/html/supermon-ng sudo chmod -R 755 /var/www/html/supermon-ng # Fix log permissions sudo setfacl -R -m u:www-data:r /var/log/asterisk/ sudo setfacl -R -m u:www-data:r /var/log/apache2/Monitor system resources:
# Check memory usage free -h # Check disk space df -h # Monitor CPU usage htopSupermon-NG includes an intelligent, conservative update system that NEVER replaces critical user files and only advises about user_files changes when the configuration structure actually changes.
For most updates, simply run:
# 1. Download the latest release to your home directory cd $HOME wget https://github.com/hardenedpenguin/supermon-ng/releases/download/V4.0.6/supermon-ng-V4.0.6.tar.xz # 2. Extract the new version tar -xJf supermon-ng-V4.0.6.tar.xz cd $HOME/supermon-ng # 3. Run the update script sudo ./scripts/update.shThat's it! The update script handles everything automatically.
The update script also supports the --skip-apache option:
# Normal update with Apache configuration sudo ./scripts/update.sh # Update without Apache configuration changes sudo ./scripts/update.sh --skip-apache # Show help and available options sudo ./scripts/update.sh --helpUse --skip-apache if you have custom web server configuration that you want to preserve.
The update.sh script intelligently:
- Detects Version Changes: Compares current vs. new version
- Analyzes Configuration Changes: Only updates user_files when configs actually change
- Creates Automatic Backups: Timestamped backups before any changes
- Preserves User Configurations: Keeps your customizations when possible
- Updates System Services: Handles systemd, Apache, and dependencies
- Validates Everything: Tests configurations and restarts services
The update system NEVER replaces these critical user files, regardless of template differences:
User Configuration Files (in user_files/):
allmon.ini- Node configuration (NEVER replace)authusers.inc- User authentication (NEVER replace)authini.inc- Authentication settings (NEVER replace)favorites.ini- User favorites (NEVER replace)privatenodes.txt- Private nodes list (NEVER replace)controlpanel.ini- Control panel settings (NEVER replace)
Root-Level Critical Files:
.htpasswd- Apache authentication file (NEVER replace)astdb.txt- Asterisk database (NEVER replace)
Directories Always Preserved:
sbin/- User scripts and configurationspreferences/- User preference files
System Files (NOT backed up):
/etc/sudoers.d/files/etc/systemd/system/service files/etc/apache2/sites-available/configuration files
This ensures your critical node configurations, authentication data, and user customizations are never lost during updates.
Before updating, check your current version:
# Check current version and system status sudo /var/www/html/supermon-ng/scripts/version-check.shThis shows:
- Current version and date
- Service status (backend, Apache, node status)
- Configuration file status
- Access URLs
- Update instructions
# Create update directory in your home directory mkdir -p $HOME/supermon-ng-update cd $HOME/supermon-ng-update # Download latest release (replace V4.0.5 with actual version) wget https://github.com/hardenedpenguin/supermon-ng/releases/download/V4.0.6/supermon-ng-V4.0.6.tar.xz # Extract the package tar -xJf supermon-ng-V4.0.6.tar.xz cd supermon-ng# Run the update script sudo ./scripts/update.shThe script will:
- Detect Current Version: Shows what version you're currently running
- Compare Versions: Determines if update is needed
- Analyze Configuration Changes: Checks if user_files need updating
- Create Backups: Backs up current installation
- Update Application: Installs new files while preserving configurations
- Update Services: Updates systemd services and Apache configuration
- Update Dependencies: Updates PHP and Node.js dependencies
- Update Frontend: Deploys new frontend files
- Validate Installation: Tests configuration and restarts services
- Display Summary: Shows what was updated and next steps
After the update completes, you'll see a summary like:
π Update Complete! ================== π Update Summary: β
Updated from V4.0.2 to V4.0.3 β
Application files updated β
System services updated β
Dependencies updated β
Frontend updated β
User configurations preserved (no changes detected) π Access your updated Supermon-NG application at: - http://localhost - http://192.168.1.100 - http://10.0.0.50 π§ Service Status: β
Backend: Running β
Apache: Running The update system uses a conservative approach that prioritizes data preservation:
Critical Files (ALWAYS Preserved):
- Your
allmon.ini,authusers.inc,authini.inc,favorites.ini,privatenodes.txt,controlpanel.ini,.htpasswd, andastdb.txtare NEVER replaced - These files contain your actual node configurations, user accounts, and system data
- They are preserved regardless of whether they match the tarball templates
Configuration Change Detection:
- Only checks for new system variables in
common.inc(core system changes) - Does NOT compare user-specific files against templates
- Only flags changes when new configuration variables are added to the core system
If the update script detects no configuration changes:
β
No significant configuration changes detected. β
All user configuration files will be preserved. What this means:
- All your critical files are completely preserved
- No manual configuration work needed
- Your customizations remain intact
- Update is complete and ready to use
If new system variables are found in common.inc:
β οΈ Configuration changes detected in core system files. β
Critical user files (allmon.ini, authusers.inc, etc.) will be preserved. β οΈ Configuration changes detected in global.inc π Your original global.inc has been backed up to: /tmp/supermon-ng-backup-20250101_120000/user_files π Running configuration migration for global.inc... What this means:
- New system configuration options may be available
- Your critical files (allmon.ini, auth files, etc.) are still preserved
- Only
global.incmay be updated with new system variables - The migration system intelligently merges new defaults with your existing values
Next steps:
- Your critical files are already preserved - no action needed
- Review
global.incto see if any new options were added - Test the web interface to ensure everything works
- The migration system handles most changes automatically
If you prefer manual control or need to troubleshoot:
# Create backup of user data only (system files are managed by installation) sudo tar -czf /tmp/supermon-ng-manual-backup-$(date +%Y%m%d_%H%M%S).tar.gz \ /var/www/html/supermon-ng/user_files/ \ /var/www/html/supermon-ng/.htpasswd \ /var/www/html/supermon-ng/astdb.txtNote: System files (sudoers, systemd, Apache configs) are not backed up as they are managed by the installation process.
# Stop all Supermon-NG services sudo systemctl stop supermon-ng-backend sudo systemctl stop supermon-ng-node-status.timer# Copy new application files (preserve user_files) sudo cp -r /tmp/supermon-ng-update/* /var/www/html/supermon-ng/ sudo cp -r /tmp/supermon-ng-manual-backup-*/user_files/* /var/www/html/supermon-ng/user_files/# Update systemd services sudo cp /tmp/supermon-ng-update/systemd/*.service /etc/systemd/system/ sudo cp /tmp/supermon-ng-update/systemd/*.timer /etc/systemd/system/ # Reload systemd and restart services sudo systemctl daemon-reload sudo systemctl enable supermon-ng-backend sudo systemctl start supermon-ng-backend# Update PHP dependencies cd /var/www/html/supermon-ng sudo -u www-data composer install --no-dev --optimize-autoloader # Update frontend cd frontend npm install npm run build cp -r dist/* /var/www/html/supermon-ng/public/If you need to rollback to a previous version:
# Stop services sudo systemctl stop supermon-ng-backend sudo systemctl stop supermon-ng-node-status.timer # Restore from backup sudo tar -xzf /tmp/supermon-ng-backup-YYYYMMDD_HHMMSS.tar.gz -C / # Restart services sudo systemctl start supermon-ng-backend sudo systemctl start supermon-ng-node-status.timer# Stop services sudo systemctl stop supermon-ng-backend # Restore application files sudo tar -xzf /tmp/supermon-ng-manual-backup-YYYYMMDD_HHMMSS.tar.gz -C / # Restart services sudo systemctl daemon-reload sudo systemctl start supermon-ng-backendIf the update script fails:
# Check the update log sudo tail -f /var/www/html/supermon-ng/logs/migration.log # Check system status sudo /var/www/html/supermon-ng/scripts/version-check.sh # Manual rollback if needed sudo tar -xzf /tmp/supermon-ng-backup-*.tar.gz -C /# Check service status sudo systemctl status supermon-ng-backend sudo systemctl status apache2 # Check logs sudo journalctl -u supermon-ng-backend -f sudo tail -f /var/log/apache2/supermon-ng_error.log # Test configuration sudo apache2ctl configtest# Compare with backup (if migration was run) diff -r /var/www/html/supermon-ng/user_files/ /tmp/supermon-ng-backup-*/user_files/ # Restore specific files (critical files should never need this) sudo cp /tmp/supermon-ng-backup-*/user_files/global.inc /var/www/html/supermon-ng/user_files/Note: With the conservative update system, critical files like allmon.ini, authusers.inc, .htpasswd, and astdb.txt are never replaced, so configuration issues are rare.
-
Trust the Conservative System: The update system is designed to preserve your critical data - it will never replace your node configurations, user accounts, or authentication files
-
Automatic Backups: The update script creates automatic backups of user data (system files are not backed up as they're managed by installation)
-
Test in Non-Production: Test updates on a development system first when possible
-
Review Release Notes: Check the release notes for breaking changes or new requirements
-
Monitor After Update: Check logs and functionality after updating
-
Keep Backups: Don't delete backup files immediately - keep them for a few days
Check your current version anytime:
# Quick version check sudo /var/www/html/supermon-ng/scripts/version-check.sh # Detailed system information sudo systemctl status supermon-ng-backend sudo systemctl status apache2Before updating:
- Check current version with
version-check.sh - Review release notes for breaking changes
- Create manual backup (recommended)
- Ensure you have root/sudo access
- Plan for brief service downtime
After updating:
- Verify services are running
- Test web interface functionality
- Check configuration files if changes were detected
- Monitor logs for any errors
- Update any new configuration options as needed
# Normal installation sudo ./install.sh # Installation without Apache configuration sudo ./install.sh --skip-apache # Show installation help sudo ./install.sh --help# Check current version and system status sudo /var/www/html/supermon-ng/scripts/version-check.sh # Quick update (download, extract, run update script) cd $HOME && wget https://github.com/hardenedpenguin/supermon-ng/releases/download/V4.0.6/supermon-ng-V4.0.6.tar.xz tar -xJf supermon-ng-V4.0.6.tar.xz && cd supermon-ng sudo ./scripts/update.sh # Update without Apache configuration changes sudo ./scripts/update.sh --skip-apache # Show update help sudo ./scripts/update.sh --help # Manual backup before update sudo tar -czf /tmp/supermon-ng-backup-$(date +%Y%m%d_%H%M%S).tar.gz /var/www/html/supermon-ng/user_files/# Apache is automatically configured during installation! # No manual steps required. # Troubleshooting (if needed): sudo apache2ctl configtest sudo systemctl restart apache2 sudo systemctl status apache2# Backend service sudo systemctl status supermon-ng-backend sudo systemctl start supermon-ng-backend sudo systemctl stop supermon-ng-backend sudo systemctl restart supermon-ng-backend # Node status service (if configured) sudo systemctl status supermon-ng-node-status.service sudo systemctl status supermon-ng-node-status.timer # Apache sudo systemctl status apache2 sudo systemctl restart apache2 sudo apache2ctl configtest# Apache logs tail -f /var/log/apache2/supermon-ng_error.log tail -f /var/log/apache2/supermon-ng_access.log # Backend service logs sudo journalctl -u supermon-ng-backend -f # Node status logs tail -f /var/log/supermon-ng-node-status.log sudo journalctl -u supermon-ng-node-status.service -f# Node configuration /var/www/html/supermon-ng/user_files/allmon.ini # Apache configuration /etc/apache2/sites-available/supermon-ng.conf # Node status configuration /var/www/html/supermon-ng/user_files/sbin/node_info.ini # Global settings /var/www/html/supermon-ng/user_files/global.inc- PHP: Follow PSR-12 coding standards
- JavaScript/Vue: Use ESLint configuration provided
- Git: Use conventional commit messages
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and test thoroughly
- Commit changes:
git commit -m 'feat: add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub Issues: Report bugs and request features
- Documentation: Check this README and inline code comments
- Community: Join AllStar Link forums and groups
When reporting issues, please include:
- PHP Version: Output of
php --version - Apache Error Log Messages: Recent entries from
/var/log/apache2/supermon-ng_error.log - Steps to Reproduce: Detailed step-by-step instructions to recreate the issue
- Screenshots: If applicable, especially for UI/display issues
To gather error log information:
# View recent Apache error log entries sudo tail -50 /var/log/apache2/supermon-ng_error.log # View backend service logs sudo journalctl -u supermon-ng-backend --since "1 hour ago"We welcome feature requests! Please:
- Check existing issues first
- Provide detailed use cases
- Consider contributing the feature yourself
- AllStar Link Community - For the amazing ASL platform
- Original Supermon - For the foundation and inspiration
- Vue.js Team - For the excellent frontend framework
- PHP Community - For the robust backend language
Supermon-NG V4.0.6 - Bringing AllStar Link management into the modern era! ππ‘