Wie installiere ich Kuma – Self-hosted Uptime Robot Alternative auf Ubuntu 20.04

Uptime-Kuma ist ein Open-Source-Monitoring-Tool wie „Uptime Robot“, geschrieben in Nodejs. Es ist ein selbstgehostetes Monitoring-Tool mit einem schicken, schönen Dashboard und unterstützt mehrere Benachrichtigungsmethoden. Der Uptime-Kuma überwacht die Uptime von Hosts oder Servern über die Protokolle HTTP(s), TCP, und Ping. Wenn Hosts nicht über diese Protokolle in solchen Intervallzeiten rachbar sind, sendet der Uptime-Kuma Benachrichtigungen über Webhooks, Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), etc.

In dieser Anleitung lernst du, wie du Uptime-Kuma auf einem Ubuntu Server installierst und den Apache Webserver als Reverse Proxy mit einem kostenlosen Let’s Encrypt SSL Zertifikat davor verwendest. Während der Installation lernst du auch die Installation von nodejs mittels nvm (node version manager) kennen.

Voraussetzungen

  • Ein Ubuntu Server 20.04.
  • Ein Benutzer mit Root-Rechten. Du wirst diesen Benutzer benutzen, um neue Pakete zu installieren und Systemeinstellungen zu ändern.

Hinzufügen eines neuen Benutzers

Als erstes wirst du einen neuen Benutzer zum Ubuntu System hinzufügen. Aus Sicherheitsgründen wird die Anwendung Uptime-Kuma als Nicht-Root-Benutzer laufen.

1. Füge einen neuen Benutzer hinzu, indem du den unten stehenden Befehl ausführst. Für dieses Beispiel verwenden wir den Benutzernamen„johndoe„. Stelle sicher, dass du den Benutzernamen mit deinem eigenen änderst.

useradd -m -s /bin/bash johndoe

