1. Что такое Beszel и как он работает
Beszel — это self-hosted система мониторинга серверов с веб-интерфейсом. Она показывает в реальном времени и историческими графиками: загрузку CPU, использование RAM и диска, сетевой трафик, температуру, load average и состояние Docker-контейнеров.
Beszel состоит из двух частей:
Хаб (Hub)
Веб-интерфейс с дашбордом и базой данных. Устанавливается на один VPS. Именно здесь вы смотрите графики и настраиваете алерты. Работает на порту 8090, основан на PocketBase + SQLite.
Агент (Agent)
Лёгкий процесс, который собирает метрики сервера и отправляет их в хаб. Устанавливается на каждый сервер, который хотите мониторить. Потребляет ~16 МБ RAM.
Как хаб и агент общаются?
Если агент на том же сервере — общение через Unix-сокет (локальный файл), сеть не задействована. Если агент на другом сервере — агент устанавливает исходящее WebSocket-соединение к хабу (primary). Дополнительно агент слушает порт 45876 — хаб использует его как резервный канал при обрывах. Порт 45876 на агент-сервере должен быть доступен с хаба.
📊 CPU, RAM, диск, сеть
История в виде графиков за часы, дни, недели. Видно пики нагрузки.
🐳 Docker-контейнеры
CPU и RAM каждого контейнера отдельно. Сразу видно, кто жрёт ресурсы.
🌡️ Температура и диски
Температура CPU и S.M.A.R.T.-данные дисков. Предупреждение до поломки.
🔔 20+ каналов алертов
Telegram, Discord, Slack, Email, Gotify — уведомление когда диск переполнен или сервер лёг.
👥 Несколько пользователей
Каждый пользователь управляет своими серверами. Можно шарить систему между командой.
💾 Автобэкапы
Данные мониторинга можно бэкапить в S3 или локально. Не потеряете историю.
2. Требования к серверу
Beszel работает даже на самых бюджетных VPS. Агент настолько лёгкий, что его ставят на Raspberry Pi и роутеры с OpenWRT.
| Компонент | RAM | CPU | Диск |
|---|---|---|---|
| Хаб (Hub) | 20–40 МБ | < 1% в покое | ~3 МБ + история |
| Агент (Agent) | 16–20 МБ | < 0.5% | ~5 МБ |
| Итого на сервере | ~60 МБ | < 2% | < 100 МБ |
Минимальные требования для сервера с хабом:
Ставьте на уже работающий сервер
Не нужен отдельный VPS под мониторинг. Beszel отлично уживается с Nginx, сайтами и другими Docker-контейнерами. На VPS с 1 ГБ RAM после установки Beszel останется 900+ МБ свободными.
3. Установка хаба и агента через Docker
Проще всего поставить хаб и агент вместе через Docker Compose на одном сервере. Агент при этом общается с хабом через Unix-сокет — никаких сетевых портов.
Шаг 1: установить Docker
Если Docker ещё не установлен:
curl -fsSL https://get.docker.com | shШаг 2: создать docker-compose.yml
В этой конфигурации хаб и агент общаются через общий сокет-файл — быстро и без сети:
services:
beszel:
image: henrygd/beszel:latest
container_name: beszel
restart: unless-stopped
environment:
APP_URL: http://localhost:8090
ports:
- "127.0.0.1:8090:8090"
volumes:
- ./beszel_data:/beszel_data
- ./beszel_socket:/beszel_socket
beszel-agent:
image: henrygd/beszel-agent:latest
container_name: beszel-agent
restart: unless-stopped
network_mode: host
volumes:
- ./beszel_agent_data:/var/lib/beszel-agent
- ./beszel_socket:/beszel_socket
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
LISTEN: /beszel_socket/beszel.sock
HUB_URL: http://localhost:8090
TOKEN: ""
KEY: ""TOKEN и KEY пока оставьте пустыми
Оба значения генерируются автоматически при добавлении сервера в веб-интерфейсе. После первого входа вы скопируете TOKEN и KEY из UI и вставите их сюда. Подробнее — в шаге «Первый вход».
Шаг 3: запустить
mkdir ~/beszel && cd ~/beszel
# Создайте docker-compose.yml с содержимым выше, затем:
docker compose up -dПроверьте, что хаб запустился:
docker compose psАгент покажет ошибку — это нормально
Контейнер beszel (хаб) должен быть running. Контейнер beszel-agent будет перезапускаться, пока TOKEN и KEY не заполнены — это ожидаемо. После шага 5 («Первый вход») вы получите оба значения из UI и заполните их.
4. Nginx + SSL
Порт 8090 привязан к 127.0.0.1 — снаружи не виден. Настроим Nginx как обратный прокси, чтобы открыть Beszel по красивому HTTPS-адресу.
Шаг 1: создать конфиг Nginx
server {
listen 80;
server_name monitor.ваш-домен.ru;
location / {
proxy_pass http://127.0.0.1:8090;
proxy_http_version 1.1;
# Обязательно для WebSocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
}ln -s /etc/nginx/sites-available/beszel /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginxШаг 2: DNS и SSL
Добавьте A-запись у вашего регистратора домена и получите сертификат:
monitor.ваш-домен.ru → A → IP_ВАШЕГО_СЕРВЕРАapt install -y certbot python3-certbot-nginx
certbot --nginx -d monitor.ваш-домен.ruCertbot сам обновит конфиг Nginx для HTTPS и настроит автопродление сертификата.
5. Первый вход и добавление сервера
Откройте https://monitor.ваш-домен.ru в браузере. Beszel предложит создать первого пользователя — он автоматически становится администратором.
Добавление первого сервера (того же VPS)
- 1Нажмите кнопку Add System в правом верхнем углу.
- 2Заполните поля: Name — любое название (например, Main VPS), Host/IP —
/beszel_socket/beszel.sock(путь к Unix-сокету, не IP-адрес), Port — оставьте пустым. - 3Хаб покажет готовый конфиг агента — в нём будут строки с заполненными значениями
TOKEN:иKEY:. Скопируйте значение каждого из них. - 4Откройте
~/beszel/docker-compose.ymlи вставьте скопированные значения в поля агентаTOKEN: ""иKEY: "". Заодно обновитеAPP_URLв секции хаба:APP_URL: https://monitor.ваш-домен.ru— это нужно для корректных ссылок в уведомлениях. - 5Перезапустите контейнеры:
cd ~/beszel && docker compose up -d. Хаб перезапустится — обновите страницу в браузере и войдите заново если потребуется. - 6Через несколько секунд сервер появится в списке с зелёным индикатором. Нажмите на него — откроются графики.
После добавления кликните на карточку сервера — откроется дашборд с графиками CPU, RAM, диска, сети и каждого Docker-контейнера.
6. Добавление второго сервера
Главная фишка Beszel — мониторинг нескольких серверов из одного дашборда. Beszel упрощает этот процесс до минимума: хаб сам генерирует готовую команду с уже вписанными ключами. Вам остаётся скопировать и запустить её на нужном сервере.
Как добавить любой сервер
- 1В хабе нажмите Add System.
- 2Заполните: Name — название сервера, Host/IP — публичный IP второго сервера, Port —
45876. - 3Хаб сгенерирует готовую команду установки с уже вписанными KEY и TOKEN. Вы увидите кнопку скопировать и готовый блок кода.
- 4Подключитесь к второму серверу по SSH и выполните скопированную команду. Она скачает агент и сразу настроит его с правильными ключами.
- 5Через несколько секунд сервер появится в дашборде с зелёным индикатором.
Что делает сгенерированная команда?
Хаб предложит на выбор два варианта: бинарный установщик (рекомендуется — один процесс, автообновление, работает через systemd) или Docker Compose. В обоих случаях KEY и TOKEN уже вписаны в команду. Агент сам инициирует основное соединение к хабу, но также слушает порт 45876 для резервного канала.
Откройте порт 45876 на агент-сервере
Агент слушает порт 45876 — хаб использует его как резервный канал связи. Разрешите входящие подключения на этот порт хотя бы с IP вашего хаба:
sudo ufw allow from <IP_ХАБА> to any port 45876Без этого основной мониторинг работает, но при обрывах WebSocket-соединения хаб не сможет переподключиться автоматически.
Мониторинг Docker на втором сервере
Агент автоматически находит Docker-сокет на /var/run/docker.sock. Если Docker установлен — контейнеры появятся в дашборде. Если агент установлен как бинарник и контейнеры не отображаются, добавьте его пользователя в группу docker: sudo usermod -aG docker beszel-agent && sudo systemctl restart beszel-agent.
7. Алерты и уведомления в Telegram
Beszel умеет присылать уведомления, когда CPU перегружен, диск заполнен или сервер вообще перестал отвечать. Настроим Telegram — самый удобный канал.
Шаг 1: создать Telegram-бота
- 1Найдите в Telegram @BotFather и отправьте
/newbot. - 2Дайте боту имя и username (должен заканчиваться на bot). BotFather вернёт токен вида
7891234567:AABBcc... - 3Напишите своему боту
/start. Это нужно, чтобы бот мог отправлять вам сообщения. - 4Узнайте свой Chat ID — напишите любое сообщение боту @userinfobot в Telegram. Он мгновенно ответит вашим ID в формате
Id: 123456789. Запишите это число.
Шаг 2: добавить уведомление в Beszel
- 1В хабе откройте Settings → Notifications → Add notification.
- 2В поле URL введите Telegram-адрес по формату Shoutrrr:
telegram://TOKEN@telegram?chats=CHAT_ID
# Пример:
telegram://7891234567:AABBccDDeeFF@telegram?chats=123456789- 3Нажмите Test — в Telegram должно прийти тестовое сообщение. Если пришло — нажмите Save.
- 4Теперь настройте пороги срабатывания. В списке серверов нажмите иконку колокольчика рядом с нужным сервером.
- 5Выберите метрику и порог. Например: CPU — 90%, Memory — 90%, Disk — 85%, Status — сервер недоступен.
- 6Сохраните. Теперь при превышении порогов придёт уведомление в Telegram.
Пример уведомления в Telegram
Beszel Alert — Main VPS
Disk: 87.3% (triggered at 85%)
2026-03-08 14:32 UTC
8. Beszel vs Prometheus vs Uptime Kuma
Три разных инструмента для разных задач. Вот когда что выбрать:
| Критерий | Beszel | Prometheus+Grafana | Uptime Kuma |
|---|---|---|---|
| Потребление RAM | ~60 МБ | 300–500 МБ | 50–100 МБ |
| Время настройки | 2 минуты | 30–60 минут | 5 минут |
| Метрики сервера | CPU/RAM/диск/сеть | Сотни метрик + кастомные | Нет |
| Docker-контейнеры | Да | Через cAdvisor | Только статус |
| Мониторинг сайтов | Нет | Через Blackbox Exporter | Да (специализация) |
| Кастомные метрики | Нет | Да (PromQL) | Нет |
| Несколько серверов | Да, из коробки | Да, сложнее | Нет |
| Страница статуса | Нет | Нет | Да |
Выберите Beszel, если:
У вас 1–10 серверов, вы хотите видеть загрузку CPU/RAM и Docker-контейнеры, и не хотите тратить час на настройку. Идеально для личных проектов и малого бизнеса.
Выберите Prometheus+Grafana, если:
Нужны метрики из приложений, сложные алерты, PromQL-запросы или мониторинг 20+ серверов. Beszel и Prometheus прекрасно работают вместе — каждый для своей задачи.
Выберите Uptime Kuma, если:
Главная задача — следить за доступностью сайтов и сервисов, и нужна публичная страница статуса для клиентов. Beszel + Uptime Kuma = полный набор мониторинга.
9. Частые вопросы
Частые проблемы
Проблема: Сервер добавлен, но статус «Pending» и метрики не появляются
Решение: Агент не подключился к хабу. Проверьте логи: docker compose logs beszel-agent — там будет ошибка. Чаще всего причина — KEY или TOKEN скопированы неточно. Убедитесь, что оба значения в docker-compose.yml совпадают с теми, что показал хаб. После исправления: docker compose up -d beszel-agent.
Проблема: Beszel открывается на порту 8090 напрямую (без Nginx)
Решение: В docker-compose.yml порт должен быть "127.0.0.1:8090:8090", а не "8090:8090". Первый вариант закрывает порт снаружи. Перезапустите: docker compose up -d.
Проблема: Docker-контейнеры не появляются в дашборде агента
Решение: Проверьте, что /var/run/docker.sock примонтирован в контейнер агента. Для бинарного агента: добавьте пользователя beszel-agent в группу docker: sudo usermod -aG docker beszel-agent, затем sudo systemctl restart beszel-agent.