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.
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
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
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
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
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
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,
...
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
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. Pierwsza konfiguracja użytkownika panelu.
Teraz możesz już się zalogować do swojego kokpitu uptime-kuma.
uptime-kuma. Panel monitoringu.
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. Autostart uptime-kuma przez pm2.
Po jej wykonaniu zostanie utworzona usługa pm2-kuma.service
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
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'
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'
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/