Przejdź do głównej zawartości

Instalacja uptime-kuma (monitoring stron).

Dystrubucja: Debian 10, Debian 11

Uptime-kuma to darmowy skrypt monitorujący hosty, strony www oraz ważność certyfikatów SSL. Jeśli posiadamy VPS bez administracji, jest to świetna możliwość polepszenia jakości i dostępności swoich usług za darmo. Uptime-kuma posiada możliwość wysyłania alertów przez e-mail oraz bot-a telegram.

informacja

Poradnik ma charakter wyłącznie demonstracyjny. Dopasuj konfigurację i zabezpiecznia do swoich potrzeb.

Dodanie użytkownika

Jeśli jeszcze nie masz, dodaj użytkownika do systemu. Zaloguj się na konto SSH jako root i wykonaj aktualizację.

apt update

apt upgrade

następnie dodaj użytkownika:

adduser kuma

Wynik:
root@adamhitme:~# adduser kuma
Adding user `kuma' ...
Adding new group `kuma' (1000) ...
Adding new user `kuma' (1000) with group `kuma' ...
Creating home directory `/home/kuma' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for kuma
Enter the new value, or press ENTER for the default
Full Name []: Uptime Kuma
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
root@adamhitme:~#

Dodaj go do sudo poleceniem

usermod -aG sudo kuma

Przełącz się na użytkownika poleceniem su - kuma

root@adamhitme:~# su - kuma
kuma@adamhitme:~$

Instalacja nodeJS przez nvm

Uptime-kuma wymaga nodeJS na serwerze, a te zainstalujemy dziękie nvm. NVM to skrót od "Node Version Manager", czyli narzędzie do zarządzania wersjami środowiska Node.js na komputerze. Node.js to środowisko uruchomieniowe JavaScript, które pozwala na wykonywanie skryptów napisanych w języku JavaScript poza przeglądarką internetową. nvm umożliwia łatwe instalowanie, zarządzanie i przełączanie się między różnymi wersjami Node.js na jednym systemie.

Sprawdźmy czy obecnie mamy nvm, czy mamy node ... a jeśli nie, to zainstalujmy:

kuma@adamhitme:~$ node -v
-bash: node: command not found

kuma@adamhitme:~$ nvm -v
-bash: nvm: command not found

Pobierz skrypt instalacyjny nvm i wykonaj poleceniem:

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash

Wynik
kuma@adamhitme:~$ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
=> Downloading nvm as script to '/home/kuma/.nvm'

=> Appending nvm source string to /home/kuma/.bashrc
=> Appending bash_completion source string to /home/kuma/.bashrc
=> Close and reopen your terminal to start using nvm or run the following to use it now:
...

Teraz, przeładuj terminal poleceniem: source ~/.bashrc

Wynik
kuma@adamhitme:~$ source ~/.bashrc
kuma@adamhitme:~$ nvm -v
0.39.5

Teraz, możesz zainstalować nodeJS korzystając z nvm. Zaintalujmy aktualną wersję LTS.

nvm install --lts

Wynik
kuma@adamhitme:~$ nvm install --lts
Installing latest LTS version.
Downloading and installing node v20.10.0...
Downloading https://nodejs.org/dist/v20.10.0/node-v20.10.0-linux-x64.tar.xz...
[...]
Computing checksum with sha256sum
Checksums matched!
Now using node v20.10.0 (npm v10.2.3)
Creating default alias: default -> lts/* (-> v20.10.0)
root@adamhitme:~#

Sprawdźmy wersję node:

kuma@adamhitme:~$ node -v
v20.10.0

Instalacja uptime-kuma

Jeśli nie posiadasz polecenia git, zainstaluj:

kuma@adamhitme:~$ git
-bash: git: command not found
kuma@adamhitme:~$ sudo apt install git

następnie:

git clone https://github.com/louislam/uptime-kuma.git
Wynik
kuma@adamhitme:~$ cd /home/kuma
kuma@adamhitme:~$ git clone https://github.com/louislam/uptime-kuma.git
Cloning into 'uptime-kuma'...
remote: Enumerating objects: 29536, done.
remote: Counting objects: 100% (29535/29535), done.
remote: Compressing objects: 100% (6821/6821), done.
remote: Total 29536 (delta 22633), reused 29050 (delta 22443), pack-reused 1
Receiving objects: 100% (29536/29536), 21.84 MiB | 8.83 MiB/s, done.
Resolving deltas: 100% (22633/22633), done.
kuma@adamhitme:~$

Pierwsze uruchomienie

cd uptime-kuma
npm run setup

a następnie:

node server/server.js

uptime-kuma zostało uruchomione ręcznie w konsoli, wrócimy do tego,

Wynik
...
2023-12-04T15:02:28+01:00 [SERVER] INFO: JWT secret is not found, generate one.
2023-12-04T15:02:28+01:00 [SERVER] INFO: Stored JWT secret into database
2023-12-04T15:02:28+01:00 [SERVER] INFO: No user, need setup
2023-12-04T15:02:28+01:00 [SERVER] INFO: Adding route
2023-12-04T15:02:28+01:00 [SERVER] INFO: Adding socket handler
2023-12-04T15:02:28+01:00 [SERVER] INFO: Init the server
2023-12-04T15:02:28+01:00 [SERVER] INFO: Listening on 3001
wskazówka

Przyda Ci się także firewall UFW - aby łatwo dodawać regułki iptables. Jeśli chcesz, zobacz jak zainstalować UFW

Adres panelu znajdziesz teraz pod adresem http://{vps}.serwervps.pl:3001/ lub http://PUBLICZNY_IP_SERWERA_VPS:3001

Jeśli nic się nie wyświetla - to dobrze :-). Musisz jeszcze odblokować port 3001 w firewallu systemowym. Do tego celu łatwo posłuży Ci wspomniany wcześniej pakiet UFW.

ufw allow 3001/tcp comment 'uptime-kuma'

Pierwsza konfiguracja użytkownika

Uruchom przeglądarkę i przejdź pod adres http://{domena hosta lub IP}:3001 aby zainicjować konto administratora w panelu. Utwórz użytkownika, dzięki któremu będziesz się logować do uptime-kuma. Nadaj mu hasło oraz login.

uptime kuma login uptime-kuma. Pierwsza konfiguracja użytkownika panelu.

Teraz możesz już się zalogować do swojego kokpitu uptime-kuma.

uptime kuma panel uptime-kuma. Panel monitoringu.

informacja

Pamiętaj, obecnie uptime-kuma działa uruchomiona jednorazowo z konsoli. Można ją zatrzymać CTRL + C. Jeśli chcemy aby aplikacja była uruchomiona w tle i startowała przy każdym uruchomieniu serwera zastosujemy pakiet pm2.

Instalacja pm2 - autostart

PM2 to potężne narzędzie do zarządzania procesami Node.js, które znacznie ułatwia zarządzanie, monitorowanie i utrzymanie aplikacji w produkcji.

npm install pm2 -g && pm2 install pm2-logrotate

Po zainstalowaniu pm2 wydaj następujące polecenie aby uruchomić uptime-kuma w tle:

pm2 start server/server.js --name uptime-kuma

oraz jeśli chcesz aby aplikacja startowała wraz z serwerem:

pm2 save && pm2 startup

jednak aby autostart była aktywny, zostaniesz poproszony o wykonanie komendy, która wyświetli Ci się na ekranie

uptime kuma login uptime-kuma. Autostart uptime-kuma przez pm2.

Po jej wykonaniu zostanie utworzona usługa pm2-kuma.service

Wynik
Target path
/etc/systemd/system/pm2-kuma.service
Command list
[ 'systemctl enable pm2-kuma' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-kuma.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-kuma...
Created symlink /etc/systemd/system/multi-user.target.wants/pm2-kuma.service/etc/systemd/system/pm2-kuma.service.
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save

[PM2] Remove init script via:
$ pm2 unstartup systemd
kuma@adamhitme:~/uptime-kuma$

Gotowe. Możesz przejść teraz do dodawania swoich monitorów.

Dodatkowe zabezpieczenie IP

wskazówka

Dodatkowe zabezpieczenie. Aby jeszcze bardziej zapezpieczyć panel uptime-kuma przed niepowołanym dostępem, odblokuj port 3001 tylko dla Twojego adresu IP z którego łaczysz się z serwerem. Możesz też skorzystać z metody VPN. Jedyny mankament tych rozwiązań jest taki, że nie będziesz mógł skorzystać z funkcjonalności stron statusowych, które w domyśle możesz udostępniać publicznie.

Dodaj regułkę w UFW:

ufw allow from TWÓJ_ADRES_PUBLICZNY_KOMPUTERA proto tcp to any port 3001 comment 'Ja-do-kuma'

Jak sprawdzić adres IP?

Dla przykładu, gdy publiczny adres IP komputera to 83.24.15.84:

ufw allow from 83.24.15.84 proto tcp to any port 3001 comment 'Ja-do-kuma'

Wynik:
root@adamhitme:~# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To Action From
-- ------ ----
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
22/tcp ALLOW IN Anywhere
3001/tcp ALLOW IN 83.24.15.84 # Ja-do-kuma

Aby przeładować regułki firewall, wydaj polecenie: ufw reload

Panel dostęp tylko przez VPN

Możesz skorzystać też z poradnika VPN Wireguard i ustawić aby panel uptime-kuma był dostępny tylko z sieci lokalnej VPN.

W tym celu zainstaluj VPN Wireguard i otwórz port 3001 tylko dla sieci lokalnej VPN:

ufw allow from 10.7.0.0/24 proto tcp to any port 3001 comment 'ja-do-kuma'

Panel uptime-kuma dostępny będzie pod adresem np. http://10.7.0.1:3001/