Add Healthchecks service details to architecture and backup documentation, including its role as a Dead man's switch for backups. Update backup scripts to utilize systemd timers instead of cron for improved scheduling. Enhance network topology documentation to reflect Healthchecks integration in the VPS Miran setup. This update clarifies backup processes and enhances overall system reliability.
8.0 KiB
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
- Диапазон портов для релея: 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 | см. 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 |
| 8000 | Healthchecks (внутр.) | TCP |
Healthchecks — self-hosted Dead man's switch для homelab. Развёртывание: healthchecks-miran-setup.md. Доступ через nginx (healthchecks.katykhin.ru).
Управление ботами и 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 (systemd timer 01:00). Копируются:
- БД:
/home/prod/bots/telegram-helper-bot/database/tg-bot-database.db→/mnt/backup/vps/miran/db/(с датой в имени, хранение 14 дней). - Голосовые сообщения:
/home/prod/bots/telegram-helper-bot/voice_users/→/mnt/backup/vps/miran/voice_users/(rsync). - 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; в репозиторий не коммитить.
Подробности и восстановление — в Бэкапы: как устроены и как восстанавливать.