Найти тему
Николай Калюжный

Установка UptimeKuma На Ubuntu 22.04

DEMO LIVE https://demo.kuma.pet/start-demo

#Стандартный шаблок настройки VM
#Смена IP при необходимости 
nano /etc/netplan/01-network-manager-all.yaml

#Обновление системы
sudo apt update && sudo apt upgrade -y

#Установка пакетов
sudo apt install ufw open-vm-tools net-tools curl mc nano wget

#Установка базового фаерволла

sudo ufw deny all
sudo ufw allow http #при необходимости
sudo ufw allow https #при необходимости
sudo ufw allow ssh
sudo ufw allow from 192.168.0.206  #ansible host
sudo ufw allow 3001 UptimeKuma
sudo ufw enable
sudo ufw allow 8043

adduser ansible
usermod -aG sudo ansible
su ansible
echo "$(whoami) ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/$(whoami)

Установка UptimeKuma
#2 – Установка NodeJS 20 LTS
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
sudo apt update && sudo apt upgrade -y
sudo apt-get install -y nodejs

Проверяем версию NodeJs

node -v

-2

3 – Клонируем Kuma Project через Git
#Установливаем Git
sudo apt install git -y

git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup

-3

и видим что пакет установился без проблем

-4

Ставим рекомендованный пакет

npm install -g npm@10.8.1

-5

Запуск сервиса через pm2
npm install pm2 -g && pm2 install pm2-logrotate

-6

# Запуск сервиса
pm2 start server/server.js --name uptime-kuma

Заходим на сервис по адресу http://192.168.0.229:3001 для продолжения установки (настройки сервиса и использования)

-7

# Вводим данные по логину и паролю (создаем своего пользователя и его пароли) и нажимаем создать

Сервис развернут и готов к работе

На этом все! Далее в системе ставятся сервисы на мониторинг, переводится сервис на работу https и т.п.

Установливаем NGinx

sudo apt update && sudo apt upgrade -y

sudo apt install nginx

-8
-9

Проверим факта запуска Nginx:
systemctl status nginx

-10

После чего заходим на сайт и смотрим что все в порядке

-11

netstat -ltupn | grep nginx

-12

Проверки NGINX

Проверяем конфигурацию Nginx:
nginx -t
Если ошибок нет, то перезагружаем конфигурацию Nginx:
nginx -s reload

В Ubuntu используется система инициализации systemd и поэтому лимиты на максимальное количество открытых файлов нужно настроить для systemd, для этого выплняем:
mkdir -p /lib/systemd/system/nginx.service.d
echo "[Service]" >/lib/systemd/system/nginx.service.d/limit.conf
echo "LimitNOFILE=10000" >>/lib/systemd/system/nginx.service.d/limit.conf
systemctl daemon-reload
systemctl restart nginx

Теперь проверим лимиты, для этого смотрим строку «Max open files» в выводе:
# cat /proc/$(cat /var/run/nginx.pid)/limits
Limit                     Soft Limit           Hard Limit           Units    
Max cpu time              unlimited            unlimited            seconds  
Max file size             unlimited            unlimited            bytes    
Max data size             unlimited            unlimited            bytes    
Max stack size            8388608              unlimited            bytes    
Max core file size        0                    unlimited            bytes    
Max resident set          unlimited            unlimited            bytes    
Max processes             3542                 3542                 processes
Max open files            10000                10000                files    
Max locked memory         65536                65536                bytes    
Max address space         unlimited            unlimited            bytes    
Max file locks            unlimited            unlimited            locks    
Max pending signals       3542                 3542                 signals  
Max msgqueue size         819200               819200               bytes    
Max nice priority         0                    0                   
Max realtime priority     0                    0                   
Max realtime timeout      unlimited            unlimited            us

Все отлично!

Установливаем на Nginx сертификат Let’s Encrypt on Ubuntu 22.04
sudo apt update && sudo apt upgrade -y

sudo apt install certbot python3-certbot-nginx y
sudo nano /etc/nginx/sites-available/uptime.kalyuzhnyy.ru.conf

Without SSL:

server  {
    listen 80;
    # Remove '#' in the next line to enable IPv6
    # listen [::]:80;
    server_name    uptime.kalyuzhnyy.ru;
    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

server {
  listen 443 ssl http2;
  # Remove '#' in the next line to enable IPv6
  # listen [::]:443 ssl http2;
  server_name uptime.kalyuzhnyy.ru;
  ssl_certificate     /path/to/ssl/cert/crt;
  ssl_certificate_key /path/to/ssl/key/key;
  # *See "With SSL (Certbot)" below for details on automating ssl certificates

location / {
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   Host $host;
    proxy_pass         http://localhost:3001/;
    proxy_http_version 1.1;
    proxy_set_header   Upgrade $http_upgrade;
    proxy_set_header   Connection "upgrade";
  }
}

sudo ln -s /etc/nginx/sites-available/uptime.kalyuzhnyy.ru /etc/nginx/sites-enabled/uptime.kalyuzhnyy.ru

nginx -t
Если ошибок нет, то перезагружаем конфигурацию Nginx:
nginx -s reload

-13

Запускаем процесс получения сертификата

sudo certbot --nginx -d uptime.kalyuzhnyy.ru -d uptime.kalyuzhnyy.ru

-14