# Node installieren

## Vorraussetzungen

Um eine Cardano-Node zu betreiben müssen folgende Vorraussetzungen erfüllt werden:

* x86 Host, virtuelle Maschine oder eine Cloud Instanz (AWS, Digital Ocean etc.) mit mindestens 2 Kernen, 4GB RAM und mindestens 10GB freien Speicherplatz
* Aktuelle Linux Version, kein Windows oder MacOS
* Netzwerk, dessen Firewall frei konfigurierbar ist

## Dependencies installieren

Wir brauchen die folgenden Packages und Tools auf unserem Linux System um den Source Code herunterzuladen und nutzen zu können:

* `git`
* `gcc` C-Compiler
* C++ Support für `gcc`
* `gmp` Library
* `zlib` Library
* `systemd` Library
* `ncurses` Library
* `cabal` Haskell Build Tool
* `ghc` Haskell Compiler

Für CentOS/RHEL Systeme können wir die Dependencies wie folgt installieren

```
sudo yum update -y
sudo yum install git gcc gcc-c++ tmux gmp-devel make tar wget -y
sudo yum install zlib-devel libtool autoconf -y
sudo yum install systemd-devel ncurses-devel ncurses-compat-libs -y
```

Für Debian/Ubuntu Systeme können wir die Dependencies wie folgt installieren

```
sudo apt-get update -y
sudo apt-get install build-essential pkg-config libffi-dev libgmp-dev -y
sudo apt-get install libssl-dev libtinfo-dev libsystemd-dev zlib1g-dev -y
sudo apt-get install make g++ tmux git jq wget libncursesw5 libtool autoconf -y
```

Falls du eine andere Linux Version als die oben genannten hast, benutze einen Package-Manager, der mit deinem System kompatibel ist.&#x20;

## Downloaden, entpacken, installieren und updaten von Cabal

```
wget https://downloads.haskell.org/~cabal/cabal-install-3.2.0.0/cabal-install-3.2.0.0-x86_64-unknown-linux.tar.xz
tar -xf cabal-install-3.2.0.0-x86_64-unknown-linux.tar.xz
rm cabal-install-3.2.0.0-x86_64-unknown-linux.tar.xz cabal.sig
mkdir -p ~/.local/bin
mv cabal ~/.local/bin/
```

Schaue nun, dass *.local/bin* in deinem PATH ist

```
echo $PATH
```

Falls .local/bin nicht in deinem PATH ist, musst du .local/bin nun zum PATH hinzufügen, das funktioniert wie folgt

Gehe in deinen Home-Ordner

```
cd
```

Öffne deine .bashrc Datei mit nano

```
nano .bashrc
```

Gehe ans Ende der Datei und füge folgendes hinzu

```
export PATH="~/.local/bin:$PATH"
```

Nun speichere die Datei ab und source sie

```
source .bashrc
```

Aktualisiere Cabal

```
cabal update
```

Wenn alles geklappt hat solltest du nun Cabal Version `3.2.0.0` installiert haben. Du kannst das ganz einfach mit folgendem Kommando überprüfen

```
cabal --version
```

## `GHC` installieren

```
wget https://downloads.haskell.org/~ghc/8.6.5/ghc-8.6.5-x86_64-deb9-linux.tar.xz
tar -xf ghc-8.6.5-x86_64-deb9-linux.tar.xz
rm ghc-8.6.5-x86_64-deb9-linux.tar.xz
cd ghc-8.6.5
./configure
sudo make install
cd ..
```

## `Libsodium` installieren

```
git clone https://github.com/input-output-hk/libsodium
cd libsodium
git checkout 66f017f1
./autogen.sh
./configure
make
sudo make install

export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
```

## `Cardano-Node` Quellcode herunterladen&#x20;

```
cd
git clone https://github.com/input-output-hk/cardano-node.git
```

Erstellt den Ordner `cardano-node` und lädt den aktuellsten Quelltext herunter

Nachdem der Download fertig ist können wir den Inhalt wie folgt ausgeben

```
ls cardano-node
```

Jetzt müssen wir in den Ordner navigieren

```
cd cardano-node
```

Derzeit benötigen wir Version `1.18.0`

```
git fetch --all --tags
git tag
git checkout tags/1.18.0
```

## Node erstellen und installieren

Das machen wir mit `cabal` wie folgt

```
cabal build all
```

Anschließend kopieren wir die ausführbaren Dateien in unser *.local/bin* Verzeichnis

```
cp -p dist-newstyle/build/x86_64-linux/ghc-8.6.5/cardano-node-1.18.0/x/cardano-node/build/cardano-node/cardano-node ~/.local/bin/
cp -p dist-newstyle/build/x86_64-linux/ghc-8.6.5/cardano-cli-1.18.0/x/cardano-cli/build/cardano-cli/cardano-cli ~/.local/bin/
```

Nun prüfen wir ob alles geklappt hat. Wenn kein Fehler angezeigt wird, hast du alles richtig gemacht. Es sollte jeweils die Version deiner Node und CLI ausgegeben werden

```
cardano-cli --version
```

```
cardano-node --version
```

Wenn du ein Update auf eine neuere Version durchführen möchtest machst du das wie folgt.&#x20;

ACHTUNG: Es könnte sein, dass du den `db` (Datenbank) Ordner löschen musst

```
cd cardano-node
git fetch --all --tags
git tag
git checkout tags/<deine-neue-version>
cabal install cardano-node cardano-cli
```
