Einen Kaspa Node (Rust) auf Debian 11 in Betrieb nehmen (KRC20)

Einen Kaspa Node (Rust) auf Debian 11 in Betrieb nehmen (KRC20)

In diesem Tutorial installieren einen aktuellen Kaspa Node auf Basis von rust unter Debian 11. Der go Node ist nicht mit KRC20 kompatibel, weshalb der Einsatz eines rust Nodes empfohlen wird. In diesem Tutorial wird nicht nur gezeigt wie der Node installiert wird, vielmehr wird ein zusätzlicher Benutzer für die Ausführung eingerichtet und für den Kaspa Node ein eigener Service unter diesem Benutzer erstellt. Dies beinhaltet auch einen automatischen Start des Kaspa Node Service bei Systemstart.

Der Node läuft auf den Ports 16111 / 16110.

Tutorial (vereinfacht)

Update vom 16.09.2014 auf RustyKaspa v0.15.1

Im nachfolgenden vereinfachen wir den ganzen Prozess ein bisschen. Wir verwenden einfach die bereits fertige Anwendung anstatt diese selbst zu compilen.

Zuerst bearbeiten wir die Benutzerkonfiguration:

sudo visudo

und fügen die folgenden Einstellungen innerhalb der Datei ein (nicht am Ende):

Defaults:kaspanode runaspw
kaspanode ALL=(ALL) ALL

Danach erstellen wir einen neuen Benutzer und vergeben für diesen ein sicheres Passwort:

adduser kaspanode

Danach wechseln wir zu diesem neuen Benutzer

su - kaspanode

und starten die Installation benötigter Abhängigkeiten und Tools

sudo apt install curl git build-essential libssl-dev pkg-config cmake screen unzip
sudo apt install protobuf-compiler libprotobuf-dev #Required for gRPC
sudo apt-get install clang-format clang-tidy \
clang-tools clang clangd libc++-dev \
libc++1 libc++abi-dev libc++abi1 \
libclang-dev libclang1 liblldb-dev \
libllvm-ocaml-dev libomp-dev libomp5 \
lld lldb llvm-dev llvm-runtime \
llvm python3-clang
#wget https://github.com/kaspanet/rusty-kaspa/releases/download/v0.14.1/rusty-kaspa-v0.14.1-linux-gnu-amd64.zip
#unzip rusty-kaspa-v0.14.1-linux-gnu-amd64.zip
wget https://github.com/kaspanet/rusty-kaspa/releases/download/v0.15.1/rusty-kaspa-v0.15.1-linux-musl-amd64.zip
unzip rusty-kaspa-v0.15.1-linux-musl-amd64.zip
sudo touch /home/kaspanode/kaspa.log
sudo chmod 777 /home/kaspanode/kaspa.log

Der Befehl zum Starten würde lauten (wir benutzen diesen Befehl hier aber nicht)

#command to run it: /home/kaspanode/bin/kaspad --utxoindex

Wir möchten den Node als Service automatisch starten, daher legen wir eine neue Datei für den Service an:

sudo nano /etc/systemd/system/kaspa.service

mit folgendem Inhalt

[Unit]
Description=Kaspa Node Service
After=network.target

[Service]
User=kaspanode
WorkingDirectory=/home/kaspanode/bin
ExecStart=/bin/bash -c '/home/kaspanode/bin/kaspad --utxoindex >> /home/kaspanode/kaspa.log 2>&1'
Restart=always
RestartSec=10s
StartLimitBurst=3
StartLimitIntervalSec=60

[Install]
WantedBy=multi-user.target

Danach führen wir die folgenden Befehle aus

sudo systemctl daemon-reload
sudo systemctl reset-failed
sudo systemctl enable kaspa.service
sudo systemctl start kaspa.service

Damit ist der Kaspa Node fertig eingerichtet

sudo systemctl status kaspa.service

Logs können auch mit dem nachfolgenden Befehl angezeigt werden

tail -n 10 /home/kaspanode/kaspa.log

Dieses Log kürzen wir regelmäßig:

sudo nano /etc/logrotate.d/kaspa

Wir fügen den nachfolgenden Inhalt ein und speichern die Datei:

/home/kaspanode/kaspa.log {
    missingok
    notifempty
    size 10M
    copytruncate
    compress
    delaycompress
    daily
    rotate 7
    create 644 kaspanode kaspanode
}

Tutorial Rust (derzeit nicht möglich)

Leider gibt es aktuell einen Fehler beim compilen mit libmimalloc-sys auf Debian 11 und Ubuntu 22. Ich empfehle daher die Verwendung des vereinfachten Tutorials (siehe oben).

Zuerst bearbeiten wir die Benutzerkonfiguration:

sudo visudo

und fügen die folgenden Einstellungen innerhalb der Datei ein (nicht am Ende):

Defaults:kaspanode runaspw
kaspanode ALL=(ALL) ALL

Danach erstellen wir einen neuen Benutzer und vergeben für diesen ein sicheres Passwort:

adduser kaspanode

Danach wechseln wir zu diesem neuen Benutzer

su - kaspanode

und starten die Installation benötigter Abhängigkeiten und Tools

sudo apt install curl git build-essential libssl-dev pkg-config cmake screen
sudo apt install protobuf-compiler libprotobuf-dev #Required for gRPC
sudo apt-get install clang-format clang-tidy \
clang-tools clang clangd libc -dev \
libc 1 libc abi-dev libc abi1 \
libclang-dev libclang1 liblldb-dev \
libllvm-ocaml-dev libomp-dev libomp5 \
lld lldb llvm-dev llvm-runtime \
llvm python3-clang
sudo curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.profile
cargo install wasm-pack
rustup target add wasm32-unknown-unknown
git clone https://github.com/kaspanet/rusty-kaspa

Der Befehl zum Starten würde lauten (wird benutzen diesen Befehl hier aber nicht)

#command to run it: cargo run --release --manifest-path /home/kaspanode/rusty-kaspa/Cargo.toml --bin kaspad -- --utxoindex

Wir legen eine neue Datei für den Service an

sudo nano /etc/systemd/system/kaspa.service

mit folgendem Inhalt

[Service]
User=kaspanode
WorkingDirectory=/home/kaspanode/rusty-kaspa
Environment="PATH=/home/kaspanode/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
ExecStart=/usr/bin/screen -DmS kaspa-session /usr/bin/bash -c 'cargo run --release --manifest-path /home/kaspanode/rusty-kaspa/Cargo.toml --bin kaspad -- --utxoindex > /home/kaspanode/kaspa.log 2>&1'
Restart=always
RestartSec=10s
StartLimitBurst=3
StartLimitIntervalSec=60

Danach führen wir die folgenden Befehle aus

sudo systemctl daemon-reload
sudo systemctl reset-failed
sudo systemctl enable kaspa.service
sudo systemctl start kaspa.service

Damit ist der Kaspa Node fertig eingerichtet

sudo systemctl status kaspa.service

Logs können auch mit dem nachfolgenden Befehl angezeigt werden

cat /home/kaspanode/kaspa.log

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert