Поиск по сайту:

Как установить Kuma — альтернативу автономному роботу безотказной работы на Ubuntu 20.04


На этой странице

  1. Предпосылки
  2. Добавление нового пользователя
  3. Установите NVM (диспетчер версий узлов)
  4. Установите LTS-версию Nodejs
  5. Загрузите и установите Uptime-Kuma
  6. Настройка Uptime-Kuma с pm2
  7. Настройка Apache в качестве обратного прокси-сервера
  8. Защита безотказной работы с помощью SSL Letsencrypt
  9. Проверка установки Uptime-Kuma
  10. Заключение

Uptime-Kuma — это инструмент мониторинга с открытым исходным кодом, такой как «Uptime Robot», написанный на Nodejs. Это самостоятельный инструмент мониторинга с причудливой красивой панелью управления и поддержкой нескольких методов уведомлений. Uptime-Kuma будет отслеживать время безотказной работы хостов или серверов по протоколам HTTP(s), TCP и Ping. Если хосты не могут быть подключены к этим протоколам в такие промежутки времени, хосты безотказной работы будут отправлять уведомления через Webhooks, Telegram, Discord, Gotify, Slack, Pushover, электронную почту (SMTP) и т. д.

В этом руководстве вы узнаете, как установить Uptime-Kuma на сервер Ubuntu и использовать веб-сервер Apache в качестве обратного прокси-сервера с бесплатным SSL-сертификатом Lets Encrypt перед ним. Во время установки вы также узнаете об установке nodejs через nvm (менеджер версий узлов).

Предпосылки

  • Сервер Ubuntu 20.04.
  • Пользователь с привилегиями root. Вы будете использовать этого пользователя для установки новых пакетов и изменения настроек системы.

Добавление нового пользователя

Прежде всего, вы добавите нового пользователя в систему Ubuntu. Из соображений безопасности приложение Uptime-Kuma будет работать от имени пользователя без полномочий root.

1. Добавьте нового пользователя, выполнив приведенную ниже команду. В этом примере мы будем использовать имя пользователя \johndoe\. обязательно измените имя пользователя на свое.

useradd -m -s /bin/bash johndoe

Опции, которые вы должны знать:

  • -m=автоматически создать домашний каталог для имени пользователя, который будет доступен в каталоге /home.
  • -s=определить путь к оболочке для пользователя, в большинстве Linux есть оболочка \\/bin/bash.

2. После этого выполните следующую команду, чтобы установить пароль для пользователя \johndoe\.

passwd johndoe

Теперь введите новый надежный пароль и повторите, затем нажмите \Enter\ для подтверждения.

3. Затем добавьте пользователя «johndoe» в группу «sudo», используя приведенную ниже команду.

usermod -aG sudo johndoe

Добавляя пользователей в группу «sudo», это позволит пользователям выполнять команду «sudo su» и получать привилегии root.

Установите NVM (Диспетчер версий узла)

NVM или Node Version Manager — это инструмент командной строки для установки нескольких версий nodejs в одной системе. Этот инструмент позволяет вам устанавливать определенную версию nodejs для ваших приложений, делает вашу среду разработки и развертывания гибкой.

На этом этапе вы будете устанавливать nvm под пользователем без полномочий root \johndoe\.

1. Из вашей корневой оболочки войдите в систему под пользователем «johndoe», используя следующую команду.

su - johndoe

2. Загрузите и выполните сценарий установщика nvm следующим образом.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

3. После успеха перезагрузите среду bash с помощью приведенной ниже команды.

source ~/.bashrc

4. Теперь проверьте установку \nvm\, выполнив приведенную ниже команду.

command -v nvm

Если ваша установка прошла успешно, вы увидите результат \nvm\. В противном случае вы не увидите ничего или пустой результат.

Теперь выполните команду nvm, как показано ниже.

nvm --help

И вы увидите справочную страницу команды nvm.

Node Version Manager (v0.38.0)

Note: <version> refers to any version-like string nvm understands. This includes:
  - full or partial version numbers, starting with an optional "v" (0.10, v0.1.2, v1)
  - default (built-in) aliases: node, stable, unstable, iojs, system
  - custom aliases you define with `nvm alias foo`

 Any options that produce colorized output should respect the `--no-colors` option.

Usage:
  nvm --help                                  Show this message
    --no-colors                               Suppress colored output

.....

Note:
  to remove, delete, or uninstall nvm - just remove the `$NVM_DIR` folder (usually `~/.nvm`)

Установите Nodejs LTS-версию

Чтобы установить приложение uptime-Kuma, вам необходимо установить nodejs >= 14, git и pm2. На этом этапе вы будете устанавливать последнюю версию nodejs LTS с помощью команды nvm.

1. Выполните приведенную ниже команду nvm, чтобы установить последнюю версию nodejs LTS.

nvm install --lts

После успешной установки вы увидите результат, аналогичный приведенному ниже.

Первая установленная вами версия nodejs становится версией по умолчанию в вашей среде разработки.

2. Теперь выполните следующую команду, чтобы проверить установку nodejs.

