- 5 min sustained offline window для VPS/PC/Synology/HA (раньше было только у
Keenetic) + новый STARTUP_GRACE_SEC=300 — первые 5 минут после старта сервиса
алёрты offline не отправляются, но состояние трекается. Это убирает массовый
fantom-alert при перезапуске vps-monitoring.
- Атомарная запись JSON-файлов через tempfile+os.replace и явный encoding=utf-8
везде (data/keenetic.json, pc_agents.json, synology.json, homeassistant.json,
servers.json, settings.json, metrics.json). Краш в момент записи больше не
оставляет битый файл с русскими названиями.
- Чистка: убран неиспользуемый passlib + dead bcrypt-импорт в auth.py
(verify_password всё равно был обычным сравнением); SECRET_KEY можно
переопределить через VPS_MONITORING_SECRET; убран мертвый import json там,
где он больше не нужен.
- Bump app.js cache bust до 20260524c.
Co-authored-by: Cursor <cursoragent@cursor.com>
Phantom OFFLINE/online Telegram spam from brief poll failures.
Wait 5 min sustained offline, re-verify auth before alerting,
30 min cooldown between repeat alerts, single recovery message.
Co-authored-by: Cursor <cursoragent@cursor.com>
aiohttp hung on KeenDNS from VPS while httpx works (keenetic-unified
pattern). Align add/import/bulk URL parsing with parse_keenetic_web_url.
Co-authored-by: Cursor <cursoragent@cursor.com>
Resetting the session after auth dropped cookies and broke metrics
collection with "No data from router" despite successful login.
Co-authored-by: Cursor <cursoragent@cursor.com>
Probing used short timeouts on the session reused for RCI calls.
Recreate the session after auth and treat 503 as transient.
Co-authored-by: Cursor <cursoragent@cursor.com>
KeenDNS returns multiple A records including unreachable IPs; aiohttp
was timing out on the first bad address. Iterate all resolved IPs with
short connect timeouts, serialize polls with a lock, and fail faster.
Co-authored-by: Cursor <cursoragent@cursor.com>
Run refresh-all in background so API stays responsive during 24-router
poll. Cap per-device poll at 75s, add 2s gap between routers, bump
KeenDNS connect/read timeouts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Wire keenetic monitor loop and router into main app. Add deduplicated
Telegram alerts for router offline, internet, CPU/RAM, and VPN down.
Update README with KeenDNS edit, import format, troubleshooting.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add PATCH endpoint and inline card editor to update web_url and host,
with URL validation and automatic refresh after save.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use web_url scheme and host:port for API base URL instead of
forcing https. Force IPv4 in aiohttp to avoid IPv6 hangs on
KeenDNS. Sync canonical 24-router list with Russian names.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add web_url/anydesk to router records, host fallback for Web button
on offline cards, cache-bust app.js, and scripts to sync import list.
Co-authored-by: Cursor <cursoragent@cursor.com>
New tabs:
- Synology NAS: CPU, RAM, temp, volumes, VMs, Docker containers
- Home Assistant: sensors, automations, persons, climate, battery, doors
New features:
- Personalized PC agent download with custom name
- Notification settings: per-category Telegram/Email/WhatsApp toggles
- Email via SMTP, WhatsApp via CallMeBot API
- Test notification buttons for each channel
- Unified notifier replaces direct Telegram calls in alerter
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- WebApp inline button uses https://IP.nip.io/telegram-app
- Bot menu button 'VPS Panel' set via setChatMenuButton API
- nginx reverse proxy with valid SSL cert on port 443
- Fallback to regular URL button if WebApp fails
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Switch xterm.js from cdnjs (404) to jsdelivr (working)
- Add xterm-addon-fit for auto-resize terminal
- Change default port from 8000 to 7272 everywhere
- Install script: --port flag for custom port selection
- sed-based port injection into systemd service at install time
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Sectioned card layout: СЕРВЕРЫ, ДЕЙСТВИЯ, УВЕДОМЛЕНИЯ, СИСТЕМА
- Expandable server cards with metrics detail + reboot/delete
- Mute/unmute alerts (2h, 8h) with API support
- Green/red pulsing status dots, colored badges
- Toast notifications, loading spinner
- Overview API endpoint for Mini App data
- Mute integration with alerter system
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- FastAPI backend with auth, server CRUD, metrics collection
- Web dashboard with dark theme, server cards, SSH terminal (xterm.js)
- Telegram bot with inline keyboards, server management, reboot
- Telegram Mini App for mobile monitoring
- Background monitoring via asyncssh (CPU, RAM, Disk, Network, Uptime)
- Alert system with configurable thresholds
- WebSocket SSH terminal in browser
- One-command install script
- Systemd service configuration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>