Ausführen eines Avalanche-Nodes per Installationsskript unter Linux

lakai01
avalanche_dach
Published in
7 min readFeb 24, 2021

Avalanche stellt ein Shell-Skript (bash) bereit, welches AvalancheGo auf deinem Computer installiert. Dieses Skript richtet einen vollständigen, funktionsfähigen Node in nur wenigen Minuten ein, wobei deinerseits nur wenige Benutzereingaben erforderlich sind.

Dieser Artikel wurde übersetzt, den englischen Originalartikel findest Du hier.

Bevor Du startest

Dieses Installationsskript setzt Folgendes voraus:

  • OS: Ubuntu 18.04 oder 20.04 (sorry, MacOS und Windows unterstützen wir noch nicht)
  • AvalancheGo läuft nicht und ist auch noch nicht als Dienst installiert
  • Der Benutzer, der das Skript ausführt, hat Superuser-Rechte (kann also sudo ausführen)

Hinweise zum Betriebssystem

Wenn Du eine andere Linux-Distribution verwenden möchtest, so funktioniert das Skript möglicherweise nicht wie vorgesehen. Das Skript geht davon aus, dass systemd vorhanden ist um Systemdienste auszuführen.

Andere Linux-Distributionen verwenden möglicherweise andere Tools für die Systemdienste oder vom Skript benötigte Dateien sind unter anderen Pfaden abgelegt.

Wenn auf deinem Computer bereits ein Node läuft, so beende ihn bitte bevor Du das Skript ausführst.

Beenden eines Nodes, der bereits im Terminal läuft
Wenn Du aktuell einen Node in einem Terminal ausführst, so stoppe diesen bitte, indem Du Strg+C drückst.

Beenden eines Nodes, der als Dienst ausgeführt wird
Wenn Dein Node bereits als Dienst ausgeführt wird, benötigst Du dieses Skript wahrscheinlich nicht. Du bist bereits startklar.

Beenden eines Nodes, der bereits im Hintergrund läuft
Wenn Dein Node bereits im Hintergrund ausgeführt wird (z. B. durch die Verwendung von nohup), so findest Du den Prozess, der den Node ausführt, indem Du ps aux | grep avalanche aufrufst. Das Ergebnis sieht in etwa folgendermaßen aus:

ubuntu 6834 0.0 0.0 2828 676 pts/1 S+ 19:54 0:00 grep avalanche
ubuntu 2630 26.1 9.4 2459236 753316 ? Sl Dec02 1220:52 /home/ubuntu/build/avalanchego

Suche nun nach einer Zeile, in der kein grep vorkommt. In diesem Beispiel ist das die zweite Zeile. Dort findest Du Informationen über deinen Node. Du siehst hier auch die Prozess-ID des Nodes, in diesem Fall 2630. Du kannst nun den Node stoppen indem Du in einem Terminal kill -2 2630 ausführst.

Vom Node benötigte Dateien
Wenn Du zuvor einen AvalancheGo-Node auf deinem Computer laufen hattest, so sind die lokal benötigten Dateien des Nodes im Verzeichnis $HOME/.avalanchego abgelegt.
Diese Dateien werden durch das Installationsskript nicht verändert und der vom Skript eingerichtete Node setzt den Betrieb mit derselben Identität und demselben Status fort, den der zuvor installierte Node hatte. Nichts desto trotz solltest Du sicherheitshalber die Dateien staker.crt und staker.key, die sich im Verzeichnis $HOME/.avalanchego/staking befinden, sichern. Du kannst diese Dateien später dazu verwenden, um deinen Node auf einem anderen Computer neu einzurichten, falls dies notwendig sein sollte.

Hinweise zur Netzwerkverbindung

Um erfolgreich laufen zu können, muss AvalancheGo Verbindungen aus dem Internet über den Port 9651 akzeptieren. Bevor Du mit der Installation fortfährst, gibt es je nach Netzwerk, in welchem Du deinen Node betreiben möchtest, wichtige Punkte zu beachten.

Betreiben des Nodes bei einem Cloud-Anbieter

Wenn dein Node auf einer Instanz eines Cloud-Anbieters ausgeführt werden soll, so hat dieser eine statische IP. Du solltest vor dem Start des Skripts diese IP-Adresse herausfinden — oder falls notwendig konfigurieren.
Das Skript versucht während der Installation die IP-Adresse selbstständig zu ermitteln. Dies funktioniert jedoch leider nicht in allen Umgebungen, sodass Du die IP-Adresse während der Installation eingeben oder zumindest überprüfen musst.

Betreiben des Nodes im Heimnetzwerk

Wenn Du einen Node auf einem Computer betreiben möchtest, der über eine private Internetverbindung verfügt, so hat der Node in der Regel eine dynamische IP-Adresse, d. h. deine IP-Adresse ändert sich regelmäßig. Das Installationsskript konfiguriert den Knoten entsprechend für diese Situation. Für eine Verbindung über ein Heimnetzwerk musst Du jedoch eine eingehende Portweiterleitung von Port 9651 hin zu jenem Computer einrichten, auf dem der Node installiert ist.
Da es zu viele Modelle und Router-Konfigurationen gibt, können wir hier leider keine Anleitungen geben, was Du für die Einrichtung der Portweiterleitung tun musst. Es gibt dafür aber online verfügbare Anleitungen (bspw. hier oder hier) und auch der Support deines Internetproviders kann dir dabei sicher weiterhelfen.

Ausführen des Skripts

So, nachdem Du dein System jetzt eingerichtet und auch alle vom Skript benötigten Informationen gesammelt hast, können wir nun starten.

Um das Skript herunterzuladen und auszuführen gib bitte Folgendes im Terminal ein:

wget -nd -m https://raw.githubusercontent.com/ava-labs/avalanche-docs/master/scripts/avalanchego-installer.sh;\chmod 755 avalanchego-installer.sh;\./avalanchego-installer.sh

Und los geht’s! Der Output des Skripts sollte ungefähr so aussehen:

AvalancheGo installer---------------------Preparing environment...Found arm64 architecture...Looking for the latest arm64 build...Will attempt to download:https://github.com/ava-labs/avalanchego/releases/download/v1.1.1/avalanchego-linux-arm64-v1.1.1.tar.gzavalanchego-linux-arm64-v1.1.1.tar.gz 100%[=========================================================================>]  29.83M  75.8MB/s    in 0.4s2020-12-28 14:57:47 URL:https://github-production-release-asset-2e65be.s3.amazonaws.com/246387644/f4d27b00-4161-11eb-8fb2-156a992fd2c8?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20201228%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20201228T145747Z&X-Amz-Expires=300&X-Amz-Signature=ea838877f39ae940a37a076137c4c2689494c7e683cb95a5a4714c062e6ba018&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=246387644&response-content-disposition=attachment%3B%20filename%3Davalanchego-linux-arm64-v1.1.1.tar.gz&response-content-type=application%2Foctet-stream [31283052/31283052] -> "avalanchego-linux-arm64-v1.1.1.tar.gz" [1]Unpacking node files...avalanchego-v1.1.1/plugins/avalanchego-v1.1.1/plugins/evmavalanchego-v1.1.1/avalanchegoNode files unpacked into /home/ubuntu/avalanche-node

Nun benötigt das Skript die Informationen über deine Netzwerkumgebung:

To complete the setup some networking information is needed.Where is the node installed:1) residential network (dynamic IP)2) cloud provider (static IP)Enter your connection type [1,2]:

Gib nun bitte 1 ein wenn Du über eine dynamische IP-Adresse verfügst und 2 falls Du über eine statische IP-Adresse verbunden bist. Falls Du eine statische IP-Adresse verwendest versucht nun das Skript diese automatisch zu ermitteln und benötigt anschließend eine Bestätigung, dass die Adresse korrekt ist:

Detected '3.15.152.14' as your public IP. Is this correct? [y,n]:

Bestätige nun bitte mit y oder drücke n, wenn die automatisch erkannte IP-Adresse falsch (oder leer) ist, und gib bei der nun folgenden Abfrage die richtige IP ein.

