Dies ist ein Begleitartikel zu folgendem Video

Vorwort

Diese Anleitung ist nur eine Möglichkeit eine Node aufzusetzen.
Wir haben uns bewusst dazu entschieden, alle Schritte manuell zu machen.
So verstehst du was zur Installation und Konfiguration einer Node notwendig ist.
Das würde bei einem Installationsscript verloren gehen.

Weiter kannst du dir sicher sein, dass sich in deinem System keine Hintertürchen z.B. vom Ersteller eines Installationsscriptes befinden.

Im Video haben wir den günstigsten VPS Server von Netcup verwendet: https://www.netcup.de/bestellen/produkt.php?produkt=2000

Nach dem Video hat sich herausgestellt, dass der Server für einen stabilen Betrieb nicht ausreicht.
Daher nutzen wir nun einen Rootserver 1000 https://www.netcup.de/bestellen/produkt.php?produkt=2104

Vermutlich reicht aber auch dieser etwas günstigerer vServer:
https://www.netcup.de/bestellen/produkt.php?produkt=2209

Falls du noch nie einen Linux Server betrieben hast, stell im Zweifel lieber eine Frage im Forum, bevor du einen unsicheren Server in das Internet stellst 😉

Wenn du ebenfalls Netcup nutzen möchtest, freuen wir uns über jeden genutzten Partnergutschein.
Für eine Übersicht der Gutscheine schau einfach in diesem Forenbeitrag vorbei.

Betriebssystem Installieren

Netcup Control Panel Übersicht

Unter http://servercontrolpanel.de/ kannst du dich in die Netcup Server Verwaltung einloggen.
Hier wird dir eine Übersicht zu all deinen gebuchten Servern angezeigt.

Netcup Server Detail Ansicht

In diesem Schritt empfiehlt es sich, deinem Server einen Spitznamen zu geben. Damit stellst du bei mehreren Servern sicher, dass du in Zukunft z.B. bei einer Neuinstallation nicht den falschen Server auswählst.

Netcup Installationsmedien Übersicht

Nun kannst du über Medien -> Image -> Ubuntu 18.04 LTS als Betriebssystem auswählen.

Netcup Ubuntu Image Auswahl

Da wir den Server so schlank wie möglich halten wollen, wähle hier “Minimal” als Image Variante aus.

Netcup Partitionierung

Bei der Partitionierung solltest du “eine Große Partition” auswählen, dann musst du nach der Installation keine weiteren Schritte beachten.

Netcup Installationsbestätigung

Im letzten Schritt kannst du noch auswählen, dass dir das neue Root Passwort per E-Mail zugesendet wird und musst mit dem “SCP Login Passwort” die Neuinstallation autorisieren.
Mit einem Klick auf “Installieren” startest du dann die Installation.

Netcup Installationsfortschritt

Du bekommst nun eine Übersicht während der Installation angezeigt.
Dieser Schritt dauert ein paar Minuten, hab also Geduld.
Es ist möglich, dass ein Popup von deinem Browser blockiert wird, dies musst du nicht unbedingt öffnen.
Damit wird dir eine VNC Ansicht der Installation angezeigt, dass du den Fortschritt besser beobachten kannst.

Netcup Installation beendet

Wenn die Installation komplette abgeschlossen ist, wird dir das Root Passwort zum Server angezeigt (grün Zeile).
Notiere dir dieses Passwort an einem sicheren Platz, da du es gleich wieder brauchen wirst.

Domain

Falls du eine Domain besitzt, kannst du einen A Record erstellen, der auf deine Server IP verweist.
Damit muss man sich nicht mehr die IP merken und kann z.B. hornet.blocktrainer.de anstatt der IP für die SSH Verbindung nutzen.
Dieser Schritt ist aber Optional.

SSH Serverzugriff

Nun kannst du dich zum ersten Mal mit deinem Server über SSH verbinden.
Unter Linux/Mac reicht der Befehl ssh root@DeineIpOderDomain
für den Blocktrainer Server also z.B. ssh root@hornet.blocktrainer.de

Unter Windows empfehlen wir das Programm Putty.
Dies sieht nach dem Start so aus:

Screenshot Putty

Hier musst du dann nur den Host Name ausfüllen und auf “Open” klicken.
Nach der Verbindung mit dem Server, wirst du nach dem Benutzernamen (root) und deinem Passwort gefragt.

Firewall

Wenn du nun mit dem Server verbunden bist, solltest du als erstes die Firewall konfigurieren.
Unter Ubuntu ist das UFW.
Damit du dich nicht selbst aussperrst, musst du als erstes den SSH Zugriff mit folgendem Befehl erlauben:

ufw limit OpenSSH

Mit diesem Befehl erlaubst du SSH, limitierst aber automatische Angriffe durch das verwenden von “limit” statt der normalen ufw enable OpenSSH Option.
Anschließend musst du die Firewall mit folgendem Befehl einschalten:

