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

131 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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:
```bash
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 и т.д.) описаны в [архитектуре](../architecture/architecture.md).
---
## Бэкап 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` с содержимым (подставить свои креды):
```bash
S3_ACCESS_KEY=j3tears100@gmail.com
S3_SECRET_KEY=...
S3_BUCKET_NAME=9829-telegram-helper-bot
```
Файл читается только root; в репозиторий не коммитить.
Подробности и восстановление — в [Бэкапы: как устроены и как восстанавливать](../backup/backup-howto.md).