node --version
npm --version

Если ваша установка прошла успешно, вы увидите результат, аналогичный приведенному ниже.

# nodejs version
v14.17.4

# npm version
6.14.14

Скачайте и установите Uptime-Kuma

Теперь вы готовы установить приложение Uptime-Kuma.

1. Клонируйте исходный код uptime-Kuma с помощью приведенной ниже команды git.

git clone https://github.com/louislam/uptime-kuma.git

2. После этого измените рабочий каталог на \uptime-kuma/\ и выполните команду npm, чтобы установить все необходимые пакеты для uptime-kuma.

cd uptime-kuma/
npm run setup

И вы увидите аналогичный вывод, как показано ниже.

Настройка Uptime-Kuma с pm2

Что такое пм2? Это менеджер процессов nodejs, который поможет вам управлять и поддерживать ваше приложение nodejs в рабочем состоянии навсегда. pm2 имеет некоторые встроенные функции, упрощающие развертывание приложения nodejs, он позволяет вам отслеживать состояние вашего приложения, журналы и даже настраивать служебный файл для вашего приложения.

1. Установите пакет pm2 с помощью приведенной ниже команды npm.

npm install pm2

2. После завершения установки выполните приведенную ниже команду pm2, чтобы запустить приложение uptime-kuma.

pm2 start npm --name uptime-kuma -- run start-server -- --port=3001 --hostname=127.0.0.1

И вы увидите выходные сообщения, как показано ниже.

Как видно на картинке, приложение с именем «uptime-kuma» работает со статусом «онлайн».

3. Чтобы проверить статус вашего приложения на pm2, выполните следующие команды ниже.

Проверьте статус приложения nodejs.

pm2 status

Проверьте журналы приложений nodejs.

pm2 logs

Мониторинг приложений nodejs в реальном времени.

pm2 monit

4. Затем выполните следующую команду pm2, чтобы сгенерировать служебный файл для приложения uptime-kuma.

pm2 startup

После этого вы должны запустить команду, как указано в выводе.

sudo env PATH=$PATH:/home/johndoe/.nvm/versions/node/v14.17.4/bin /home/johndoe/.nvm/versions/node/v14.17.4/lib/node_modules/pm2/bin/pm2 startup systemd -u johndoe --hp /home/johndoe

Обязательно используйте команду «sudo» и введите правильный пароль для вашего пользователя, чтобы получить привилегии root.

После завершения команды вы увидите следующий вывод.

Как видно на скриншоте, pm2 генерирует сервис systemd на основе пользователя, для этого примера это \pm2-johndoe.service\.

Теперь выполните следующую команду, чтобы сгенерировать и сохранить состояние приложения uptime-kuma. Эта команда важна для того, чтобы приложение uptime-kuma всегда работало в фоновом режиме, даже после загрузки системы.

pm2 save

5. Чтобы проверить службу pm2-johndoe, выполните приведенную ниже команду.

sudo systemctl is-enabled pm2-johndoe

Вы увидите вывод \\enabled\\, что означает, что приложение uptime-kuma автоматически запустится после загрузки системы.

Кроме того, вы можете попробовать перезагрузить систему и снова войти на сервер, а затем проверить работу службы uptime-kuma.

sudo systemctl status pm2-johndoe

И вы должны увидеть аналогичный вывод, как показано ниже.