ufw enable

Du wirst noch gefragt, ob du das wirklich machen willst, da es deine SSH Verbindung trennen könnte.
Dies bestätigst du einfach mit der Eingabe von y und ENTER.

SSH Absichern

Jetzt kannst du dazu übergehen, den SSH Zugang besser abzusichern.
Dazu stellst du von der Passwort Anmeldung auf eine SSH Key Anmeldung um.
Dafür benötigst du natürlich einen SSH Key.
Falls du noch keinen hast, empfehle ich den folgenden Artikel als Anleitung: https://www.heise.de/tipps-tricks/SSH-Key-erstellen-so-geht-s-4400280.html
Nimm dir unbedingt die Zeit, dem Key ein Passwort zu geben und verusche das System hinter SSH Keys zu verstehen.

Kurz zusammengefasst bietet dir die Key Authentifizierung die folgenden Vorteile:

  • Ein Public Key gehört jeweils zu einer Person oder zu einem Computer.
    Will du also den Zugriff auf den eigenen Server entziehen, musst du nur den Key vom Server entfernen und brauchst nicht alle Passwörter ändern.
  • Du kannst den gleichen Key für mehrere Server nutzen.
  • Du kannst den Key einmal in einem Agent entsperren (der durch ein Passwort extra geschützt wird) und dann ohne eine Passworteingabe mit deinem Server eine Verbindung aufbauen.
    Auf meinem MacBook mache ich das z.B. automatisch beim Anmelden.
  • Ein Key ist wesentlich sicherer als ein normales (evt. kurzes) Passwort.

Nun aber zurück zur Anleitung. Auf dem Server kannst du den SSH Public Key in die folgende Datei speichern .ssh/authorized_keys
Ich nutze (der Einfachheit halber) dazu den nano Texteditor:

nano .ssh/authorized_keys

Hier kannst du dann pro Zeile einen Key eingeben. Für mich sieht die Zeile dann z.B. so aus:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAoCfGEd1yR1ixIf+p5FrySeENu5N85zCmmuRsBEa0fBC8xrFHkzPm0SZN6U/+Y/GhIod8ypYo1sGKSpBR9wN+Ww/hnDovZb/q9pvDhoEcb+YsA6Rzdj6pTGgqwseBYKoC0k1B/ZeLJbmCot0CA6h/+hLmxrB2Ie/HE+bAcCIwpvoHJxeZqST/QaZMeFhru7/VxMBghnT5ssr+pE7OR8udHkIB9gRNJbjUQaAd3xzSJR3KU6MvQPXlu0FIL0ieucF1/PEMGOoLizfjN81W8yHeY6Zm49efmqp5g4zD+cBzDZJ3VFA/QMDreTzfCdOjxN4jxJIHTb0+UrM6hDXLbmKWEw== rsa-key-20200129

Nano zeigt dir im unteren Bereich alle Funktionen an.
Dabei steht das ^ Zeichen immer für die Strg bzw ctrl (auf dem Mac) Taste.
Zum Speichern drückst du also Strg + O, wirst dann noch nach dem Dateinamen gefragt (den du einfach mit Enter bestätigen kannst) um dann anschließend per Strg + X Nano wieder zu verlassen.

Falls du die Key Authentifizierung zum ersten mal nutzt, bietet es sich an, den Zugriff zu testen.
Denn im nächsten Schritt stellen wir die Passwort Anmeldung in SSH ab.
Dies hat dann das Potenzial sich selbst auszusperren 😉

nano /etc/ssh/sshd_config

Hier änderst du die folgenden beiden Optionen

X11Forwarding no
PasswordAuthentication no

Mit dem Befehl sshd -t kannst du dann nach dem Speichern testen ob die SSH Konfiguration ohne Fehler gelesen wird.
Anschließend solltest du SSH mit service ssh restart die neue Konfiguration übernehmen lassen.

Automatische Updates

Da dies nur ein Node ist, bei dem ein Ausfall nicht so schlimm wie z.B. bei einem Online-Shop wäre, aktivieren wir automatische Updates und lassen den Server (falls nötig) selbst neustarten.

Zuerst stellst du mit apt install unattended-upgrades sicher, dass das benötigte Paket dafür vorhanden ist.

Um automatische Updates zu aktivieren, musst du zwei Dateien anpassen.
Die erste Datei öffnest du mit folgendem Befehl:

nano /etc/apt/apt.conf.d/10periodic

dort ersetzt du den Inhalt komplett durch:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

Die zweite Datei öffnest du mit:

nano /etc/apt/apt.conf.d/50unattended-upgrades 

Dort die folgenden Optionen anpassen:

Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:33";

Ob alles funktioniert kannst du mit unattended-upgrades --dry-run --debug prüfen.
Außerdem solltest du nach ein paar Tagen einen Blick in die Log Dateien werfen.
z.B. mit: cat /var/log/unattended-upgrades/unattended-upgrades.log

