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