# 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 - **Диапазон портов для релея:** 49152–49252 - Учётные данные для 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).