Automated installation script for XLX multi-mode reflectors
Supporting D-Star β’ C4FM β’ DMR protocols
Features β’ Quick Start β’ Installation β’ Configuration β’ User Manager
This project simplifies the installation of XLX reflectors with minimal user intervention. Developed by Daniel K. (PU5KOD), this installer automates the setup of the XLX reflector created by LX3JL and includes a customized dark theme dashboard. The goal is to make deploying an XLX reflector easy, reliable, and maintainable!
Upon completion, you'll have a fully functional public D-Star/YSF/DMR XLX reflector with monitoring dashboard! π
- β No AMBE hardware needed for C4FM and DMR interoperability (since early 2020)
- β Complete systemd service integration replacing legacy init.d scripts
- β Dark theme dashboard with improvements and modern UI
- β Lightweight - it ever runs on Raspberry Pi Zero!
- β Optional Echo Test (Parrot) service to audio tests
- β Compatible with Debian 10+ (13 recommended), Ubuntu, RaspiOS, Armbian, etc...
- β Full uninstall support
- β Built-in User Manager for whitelist, dashboard access and RadioID database
Note: D-Star integration with other modes still requires AMBE chips. For D-Star-only or YSF/DMR reflectors, no additional hardware is needed.
| Feature | Description |
|---|---|
| π Multi-Protocol | Native support for D-Star, C4FM (YSF), and DMR |
| π¨ Custom Dashboard | Dark theme with enhanced monitoring capabilities |
| π Echo Test | Optional Parrot service for audio testing |
| π SSL Ready | Automated SSL certificate setup with Certbot |
| π Real-time Monitoring | Live connection tracking and statistics |
| π YSF Auto-link | Configurable automatic linking for YSF |
| π― Auto-update | Automatic real-time users database setup |
| π₯ User Manager | Terminal tool to manage users, whitelist and passwords |
The included dashboard is a dark-theme fork with major improvements:
- Real-time multi-TX module detection with pulsing highlight animation and live TX timers
- Live duration counter for connected stations, updating every second without page reload
- Responsive layout for desktop and mobile
- 30βday activity history and module activity chart (via Chart.js, independent 60-second refresh)
- SQLite operator database (call, name, city) displayed in Recent Activity and Connected Stations tabs
- Filter-aware auto-refresh β pauses when a callsign or module filter is active
- Browser tab badge showing connected station count and active TX callsign
- Hidden tabs support and others via
config.inc.php
The installer provides native systemd services, replacing original XLXD init.d behavior:
xlxd.servicexlx_log.serviceupdate_XLX_db.service(update timers)xlxecho.service(if Echo Test is enabled)
This brings better reliability, logging, restart behavior, and dependency control.
Before installation, ensure you have:
- Debian-based system or VPS with latest updates
- Stable internet connection with fixed public IP
- Firewall management capabilities
- FQDN for dashboard (e.g.,
xlxbra.net) - Unique 3-digit XLX ID (check availability here)
Visit any active reflector dashboard to see which XLX suffixes are in use. Any unlisted suffix is available!
Before running the installer, ensure all required ports are open and forwarded (see Firewall Configuration).
Execute the commands from the Quick Start section above.
The installer will request the following information:
| # | Prompt | Example | Default |
|---|---|---|---|
| 01 | 3-digit XLX reflector | 300, US1, BRA | - |
| 02 | Dashboard FQDN | xlxbra.net | - |
| 03 | Sysop email address | xlxref@gmail.com | - |
| 04 | Sysop callsign | PU5KOD | - |
| 05 | Reflector country | Germany | - |
| 06 | Time Zone | Europe/Berlin | Detected |
| 07 | Comment for XLX list | XLX300 Reflector... | - |
| 08 | Custom tab name | XLXBRA Dashboard... | - |
| 09 | Custom footnote | Maintained by... | - |
| 10 | Install SSL? | Y/N | Y |
| 11 | Install Echo Test? | Y/N | Y |
| 12 | Number of modules | 1-26 | 5 |
| 13 | YSF UDP port | 1-65535 | 42000 |
| 14 | YSF Wires-X frequency (Hz) | 433125000 | 433125000 |
| 15 | Enable YSF auto-link? | Y/N | Y |
| 16 | YSF auto-link module | A-Z | C |
The installation proceeds automatically. Once complete, your reflector will be operational and ready to accept connections!
# Update system sudo apt update && sudo apt full-upgrade -y # Install prerequisites sudo apt install git -y # Clone repository cd /usr/src/ sudo git clone https://github.com/PU5KOD/XLX_Installer.git # Run installer cd XLX_Installer/ && sudo chmod +x *.sh sudo ./installer.sh| Port | Type | Description |
|---|---|---|
| 22 | TCP | SSH |
| 80 | TCP | HTTP |
| 443 | TCP | HTTPS |
| 8080 | TCP | RepNeT |
| 20001-20005 | TCP | DPlus protocol |
| 40001 | TCP | ICom G3 |
| 8880 | UDP | DMR+ DMO mode |
| 10001 | UDP | JSON interface XLX Core |
| 10002 | UDP | XLX interlink |
| 10100 | UDP | AMBE controller |
| 10101-10199 | UDP | AMBE transcoding |
| 12345-12346 | UDP | ICom Terminal presence/request |
| 20001-20005 | UDP | DPlus protocol |
| 21110 | UDP | Yaesu IMRS protocol |
| 30001 | UDP | DExtra protocol |
| 30051 | UDP | DCS protocol |
| 40000 | UDP | Terminal DV |
| 42000 | UDP | YSF protocol |
| 62030 | UDP | MMDVM protocol |
| Type | Location |
|---|---|
| Installation | /xlxd/ |
| Source Folders | /usr/src/xlxd//usr/src/XLXEcho//usr/src/XLX_Dark_Dashboard//usr/src/XLX_Installer/ |
| Log Files | /var/log/xlxd*/var/log/xlx.log/var/log/xlxecho.log/usr/local/bin/xlx_log.sh/etc/logrotate.d/xlx_logrotate.conf |
| Services | /etc/systemd/system/xlxd.service/etc/systemd/system/xlxecho.service/etc/systemd/system/xlx_log.serviceupdate_XLX_db.serviceupdate_XLX_db.timer |
| Dashboard | /var/www/html/xlxd/ |
| Configuration | /var/www/html/xlxd/pgs/config.inc.php |
| User Manager | /xlxd/users_db/reflector_user_manager.sh |
| RadioID Database | /xlxd/users_db/users_base.csv |
| Whitelist | /xlxd/xlxd.whitelist |
| Dashboard Access | /var/www/restricted/.htpasswd |
# Start the reflector sudo systemctl start xlxd.service # Stop the reflector sudo systemctl stop xlxd.service # Restart the reflector sudo systemctl restart xlxd.service # Check status sudo systemctl status xlxd.service# Watch live logs sudo tail -f /var/log/xlx.logThe installer includes reflector_user_manager.sh, a unified terminal tool for all user administration tasks. Instead of running separate scripts, everything is available from a single two-level interactive menu.
sudo /xlxd/users_db/reflector_user_manager.shMain menu βββ 1) Database (RadioID) β βββ 1) Add / Edit record β βββ 2) Delete record β βββ 3) List records by Callsign β βββ 4) Search records (filter) β βββ 5) Create / Update SQL database β βββ X) Back βββ 2) Access Control βββ 1) Add user (whitelist + dashboard) βββ 2) Reset password (dashboard) βββ 3) Remove user (whitelist + dashboard) βββ 4) Look up user (whitelist + dashboard) βββ 5) List pending (password not yet changed) βββ 6) List whitelist (all callsigns) βββ X) Back | Feature | Description |
|---|---|
| π RadioID Database | Add, edit, delete and search records in users_base.csv |
| π Filtered Search | Case-insensitive partial search by callsign, DMRID, name, city or country β with pagination (25 records/page) |
| π Password Management | Generate and reset secure 12-character dashboard passwords |
| π‘ Whitelist Control | Add and remove callsigns from xlxd.whitelist with confirmation |
| ποΈ Whitelist Listing | Display all active whitelist entries in auto-sized columns |
| β³ Pending List | Track users who have not yet changed their initial password |
| π SQL Sync | Trigger create_user_db.php to rebuild the SQLite database from the CSV |
For full documentation see REFLECTOR_USER_MANAGER.md.
To list your reflector on YSF hosts:
- Visit dvref.com
- Follow the registration instructions
If you skipped automatic SSL during installation:
- Visit the Certbot website
- Follow the simple instructions
- Ensure TCP ports 80 and 443 are open and forwarded
To remove all traces of the installation:
cd /usr/src/xlx_installer sudo ./uninstaller.shThis removes:
- systemd services
- dashboard
- reflector core
- config files
- Apache integration
- cron/timers
- logs
- directories
No leftovers.
| Project | Author | Description |
|---|---|---|
| XLX Reflector | LX3JL | Original XLX reflector software |
| XLX Forum Home | LX1IQ | Official XLX Forum / Support |
| XLX Dark Dashboard | PU5KOD | Dark themed XLX dashboard |
| Original Installer Idea | N5AMD | Initial Debian installer concept |
| YSF Registration | KC1AWV | YSF Reflector registration service |
| Echo Test Service | Narspt | XLX Echo Test implementation |
| SSL Certification | Certbot | Free SSL/TLS certificates |
| This Installer | PU5KOD | Automated installation script |
If you encounter issues or have questions:
- π§ Contact the maintainer: PU5KOD
- π Open an issue on GitHub
- π¬ Join the amateur radio community discussions
This project is open source and available for use by the amateur radio community. MIT License β free to use and modify.
Made with β€οΈ by the Amateur Radio Community
β If you find this project useful, please consider starring it on GitHub! Contributions and pull requests are welcome.