# Конфигурация Проект использует `config.yaml`. Начни с `config.example.yaml`. ## telegram - `token` (string, обяз.): токен бота. - `admin_id` (int, обяз.): Telegram user id администратора. - `admin_ids` (list): список админов (первый используется как основной для уведомлений). ## paths - `artifact_state` (string): JSON файл состояния артефактов. - `restic_env` (string): путь к файлу с RESTIC_* переменными. ## thresholds - `disk_warn` (int, %): порог предупреждения по диску. - `load_warn` (float): порог предупреждения по нагрузке. - `high_load_warn` (float): порог для критической нагрузки. ## alerts - `enabled` (bool): включить алерты. - `interval_sec` (int): интервал опроса. - `cooldown_sec` (int): кулдаун между алертами. - `notify_cooldown_sec` (int): глобальный дедуп алертов (по умолчанию `cooldown_sec`). - `load_only_critical` (bool): слать только критичные алерты по нагрузке (без warn/OK). - `quiet_hours` (object): тихие часы для не‑критичных уведомлений. - `enabled` (bool): включить тихие часы. - `start` (string): начало, формат `HH:MM` (например `23:00`). - `end` (string): конец, формат `HH:MM` (например `08:00`). - `allow_critical` (bool): слать критичные алерты в тишину. - `notify_recovery` (bool): уведомлять о восстановлении. - `smart_enabled` (bool): SMART проверки. - `smart_interval_sec` (int): интервал SMART. - `smart_cooldown_sec` (int): кулдаун SMART. - `smart_temp_warn` (int): порог температуры (C). ## disk_report - `threshold` (int): порог диска для авто‑снимка. - `cooldown_sec` (int): кулдаун между снимками. - `top_dirs` (int): сколько директорий показывать. - `docker_dir` (string): путь к docker данным. - `logs_dir` (string): путь к логам. ## audit - `enabled` (bool): включить аудит. - `path` (string): путь к лог-файлу. По умолчанию `/var/server-bot/audit.log`. - `rotate_when` (string): режим ротации (`TimedRotatingFileHandler`), например `W0`. - `backup_count` (int): сколько файлов хранить. ## incidents - `enabled` (bool): включить лог инцидентов. - `path` (string): путь к лог-файлу. По умолчанию `/var/server-bot/incidents.log`. - `rotate_when` (string): режим ротации (`TimedRotatingFileHandler`), например `W0`. - `backup_count` (int): сколько файлов хранить. ## logging - `enabled` (bool): включить лог бота. - `path` (string): путь к лог-файлу. По умолчанию `/var/server-bot/bot.log`. - `rotate_when` (string): режим ротации (`TimedRotatingFileHandler`), например `W0`. - `backup_count` (int): сколько файлов хранить. - `level` (string): уровень логирования (`INFO`, `WARNING`, `ERROR`). ## safety - `dry_run` (bool): если `true`, опасные действия (upgrade/reboot/backup) не выполняются. ## reports - `weekly.enabled` (bool): включить еженедельный отчёт. - `weekly.day` (string): день недели (`Mon`..`Sun`), по умолчанию `Sun`. - `weekly.time` (string): локальное время `HH:MM`, по умолчанию `08:00`. ## external_checks - `enabled` (bool): включить фоновые проверки. - `state_path` (string): файл состояния для аптайма, по умолчанию `/var/server-bot/external_checks.json`. - `timeout_sec` (int): таймаут проверки в секундах. - `interval_sec` (int): интервал фоновых проверок. - `services` (list): список проверок. - `name` (string): название сервиса. - `type` (string): `http`, `tcp`, `ping`. - `url` (string): URL для `http`. - `host` (string): хост для `tcp`/`ping`. - `port` (int): порт для `tcp`. ## arcane - `base_url` (string): base url API Arcane. - `api_key` (string): ключ API Arcane. - `env_id` (int): ID окружения Arcane. ## npmplus Используется для статуса SSL сертификатов. - `base_url` (string): base url API, например `https://10.10.10.10:81/api`. - `identity` (string): email логин. - `secret` (string): пароль. - `token` (string): опционально статический токен (не рекомендуется при истечении). - `verify_tls` (bool): `false` для self-signed TLS. - `alerts.enabled` (bool): включить уведомления по истечению. - `alerts.days` (list): пороги в днях (например 30/14/7/1). - `alerts.cooldown_sec` (int): кулдаун между одинаковыми алертами. - `alerts.interval_sec` (int): интервал проверки. Логика токена: - первый токен: `POST /api/tokens` с `identity` и `secret`. - refresh: `GET /api/tokens` с текущим токеном. ## gitea - `base_url` (string): base url Gitea, например `http://localhost:3000`. - `token` (string): опциональный API токен. - `verify_tls` (bool): `false` для self-signed TLS. ## openwrt - `host` (string): адрес роутера, например `10.10.10.1`. - `user` (string): SSH пользователь (обычно `root`). - `port` (int): SSH порт (обычно `22`). - `identity_file` (string): путь к SSH ключу (опционально). - `strict_host_key_checking` (bool): `false` чтобы не спрашивать подтверждение ключа. - `timeout_sec` (int): таймаут SSH запроса. ## security - `reboot_password` (string): пароль для подтверждения reboot. ## docker - `autodiscovery` (bool): автодискавери по имени/label. - `watchdog` (bool): уведомления о контейнерах. - `label` (string): фильтр label `key=value`. - `match` (list): подстроки для поиска контейнеров. - `aliases` (map): alias -> реальное имя. - `containers` (map): явный список (legacy). Можно задавать: - `name` (string) - `url` (string) для URLs проверки Пример: ```yaml telegram: token: "YOUR_TELEGRAM_BOT_TOKEN" admin_id: 123456789 paths: artifact_state: "/opt/tg-bot/state.json" restic_env: "/etc/restic/restic.env" audit: enabled: true path: "/var/server-bot/audit.log" rotate_when: "W0" backup_count: 8 npmplus: base_url: "https://10.10.10.10:81/api" identity: "your@email.com" secret: "yourPassword" verify_tls: false ```