Files
satellite/DEPLOY.md
T
2026-05-19 19:40:42 +03:00

2.9 KiB
Raw Blame History

Развёртывание Wyoming Satellite

Быстрый старт на новом сервере

1. Клонирование репозитория

git clone <repository-url> /path/to/Satellite
cd Satellite

2. Создание виртуального окружения

# Вариант A: в домашней директории (рекомендуется)
python3 -m venv ~/.venv_satellite
source ~/.venv_satellite/bin/activate

# Вариант B: в projects
python3 -m venv ~/projects/.venv_satellite
source ~/projects/.venv_satellite/bin/activate

3. Установка зависимостей

pip install -r requirements.txt

4. Установка systemd сервисов

sudo ./install_systemd_services.sh

Скрипт автоматически:

  • Найдёт виртуальное окружение
  • Определит текущего пользователя
  • Подставит правильные пути в service файлы
  • Установит wrapper satellite-python в /usr/local/bin/

5. Запуск сервисов

# LED сервис (опционально)
sudo systemctl enable wyoming-event.service
sudo systemctl start wyoming-event.service

# Wyoming Satellite
sudo systemctl enable wyoming-satelite-vosk.service
sudo systemctl start wyoming-satelite-vosk.service

# Wake Word сервис
sudo systemctl enable wyoming-wakeword-vosk.service
sudo systemctl start wyoming-wakeword-vosk.service

6. Проверка статуса

sudo systemctl status wyoming-event.service
journalctl -u wyoming-event.service -f

Структура service файлов

Все service файлы используют плейсхолдеры, которые заменяются при установке:

Плейсхолдер Описание
__SAT_BASE_DIR__ Путь к репозиторию Satellite
__SAT_VENV__ Путь к виртуальному окружению
__CURRENT_USER__ Имя пользователя
__HOME_DIR__ Домашняя директория пользователя

Ручная установка (альтернатива)

Если скрипт не работает, можно вручную:

  1. Отредактировать файлы в service/, заменив плейсхолдеры
  2. Скопировать в /etc/systemd/system/
  3. Выполнить sudo systemctl daemon-reload

Wrapper satellite-python

Глобальный скрипт /usr/local/bin/satellite-python позволяет запускать Python из venv без указания полного пути:

# В systemd сервисе
ExecStart=satellite-python /path/to/script.py

Это избавляет от необходимости прописывать пути к .venv в каждом сервисе.