Старый README сохранён как README.upstream.md.
xlxd-debian-installer (форк)
Bash-установщик XLX-рефлектора на Debian: ставит зависимости, собирает демон xlxd из исходников, разворачивает PHP-дашборд, прописывает init-скрипт и виртуальный хост Apache. XLX — мультирежимный рефлектор для любительской цифровой радиосвязи (DMR, D-Star, C4FM/YSF), к нему подключаются хотспоты Pi-Star и репитеры.
Это форк установщика Бена Фогта (N5AMD), взятый по цепочке: оригинал n5amd/xlxd-debian-installer → vaikcode (Vlad) → sever83 → текущая копия. Форк взят ради модификаций, превращающих публичный рефлектор в закрытый (частный) с собственной базой DMR ID: сборка ведётся не из апстрима LX3JL, а из форка xlxd, база позывных не тянется с внешнего сервера, «звонок домой» (регистрация в глобальных host-файлах) отключён. Документация оригинала сохранена в README.upstream.md.
Отличия от оригинала
Правки владельца этой копии:
2025-07-06— единственный собственный коммит: в инструкции по установке адрес клонирования заменён на свой репозиторий (viktor138irk/xlxd-debian-installerвместоsever83/...). Код скрипта не менялся.
Изменения, унаследованные от предыдущих форков (Vlad/vaikcode, sever83) и присутствующие в этой копии — именно они отличают её от оригинала N5AMD:
XLXDREPOуказывает на форкhttps://github.com/sever83/xlxd.gitвместо апстримаhttps://github.com/LX3JL/xlxd.git.- Отключено скачивание базы DMR ID с
xlxapi.rlx.lu(wget ... $DMRIDURLзакомментирован). Вместо этого создаётся пустой/xlxd/dmrid.datи в него засеваются три тестовых локальных ID:7700001;RADIST1;,7700002;RADIST2;,7700003;RADIST3;— база позывных ведётся локально (в связке с панелью регистрации, см. репозиторийXLX-Pistarscript-panel-Install). - Закомментирована правка
main.h(DMRIDDB_USE_RLX_SERVER 1 → 0) — переключение источника базы ID теперь берётся из самого форкаxlxd, а не патчится установщиком. - Закомментирован блок постнастройки дашборда: скрытие IP (
ShowFullIP → HideIPна страницах репитеров и пиров) и включениеCallingHome['Active'] = true. То есть рефлектор не регистрируется в глобальном списке XLX и показывает IP как есть. - Убрана ветвление по версии Debian (
php7.0/7.3/7.4-mbstring): блокif [ $VERSION = 9|10|11 ]закомментирован, ставится общий набор пакетов$APPSс метапакетамиphp-*.
Стек
- Bash, Debian (проверялось на x64),
apt. - Собирает C++-демон
xlxd(make && make install) — нуженbuild-essential. - Веб-часть: Apache2 + PHP (
php-cli,php-xml,php-mbstring,php-curl,libapache2-mod-php). - Запуск через SysV-init скрипт +
update-rc.d, управление черезsystemctl.
Структура
xlxd-debian-installer.sh— весь установщик: диалог с оператором, установка пакетов, сборкаxlxd, разворачивание дашборда, настройка Apache, старт сервиса.templates/apache.tbd.conf— шаблон виртуального хоста Apache;apache.tbdзаменяется на FQDN,ysf-xlxd— наxlxd, файл кладётся в/etc/apache2/sites-available/<FQDN>.conf.README.upstream.md— документация оригинального проекта N5AMD.
Как запустить/установить
Требуется чистый Debian, root, заранее известные FQDN дашборда и трёхзначный номер XLX.
git clone <url>/xlxd-debian-installer
cd xlxd-debian-installer
./xlxd-debian-installer.sh
Скрипт интерактивно спросит: трёхзначный номер рефлектора (XRFDIGIT → имя XLX<NNN>), FQDN дашборда, e-mail для связи, позывной администратора.
Управление после установки:
systemctl start|stop|status|restart xlxd
Конфигурация
Переменные в начале xlxd-debian-installer.sh:
XLXDREPO— репозиторий исходниковxlxd(в этой копии — форкsever83/xlxd).DMRIDURL—http://xlxapi.rlx.lu/api/exportdmr.php; объявлена, но не используется (загрузка отключена).WEBDIR—/var/www/xlxd, веб-корень дашборда.XLXINSTDIR—/root/reflector-install-files/xlxd, каталог сборки.APPS/DEP,DEP2,DEP3— наборы пакетов (DEP*не используются).LOCAL_IP— определяется черезhostname -I, подставляется в init-скрипт вместо192.168.1.240.
Что правится автоматически:
/etc/init.d/xlxd— строка запускаXLX999 192.168.1.240 127.0.0.1→XLX<NNN> <LOCAL_IP> 127.0.0.1./var/www/xlxd/pgs/config.inc.php— e-mail, позывной администратора, URL дашборда, путь кcallinghome.php(/tmp/→/xlxd/).- Владелец
/var/www/xlxdи/xlxd—www-data. - Включается сайт
<FQDN>, отключается000-default.
Рабочие расположения: рефлектор — /xlxd, база ID — /xlxd/dmrid.dat, основной конфиг дашборда — /var/www/xlxd/pgs/config.inc.php, логи — journalctl/systemctl status xlxd и /var/log/messages.
Состояние
Рабочий, но привязан к устаревшему окружению. Последний коммит 2025-07-06, всего 40 коммитов (из них 1 собственный, остальные — история оригинала и промежуточных форков).
Что не доделано
- Явных TODO/FIXME нет; вместо этого крупные блоки логики просто закомментированы (правка
main.h, скачивание базы ID, скрытие IP,CallingHome, установка версионных PHP-пакетов) — «выключено», а не удалено. - В
/xlxd/dmrid.datзасеваются тестовые записиRADIST1..3с ID7700001..3, они остаются в базе после установки. - Проверка версии Debian отключена, при этом
VERSIONвычисляется и не используется; на современных Debian корректность набора пакетов не проверялась. - Шаблон Apache — только HTTP (порт 80), без TLS;
ServerNameподставляется sed'ом, отдельногоDocumentRoot-параметра нет (жёстко/var/www/xlxdпосле замены). - Установщик не идемпотентен: повторный запуск при уже собранном
xlxdпрерывается с требованием вручную удалить/root/reflector-install-files/xlxd. - Управление заявлено через
systemctl, а ставится SysV init-скрипт черезupdate-rc.d(работает через systemd-generator).