Files
homelab-docs/docs/vps/vps-miran-bots.md

7.7 KiB
Raw Blame History

VPS Миран (СПБ): боты и STUN/TURN

VPS в ЦОД Миран (Санкт-Петербург). Развёрнуты два Telegram-бота (telegram-helper-bot, anonBot), инфраструктура prod (мониторинг, метрики), а также сервер STUN/TURN для Galene (call.katykhin.ru).


Доступ и логины

  • SSH: ssh -p 15722 deploy@185.147.80.190 (пользователь deploy, в группе docker). IP: 185.147.80.190, хостнейм vm220416.vds.miran.ru, ОС Ubuntu.
  • S3 (контент ботов): URL https://api.s3.miran.ru, порт 443. Access key: j3tears100@gmail.com, Secret key: wQ1-6sZEPs92sbZTSf96 (полная таблица — в разделе «S3» ниже).
  • Админка Миран (панель хостинга VPS): логин j3tears100@gmail.com, пароль gonPok-xifrys-4nuxde.
  • Grafana, Uptime Kuma, админки ботов: логины и пароли — в .env проекта prod или в менеджере паролей.

Что развёрнуто

1. Боты и prod (Docker Compose)

Проект в /home/prod/: docker-compose.yml, каталоги bots/, infra/, CI (GitHub Actions в .github/). Запуск от пользователя deploy.

Сервис Образ / контейнер Порт Назначение
telegram-bot prod-telegram-bot 8080 telegram-helper-bot
anon-bot prod-anon-bot 8081 anonBot
prometheus prom/prometheus 9090 Метрики
alertmanager prom/alertmanager 9093 Алерты
grafana grafana/grafana 3000 Дашборды
uptime-kuma louislam/uptime-kuma 3001 Мониторинг доступности

Сеть контейнеров: prod_bots_network (bridge). Переменные окружения и секреты — в .env и настройках сервисов (в доку не дублируются).

2. STUN/TURN (Galene)

coTURN — системный сервис coturn, конфиг /etc/turnserver.conf.

  • Порты: 3478/UDP (STUN/TURN), TLS/DTLS отключены (no-tls, no-dtls).
  • Realm: call.katykhin.ru
  • External IP: 185.147.80.190
  • Диапазон портов для релея: 4915249252
  • Учётные данные для Galene заданы в конфиге (user/realm); на сервере Galene (контейнер 108) в настройках указывается этот TURN-сервер для обхода NAT.

Трафик с Galene (домашний сервер 192.168.1.108, call.katykhin.ru) уходит на этот VPS для STUN/TURN, чтобы видеозвонки работали при симметричном NAT и ограничениях провайдера.

3. S3 (контент ботов)

Объектное хранилище Миран (S3-совместимый API) для контента, который отдают боты (медиа, файлы). Доступ по HTTPS.

Параметр Значение
URL https://api.s3.miran.ru
Порт 443 (HTTPS)
Access key j3tears100@gmail.com
Secret key wQ1-6sZEPs92sbZTSf96

В ботаx (переменные окружения prod) заданы S3_ENDPOINT_URL=https://api.s3.miran.ru, регион и креды для загрузки/выдачи контента. Для локальной разработки или других клиентов использовать те же endpoint и ключи.

Бакет контента бота: в S3 Miran используется бакет с именем 9829-telegram-helper-bot (переменная S3_BUCKET_NAME в .env бота).

4. Остальное на хосте

  • nginx — порты 80 и 443; по умолчанию отдаёт статику из /var/www/html.
  • prometheus-node-exporter — порт 9100, метрики хоста для Prometheus.
  • vps-metrics — systemd-сервис, API метрик для виджета Homepage (порт 3497).
  • cron — по расписанию при необходимости.

Порты (сводка)

Порт Служба / контейнер Протокол
15722 SSH TCP
80, 443 nginx TCP
3478 coturn (STUN/TURN) UDP
3497 vps-metrics (Homepage) TCP
8080 telegram-bot TCP
8081 anon-bot TCP
9090 Prometheus TCP
9093 Alertmanager TCP
9100 node-exporter TCP
3000 Grafana TCP
3001 Uptime Kuma TCP

Управление ботами и prod

Рабочий каталог Compose: /home/prod/. От пользователя deploy:

cd /home/prod
docker compose ps
docker compose up -d
docker compose logs -f telegram-bot

Образы ботов собираются из репозитория (Dockerfile в проекте); деплой через Makefile / CI при необходимости.


Связь с домашним контуром

  • Galene (контейнер 108, call.katykhin.ru): в настройках сервера Galene указан TURN-сервер 185.147.80.190:3478 (realm call.katykhin.ru), чтобы клиенты за NAT могли устанавливать медиа-сессии через этот VPS.
  • Homepage (контейнер 100): виджет метрик может показывать данные с vps-metrics (185.147.80.190:3497).

Остальные узлы homelab (Proxmox, NPM и т.д.) описаны в архитектуре.


Бэкап VPS (telegram-helper-bot)

Бэкап выполняется с хоста Proxmox скриптом backup-vps-miran.sh (cron 01:00). Копируются:

  1. БД: /home/prod/bots/telegram-helper-bot/database/tg-bot-database.db/mnt/backup/vps/miran/db/ (с датой в имени, хранение 14 дней).
  2. Голосовые сообщения: /home/prod/bots/telegram-helper-bot/voice_users//mnt/backup/vps/miran/voice_users/ (rsync).
  3. S3 (Miran): полная выгрузка бакета 9829-telegram-helper-bot/mnt/backup/vps/miran/s3/ (через aws s3 sync).

Что нужно на Proxmox:

  • SSH: с хоста (root) должен работать вход без пароля на deploy@185.147.80.190 -p 15722 (добавить публичный ключ хоста в ~/.ssh/authorized_keys пользователя deploy на VPS).
  • S3: установить awscli (apt install awscli) и создать файл /root/.vps-miran-s3.env с содержимым (подставить свои креды):
    S3_ACCESS_KEY=j3tears100@gmail.com
    S3_SECRET_KEY=...
    S3_BUCKET_NAME=9829-telegram-helper-bot
    
    Файл читается только root; в репозиторий не коммитить.

Подробности и восстановление — в Бэкапы: как устроены и как восстанавливать.