Files
homelab-docs/docs/vps/vps-miran-bots.md
Andrey 16c254510a Update documentation to centralize Vaultwarden integration details and enhance backup scripts
Refactor README, architecture, and backup documentation to emphasize the use of Vaultwarden for credential management across various services. Update scripts for Nextcloud, Gitea, Paperless, and others to reference Vaultwarden for sensitive information. Remove outdated references to previous backup strategies and ensure clarity on credential retrieval processes. This improves security practices and streamlines backup operations.
2026-02-28 00:52:56 +03:00

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 и Secret key — в Vaultwarden (объект MIRAN_S3).
  • Админка Миран (панель хостинга VPS): логин и пароль — в Vaultwarden (отдельная запись для панели Миран).
  • 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 см. Vaultwarden, объект MIRAN_S3
Secret key см. Vaultwarden, объект MIRAN_S3

В бота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). Креды S3 — в Vaultwarden (объект MIRAN_S3). Файл /root/.vps-miran-s3.env с S3_ACCESS_KEY, S3_SECRET_KEY, S3_BUCKET_NAME генерируется скриптами или создаётся вручную из Vaultwarden. Файл читается только root; в репозиторий не коммитить.

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