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.
3.6 KiB
Healthchecks на VPS Миран
Self-hosted Healthchecks.io на VPS 185.147.80.190 — Dead man's switch для homelab. Если Proxmox не отправляет ping после окна бэкапов, Healthchecks шлёт алерт в Telegram.
Доступ
| Параметр | Значение |
|---|---|
| URL | https://healthchecks.katykhin.ru/healthchecks/ |
| Логин | admin@katykhin.ru |
| Пароль | в Vaultwarden (Healthchecks admin) |
Доступ настроен по домену. Telegram webhook требует валидный SSL — без домена с Let's Encrypt бот не отвечает на /start.
Развёртывание (для переустановки)
1. Подготовка
ssh -p 15722 deploy@185.147.80.190
mkdir -p /home/prod/healthchecks
cd /home/prod/healthchecks
Скопировать из репозитория: scripts/healthchecks-docker/docker-compose.yml, scripts/healthchecks-docker/.env.example → .env
2. Конфигурация .env
SITE_ROOT=https://healthchecks.katykhin.ru/healthchecks
SECRET_KEY=<openssl rand -hex 32>
ALLOWED_HOSTS=healthchecks.katykhin.ru,185.147.80.190,localhost
DB_HOST=db
DB_NAME=hc
DB_USER=postgres
DB_PASSWORD=<надёжный пароль>
TELEGRAM_TOKEN=<токен из Vaultwarden: HOME_BOT_TOKEN>
TELEGRAM_BOT_NAME=<username бота из @BotFather, напр. Katykhinhomebot>
REGISTRATION_OPEN=False
DEFAULT_FROM_EMAIL=healthchecks@katykhin.ru
3. Запуск
docker-compose up -d
docker-compose run web /opt/healthchecks/manage.py createsuperuser --email admin@katykhin.ru --password <password>
docker-compose run web python /opt/healthchecks/manage.py settelegramwebhook
4. Nginx
Отдельный server block для healthchecks.katykhin.ru с Let's Encrypt. Референс: scripts/healthchecks-nginx-server.conf. Proxy на 127.0.0.1:8000; нужны location для /healthchecks/, /static/, /projects/, /accounts/, /integrations/, /ping/ и др. (Django редиректы без префикса).
5. DNS
A-запись: healthchecks.katykhin.ru → 185.147.80.190. Сертификат: certbot --nginx -d healthchecks.katykhin.ru.
Привязка Telegram к check
- Войти в Healthchecks → Integrations → Add Integration → Telegram
- Писать своему боту (из TELEGRAM_TOKEN), не @HealthchecksBot
- В Telegram:
/startботу → перейти по ссылке → Connect в веб-интерфейсе
Check homelab-backups (UUID: 9451b52b-89f5-4a6c-b922-247a775bbf45).
Ping с Proxmox
Скрипт /root/scripts/healthcheck-ping.sh, таймер backup-healthcheck-ping.timer — 04:35 ежедневно.
Конфиг /root/.healthchecks.env:
HEALTHCHECKS_URL=https://healthchecks.katykhin.ru/healthchecks
HEALTHCHECKS_HOMELAB_UUID=<uuid из Healthchecks>
Смена пароля без SMTP
Healthchecks требует SMTP для смены пароля через веб. Без SMTP — через Django:
cd /home/prod/healthchecks
docker-compose run web python /opt/healthchecks/manage.py shell -c "
from django.contrib.auth import get_user_model
User = get_user_model()
u = User.objects.get(email='admin@katykhin.ru')
u.set_password('NEW_PASSWORD')
u.save()
print('OK')
"
Связанные документы
- vps-miran-bots — VPS Миран, порты
- backup-howto — бэкапы, расписание