#!/usr/bin/env bash # ========================================== # HX-KI FALKENSTEIN - BIRTH CERTIFICATE V1.0 # ========================================== set -euo pipefail # Basispfade REPORT_DIR="/opt/hx-ki/reports" mkdir -p "$REPORT_DIR" TIMESTAMP="$(date +"%Y-%m-%d_%H%M%S")" REPORT_FILE="${REPORT_DIR}/hxki_falkenstein_birth_certificate_${TIMESTAMP}.txt" # Header { echo "===============================================" echo " HX-KI SYSTEM GEBURTSURKUNDE – FALKENSTEIN" echo "===============================================" echo "Erzeugt am: $(date)" echo } > "$REPORT_FILE" # 1) Server-Basisdaten { echo "1) SERVER-BASISDATEN" echo "--------------------" echo "Hostname: $(hostname)" echo "OS: $(grep PRETTY_NAME /etc/os-release | cut -d= -f2- | tr -d '\"')" echo "Kernel: $(uname -r)" echo "CPU: $(lscpu | grep 'Model name' | sed 's/Model name:\s*//')" echo "CPU Cores: $(nproc)" echo "RAM (gesamt): $(grep MemTotal /proc/meminfo | awk '{printf \"%.1f GB\", $2/1024/1024}')" echo "Swap: $(grep SwapTotal /proc/meminfo | awk '{printf \"%.1f GB\", $2/1024/1024}')" echo "Root-Filesystem: $(df -h / | tail -1 | awk '{print $2 \" gesamt, \" $3 \" belegt, \" $4 \" frei (\" $5 \" genutzt)\"}')" echo } >> "$REPORT_FILE" # 2) Docker / Container / Services { echo "2) DOCKER & CONTAINERZUSTAND" echo "----------------------------" if command -v docker >/dev/null 2>&1; then echo "Docker Version: $(docker --version)" echo echo "Laufende Container:" docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}" || echo "Keine laufenden Container gefunden." else echo "Docker ist nicht installiert oder nicht im PATH." fi echo } >> "$REPORT_FILE" # 3) Wichtige HX-KI-Komponenten erkennen { echo "3) HX-KI KOMPONENTEN – FALKENSTEIN" echo "----------------------------------" echo "Hinweis: Erkennung über Container-Namen (hxki-*)" if command -v docker >/dev/null 2>&1; then # Liste typischer Dienste SERVICES=( "hxki-gitea" "hxki-grafana" "hxki-prometheus" "hxki-n8n" "hxki-mariadb" "hxki-mautic" "hxki-syncthing" "hxki-nats" "hxki-web" "hxki-postgres" "hxki-mailcow" ) for s in "${SERVICES[@]}"; do if docker ps --format '{{.Names}}' | grep -q "^${s}$"; then status="$(docker ps --filter "name=${s}" --format '{{.Status}}')" image="$(docker ps --filter "name=${s}" --format '{{.Image}}')" echo "- ${s}: LAUFEND (${status}, Image: ${image})" elif docker ps -a --format '{{.Names}}' | grep -q "^${s}$"; then status="$(docker ps -a --filter "name=${s}" --format '{{.Status}}')" image="$(docker ps -a --filter "name=${s}" --format '{{.Image}}')" echo "- ${s}: INSTALLIERT, ABER NICHT LAUFEND (${status}, Image: ${image})" else echo "- ${s}: NICHT GEFUNDEN" fi done else echo "Docker nicht verfügbar – Komponenten können nicht geprüft werden." fi echo } >> "$REPORT_FILE" # 4) Netzwerke & Ports { echo "4) NETZWERK & PORTS" echo "-------------------" if command -v docker >/dev/null 2>&1; then echo "Docker-Netzwerke:" docker network ls || echo "Keine Netzwerke gefunden." echo fi echo "Aktiv lauschende Ports (netstat/ss):" if command -v ss >/dev/null 2>&1; then ss -tulpn | sed -n '1,50p' elif command -v netstat >/dev/null 2>&1; then netstat -tulpn | sed -n '1,50p' else echo "Weder ss noch netstat verfügbar." fi echo } >> "$REPORT_FILE" # 5) HX-KI Verzeichnisstruktur (falls vorhanden) { echo "5) HX-KI VERZEICHNISSTRUKTUR (KURZÜBERSICHT)" echo "--------------------------------------------" HX_DIR="/opt/hx-ki" if [ -d "$HX_DIR" ]; then echo "Basisverzeichnis: $HX_DIR" echo echo "Top-Level-Struktur:" find "$HX_DIR" -maxdepth 2 -type d | sed "s|$HX_DIR|/opt/hx-ki|" else echo "$HX_DIR existiert nicht oder ist nicht erreichbar." fi echo } >> "$REPORT_FILE" # 6) Zusammenfassung { echo "6) KURZZUSAMMENFASSUNG – FALKENSTEIN STATUS" echo "-------------------------------------------" echo "Dieser Bericht fasst den aktuellen Systemzustand des HX-KI Knotens" echo "Falkenstein zusammen (Serverressourcen, Container, Netzwerke, HX-KI" echo "Kernkomponenten und Basisstruktur)." echo echo "Berichtsdatei:" echo " $REPORT_FILE" echo echo "Hinweis:" echo "- Dies ist die 'Geburtsurkunde' des Systemzustands zum Zeitpunkt:" echo " $(date)" echo "- Der Bericht kann jederzeit erneut erzeugt werden." echo } >> "$REPORT_FILE" echo "HX-KI Geburtsurkunde für Falkenstein erstellt:" echo " $REPORT_FILE"