Das Skript fährt anschließend mit der Einrichtung des Systemdienstes fort und schließt mit dem Starten des Dienstes ab.

Installing service with public IP: 3.15.152.14Created symlink /etc/systemd/system/multi-user.target.wants/avalanchego.service → /etc/systemd/system/avalanchego.service.Done!Your node should now be bootstrapping on the main net.To check that the service is running use the following command (q to exit):sudo systemctl status avalanchegoTo follow the log use (ctrl+C to stop):sudo journalctl -u avalanchego -fReach us over on https://chat.avax.network if you're having problems.

Das Skript ist nun fertig und Du solltest nun wieder die Eingabeaufforderung sehen.

Nach der Installation

AvalancheGo sollte nun als Dienst im Hintergrund laufen. Ob das tatsächlich so ist kannst Du mit folgendem Befehl überprüfen:

sudo systemctl status avalanchego

Es werden nun die aktuellsten Log-Einträge des Nodes ausgegeben, das sollte ungefähr so aussehen:

avalanchego.service - AvalancheGo systemd serviceLoaded: loaded (/etc/systemd/system/avalanchego.service; enabled; vendor preset: enabled)Active: active (running) since Tue 2021-01-05 10:38:21 UTC; 51s agoMain PID: 2142 (avalanchego)Tasks: 8 (limit: 4495)Memory: 223.0MCGroup: /system.slice/avalanchego.service└─2142 /home/ubuntu/avalanche-node/avalanchego --plugin-dir=/home/ubuntu/avalanche-node/plugins --dynamic-public-ip=opendns --http-host=Jan 05 10:38:45 ip-172-31-30-64 avalanchego[2142]: INFO [01-05|10:38:45] <P Chain> avalanchego/vms/platformvm/vm.go#322: initializing last accepted block as 2FUFPVPxbTpKNn39moGSzsmGroYES4NZRdw3mJgNvMkMiMHJ9eJan 05 10:38:45 ip-172-31-30-64 avalanchego[2142]: INFO [01-05|10:38:45] <P Chain> avalanchego/snow/engine/snowman/transitive.go#58: initializing consensus engineJan 05 10:38:45 ip-172-31-30-64 avalanchego[2142]: INFO [01-05|10:38:45] avalanchego/api/server.go#143: adding route /ext/bc/11111111111111111111111111111111LpoYYJan 05 10:38:45 ip-172-31-30-64 avalanchego[2142]: INFO [01-05|10:38:45] avalanchego/api/server.go#88: HTTP API server listening on ":9650"Jan 05 10:38:58 ip-172-31-30-64 avalanchego[2142]: INFO [01-05|10:38:58] <P Chain> avalanchego/snow/engine/common/bootstrapper.go#185: Bootstrapping started syncing with 1 vertices in the accepted frontierJan 05 10:39:02 ip-172-31-30-64 avalanchego[2142]: INFO [01-05|10:39:02] <P Chain> avalanchego/snow/engine/snowman/bootstrap/bootstrapper.go#210: fetched 2500 blocksJan 05 10:39:04 ip-172-31-30-64 avalanchego[2142]: INFO [01-05|10:39:04] <P Chain> avalanchego/snow/engine/snowman/bootstrap/bootstrapper.go#210: fetched 5000 blocksJan 05 10:39:06 ip-172-31-30-64 avalanchego[2142]: INFO [01-05|10:39:06] <P Chain> avalanchego/snow/engine/snowman/bootstrap/bootstrapper.go#210: fetched 7500 blocksJan 05 10:39:09 ip-172-31-30-64 avalanchego[2142]: INFO [01-05|10:39:09] <P Chain> avalanchego/snow/engine/snowman/bootstrap/bootstrapper.go#210: fetched 10000 blocksJan 05 10:39:11 ip-172-31-30-64 avalanchego[2142]: INFO [01-05|10:39:11] <P Chain> avalanchego/snow/engine/snowman/bootstrap/bootstrapper.go#210: fetched 12500 blocks

Beachte den Eintrag active (running) welcher anzeigt, dass der Node läuft und funktioniert. Eventuell musst Du nun q drücken um zur Eingabeaufforderung zurückzukehren.