Optionen, die du kennen musst:

  • -m = automatisch das Home-Verzeichnis für den Benutzernamen erstellen, welches unter dem Verzeichnis ‚/home‘ zu finden ist.
  • -s = definiere den Pfad der Shell für den Benutzer, die meisten Linux haben die `/bin/bash Shell.

2. Danach führst du den folgenden Befehl aus, um das Passwort für den Benutzer „johndoe“ einzurichten.

passwd johndoe

Gib nun ein neues starkes Passwort ein und wiederhole es, dann drücke„Enter“ zur Bestätigung.

3. Als nächstes fügst du den Benutzer „johndoe“ mit dem folgenden Befehl zur Gruppe„sudo“ hinzu.

usermod -aG sudo johndoe

Durch das Hinzufügen von Benutzern zur Gruppe„sudo“ wird es den Benutzern ermöglicht, den Befehl „sudo su“ auszuführen und die Root-Rechte zu erhalten.

NVM (Node Version Manager) installieren

NVM oder Node Version Manager ist ein Kommandozeilentool, um mehrere nodejs Versionen auf einem System zu installieren. Dieses Tool ermöglicht es dir, spezifische Nodejs Versionen für deine Anwendungen zu installieren und macht deine Entwicklungs- und Einsatzumgebung flexibel.

In dieser Phase wirst du den nvm unter dem non-root Benutzer „johndoe“ installieren.

1. Melde dich von deiner Root-Shell aus mit dem Benutzer „johndoe“ an, indem du den folgenden Befehl ausführst.

su - johndoe

2. Lade das nvm-Installationsskript herunter und führe es wie folgt aus.

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

Nodejs Version Manager oder NVM installieren

3. Nach erfolgreicher Ausführung lade die Bash-Umgebung mit folgendem Befehl neu.

source ~/.bashrc

4. Überprüfe nun die„nvm“ Installation, indem du den untenstehenden Befehl ausführst.

command -v nvm

Wenn die Installation erfolgreich ist, wirst du das Ergebnis„nvm“ sehen. Andernfalls wirst du nichts oder ein leeres Ergebnis sehen.

Führe nun den nvm-Befehl wie unten beschrieben aus.

nvm --help

Und du wirst die manuelle Hilfeseite des nvm Befehls sehen.

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 Version installieren

Um die uptime-Kuma Anwendung zu installieren, musst du nodejs >= 14, git und pm2 installieren. Für diesen Punkt wirst du die neueste Version von nodejs LTS mit dem nvm Befehl installieren.

1. Führe den untenstehenden nvm-Befehl aus, um nodejs LTS latest version zu installieren.

nvm install --lts

Sobald die Installation erfolgreich war, wirst du eine ähnliche Ausgabe wie unten sehen.

Nodejs mit NVM installieren

Die erste nodejs Version, die du installierst, wird die Standardversion in deiner Entwicklungsumgebung.

2. Führe nun den folgenden Befehl aus, um die nodejs-Installation zu überprüfen.

node --version
npm --version

Wenn die Installation erfolgreich war, wirst du eine ähnliche Ausgabe wie unten sehen.

# nodejs version
v14.17.4

# npm version
6.14.14

Uptime-Kuma herunterladen und installieren

An diesem Punkt bist du bereit, die Uptime-Kuma Anwendung zu installieren.

1. Klone den Uptime-Kuma Quellcode mit dem unten stehenden git Befehl.

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

2. Danach wechsle das Arbeitsverzeichnis zu„uptime-kuma/“ und führe den npm-Befehl aus, um alle notwendigen Pakete für uptime-kuma zu installieren.

cd uptime-kuma/
npm run setup

Und du wirst eine ähnliche Ausgabe wie unten sehen.

Pakete für Uptime-Kuma installieren

Einrichten von Uptime-Kuma mit pm2

Was ist pm2? Es ist ein Nodejs-Prozessmanager, der dir hilft, deine Nodejs-Anwendung zu verwalten und für immer am Leben zu erhalten. pm2 hat einige eingebaute Funktionen, die das Deployment deiner Nodejs-Anwendung einfach machen, es erlaubt dir, den Status deiner Anwendung zu überwachen, Logs zu erstellen und sogar die Service-Datei für deine Anwendung einzurichten.

1. Installiere das pm2 Paket mit dem unten stehenden npm Befehl.

npm install pm2

2. Sobald die Installation abgeschlossen ist, führe den pm2 Befehl unten aus, um die uptime-kuma Anwendung zu starten.

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

Du wirst die untenstehenden Ausgabemeldungen sehen.

Starte Uptime-Kuma mit dem pm2 Prozess Manager

Wie im Bild zu sehen ist, läuft die Anwendung mit dem Namen„uptime-kuma“ mit dem Status„online„.

3. Um den Status deiner Anwendung auf pm2 zu überprüfen, führe die folgenden Befehle aus.

Check nodejs application status.

pm2 status

Bewerbungsstatus prüfen Uptime-Kuma

Prüfe nodejs Anwendungsprotokolle.

pm2 logs

Anwendungsprotokolle prüfen pm2

Realtime nodejs application monitoring.

pm2 monit

Echtzeit-Anwendungsüberwachung pm2

4. Als nächstes führe den folgenden pm2 Befehl aus, um die Servicedatei für die uptime-kuma Anwendung zu generieren.

pm2 startup

Danach solltest du den Befehl wie in der Ausgabe angegeben ausführen.

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

Uptime-Kuma als Systemd Dienst einrichten

Achte darauf, dass du den„sudo“ Befehl verwendest und das richtige Passwort für deinen Benutzer eingibst, um die Root-Rechte zu erhalten.

Sobald der Befehl abgeschlossen ist, wirst du die folgende Ausgabe sehen.

pm2 generiert systemd Service Datei für Uptime-Kuma

Wie auf dem Screenshot zu sehen ist, generiert der pm2 einen systemd Dienst basierend auf dem Benutzer, für dieses Beispiel ist es„pm2-johndoe.service„.

Führe nun den folgenden Befehl aus, um den uptime-kuma Anwendungsstatus zu generieren und zu speichern. Dieser Befehl ist wichtig, damit die uptime-kuma Anwendung immer im Hintergrund läuft, auch nach dem Systemstart.

pm2 save

5. Um den Dienst‚pm2-johndoe‘ zu verifizieren, führe den folgenden Befehl aus.

sudo systemctl is-enabled pm2-johndoe

Du wirst die Ausgabe `enabled` sehen, was bedeutet, dass die uptime-kuma Anwendung automatisch nach dem Systemstart läuft.

Zusätzlich kannst du versuchen, dein System neu zu starten und dich erneut am Server anzumelden, um dann den uptime-kuma Dienst zu überprüfen.

sudo systemctl status pm2-johndoe

Und du solltest eine ähnliche Ausgabe wie unten sehen.

? 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

Der„pm2-johndoe.service“ ist nach dem Systemstart aktiv.

Apache als Reverse Proxy einrichten

Für diese Anleitung wirst du den Apache Webserver als Reverse Proxy für die uptime-Kuma Anwendung installieren und konfigurieren.

1. Führe den folgenden Befehl aus, um die Apache-Webserver-Pakete zu installieren.

sudo apt install apache2

Gib „y“ ein und drücke„Enter„, um den Apache Webserver zu installieren.

2. Danach aktiviere einige Apache Module mit dem folgenden Befehl.

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

3. Als Nächstes erstelle eine neue Virtual-Host-Konfiguration„uptime-kuma.conf“ mit dem nano-Editor-Befehl unten.

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

Füge die folgende Konfiguration in deine Terminal-Shell ein und ändere den Domainnamen„uptime.example.net“ mit deiner Domain wie„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>

Drücke„Strg+x“ und gib„Y“ ein, um die Konfiguration zu speichern.

4. Aktiviere nun die apache virtual-host Konfiguration „uptime-kuma“ mit dem unten stehenden Befehl.

sudo a2ensite uptime-kuma

Danach führe den folgenden Befehl aus, um die Apache-Konfiguration zu überprüfen und stelle sicher, dass du keinen Fehler hast.

sudo apachectl configtest

5. Nun wende die neue Konfiguration an, indem du den Apache-Dienst mit dem folgenden Befehl neu startest.

sudo systemctl restart apache2

Apache als Reverse Proxy für uptime-kuma einrichten

Uptime-Kuma mit SSL Letsencrypt absichern

Um den Zugriff auf Uptime-Kuma zu sichern, wirst du SSL von Letsencrypt für den Apache Webserver einrichten.

1. Als erstes installierst du das Tool certbot, indem du den folgenden Befehl ausführst.

sudo apt install python3-certbot-apache

Tippe„y“ ein und drücke„Enter„, um die Installation zu starten.

2. Nachdem die Installation abgeschlossen ist, generiere das SSL letsencrypt mit dem certbot-Befehl wie unten beschrieben.

sudo certbot --apache yourdomain.com

Gib deine E-Mail-Adresse ein, um dich bei Letsencrypt zu registrieren und drücke„Enter„, um fortzufahren. Letsencrypt wird E-Mails an deine E-Mail-Adresse senden, sobald deine SSL-Zertifikate ablaufen.

```
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): username@domain.com