? pm2-johndoe.service - PM2 process manager
     Loaded: loaded (/etc/systemd/system/pm2-johndoe.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-08-10 01:52:37 UTC; 3min 57s ago
       Docs: https://pm2.keymetrics.io/
   Main PID: 745 (PM2 v5.1.0: God)
      Tasks: 34 (limit: 2343)
     Memory: 120.4M
     CGroup: /system.slice/pm2-johndoe.service
             ??745 PM2 v5.1.0: God Daemon (/home/johndoe/.pm2)
             ??772 npm
             ??873 sh -c node server/server.js "--port=3001" "--hostname=127.0.0.1"
             ??874 node server/server.js --port=3001 --hostname=127.0.0.1

Aug 10 01:52:36 ubuntu64 pm2[633]: [PM2] Spawning PM2 daemon with pm2_home=/home/johndoe/.pm2
Aug 10 01:52:37 ubuntu64 pm2[633]: [PM2] PM2 Successfully daemonized
Aug 10 01:52:37 ubuntu64 pm2[633]: [PM2] Resurrecting
Aug 10 01:52:37 ubuntu64 pm2[633]: [PM2] Restoring processes located in /home/johndoe/.pm2/dump.pm2
Aug 10 01:52:37 ubuntu64 pm2[633]: [PM2] Process /home/johndoe/.nvm/versions/node/v14.17.4/bin/npm restored

Служба \pm2-johndoe.service\ запускается и работает при загрузке системы.

Настройте Apache в качестве обратного прокси

В этом руководстве вы будете устанавливать и настраивать веб-сервер Apache в качестве обратного прокси-сервера для приложения uptime-Kuma.

1. Выполните следующую команду, чтобы установить пакеты веб-сервера Apache.

sudo apt install apache2

Введите \y\ и нажмите \Enter\, чтобы установить веб-сервер apache.

2. После этого включите некоторые модули Apache с помощью приведенной ниже команды.

sudo a2enmod ssl proxy proxy_ajp proxy_wstunnel proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html

3. Затем создайте новую конфигурацию виртуального хоста uptime-kuma.conf с помощью приведенной ниже команды редактора nano.

sudo nano /etc/apache2/sites-available/uptime-kuma.conf

Вставьте следующую конфигурацию в оболочку терминала и измените доменное имя \uptime.example.net\ на свой домен, например \domain.com\.

<VirtualHost *:80>
  ServerName uptime.example.net

  ProxyPass / http://localhost:3001/
  RewriteEngine on
  RewriteCond %{HTTP:Upgrade} websocket [NC]
  RewriteCond %{HTTP:Connection} upgrade [NC]
  RewriteRule ^/?(.*) "ws://localhost:3001/$1" [P,L]
</VirtualHost>

Нажмите \Ctrl+x\ и введите \Y\, чтобы сохранить конфигурацию.

4. Теперь активируйте конфигурацию виртуального хоста Apache «uptime-kuma», используя команду ниже.

sudo a2ensite uptime-kuma

После этого выполните следующую команду, чтобы проверить конфигурацию apache и убедиться, что у вас нет ошибок.

sudo apachectl configtest

5. Теперь примените новую конфигурацию, перезапустив службу apache с помощью приведенной ниже команды.

sudo systemctl restart apache2

Защита Uptime-kuma с помощью SSL Letsencrypt

Чтобы защитить доступ Uptime-Kuma, вы будете настраивать SSL от Letsencrypt для веб-сервера apache.

1. Прежде всего, установите инструмент certbot, выполнив следующую команду.

sudo apt install python3-certbot-apache

Введите \y\ и нажмите \Enter\, чтобы начать установку.

2. После завершения установки создайте SSL letsencrypt с помощью команды certbot, как показано ниже.

sudo certbot --apache yourdomain.com

Введите свой адрес электронной почты, чтобы зарегистрироваться в Letsencrypt, и нажмите \Enter\, чтобы продолжить. Letsencrypt будет отправлять электронные письма на ваш адрес электронной почты всякий раз, когда истечет срок действия ваших SSL-сертификатов.

```
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):

Для Letsencrypt TOS (Условия предоставления услуг) введите \A\, чтобы согласиться, и нажмите \Enter\, чтобы продолжить.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

Для обмена электронной почтой с EFF (Electronic Frontier Foundation) вы можете ввести «Y» для «да» и «N» для «нет». В этом примере мы не будем делиться адресом электронной почты с EFF.

Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N

Теперь инструмент certbot сгенерирует SSL Letsencrypt для доменного имени Uptime-Kuma. Кроме того, он добавит некоторые дополнительные конфигурации для конфигурации виртуального хоста Apache.

Вам будет предложено настроить автоматическое перенаправление с HTTP на HTTPS. Введите число «2», чтобы настроить автоматическое перенаправление Apache с HTTP на HTTPS, и нажмите «Enter».

```
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

После успешного развертывания вы увидите вывод, аналогичный приведенному ниже.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://uptime.example.net

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=uptime.example.net
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/uptime.example.net/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/uptime.example.net/privkey.pem
   Your cert will expire on 2021-10-10. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 - We were unable to subscribe you the EFF mailing list because your
   e-mail address appears to be invalid. You can try again later by
   visiting https://act.eff.org.

Проверка установки Uptime-Kuma

1. Откройте веб-браузер и введите URL-адрес установки Uptime-Kuma в адресной строке.

Вы будете перенаправлены на безопасное соединение HTTPS.

2. На первой странице создайте нового пользователя-администратора для Uptime-kuma. Введите имя пользователя и пароль администратора, затем нажмите кнопку «Создать».

3. После этого войдите под своим новым именем пользователя и паролем, затем нажмите кнопку «Войти».

Теперь вы увидите панель управления uptime-kuma.

4. Чтобы добавить новый хост для мониторинга, нажмите кнопку \Добавить новый монитор\.

5. В этом примере вы будете отслеживать веб-сайт, поэтому выберите \Тип монитора\ как \HTTP(s)\, введите URL-адрес веб-сайта, нажмите \Установить уведомление\, чтобы получить уведомление. поддержки, затем нажмите кнопку «Сохранить» внизу страницы.

6.Теперь вы будете перенаправлены на панель управления uptime-Kuma и увидите свой хост на странице панели управления.

Ниже приведен еще один пример после добавления нового типа «TCP/IP» с закрытыми портами, и результатом является «ENCONNREFUSED» или ошибка соединения, поскольку порт отклонен/закрыт.

Заключение

Поздравляем! вы успешно установили Uptime-Kuma с веб-сервером Apache в качестве обратного прокси-сервера и защитили развертывание Uptime-Kuma с помощью SSL Letsencrypt. На следующем этапе вы можете добавить свои хосты и активировать уведомление о любом сбое.