Installationshandbuch

Version: 1.0 Datum: 2026-02-10 Autor: IceDataEmphasise Team Klassifikation: INTERN

Revisionshistorie

Version Datum Autor Beschreibung
1.0 2026-02-10 IceDataEmphasise Team Initiale Erstellung des Installationshandbuchs

Inhaltsverzeichnis

  1. Voraussetzungen
  2. Installationsuebersicht
  3. Phase 0: Repository klonen
  4. Phase 1: Tailscale/Headscale
  5. Phase 2: Cribl Stream
  6. Phase 3: Cribl Edge
  7. Post-Installations-Pruefungen
  8. Rollback-Verfahren

1. Voraussetzungen

1.1 Hardware-Anforderungen

Ressource Minimum Empfohlen
Linux-Kernel >= 3.10 5.x oder hoeher
CPU-Kerne 4 8
Arbeitsspeicher (RAM) 8 GB 16 GB
Festplatte (/opt) 5 GB frei 20 GB frei

1.2 Software-Anforderungen

Paket Zweck Pruefung
curl HTTP-Downloads und API-Aufrufe curl --version
tar Entpacken der Cribl-Tarballs tar --version
jq JSON-Verarbeitung in Skripten jq --version
openssl TLS-Zertifikatspruefungen openssl version
systemctl Systemd-Service-Management systemctl --version

1.3 Netzwerk-Voraussetzungen

1.4 Berechtigungen

Root-Zugriff erforderlich: Alle Installationsskripte muessen mit sudo ausgefuehrt werden. Die Skripte pruefen dies automatisch und brechen mit einer Fehlermeldung ab, falls sie ohne Root-Rechte gestartet werden.

1.5 Umgebungsvariablen (.env)

Vor der Installation muss die Datei .env im Projektroot erstellt und konfiguriert werden. Eine Vorlage befindet sich in .env.example.

# Beispiel .env Konfiguration
CRIBL_VERSION=4.16.1
CRIBL_EDGE_HOME=/opt/cribl-edge
CRIBL_SERVICE_USER=cribl
CRIBL_SERVICE_GROUP=cribl
CRIBL_EDGE_MGMT_PORT=4200
CRIBL_STREAM_API_PORT=9000
CRIBL_ADMIN_USER=admin
CRIBL_ADMIN_PASSWORD=<sicheres_passwort>

HEADSCALE_URL=https://<headscale-server>
HEADSCALE_AUTH_KEY=<pre-auth-key>

