# Установка ## 1. Docker и Docker Compose **Вариант А — пакеты дистрибутива (рекомендуется для Debian / Raspberry Pi OS):** ```bash sudo apt update sudo apt install -y docker.io docker-compose apparmor wget sudo usermod -aG docker $USER ``` После `usermod` перезайдите в систему, чтобы применились права группы `docker`. **Вариант Б — Docker Engine от производителя:** следуйте [официальной инструкции](https://docs.docker.com/engine/install/). ## 2. Правила udev и blacklist драйверов SDR-устройства должны быть доступны непривилегированному пользователю, а конфликтующие DVB-драйверы ядра — отключены. Без этого шага контейнер не увидит приёмник. ```bash 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 его не открывает. Примените изменения перезагрузкой: ```bash sudo reboot ``` ## 3. Директория станции Создайте отдельную директорию (удобно называть по номеру станции) и скачайте в неё файлы запуска: ```bash 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`. Всё остальное настраивается на портале после первого запуска: [конфигурация станции](configuration.md). ## Что запускается `docker-compose.yml` поднимает два сервиса (три, если включён ротатор): | Сервис | Образ | Роль | |---|---|---| | `rigctld` | `librespace/hamlib:4.5.4` | Приём команд доплеровской коррекции. По умолчанию `MODEL: '1'` — dummy-трансивер. | | `rotctld` | `librespace/hamlib:4.5.4` | Управление поворотным устройством. **Закомментирован** — см. [Поворотное устройство](rotator.md). | | `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, см. [Поддерживаемые спутники](satellites.md); * проброшен `/dev/bus/usb` и правило cgroup `c 189:* rwm` — так контейнер получает USB-устройства.