Für die Letsencrypt TOS (Terms of Service), gib„A“ ein, um zuzustimmen und drücke„Enter„, um fortzufahren.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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

Für das Teilen von E-Mails mit der EFF (Electronic Frontier Foundation) kannst du„Y“ für ja und„N“ für nein eingeben. Für dieses Beispiel werden wir keine E-Mail Adresse mit der EFF teilen.

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

Nun wird das certbot Tool SSL Letsencrypt für den Uptime-Kuma Domainnamen generieren. Außerdem wird es einige zusätzliche Konfigurationen für die Apache Virtual Host Konfiguration hinzufügen.

Du wirst aufgefordert, den Auto-Redirect von HTTP zu HTTPS einzurichten. Gib die Zahl „2“ ein, um den Apache Auto-Redirect von HTTP zu HTTPS einzurichten und drücke„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

Sobald der Installationsprozess erfolgreich ist, wirst du eine ähnliche Ausgabe wie unten sehen.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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.

Überprüfe die Uptime-Kuma Installation

1. Öffne deinen Webbrowser und gib die Installations-URL von Uptime-Kuma in die Adresszeile ein.

https://uptime.example.net/

Du wirst auf eine sichere HTTPS-Verbindung umgeleitet.

2. Auf der ersten Seite legst du einen neuen Admin-Benutzer für Uptime-Kuma an. Gib deinen Admin-Benutzer und dein Passwort ein und klicke dann auf den„Erstellen„-Button

Admin Benutzer uptime-kuma anlegen

3. Danach loggst du dich mit deinem neuen Benutzernamen und Passwort ein und klickst auf den„Login„-Button.

uptime-kuma Login Seite

Nun siehst du das Uptime-kuma Dashboard.

4. Um einen neuen Host zur Überwachung hinzuzufügen, klicke auf den Button„Add New Monitor„.

Uptime-kuma Dashboard Monitor hinzufügen

5. Für dieses Beispiel wirst du die Website überwachen, also wähle als„Monitor Type„HTTP(s)„, gib die URL-Adresse der Website ein, klicke auf„Setup Notification“ für die Benachrichtigungsunterstützung, dann klickst du auf den„Save“ Button unten auf der Seite.

Host hinzufügen um uptime-kuma zu überwachen

6. jetzt wirst du zum uptime-Kuma Dashboard weitergeleitet und du siehst deinen Host auf der Dashboard-Seite.

Uptime-kuma Dashboard

Unten ist ein weiteres Beispiel nach dem Hinzufügen des neuen Typs„TCP/IP“ mit geschlossenen Ports, und das Ergebnis ist„ENCONNREFUSED“ oder Verbindungsfehler, weil der Port verweigert/geschlossen ist.

Uptime-kuma Dashboard Überwachung

Fazit

Herzlichen Glückwunsch! Du hast Uptime-Kuma erfolgreich mit dem Apache Webserver als Reverse Proxy installiert und den Uptime-Kuma Einsatz mit SSL Letsencrypt gesichert. In der nächsten Phase kannst du deine Hosts hinzufügen und die Benachrichtigung bei einem Ausfall aktivieren.

Das könnte dich auch interessieren …