70 строки
8.4 KiB
Markdown
70 строки
8.4 KiB
Markdown
# 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](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.
|
|
```sh
|
|
git clone <url>/xlxd-debian-installer
|
|
cd xlxd-debian-installer
|
|
./xlxd-debian-installer.sh
|
|
```
|
|
Скрипт интерактивно спросит: трёхзначный номер рефлектора (`XRFDIGIT` → имя `XLX<NNN>`), FQDN дашборда, e-mail для связи, позывной администратора.
|
|
|
|
Управление после установки:
|
|
```sh
|
|
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` с 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).
|