677f6028d96e4b7b8a7907022f0d8ebf233e1fe3
InfoUser Monitor
Мониторинг состояния ПК (Windows/Linux/macOS). Агент на каждом компьютере отправляет метрики на сервер раз в час, а веб-интерфейс показывает список машин, пользователей, IP, CPU/RAM, диски и процессы.
Возможности
- Дашборд с фильтрами по статусу, пользователю и поиском по хосту/IP/OS
- Графики CPU/RAM за 24 часа на странице ПК
- Уведомления об офлайн-ПК (in-app + webhook + Telegram)
- Экспорт списка ПК в CSV
- JWT-авторизация с ролями admin/viewer
Структура
info-user/
├── server/ # FastAPI + веб-интерфейс
│ ├── routes/
│ ├── templates/
│ ├── static/
│ ├── Dockerfile
│ └── main.py
├── agent/ # Python-агент
│ ├── agent.py
│ ├── config.json
│ └── install.sh
├── agent-deb/ # Исходники .deb пакета (dpkg-deb --build)
├── data/ # SQLite БД (создаётся при запуске)
├── docker-compose.yml
├── nginx.conf
└── README.md
Быстрый старт
- Клонировать/скопировать проект и перейти в папку:
cd /home/user/moder/info-user
- Создать файл окружения (опционально, но рекомендуется):
cat > .env <<EOF
SECRET_KEY=your-very-secret-key-here
AGENT_TOKEN=your-agent-token-here
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin
HTTP_PORT=80
OFFLINE_THRESHOLD_MINUTES=130
NOTIFICATION_WEBHOOK_URL=
NOTIFICATION_TELEGRAM_BOT_TOKEN=
NOTIFICATION_TELEGRAM_CHAT_ID=
EOF
- Запустить сервер:
docker compose up -d --build
- Открыть веб-интерфейс:
http://localhost
Логин/пароль по умолчанию: admin / admin.
- Установить агент на клиентский ПК (Linux):
Debian/Ubuntu/Astra Linux (рекомендуется)
# Установить .deb пакет
sudo dpkg -i info-user-agent_1.0.0_all.deb
# Настроить сервер и токен (интерактивно)
sudo info-user-agent-setup
# Или вручную:
sudo nano /opt/info-user-agent/config.json
Либо через репозиторий (добавив его в /etc/apt/sources.list.d/).
Вручную (любой Linux)
cd agent
sudo bash install.sh
Не забудьте отредактировать agent/config.json, указав server_url и agent_token.
Настройка агента
Файл agent/config.json:
{
"server_url": "http://your-server-ip",
"agent_token": "your-agent-token-here",
"interval_minutes": 60,
"send_public_ip": false
}
Собираемые данные
- Имя хоста, текущий пользователь, локальный IP
- Операционная система
- Uptime
- Загрузка CPU и RAM
- Информация по дискам
- Температура CPU (если доступна)
- Top-10 процессов по CPU
API
POST /api/heartbeat— приём данных от агентаGET /api/computers— список компьютеров (с фильтрамиstatus,user,search,sort,order)GET /api/computers/export/csv— экспорт в CSVGET /api/computers/{id}— детали ПК с историейGET /api/notifications— уведомленияPOST /api/notifications/{id}/read— отметить прочитаннымPOST /api/notifications/read-all— отметить все прочитаннымиPOST /api/auth/login— вход в веб-интерфейсPOST /api/auth/register— регистрация нового пользователя (viewer)
Уведомления об офлайн-ПК
ПК считается офлайн, если не присылал heartbeat в течение OFFLINE_THRESHOLD_MINUTES минут.
Доступные каналы:
- In-app — всегда, список уведомлений в веб-интерфейсе
- Webhook — отправка POST JSON на
NOTIFICATION_WEBHOOK_URL - Telegram — отправка сообщения в чат, если указаны
NOTIFICATION_TELEGRAM_BOT_TOKENиNOTIFICATION_TELEGRAM_CHAT_ID
Безопасность
- Смените
SECRET_KEYиAGENT_TOKENв.env. - Используйте HTTPS в production (nginx + certbot).
- Ограничьте доступ к
/api/heartbeatпо IP или сети. - Пользователи с ролью
viewerмогут только смотреть дашборд.
Требования
- Docker + Docker Compose
- Python 3.11+ (для локального запуска без Docker)
- Linux на клиентских ПК для systemd-таймера (для Windows можно запускать через Task Scheduler)
Планы (TODO)
- Дашборд с фильтрами и сортировкой
- Уведомления об офлайн-ПК (in-app + webhook + Telegram)
- Экспорт в CSV
- JWT-авторизация
- Email-уведомления (SMTP)
- Интеграция с Telegram-ботом (двусторонняя)
- Ролевая модель для уведомлений (какие роли получают какие типы уведомлений)
- Автоматические ежедневные/еженедельные отчёты (сводка по всем ПК)
- Поддержка PostgreSQL как альтернативы SQLite
- Агент для Windows (инсталлятор .msi или NSIS)
- Агент для macOS (launchd plist)
- Локализация веб-интерфейса (en/ru)
- График истории за произвольный период
- Сравнение нескольких ПК на одном графике
- Отправка алертов по CPU/RAM/диску (превышение порога)
- HTTPS из коробки (автоматический Let's Encrypt)
Лицензия
MIT / как есть.
Languages
Python
54%
HTML
32.9%
Shell
11.9%
JavaScript
0.5%
CSS
0.4%
Other
0.3%