Um deine NodeID herauszufinden (diese identifiziert deinen Node eindeutig im Netzwerk) kannst Du folgenden Befehl verwenden:

sudo journalctl -u avalanchego | grep "node's ID"

Das Ergebnis sollte ungefähr so aussehen:

Jan 05 10:38:38 ip-172-31-30-64 avalanchego[2142]: INFO [01-05|10:38:38] avalanchego/node/node.go#428: Set node's ID to 6seStrauyCnVV7NEVwRbfaT9B6EnXEzfY

Du brauchst nun einfach NodeID- voranstellen um deine NodeID zu bekommen, bspw. so: NodeID-6seStrauyCnVV7NEVwRbfaT9B6EnXEzfY. Hebe dir diese bitte auf, die ID wirst Du für das Staking oder zur Kontrolle deines Nodes benötigen.

Dein Node sollte sich nun im Bootstrapping bestimmen. Du kannst dir den Fortschritt anzeigen lassen indem Du folgenden Befehl verwendest:

sudo journalctl -u avalanchego -f

Mit STRG+C kannst Du nun wieder zur Eingabeaufforderung zurückkehren.

Den Node stoppen

Um AvalancheGo zu stoppen kannst Du folgenden Befehl verwenden:

sudo systemctl stop avalanchego

Um diese anschließend wieder zu starten gib einfach Folgendes ein:

sudo systemctl start avalanchego

Upgrades durchführen

AvalancheGo wird ständig weiterentwickelt und wir veröffentlichen regelmäßig Upgrades. Der Großteil dieser Updates wird zwar empfohlen, ist aber nicht unbedingt notwendig. Sollten nicht-rückwärtskompatible Updates stattfinden werden wir euch frühzeitig informieren. Sobald eine neue Node-Version verfügbar ist wirst Du Logeinträge wie diesen hier bemerken:

Jan 08 10:26:45 ip-172-31-16-229 avalanchego[6335]: INFO [01-08|10:26:45] avalanchego/network/peer.go#526: beacon 9CkG9MBNavnw7EVSRsuFr7ws9gascDQy3 attempting to connect with newer version avalanche/1.1.1. You may want to update your client

Wir empfehlen dir generell die Updates durchzuführen, da diese meistens Bugfixes, neue Features oder generelle Upgrades beinhalten.

Um deinen Node upzudaten brauchst Du einfach nur dein Installer-Skript nochmals ausführen:

./avalanchego-installer.sh

Das Skript bemerkt nun selbstständig, dass AvalancheGo schon installiert ist:

AvalancheGo installer---------------------Preparing environment...Found 64bit Intel/AMD architecture...Found AvalancheGo systemd service already installed, switching to upgrade mode.Stopping service...

Anschließend wir dein Node auf die neueste Version aktualisiert. Sobald der Aktualisierungsvorgang abgeschlossen ist wird der Node wieder gestartet und es werden Informationen über die neue Node-Version angezeigt:

Node upgraded, starting service...New node version:avalanche/1.1.1 [network=mainnet, database=v1.0.0, commit=f76f1fd5f99736cf468413bbac158d6626f712d2]Done!

Und nun?

Gratulation, Du betreibst nun einen AvalancheGo Node! Wir freuen uns über eine Nachricht dazu auf Twitter, Telegram oder Reddit!

Wenn Du dich in einem privaten Netzwerk (mit einer dynamischen IP-Adresse) befindest dann vergiss bitte nicht das Port Forwarding einzurichten. Wenn Du deinen Node über einen Cloud Service Provider betreibst brauchst Du dich darum nicht kümmern.

Du kannst dich nun näher mit deinem Node auseinandersetzen, deine Token staken oder deine Installation auf das nächste Level heben und ein Monitoring einrichten um deinen Node überwachen zu können.

Wenn Du noch Fragen hast oder Hilfe brauchst zögere bitte nicht und besuche uns einfach auf unserem Discord Server.

--

--

lakai01
avalanche_dach
0 Followers
Editor for

Software Developer, interested in Cryptos #AVAX, #ADA and of cource #BTC