Как установить Uptime Kuma на облачный сервер VDS/VPS в Docker: первый вход, проверки HTTP, ping и TCP-портов, уведомления в Telegram и на почту, доступ по домену с HTTPS и резервные копии.
Содержание
Uptime Kuma — система мониторинга с веб-интерфейсом. Через заданные промежутки времени она проверяет сайты, серверы и отдельные службы и сообщает, если что-то перестало отвечать: в Telegram, по электронной почте или через любой из более чем 90 поддерживаемых сервисов. Кроме того, Uptime Kuma строит графики времени ответа, следит за сроком действия сертификатов и позволяет опубликовать страницу состояния для клиентов.
Вход на сервер выполняется под учётной записью root по паролю или SSH-ключу (см. статью Как подключиться к серверу по SSH). Команды ниже приведены для root, поэтому sudo в них не указан. Примеры даны для Ubuntu 26.04.
Где разместить мониторинг
Устанавливайте Uptime Kuma не на тот сервер, который она проверяет. Если сервер с сайтом перестанет работать, вместе с ним остановится и мониторинг, и уведомление о сбое отправить будет некому. Для мониторинга подойдёт отдельный небольшой облачный сервер или сервер, на котором работают другие задачи.
Сервер мониторинга тоже может выйти из строя. Если это важно, проверяйте его со второго экземпляра Uptime Kuma или из внешнего сервиса мониторинга.
Установка в Docker
Uptime Kuma распространяется в виде образа Docker louislam/uptime-kuma. Сейчас актуальна вторая основная версия (последний выпуск на ноябрь 2026 года — 2.5.9), поэтому в примере указан тег 2: с ним обновления приходят в пределах второй версии. Docker и плагин Compose должны быть установлены заранее; порядок установки описан в статье о Docker. Создайте папку и файл compose.yaml:
mkdir -p /opt/uptime-kuma
cd /opt/uptime-kuma
nano compose.yamlСодержимое файла:
services:
uptime-kuma:
image: louislam/uptime-kuma:2
restart: unless-stopped
volumes:
- ./data:/app/data
ports:
- "127.0.0.1:3001:3001"Запустите Uptime Kuma:
docker compose up -dБаза данных, настройки и история проверок хранятся в папке /opt/uptime-kuma/data. Сетевые файловые системы, например NFS, разработчики не поддерживают: папка должна находиться на локальном диске сервера.
Порт и доступ к интерфейсу
Uptime Kuma принимает подключения на порту 3001. В примере порт опубликован только на адресе 127.0.0.1, поэтому из интернета интерфейс недоступен, а открывать его будет nginx (см. следующий раздел). Публиковать порт на всех адресах не стоит. Во-первых, правила ufw не действуют на порты, опубликованные Docker: такие подключения обрабатываются до проверки правил ufw. Во-вторых, до первого входа учётную запись администратора может создать любой, кто откроет страницу.
Если домен ещё не настроен, откройте интерфейс через SSH-туннель. Выполните на своём компьютере команду ниже и, не закрывая подключение, откройте в браузере http://localhost:3001:
ssh -L 3001:127.0.0.1:3001 root@203.0.113.10Доступ по домену с HTTPS
Uptime Kuma не работает в подкаталоге адреса, поэтому для неё нужен отдельный домен или поддомен, например status.example.ru, с A-записью, указывающей на IP-адрес сервера. Установите nginx и certbot:
apt install nginx certbot python3-certbot-nginxСоздайте файл /etc/nginx/sites-available/status.example.ru:
server {
listen 80;
server_name status.example.ru;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
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;
}
}Интерфейс Uptime Kuma работает через WebSocket, поэтому заголовки Upgrade и Connection обязательны. Включите сайт, проверьте настройки и получите сертификат:
ln -s /etc/nginx/sites-available/status.example.ru /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
certbot --nginx -d status.example.rucertbot добавит настройки HTTPS в конфигурацию сайта и будет продлевать сертификат автоматически (подробнее — в статье о сертификатах certbot). Если межсетевой экран ufw включён, разрешите веб-порты командой ufw allow 80,443/tcp. Общие сведения о настройке nginx приведены в статье Сайт на своём сервере: nginx, PHP и база данных.
Первый вход
Откройте https://status.example.ru. Если в браузере выбран русский язык, интерфейс откроется на русском; иначе язык можно сменить в разделе «Настройки» → «Внешний вид».
- Uptime Kuma спросит, какую базу данных использовать. Выберите SQLite: это один файл базы данных, который разработчики рекомендуют для небольших установок.
- Создайте учётную запись администратора: придумайте логин и надёжный пароль.
- Откройте «Настройки» → «Обратный прокси» и для параметра «Доверенный прокси» выберите «Да». Тогда в журналах будут видны настоящие IP-адреса посетителей, а не адрес nginx.
В разделе «Настройки» → «Безопасность» можно включить двухфакторную аутентификацию.
Добавление проверок
Каждая проверка в Uptime Kuma называется монитором. Чтобы добавить её, нажмите «Новый монитор», выберите тип в списке «Тип монитора», задайте понятное имя и сохраните. Чаще всего используются четыре типа:
- HTTP(s): Uptime Kuma открывает указанный адрес и считает проверку успешной, если сервер вернул код ответа от 200 до 299. Для сайтов с HTTPS отметьте «Уведомление об истечении срока действия сертификата», чтобы заранее узнать о его окончании.
- HTTP(s) - Ключевое слово: дополнительно проверяет, что на странице есть заданный текст. Так можно заметить ситуацию, когда сервер отвечает, но вместо сайта показывает страницу с ошибкой.
- TCP Port: проверяет, что на указанном адресе и порту принимаются подключения, например у SSH (порт 22) или почтового сервера (порт 25).
- Ping: проверяет, отвечает ли сервер на ping.
По умолчанию монитор опрашивает цель раз в 60 секунд. Интервал можно уменьшить, но при значениях меньше 20 секунд Uptime Kuma предупреждает о возможном снижении производительности. Сбоем по умолчанию считается уже первая неудачная проверка; чтобы кратковременные перебои связи не вызывали ложных тревог, укажите в поле «Попыток» число повторных проверок перед тем, как монитор будет отмечен неработающим.
Уведомления в Telegram и на почту
Способы уведомления настраиваются в окне «Настройка уведомления», которое открывается из формы монитора или из раздела «Настройки» → «Уведомления». Если отметить «По умолчанию включён», уведомление будет подключаться ко всем новым мониторам, а «Применить ко всем существующим мониторам» подключит его к уже созданным.
Telegram. Создайте бота: отправьте в Telegram боту @BotFather команду /newbot и следуйте его указаниям. В конце он пришлёт токен, который нужно вставить в поле «Токен бота». Затем напишите своему новому боту любое сообщение и нажмите «Авто-получение» рядом с полем «ID чата»: Uptime Kuma определит идентификатор чата по этому сообщению. Проверьте отправку кнопкой «Тест» и сохраните настройки.
Электронная почта. Выберите тип Email (SMTP) и укажите параметры почтового сервера, через который будут отправляться письма: «Имя хоста» (например, smtp.example.com), «Порт», режим «Безопасность» (STARTTLS для порта 587 или TLS для порта 465), «Логин» и «Пароль». В полях «От кого» и «Кому» укажите адрес отправителя и адрес, на который нужно присылать уведомления, например monitoring@example.com.
Обновление
Чтобы обновить Uptime Kuma, загрузите новую версию образа и пересоздайте контейнер:
cd /opt/uptime-kuma
docker compose pull
docker compose up -d --force-recreateТег 2 в compose.yaml ограничивает обновления второй основной версией. На следующую основную версию переходите вручную, сменив тег, после того как прочитаете инструкцию разработчиков и сделаете резервную копию. Например, при переходе с первой версии на вторую база данных преобразовывалась в новый формат, и прерывать этот процесс было нельзя.
Резервные копии
Во второй версии Uptime Kuma единственный поддерживаемый способ резервного копирования — копия папки data; прежняя функция выгрузки настроек в JSON удалена. Чтобы база данных не изменялась во время копирования, остановите контейнер:
cd /opt/uptime-kuma
docker compose stop
tar -czf /root/uptime-kuma-$(date +%F).tar.gz data
docker compose startДля восстановления остановите контейнер, замените папку data содержимым архива и запустите контейнер снова. Храните копии за пределами сервера мониторинга.
Не нашли ответ? Напишите в поддержку — подскажем.


