Files
2026-08-20 04:18:38 +09:00

8.4 KiB

xlxd-debian-installer (форк)

Bash-установщик XLX-рефлектора на Debian: ставит зависимости, собирает демон xlxd из исходников, разворачивает PHP-дашборд, прописывает init-скрипт и виртуальный хост Apache. XLX — мультирежимный рефлектор для любительской цифровой радиосвязи (DMR, D-Star, C4FM/YSF), к нему подключаются хотспоты Pi-Star и репитеры.

Это форк установщика Бена Фогта (N5AMD), взятый по цепочке: оригинал n5amd/xlxd-debian-installervaikcode (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).
  • DMRIDURLhttp://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.1XLX<NNN> <LOCAL_IP> 127.0.0.1.
  • /var/www/xlxd/pgs/config.inc.php — e-mail, позывной администратора, URL дашборда, путь к callinghome.php (/tmp//xlxd/).
  • Владелец /var/www/xlxd и /xlxdwww-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 с ID 7700001..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).