HORNET Installation

Als erstes erstellst du einen eigenen Benutzer mit dem später Hornet ausgeführt wird:

useradd -d /home/hornet -m -s /bin/bash hornet

Bevor du nun weitermachst, solltest du einen Blick in das Github Repository von HORNET werfen: https://github.com/gohornet/hornet

Hier kannst du dann mit deinem Github Account das Repository abonnieren um über neue Versionen per E-Mail informiert zu werden.
HORNET ist derzeit in einer frühen Testversion, daher du solltest deinen Server immer auf dem neusten Stand halten!

Github Release Benachrichtigungen

Als nächstes, solltest du in der Firewall, schonmal die benötigten Ports freigeben.
Dafür kannst du die folgenden Befehle verwenden

ufw allow 14265
ufw allow 15600

Anschließend wechselst du den Benutzer von “root” auf “hornet”.
Dafür verwendest du den Befehl

su hornet

Danach wechselst du mit cd in das Benutzerverzeichnis des hornet Benutzers.

Dort kannst du dann die Signaturen und HORNET herunterladen, die Signaturen prüfen, das tar.gz Archiv entpacken und den letzten Stand der Datenbank laden:

wget https://github.com/gohornet/hornet/releases/download/v0.3.0/checksums.txt

wget https://github.com/gohornet/hornet/releases/download/v0.3.0/HORNET-0.3.0_Linux_x86_64.tar.gz

sha256sum -c --ignore-missing checksums.txt 
mkdir hornet
tar xvzf HORNET-0.3.0_Linux_x86_64.tar.gz --strip 1 -C hornet/
cd hornet
wget https://ls.manapotion.io/latest-export.gz.bin

Dann musst du deine Nachbarnodes eintragen.
Dafür öffnest du die Datei mit folgendem Befehl:

nano neighbors.json

Um unseren Node als Nachbarn einzutragen, kannst du den Inhalt komplett wie folgt ersetzen:

{
  "autotetheringenabled": true,
  "maxneighbors": 5,
  "neighbors": [
    {
      "identity": "hornet.blocktrainer.de:15600",
      "alias": "Blocktrainer",
      "preferIPv6": false
    }
  ]
}

Danach kannst du mit ./hornet -c config einen Teststart von HORNET machen. Zum beenden einfach Strg + C drücken.
Das Beenden dauert immer ein bisschen, da noch Daten aus der Datenbank gesichert werden.

Jetzt kannst du mit exit oder Strg + d zurück zum root Benutzer wechseln.

HORNET System Service

Um den Service einzurichten, öffnest du wie folgt Nano

nano /lib/systemd/system/hornet.service

Anschließend kopierst du folgenden Text in das Dokument und speicherst es ab

[Unit]
Description=HORNET Fullnode
After=network.target

[Service]
WorkingDirectory=/home/hornet/hornet
User=hornet
TasksMax=infinity
KillSignal=SIGTERM
TimeoutStopSec=infinity
ExecStart=/home/hornet/hornet/hornet -c config
SyslogIdentifier=HORNET
Restart=on-failure
RestartSec=1200

[Install]
WantedBy=multi-user.target
Alias=hornet.service

Danach kannst du den Service laden, aktivieren und starten:

systemctl daemon-reload
systemctl enable hornet.service
service hornet start

Jetzt lohnt es sich, einen Blick in die Log Ausgabe von HORNET zu werfen:

journalctl -u hornet -f

Damit siehst du eine Live Ansicht der HORNET Events.

HORNET Dashboard anzeigen

HORNET ist mit dieser Anleitung so konfiguriert, dass das Dashboard auf dem Server unter localhost:8081 läuft und es nicht aus dem Internet erreichbar ist.
Du kannst aber mit SSH den Port vom Server auf unseren PC weiterleiten.
Fall du noch per SSH Verbunden bist, solltest du die Verbindung vorerst trennen.
Auf Linux/Mac kannst du dann mit dem Befehl ssh -L 8081:localhost:8081 root@hornet.blocktrainer.de (den Part hinter dem @ natürlich an deinen Server anpassen) eine SSH Verbindung + Port Tunnel einrichten.

Mit Putty (Windows) kannst du mit den folgenden Einstellungen das gleiche tun:

Putty SSH Tunnel

Dann kannst du auf deinem PC den Browser öffnen und unter der Adresse localhost:8081 auf das Dashboard zugreifen.

HORNET Dashboard

Du hast Fragen?

Melde dich gerne im Forum 🙂

Autor

Geboren in Münster, hat er immer noch keinen überzeugenden Grund gefunden, diese tolle Stadt zu verlassen. Als Programmierer macht er technisch alles möglich, was du hier so findest. Du willst dich bei mir bedanken? Dann guck doch mal in meine Amazon Wunschliste