Сегодня хочу рассказать об UptimeKuma. Это монитор доступности всякого, я использую его в качестве монитора для сайтов веб-студии. В этой заметке вы найдете супер детальную инструкцию для новичков, по установке Кумы на ваш виртуальный сервер.

Почему нравится:
✅ Open source. Размещается у себя на сервере. Бесплатно.
✅ Возможность настройки доступности страницы сайта по ключевому слову на ней. Невероятно полезная функция. Можно проверять, нормально ли прошел импорт откуда-либо-нибудь на сайт, контролировать работу кронов, … много других полезных кейсов можно придумать.
✅ Помимо ключевого слова, на странице проверяется и её статус(валидные коды ответа можно задавать), а так же время ответа сайта. Отваливаются фасетные индексы в битриксе? Узнаете об этом первыми ?
✅ Продуманный и красивый интерфейс самого приложения.
✅ В качестве уведомлений о событиях мониторинга можно использовать Телеграмм оповещения. (И задалбывать этими уведомлениями чатик с командой проекта ?)
✅ Можно сделать красивый дашборд из мониторов, и поделиться им с заказчиком.
✅ Быстрая установка на сервер и настройка самого мониторинга.
Установка UptimeKuma
Нам потребуется виртуальный сервер. Я использую спринтбокс, вот вам моя реферальная ссылка.
Можете использовать любой виртуальный сервер, на свое усмотрение.
Создаем новый бокс, выбираем в качестве ОС Ubuntu.
Выбираем SSD и самый дешевый тариф. На конец 2022 стоимость составляет 169 рубей в месяц. Оно будет работать. У меня мониторы настроены на ~10 сайтов. CPU вообще не загружен, ОЗУ загружен ~60-70%. Думаю, что от количества мониторов загрузка по ОЗУ не сильно вырастет. Правда на этапе установки, на этом тарифе, все не очень быстро.
Зато дешево ?

В открывшемся окне подтверждаем выбор тарифа, и ждем, когда бокс создастся. Занимает это около 2х минут.
Данные для доступа к серверу спринтбокс отправит вам на почту.
Ну-с приступим.
Открываем любой эмулятор консоли, в Windows я использую cmder.
Теперь давайте подключимся к вашему боксу. Вместо 0.0.0.0 нужно вставить адрес вашего бокса из почты.
ssh root@0.0.0.0
Так как вы подключаетесь впервые к данному хосту, терминал спросит вас
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Пишем “yes” и нажимаем Enter. После чего вводим пароль от пользователя root. Затем система заставит поменять пароль.
Обновим систему
apt-get update
sudo apt-get upgrade
Установим Nodejs. На нем работает Uptime Kuma.
curl -fsSL https://deb.nodesource.com/setup_19.x | sudo -E bash - &&\
sudo apt-get install -y nodejs
Устанавливаем/обновляем npm до последней версии
npm install npm -g
Устанавливаем саму Uptime Kuma
git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup
Устанавливаем pm2 и запускаем процесс Uptime Kuma в фоне
npm install pm2 -g && pm2 install pm2-logrotate
pm2 start server/server.js --name uptime-kuma
Видим в табличке, что статус процесса “online”.

Отлично.
Давайте запомним текущие запущенные процессы, и установим их на автозагрузку, на случай, если бокс будет перезагружен.
pm2 startup
pm2 save
Теперь идем в браузер и вводим IP адрес вашего бокса и 3001, порт на конце, что бы проверить, что все работает.
http://0.0.0.0:3001
Тада-а-а-ам ?
Привязка своего доменного имени
Давайте установим веб-серврер и настроить на нем Reverse Proxy, что бы открывать админку приложения через доменное имя.
Первым делом, нужно прописать A-записи для вашего домена, указав IP вашего виртуального сервера.
Вернемся в терминал.
Я буду использовать nginx, вы можете использовать любой сервер. Гайд по настройке вашего веб-сервера тут.
Установим nginx
sudo apt-get install nginx
Удалим дефолтный конфиг и конфиг для примера.
sudo unlink /etc/nginx/sites-available/default
Создадим свой конфиг. Переходим в нужную папку, там создаем файл и открываем его в редакторе nano
cd /etc/nginx/sites-available
touch uptimekuma.config
nano /etc/nginx/sites-available/uptimekuma.config
Что бы вставить текст, скопируйте содержимое и, в активном окне терминала, нужно нажать правую кнопку мышки. (Возможно несколько раз согласиться с предупреждениями)
Ctrl+S чтобы сохранить, Ctrl+X чтобы выйти из редактора.
И не забудьте поменять YOUR-DOMAIN.EXAMPLE на своё доменное имя.
#The Nginx server instance
server {
listen 80;
# Remove '#' in the next line to enable IPv6
# listen [::]:80;
server_name YOUR-DOMAIN.EXAMPLE;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
Если хотите использовать SSL-сертификат – тут можно найти конфиг под nginx.
Создадим ссылку в директории sites-enabled на созданный нами конфиг.
ln -s /etc/nginx/sites-available/uptimekuma.config /etc/nginx/sites-enabled/uptimekuma.config
Удалим файл конфигурации по умолчанию
rm /etc/nginx/sites-enabled/default
Теперь надо протестировать, все ли в порядке с конфигом
nginx -t
Должно быть всё ок.

Ну и перезапустим nginx
sudo systemctl restart nginx
Проверим в браузере: теперь все должно заработать по нашему домену.
Стойте!
Не закрывайте консоль! Пока мы тут, предлагаю ещё кое-что сделать. А именно заглушить звук уведрмоений Телеграм ботов, которых вы создадите, для оповещения о событиях мониторинга. Очень сильно раздражает.
nano /root/uptime-kuma/server/notification-providers/telegram.js
Добавим в params disable_notification: true, что бы в итоге получилось

Ну, теперь точно всё.
Пришло время настроить сам мониторинг.
Удачи!