AlertRadar — это self-hosted система мониторинга серверов, сайтов, SSL-сертификатов и балансов биллинговых сервисов (Timeweb, Reg.ru, TargetSMS). Она отправляет мгновенные уведомления в Telegram и на Email, показывает публичный статус-страницу для клиентов и предоставляет API для интеграций. Написана на Node.js, TypeScript, React и PostgreSQL.
- Ping проверка серверов по IP
- Мгновенные уведомления при смене статуса (online/offline)
- Повторные напоминания, если сервер долго недоступен
- Кроссплатформенность — работает на Windows и Linux
- HTTP/HTTPS проверка доступности
- Автоматическая проверка SSL сертификатов
- Уведомления за 7 дней до истечения SSL
- Отслеживание времени ответа
- Поддержка Basic Auth для закрытых страниц
Отслеживание баланса в популярных сервисах:
- Timeweb — хостинг и VPS
- Reg.ru — регистрация доменов
- Cloud Reg.ru — облачные сервисы
- TargetSMS — SMS-рассылки
Уведомления приходят, когда баланс подходит к концу.
- Telegram — все алерты в один чат
- Email — приглашения пользователей и сброс пароля
- Страница статуса проекта для клиентов
- API для внешних интеграций
- Node.js + TypeScript
- Fastify — фреймворк
- Prisma — ORM для работы с PostgreSQL
- node-cron — планировщик задач
- React 18 + TypeScript
- Vite — сборка
- React Router — навигация
- Axios — HTTP запросы
- Lucide React — иконки
- PostgreSQL
- Node.js 18+
- PostgreSQL 14+
- Telegram бот (для уведомлений)
cd alertradarСоздайте базу данных PostgreSQL:
CREATE DATABASE alertradar;cd api
# Установка зависимостей
npm install
# Копируем пример конфига
cp env.example .env
# Редактируем .env под свои данныеЗаполните .env файл:
# База данных
DATABASE_URL="postgresql://user:password@localhost:5432/alertradar?schema=public"
# Сервер
PORT=3000
LOG_LEVEL="warn"
# Telegram бот
TELEGRAM_BOT_TOKEN="ваш_токен_бота"
TELEGRAM_CHAT_ID="id_чата_для_уведомлений"
# JWT
JWT_SECRET="случайная_строка_для_подписи_токенов"
# Frontend URL
FRONTEND_URL="http://localhost:5173"
# SMTP для email
SMTP_HOST="smtp.example.com"
SMTP_PORT=465
SMTP_USER="your@email.com"
SMTP_PASS="пароль_от_почты"Применяем миграции:
npm run prisma:generate
npm run prisma:migrateСоздаём администратора:
npx tsx scripts/add-user.ts --email admin@example.com --username admin --password yourpassword --role ADMINcd ../panel
# Установка зависимостей
npm install
# Копируем пример конфига
cp env.example .envСодержимое .env:
VITE_SERVER_PER_PAGE=4
VITE_SITE_PER_PAGE=4
VITE_THIS_SERVER_IP='127.0.0.1'Development режим:
# Terminal 1 — Backend
cd api
npm run dev
# Terminal 2 — Frontend
cd panel
npm run devОткрываем http://localhost:5173
Production режим:
# Backend
cd api
npm run build
npm start
# Frontend
cd panel
npm run buildalertradar/
├── api/ # Backend
│ ├── src/
│ │ ├── routes/ # API endpoints
│ │ ├── services/ # Бизнес-логика
│ │ └── utils/ # Утилиты
│ └── prisma/ # Схема БД и миграции
│
└── panel/ # Frontend
└── src/
├── pages/ # Страницы
├── components/ # Компоненты
└── api/ # API клиенты
- Создайте бота через @BotFather
- Получите токен бота
- Создайте группу или чат, добавьте туда бота
- Узнайте ID чата (можно через @userinfobot)
- Внесите токен и ID чата в
.env
MIT License — делайте с кодом что хотите.