SPLUNK_HOST=<splunk-host>
SPLUNK_HEC_PORT=8088
SPLUNK_HEC_TOKEN=<hec-token>
Zeilenenden (CRLF): Alle Shell-Skripte und die .env-Datei muessen Unix-Zeilenenden (LF) verwenden. Windows-Zeilenenden (CRLF) fuehren zu Ausfuehrungsfehlern. Nach dem Klonen des Repositories auf einem Windows-System oder nach Bearbeitung mit einem Windows-Editor muessen die Zeilenenden konvertiert werden:
# Alle Skripte auf Unix-Zeilenenden konvertieren
sed -i 's/\r$//' scripts/*.sh scripts/lib/*.sh splunk/*.sh .env

2. Installationsuebersicht

2.1 Installationsphasen

Phase Skript Beschreibung Dauer (ca.)
0 git clone Repository klonen 1 Min.
1 01-install-tailscale.sh Tailscale installieren und mit Headscale verbinden 3-5 Min.
2a 00-preflight-check.sh Systemvoraussetzungen pruefen 1 Min.
2b 02-install-cribl-stream.sh Cribl Stream installieren und starten 5-10 Min.
3 03-install-cribl-edge-linux.sh Cribl Edge als Managed-Edge-Node installieren 5-10 Min.

2.2 Skriptverzeichnis-Struktur

scripts/
  00-preflight-check.sh          # Systemvoraussetzungen pruefen
  01-install-tailscale.sh        # Tailscale + Headscale
  02-install-cribl-stream.sh     # Cribl Stream Installation (geplant)
  03-install-cribl-edge-linux.sh # Cribl Edge (Linux)
  09-uninstall-cribl.sh          # Deinstallation (geplant)
  lib/
    common.sh                    # Gemeinsame Hilfsfunktionen
    api-helpers.sh               # Cribl REST API Wrapper
Hinweis: Alle Skripte nutzen die gemeinsame Bibliothek scripts/lib/common.sh, die Logging, Farbausgabe, Root-Pruefung, Netzwerk-Hilfsfunktionen und weitere Utilities bereitstellt. Die API-Interaktion erfolgt ueber scripts/lib/api-helpers.sh.

3. Phase 0: Repository klonen

# Repository klonen
git clone <repository-url> IceDataEmphasise
cd IceDataEmphasise

# Umgebungsdatei erstellen
cp .env.example .env
# .env mit den korrekten Werten befuellen (siehe Abschnitt 1.5)
nano .env
Wichtig: Die Datei .env enthaelt sensible Zugangsdaten (Passwoerter, API-Tokens). Sie ist in .gitignore eingetragen und darf niemals in das Repository eingecheckt werden.

4. Phase 1: Tailscale/Headscale

4.1 Zweck

Tailscale stellt ein verschluesseltes VPN-Overlay-Netzwerk bereit, ueber das die Cribl Stream Web-UI sicher erreichbar ist. Die Verbindung erfolgt zum selbstgehosteten Headscale-Koordinationsserver.

4.2 Ausfuehrung

# Skript: scripts/01-install-tailscale.sh
sudo ./scripts/01-install-tailscale.sh

4.3 Ablauf des Skripts

  1. Distributions-Erkennung: Liest /etc/os-release aus, um die Distribution (Debian/Ubuntu) und den Codename (z.B. bookworm) zu bestimmen.
  2. Repository hinzufuegen: Fuegt das offizielle Tailscale APT-Repository hinzu, inkl. GPG-Schluessel unter /usr/share/keyrings/tailscale-archive-keyring.gpg.
  3. Paket installieren: Installiert das tailscale-Paket via apt-get.
  4. Daemon starten: Aktiviert und startet tailscaled.service via systemd.
  5. Headscale-Verbindung: Fuehrt tailscale up --login-server <HEADSCALE_URL> aus.
  6. Verifikation: Zeigt den Tailscale-Status und die zugewiesene IPv4-Adresse an.
  7. Firewall-Empfehlungen: Gibt iptables/ufw-Regeln aus, um Port 9000 auf das Tailscale-Interface zu beschraenken.

4.4 Erwartete Ausgabe

>>> Adding Tailscale package repository
[OK]    GPG key installed to /usr/share/keyrings/tailscale-archive-keyring.gpg
[OK]    APT source added
[OK]    Package index updated
>>> Installing Tailscale package
[OK]    Tailscale package installed: 1.76.1
>>> Starting tailscaled service
[OK]    tailscaled is running
>>> Connecting to Headscale
[OK]    tailscale up completed
>>> Verifying Tailscale connection
[OK]    Tailscale IPv4 address: 100.64.x.x

5. Phase 2: Cribl Stream

5.1 Preflight-Check

# Systemvoraussetzungen pruefen
sudo ./scripts/00-preflight-check.sh

5.2 Pruefliste des Preflight-Checks

Der Preflight-Check validiert folgende Punkte:

Pruefung Kriterium Methode
Kernel-Version >= 3.10 uname -r
CPU-Kerne >= 4 nproc
Verfuegbarer RAM >= 8 GB /proc/meminfo (MemAvailable)
Freier Festplattenspeicher >= 5 GB auf /opt df -BG
Freie Ports 9000, 9420, 9997, 4200, 514 ss -tlnp
Netzwerk-Konnektivitaet cdn.cribl.io (HTTPS), Splunk-Host curl, check_port_open()
Installierte Pakete curl, tar, jq, openssl command -v
Ergebnis: Am Ende des Preflight-Checks wird eine Zusammenfassungstabelle mit allen Pruefergebnissen (PASS/FAIL) ausgegeben. Das Skript beendet sich mit Exit-Code 1, falls mindestens eine Pruefung fehlschlaegt.

5.3 Cribl Stream Installation

# Cribl Stream installieren (Skript 02)
sudo ./scripts/02-install-cribl-stream.sh

5.4 Erwarteter Ablauf

  1. Download: Die Download-URL wird dynamisch von https://cdn.cribl.io/dl/latest-x64 aufgeloest. Ein statisches URL-Muster funktioniert nicht, da die CDN-URLs einen Build-Hash enthalten (z.B. cribl-4.16.1-20904e45-linux-x64.tgz).
  2. Extraktion: Entpacken nach /opt/cribl
  3. Service-User: Benutzer cribl mit passender Gruppenzugehoerigkeit erstellen
  4. Eigentuemer setzen: /opt/cribl dem cribl-Benutzer zuweisen
  5. Systemd-Service: cribl.service erstellen, aktivieren und starten
  6. Warten auf Port 9000: Sicherstellen, dass die Web-UI erreichbar ist
  7. Initiale Konfiguration: Admin-Passwort setzen, API-Token generieren
Standard-Passwort: Cribl Stream startet mit dem Standard-Passwort admin. Ein Bootstrap ueber users.json funktioniert in Version 4.16.x nicht zuverlaessig. Das Passwort muss nach dem ersten Login ueber die Web-UI geaendert werden. Anforderungen: Mindestens 8 Zeichen, 3 verschiedene Zeichenklassen (Gross-/Kleinbuchstaben, Zahlen, Sonderzeichen).

5.5 Verifikation

# Service-Status pruefen
systemctl status cribl

# Web-UI Erreichbarkeit testen
curl -s -o /dev/null -w '%{http_code}' http://localhost:9000

# API Health-Check
curl -s http://localhost:9000/api/v1/health | jq .

6. Phase 3: Cribl Edge

6.1 Ausfuehrung

# Cribl Edge (Linux) installieren
sudo ./scripts/03-install-cribl-edge-linux.sh

6.2 Detaillierter Ablauf

Das Skript 03-install-cribl-edge-linux.sh fuehrt folgende Schritte durch:

  1. Umgebung validieren:
  2. Bestehende Installation pruefen: Falls bereits vorhanden, wird Benutzerbestaetigung eingeholt. Laufender Service wird gestoppt.
  3. Tarball herunterladen: Von cdn.cribl.io, oder gecachte Version unter /tmp/ verwenden.
  4. Entpacken: Nach /opt/cribl-edge mit Backup bestehender lokaler Konfiguration.
  5. Managed-Edge konfigurieren: Schreibt cribl.yml mit distributed.mode: managed-edge und Master-Verbindung zu 127.0.0.1:4200.
  6. Systemd-Service erstellen: cribl-edge.service mit:
  7. Service starten: Aktivieren, starten und auf Registrierung beim Stream-Leader warten (Timeout: 90s).
  8. Verifikation: Binary-Check, Service-Status, Eigentuemer-Pruefung, optionaler API-Check.

6.3 Managed-Edge Konfiguration

Die generierte Konfigurationsdatei /opt/cribl-edge/local/cribl/cribl.yml:

distributed:
  mode: managed-edge
  master:
    host: "127.0.0.1"
    port: 4200
    tls:
      disabled: true
    authToken: ""
Bekanntes Problem (Stand 4.16.1): Die Managed-Edge-Authentifizierung mit dem Stream Leader ueber Port 4200 kann fehlschlagen. Symptome: "Unauthorized" oder "Other party ended the socket connection" im Edge-Log. Als Workaround kann Cribl Stream im Single-Mode betrieben werden, wobei der Syslog-Input und das Systemd-Journal direkt in Stream konfiguriert werden. File-Monitor-Quellen sind in diesem Modus nicht verfuegbar (nur ueber Edge).

6.4 Verifikation

# Service-Status
systemctl status cribl-edge

# Edge-Version pruefen
/opt/cribl-edge/bin/cribl version

# Edge-Registrierung im Stream pruefen (API)
curl -s -u admin:<passwort> http://localhost:9000/api/v1/edge/nodes | jq .

# Logs pruefen
journalctl -fu cribl-edge

7. Post-Installations-Pruefungen

7.1 Checkliste

7.2 Automatisierte Pruefung

# Schnellpruefung aller Services
for svc in tailscaled cribl cribl-edge; do
    printf "%-20s: %s\n" "$svc" "$(systemctl is-active $svc 2>/dev/null || echo 'nicht gefunden')"
done

# Port-Pruefung
for port in 9000 9420 4200; do
    if ss -tlnp | grep -q ":${port} "; then
        echo "Port $port: OFFEN"
    else
        echo "Port $port: GESCHLOSSEN"
    fi
done

8. Rollback-Verfahren

8.1 Cribl Edge deinstallieren

# Service stoppen und deaktivieren
sudo systemctl stop cribl-edge
sudo systemctl disable cribl-edge

# Systemd-Unit entfernen
sudo rm /etc/systemd/system/cribl-edge.service
sudo systemctl daemon-reload

# Installationsverzeichnis entfernen
sudo rm -rf /opt/cribl-edge

8.2 Cribl Stream deinstallieren

# Service stoppen und deaktivieren
sudo systemctl stop cribl
sudo systemctl disable cribl

# Systemd-Unit entfernen (falls manuell erstellt)
sudo rm /etc/systemd/system/cribl.service
sudo systemctl daemon-reload

# Installationsverzeichnis entfernen
sudo rm -rf /opt/cribl

8.3 Tailscale deinstallieren

# Verbindung trennen
sudo tailscale down

# Paket entfernen
sudo apt-get remove --purge tailscale
sudo rm /usr/share/keyrings/tailscale-archive-keyring.gpg
sudo rm /etc/apt/sources.list.d/tailscale.list
sudo apt-get update

8.4 Vollstaendige Deinstallation

Geplant: Das Skript scripts/09-uninstall-cribl.sh wird eine vollstaendige Deinstallation aller Komponenten in umgekehrter Installationsreihenfolge durchfuehren. Bis zur Fertigstellung des Skripts koennen die oben beschriebenen manuellen Schritte verwendet werden.

8.5 Service-User bereinigen

# Nur ausfuehren, wenn der cribl-User nicht mehr benoetigt wird
sudo userdel cribl
sudo groupdel cribl 2>/dev/null || true
Achtung: Vor jeder Deinstallation sollte ein Backup der Konfiguration erstellt werden, insbesondere der Verzeichnisse /opt/cribl/local/ und /opt/cribl-edge/local/. Diese enthalten alle angepassten Einstellungen.