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.
125 lines
7.7 KiB
Markdown
125 lines
7.7 KiB
Markdown
# 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 |
|
||
|
||
---
|
||
|
||
## Управление ботами и 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`). Креды S3 — в Vaultwarden (объект **MIRAN_S3**). Файл `/root/.vps-miran-s3.env` с `S3_ACCESS_KEY`, `S3_SECRET_KEY`, `S3_BUCKET_NAME` генерируется скриптами или создаётся вручную из Vaultwarden. Файл читается только root; в репозиторий не коммитить.
|
||
|
||
Подробности и восстановление — в [Бэкапы: как устроены и как восстанавливать](../backup/backup-howto.md).
|