Установка

1. Docker и Docker Compose

Вариант А — пакеты дистрибутива (рекомендуется для Debian / Raspberry Pi OS):

sudo apt update
sudo apt install -y docker.io docker-compose apparmor wget
sudo usermod -aG docker $USER

После usermod перезайдите в систему, чтобы применились права группы docker.

Вариант Б — Docker Engine от производителя: следуйте официальной инструкции.

2. Правила udev и blacklist драйверов

SDR-устройства должны быть доступны непривилегированному пользователю, а конфликтующие DVB-драйверы ядра — отключены. Без этого шага контейнер не увидит приёмник.

wget https://gitlab.com/space-education-development/soniks/client/soniks-client/-/raw/soniks/client/sonik-blacklist.conf
wget https://gitlab.com/space-education-development/soniks/client/soniks-client/-/raw/soniks/client/10-sonik.rules

sudo cp 10-sonik.rules /etc/udev/rules.d/
sudo cp sonik-blacklist.conf /etc/modprobe.d/

Что делают эти файлы:

  • 10-sonik.rules — выдаёт группе plugdev доступ к USB-идентификаторам поддерживаемых SDR (RTL-SDR, Airspy, HackRF, SDRplay, USRP и др.).

  • sonik-blacklist.conf — блокирует модули ядра msi001, msi2500, dvb_usb_rtl28xxu, airspy, hackrf. Иначе ядро захватывает устройство как DVB-тюнер и SoapySDR его не открывает.

Примените изменения перезагрузкой:

sudo reboot

3. Директория станции

Создайте отдельную директорию (удобно называть по номеру станции) и скачайте в неё файлы запуска:

mkdir -p station && cd station

wget https://gitlab.com/space-education-development/soniks/client/soniks-client/-/raw/soniks/client/docker-compose.yml
wget https://gitlab.com/space-education-development/soniks/client/soniks-client/-/raw/soniks/client/.env

В .env впишите два значения со страницы станции на портале — STATION__ID и STATION__TOKEN. Всё остальное настраивается на портале после первого запуска: конфигурация станции.

Что запускается

docker-compose.yml поднимает два сервиса (три, если включён ротатор):

Сервис

Образ

Роль

rigctld

librespace/hamlib:4.5.4

Приём команд доплеровской коррекции. По умолчанию MODEL: '1' — dummy-трансивер.

rotctld

librespace/hamlib:4.5.4

Управление поворотным устройством. Закомментирован — см. Поворотное устройство.

soniks-client

sonikspace/soniks-client:latest-addons

Сам клиент.

Особенности сервиса soniks-client, о которых стоит знать:

  • работает от user: '9999' — не от root;

  • /tmp смонтирован как tmpfs, то есть ОЗУ;

  • том soniks-client смонтирован в /var/lib/soniks-client — там логи и, по заданному в compose PATHS__BASE, рабочие файлы наблюдений (/var/lib/soniks-client/data). Всё это переживает перезапуск;

  • command: liveupdate-satyaml.sh --run — точка входа контейнера. Имя историческое: определения спутников теперь приезжают bundle’ом с портала, а не клонированием из git, см. Поддерживаемые спутники;

  • проброшен /dev/bus/usb и правило cgroup c 189:* rwm — так контейнер получает USB-устройства.