Установка MiniDMR от чистого сервера до первого хотспота
Версия 0.1.71. Если что-то пошло не так, пишите в группу в Telegram с выводом команды, разберёмся.
Что понадобится
Сервер с чистым Debian 13 на x86_64 и доступ root. Ставить поверх сервера с другими сайтами не советуем: установщик включает свой файрвол и занимает порт 80.
По железу MiniDMR скромный. Наш тестовый сервер работает на самом дешёвом VPS с одним ядром и 1 ГБ памяти, клиентский на старом неттопе с AMD E-450. Сам MiniDMR занимает в памяти около 200-250 МБ вместе с вокодером.
Запас по нагрузке большой. В нашем нагрузочном тесте 2000 узлов и 300 одновременных разговоров в 300 группах шли через ядро на одном ядре процессора Celeron N5095 без единого потерянного кадра, ядро заняло четверть этого ядра.
| Порт | Зачем |
|---|---|
| TCP 80 | сайт сервера: дашборд, кабинет, админка, команда для Pi-Star |
| UDP 62031 | Homebrew: сюда подключаются хотспоты, репитеры и DMRConnect |
| UDP 62035 | OpenBridge и DMRE: входящие мосты от других сетей, нужен только для них |
| TCP 22 | SSH, остаётся открытым |
Серверу нужен выход в интернет к minidmr.ru (выпуски), radioid.net (база позывных), astral.sh (установщик Python) и md380.org (прошивка для вокодера, качается один раз).
Установка
curl -fsSL https://minidmr.ru/install.sh | sudo bash
Что делает скрипт, по порядку:
- проверяет, что это Debian 13 на x86_64;
- скачивает последний выпуск с minidmr.ru и сверяет его подпись ключом, вшитым в сам скрипт; если подпись не сошлась, ничего не ставит;
- обновляет систему, заводит служебного пользователя
minidmr, открывает в файрволе порты из таблицы выше (своей таблицей nftables, чужие правила не трогает); - ставит Python и зависимости из готовых сборок, без компилятора;
- запускает ядро и сайт, включает автообновление;
- собирает вокодер AMBE+2 для прослушивания эфира под ваш процессор.
Адрес сайта скрипт узнаёт сам по внешнему IP. Задать его или что-то ещё можно заранее:
curl -fsSL https://minidmr.ru/install.sh | sudo BASE_URL=http://dmr.example.ru bash
# BASE_URL адрес, по которому люди открывают сайт сервера
# CHANNEL stable (по умолчанию) или main, где выпуски выходят раньше
# WEB_PORT порт сайта, если 80 занят
bash /opt/minidmr/current/deploy/build-vocoder.sh.Первый вход
minidmr create-admin --callsign R0ABC --dmr-id 2500001 --email you@example.ru --name "Имя"
Команда спросит пароль дважды. Дальше откройте адрес сервера в браузере и войдите. В админке стоит пройти четыре места:
- Настройки сервера. Имя сервера, адрес сайта, как пускать новых людей: открытая регистрация, подтверждение по почте или Telegram, ручное одобрение, префикс для DMR ID, которые сервер выдаёт сам.
- Почта и Telegram-бот. Без них регистрация работает без подтверждения. С ними приходят письма о подтверждении и сброс пароля.
- Группы. Публичные и закрытые, с названиями и картинками.
- Оформление. Логотип, значок вкладки и картинка для соцсетей.
Свой домен направьте A-записью на адрес сервера и впишите его в «Настройки сервера», поле «Адрес сайта». HTTPS установщик пока не настраивает.
Сервер за роутером
Дома или в клубе сервер обычно стоит за роутером. Так работает и наш клиентский MiniDMR. На роутере пробросьте на сервер:
- TCP 80, чтобы открывался сайт;
- UDP 62031, чтобы подключались хотспоты и приложения;
- UDP 62035, только если к вам будут подключаться мосты OpenBridge или DMRE.
Исходящие мосты (вы подключаетесь к другой сети как клиент Homebrew или XLX) проброса не требуют. Если провайдер сменит внешний адрес, хотспоты по старому IP не войдут, поэтому для домашнего сервера лучше постоянный адрес или домен.
Хотспот Pi-Star
Зарегистрируйтесь на своём сервере
Обычным пользователем, как любой радиолюбитель. Администратору это тоже нужно: устройства привязаны к человеку.
Добавьте устройство в кабинете
«Мои устройства», «Добавить устройство», тип «хотспот». Сервер выдаст номер узла и пароль хотспота.
Выполните команду в Pi-Star
В карточке устройства кнопка «Новая команда». Откройте в панели Pi-Star раздел Expert, затем SSH Access, вставьте строку и нажмите Enter. Ссылка одноразовая и живёт 30 минут.
Система: Pi-Star 4.3.7 Резервная копия: /root/minidmr-backup-20261010-193742 DMRGateway: весь эфир на HB_TestDMR (168.222.193.52:62031, ID 999999901), группы и подписки задаются на сервере. Выключены другие сети: BM_2341_United_Kingdom (вернуть: --undo). База позывных с сервера: 314733 записей, сверху 6 абонентов сервера. Проверка раз в 5 минут. Суточное обновление Pi-Star выключено (хост-файлы и база с pistar.uk не нужны), оставлена чистка журналов. … Готово, хотспот 999999901 на связи с сервером 168.222.193.52.
Это отрывок настоящего вывода на нашем тестовом Pi-Star. Вернуть всё как было: та же строка вида
curl -fsSL http://ваш-сервер/p/undo | sudo bash, она есть в карточке.
Скрипт понимает и WPSD: у него те же файлы DMRGateway и MMDVMHost. Вживую мы проверяли его на Pi-Star 4.3.7, если на WPSD что-то пойдёт не так, пришлите вывод в группу.
Вручную тоже можно: в DMRGateway пропишите адрес сервера, порт 62031, номер узла и пароль хотспота из кабинета.
DMRConnect и рации
В карточке устройства типа DMRConnect есть QR-код. Отсканируйте его в приложении DMRConnect, и сервер добавится со всеми настройками. Список абонентов приложение берёт с сервера: /local_subscriber_ids.json, в том же формате его понимают HBlink и совместимые программы.
Для раций с прошивкой OpenGD77 в кабинете есть готовый кодплаг: каналы ваших хотспотов и группы сервера одним ZIP, импорт в OpenGD77 CPS.
Мосты в другие сети
Админка, «Мосты», «Подключить сеть». Выберите заготовку: Homebrew, FreeDMR, ADN, XLX, BrandMeister или другой сервер MiniDMR. Впишите адрес и пароль, которые выдали в той сети, и сопоставьте группы: ваша группа и слот слева, их группа и слот справа.
Для ADN, BrandMeister и FreeDMR по OpenBridge нужна договорённость с их администраторами, а для входящих мостов открытый UDP 62035. В BrandMeister заявку подаёт владелец сервера через их helpdesk.
Между двумя серверами MiniDMR выбирайте заготовку «Другой сервер MiniDMR»: у неё выключен фильтр групп ADN, иначе не пройдут группы вроде TG1.
Обновления и откат
Сервер сам раз в минуту проверяет канал выпусков. Новый выпуск скачивается, сверяется подпись, перед переключением делается копия базы. Если после обновления сайт или ядро не поднялись, сервер возвращает прошлую версию сам.
minidmr-update --status # что стоит и что вышло minidmr-update --force 0.1.50 # поставить конкретную версию, в том числе откатиться
Канал меняется в /etc/minidmr/update.conf, строка CHANNEL=.
Где что лежит
/opt/minidmr/current | текущий выпуск; в /opt/minidmr/releases он и два прошлых для отката |
/var/lib/minidmr/brain.db | база: пользователи, устройства, группы, мосты, журнал вызовов |
/etc/minidmr/ | настройки процесса и канала обновлений |
journalctl -u minidmr-core | журнал ядра: входы узлов, мосты, эфир |
journalctl -u minidmr-brain | журнал сайта и модулей, его же видно в админке |