Ein Sprachmodell auf dem eigenen Rechner zu starten, ist heute vergleichsweise einfach.

Modell herunterladen.

Inference-Software installieren.

Prompt eingeben.

Antwort erhalten.

Damit besitzt du lokale KI.

Einen lokalen KI-Server hast du damit aber noch nicht unbedingt.

Ein Server soll dauerhaft eine Fähigkeit bereitstellen, die von anderen Anwendungen genutzt werden kann.

Statt:

Mensch
↓
lokale Chatoberfläche
↓
Modell

entsteht beispielsweise:

WordPress ──────┐
                │
n8n ────────────┼→ KI-Server
                │
interne App ────┤
                │
RAG-System ─────┘

Der Rechner wird damit vom persönlichen KI-Arbeitsplatz zu einem zentralen Dienst.

Genau dieser Schritt verändert die Anforderungen erheblich.

Ein KI-Server ist mehr als eine GPU mit Modell

Ein produktiver KI-Server besteht aus mehreren Schichten.

Vereinfacht:

Anwendung
↓
API
↓
KI-Dienst
↓
Inference Engine
↓
Modell
↓
GPU

Schon diese Darstellung zeigt eine wichtige Trennung.

Die Anwendung muss nicht wissen:

welches Modellformat verwendet wird,

wie viel VRAM vorhanden ist,

auf welcher GPU gerechnet wird

oder:

wie die Inference Engine intern arbeitet.

Sie benötigt lediglich eine definierte Schnittstelle.

Der wichtigste Architekturgedanke lautet: Komponenten trennen

Ein häufiger Einstieg sieht ungefähr so aus:

n8n
+
LLM
+
Vektordatenbank
+
Weboberfläche
+
WordPress
+
Monitoring
+
eigener Code

alles irgendwie auf demselben Rechner installiert.

Das kann funktionieren.

Mit jeder zusätzlichen Komponente wird das System jedoch schwerer zu warten.

Besser ist eine logische Trennung.

Orchestrierung
→ n8n

Textgenerierung
→ LLM-Service

Embeddings
→ Embedding-Service

Wissenssuche
→ Vektordatenbank

Geschäftsdaten
→ PostgreSQL

Zugriff
→ Reverse Proxy / internes Netzwerk

Ob diese Komponenten anschließend auf einem oder auf fünf physischen Servern laufen, ist zunächst zweitrangig.

Die logische Trennung ist wichtiger als die Zahl der Maschinen.

Ein kleiner KI-Server darf trotzdem sehr einfach sein

Für einen einzelnen Nutzer reicht möglicherweise:

Linux
↓
Docker
↓
Inference Server
↓
lokales Modell

Dazu eine API.

Fertig.

Man muss nicht sofort:

Cluster,

Load Balancer,

Message Broker,

Kubernetes

und:

zehn Datenbanken

installieren.

Eine gute Infrastruktur wächst mit den Anforderungen.

Die erste Frage lautet deshalb nicht: Welche Software brauche ich?

Sondern:

Was soll der Server leisten?

Zum Beispiel:

lokaler Chat

ist eine andere Aufgabe als:

100.000 Texte nachts klassifizieren

und wieder eine andere als:

20 Mitarbeiter gleichzeitig bedienen

oder:

RAG über interne Dokumente

oder:

mehrere KI-Agenten mit Tools versorgen

Diese Anforderungen bestimmen die Architektur.

Ein Einzelplatzsystem

Der einfachste Fall:

1 Nutzer
↓
1 Modell
↓
1 GPU

Der Rechner steht beispielsweise im Arbeitszimmer.

Eine Chatoberfläche greift direkt auf die lokale Inference Engine zu.

Das reicht hervorragend zum:

Experimentieren,

Prompten,

Testen von Modellen,

lokalen Schreiben.

Ein zentraler KI-Server

Etwas interessanter:

Notebook ───┐
            │
Desktop ────┼→ KI-Server
            │
Smartphone ─┘

Nun läuft das Modell nur noch auf einem leistungsfähigen Rechner.

Andere Geräte brauchen keine eigene starke GPU.

Sie senden lediglich Anfragen über das Netzwerk.

Ein interner KI-Dienst

Der nächste Schritt:

n8n ───────────┐
               │
WordPress ─────┼→ AI API
               │
Support-App ───┤
               │
RAG ───────────┘

Nun ist der KI-Server Teil einer Infrastruktur.

Das ist häufig der interessanteste Aufbau für Automatisierung.

Die API ist die wichtigste Grenze

Angenommen, n8n soll einen Text klassifizieren.

n8n sollte nicht wissen:

GPU 1
Modellformat
Quantisierung
CUDA
Modellpfad

Es sollte lediglich sagen:

POST /classify

und beispielsweise senden:

{
  "text": "Meine Rechnung wurde doppelt abgebucht."
}

Die Antwort:

{
  "category": "billing",
  "reason": "duplicate_payment"
}

Damit wird die KI zu einem normalen internen Dienst.

Das Modell darf austauschbar sein

Heute:

Modell A

Morgen:

Modell B

Wenn beide hinter derselben internen API liegen:

n8n
→ unverändert

Das ist eine ausgesprochen wertvolle Abstraktion.

Ohne diese Trennung verteilt sich Modellwissen überall

Workflow A verwendet:

Modell X.

Workflow B:

Modell X mit anderer URL.

Workflow C:

Modell Y.

Workflow D:

direkten GPU-Service.

Nach einem Jahr wird ein Modellwechsel mühsam.

Besser:

Anwendungen
↓
AI Gateway
↓
Modelle

Was ist ein AI Gateway?

Ein AI Gateway ist eine Zwischenschicht zwischen Anwendungen und Modellen.

Es kann beispielsweise entscheiden:

Aufgabe
↓
welches Modell?

oder:

welcher Server ist frei?

oder:

darf diese Anfrage die Cloud verwenden?

Konzeptionell:

n8n
↓
AI Gateway
├── lokales kleines Modell
├── lokales großes Modell
└── optional Cloudmodell

Das Gateway muss kein großes eigenes Softwareprojekt sein.

Schon eine kleine interne API kann diese Rolle erfüllen.

Das Gateway kann ein stabiles Datenformat definieren

Beispiel:

{
  "task": "classify",
  "input": "Meine Rechnung wurde doppelt bezahlt."
}

Antwort:

{
  "result": {
    "category": "billing"
  },
  "model": "local-classifier-v2"
}

Die Anwendung muss nicht wissen, wie das Modell intern angesprochen wird.

Das erleichtert auch Modellvergleiche

Zum Beispiel:

10 % der Anfragen
→ Modell B

aber:

90 %
→ Modell A

Dann kann gemessen werden:

Qualität,

Latenz,

Fehlerrate.

Das Gateway wird damit auch zum Punkt für A/B-Tests.

Welche Software braucht ein lokaler KI-Server?

Eine mögliche Grundarchitektur lautet:

Linux
↓
Container Runtime
↓
Inference Server
↓
Modelle

Dazu je nach Anwendung:

Reverse Proxy

PostgreSQL

n8n

Vector DB

Monitoring

AI Gateway

Aber nicht jede Komponente ist zwingend.

Linux eignet sich hervorragend als Serverbasis

Ein KI-Server braucht normalerweise keine grafische Desktopoberfläche.

Ein schlankes Serversystem bietet:

geringeren Ressourcenverbrauch,

weniger unnötige Dienste,

einfache Remoteverwaltung.

Damit bleibt mehr:

RAM,

CPU,

VRAM

für die eigentliche Arbeit.

Ein Desktopbetriebssystem kann trotzdem funktionieren

Zum Experimentieren ist:

Windows

oder:

Desktop-Linux

völlig ausreichend.

Der Wechsel auf einen dedizierten Server wird erst interessanter, wenn:

der Rechner dauerhaft laufen soll,

mehrere Anwendungen zugreifen,

Automatisierungen davon abhängen.

Ein Server sollte möglichst reproduzierbar aufgebaut sein

Schlecht:

Vor sechs Monaten
irgendwelche Pakete installiert

drei Treiberversionen ausprobiert

Python-Bibliotheken manuell verändert

niemand weiß mehr,
warum es funktioniert

Besser:

Betriebssystem
↓
definierte Treiber
↓
Container
↓
versionierte Konfiguration

Das erleichtert Wiederherstellung und Updates.

Docker passt deshalb gut zu KI-Infrastruktur

Mit Docker kann jeder Dienst relativ sauber gekapselt werden.

Zum Beispiel:

Docker Host
│
├── ai-gateway
├── llm-server
├── n8n
├── postgres
├── vector-db
└── monitoring

Jeder Dienst besitzt:

eine definierte Version,

eigene Umgebungsvariablen,

eigene persistente Daten.

Docker trennt Software, nicht Hardware

Alle Container laufen weiterhin auf demselben physischen Rechner.

Container A ─┐
Container B ─┼→ gleiche CPU
Container C ─┤
Container D ─┘

Dasselbe gilt für:

RAM,

Festplatten,

Netzwerk.

Die GPU kann bestimmten Containern gezielt zur Verfügung gestellt werden.

Nicht jeder Container braucht GPU-Zugriff

Zum Beispiel:

PostgreSQL
→ keine GPU nötig
n8n
→ normalerweise keine GPU nötig
Reverse Proxy
→ keine GPU nötig
LLM Server
→ GPU

Damit bleibt die Hardwarezuordnung klar.

Der Modellserver ist die zentrale KI-Komponente

Er lädt:

Modelldatei
↓
VRAM

und stellt eine Schnittstelle bereit.

Zum Beispiel konzeptionell:

POST /chat

POST /generate

Anwendungen senden Anfragen.

Der Server erzeugt Antworten.

Eine Inference Engine übernimmt die eigentliche Arbeit

Wie unter lokale KI erklärt:

Modell
↓
Inference Engine
↓
CPU / GPU

Die Engine übernimmt unter anderem:

Tokenisierung,

Modellberechnung,

Sampling,

KV-Cache,

Batching.

Unterschiedliche Engines eignen sich für unterschiedliche Ziele

Einfacher Einzelplatz:

komfortable lokale Runtime

Server mit vielen Nutzern:

hoher Durchsatz
+
Batching

CPU/GPU-Mischbetrieb:

flexibles Offloading

Mehrere GPUs:

Modellparallelität

Die konkrete Software sollte deshalb erst nach dem Einsatzzweck gewählt werden.

Ollama ist ein mögliches Beispiel für einen einfachen Einstieg

Das grundlegende Modell lautet:

Anwendung
↓
Ollama API
↓
lokales Modell

Damit kann beispielsweise n8n eine lokale KI ähnlich ansprechen wie einen externen Modellanbieter.

Für kleine und mittlere lokale Installationen kann dieser einfache Ansatz sehr praktisch sein.

llama.cpp verfolgt einen anderen Schwerpunkt

llama.cpp ist besonders interessant für:

GGUF-Modelle,

CPU-Inferenz,

GPU-Offloading,

verschiedene Hardwareplattformen.

Auch daraus lässt sich ein lokaler HTTP-Server aufbauen.

Damit kann dieselbe Grundarchitektur entstehen:

n8n
↓
HTTP
↓
llama.cpp Server
↓
GGUF

Für hohe Parallelität existieren andere Serving-Ansätze

Wenn viele Nutzer gleichzeitig bedient werden sollen, werden Themen wichtig wie:

Continuous Batching,

KV-Cache-Management,

hohe GPU-Auslastung.

Dann kann eine stärker auf Serving optimierte Engine sinnvoller sein als eine einfache Desktoplösung.

Der zentrale Architekturgedanke bleibt jedoch identisch:

Anwendung
↓
API
↓
Inference Server
↓
Modell

Ein AI Gateway kann verschiedene Engines vereinheitlichen

Beispiel:

AI Gateway
├── llama.cpp
├── anderer LLM-Server
├── Embeddingserver
└── Cloud-Fallback

Die Anwendungen verwenden weiterhin nur:

AI Gateway

Damit kann die Infrastruktur im Hintergrund verändert werden.

Welche Modelle sollten dauerhaft geladen sein?

Das hängt von der Nutzung ab.

Beispielsweise:

kleines Modell
→ oft gebraucht
→ dauerhaft im VRAM
großes Modell
→ selten gebraucht
→ bei Bedarf laden

Das spart Ressourcen.

Modellladen kostet allerdings Zeit

Ein großes Modell liegt auf SSD.

SSD
↓
RAM
↓
VRAM

Dieser Vorgang kann einige Zeit benötigen.

Wenn Nutzer interaktiv arbeiten sollen, möchte man nicht vor jeder Anfrage zuerst das Modell laden.

Häufig verwendete Modelle sollten daher resident bleiben

Beispiel:

GPU 1
→ Standardmodell
→ permanent

und:

GPU 2
→ Spezialmodelle
→ dynamisch

Das ist ein möglicher Multi-GPU-Aufbau.

Mehrere GPUs können unterschiedliche Rollen übernehmen

Unter KI-Hardware und VRAM haben wir gesehen, dass zwei GPUs nicht automatisch zu einer einzigen großen GPU werden.

Sie können aber sehr flexibel eingesetzt werden.

Zum Beispiel:

GPU 1
→ Textmodell
GPU 2
→ Bildmodell

Oder:

GPU 1
→ interaktive Nutzer
GPU 2
→ Batchverarbeitung

Das ist häufig einfacher als ein Modell über beide GPUs zu verteilen

Wenn das Standardmodell vollständig auf GPU 1 passt:

Modell
↓
GPU 1

kann GPU 2 unabhängig arbeiten.

Keine Kommunikation zwischen beiden nötig.

Ein größeres Modell kann dagegen beide Karten benötigen

Modell
↓
├── GPU 1
└── GPU 2

Dann wird die Inference Engine für die Verteilung verantwortlich.

Das erhöht:

Komplexität,

Kommunikation,

Fehlersuche.

Multi-GPU sollte deshalb einen konkreten Zweck haben.

Wie organisiert man mehrere Modelle?

Ein einfacher Ansatz:

/models
├── small/
├── medium/
├── large/
└── embeddings/

Die tatsächliche Verzeichnisstruktur ist weniger wichtig als:

Versionierung

und:

Nachvollziehbarkeit.

Modelle brauchen eindeutige Namen

Schlecht:

new-model-final-v2-real-final

Besser beispielsweise:

support-classifier
version: 3
quantization: q5

oder in einer Registry:

{
  "service": "support-classifier",
  "model": "model-x",
  "version": "3",
  "quantization": "q5"
}

Ein produktiver Workflow sollte nicht auf irgendeine Datei zeigen

Besser:

support-classifier
↓
aktuelle freigegebene Modellversion

So kann im Hintergrund:

v3

zu:

v4

wechseln.

Modellversionierung ist genauso wichtig wie Softwareversionierung

Ein neues Modell kann:

bessere Antworten,

andere Antworten,

schlechtere strukturierte Ausgaben

erzeugen.

Darum:

neue Modellversion
↓
Test
↓
Freigabe
↓
Produktiv

Nicht einfach:

„Neu ist besser.“

Dasselbe gilt für Quantisierung

Modell A Q5

und:

Modell A Q4

sollten als unterschiedliche Produktionsartefakte betrachtet werden.

Wie unter Quantisierung erklärt, kann der Unterschied:

Qualität,

Speicherbedarf,

Geschwindigkeit

beeinflussen.

Der KI-Server braucht ein internes Netzwerk

Die einfachste Architektur:

LAN
↓
KI-Server

Andere Rechner greifen über eine interne IP beziehungsweise einen internen DNS-Namen darauf zu.

Das Modell muss nicht direkt im öffentlichen Internet erreichbar sein.

Interne Dienste sollten möglichst intern bleiben

Zum Beispiel:

llm.internal

oder:

ai.home

statt:

öffentliches Internet
↓
offener LLM-Port

Ein Modellserver besitzt keinen guten Grund, völlig ungeschützt weltweit erreichbar zu sein.

Warum ein offener KI-Server gefährlich ist

Ein Angreifer könnte:

GPU auslasten,

riesige Prompts senden,

sehr lange Antworten erzeugen,

interne Modelle missbrauchen.

Falls der Server Tools oder RAG besitzt, könnten sogar interne Daten betroffen sein.

Mindestens Authentifizierung gehört davor

Zum Beispiel:

Client
↓
API Key / Benutzeridentität
↓
AI Gateway
↓
Modell

Nicht:

Internet
↓
Modell

Ein Reverse Proxy kann die Zugriffsschicht übernehmen

Konzeptionell:

Client
↓
HTTPS
↓
Reverse Proxy
↓
AI Gateway
↓
Inference Server

Der Proxy kann beispielsweise:

TLS,

Routing,

Requestgrößen,

Rate Limits

übernehmen.

Modellserver selbst kann nur intern lauschen

Zum Beispiel:

127.0.0.1

oder:

internes Docker-Netzwerk.

Dann ist er von außen gar nicht direkt erreichbar.

Nur das Gateway kommuniziert mit ihm.

Das reduziert die Angriffsfläche

Internet
↓
ein kontrollierter Einstiegspunkt
↓
interne Dienste

ist besser als:

Internet
↓
n8n

Internet
↓
LLM Server

Internet
↓
Vector DB

Internet
↓
PostgreSQL

Nicht jeder technische Dienst braucht eine öffentliche Adresse.

VPN ist für privaten Zugriff besonders attraktiv

Du bist unterwegs.

Notebook
↓
VPN
↓
Heimnetz
↓
KI-Server

Damit muss die KI-API nicht allgemein ins Internet veröffentlicht werden.

Für persönliche beziehungsweise interne Systeme kann das ausgesprochen elegant sein.

VPN und Reverse Proxy schließen einander nicht aus

Zum Beispiel:

Internet
↓
VPN
↓
internes HTTPS
↓
AI Gateway

Der Proxy übernimmt trotzdem:

Routing,

TLS,

Authentifizierung.

VPN bestimmt zusätzlich:

wer das Netzwerk überhaupt erreichen darf.

Eine Firewall bleibt ebenfalls wichtig

Wenn nur bestimmte Dienste gebraucht werden:

nur diese Ports erlauben.

Beispiel:

SSH
→ nur internes Netz / VPN
AI API
→ nur internes Netz
Datenbank
→ nur Docker-Netz

Das ist klassische Serverhärtung.

Der KI-Server ist kein Sonderfall

Er braucht dieselben Grundlagen wie jeder andere wichtige Server:

Updates,

Firewall,

starke Zugänge,

Backups,

Monitoring.

KI macht klassische IT-Sicherheit nicht überflüssig.

Der SSH-Zugang sollte ebenfalls abgesichert sein

Ein Serveradmin benötigt Remotezugriff.

Dafür kann SSH genutzt werden.

Sinnvoll ist generell eine restriktive Administration:

Admin
↓
VPN / internes Netz
↓
SSH

statt unnötig breit zugänglicher Administrationsschnittstellen.

Anwendungen sollten keine Root-Rechte bekommen

n8n braucht nicht:

Root.

Der LLM-Container braucht nicht:

Root-Zugriff auf alle Hostdateien.

Eine Vektordatenbank braucht nicht:

Zugriff auf WordPress-Konfigurationen.

Jeder Dienst sollte nur das sehen, was er braucht.

Das gilt auch für Docker-Volumes

Schlecht:

LLM Container
↓
/ komplett gemountet

Besser:

LLM Container
↓
/models

wenn nur Modelle benötigt werden.

Secrets gehören nicht in Workflowcode

Zum Beispiel:

API-Schlüssel,

Datenbankpasswörter,

Tokens.

Nicht:

docker-compose.yml
→ Klartext im öffentlichen Git-Repository

sondern:

Secret- beziehungsweise Environment-Management.

Besonders n8n besitzt häufig viele sensible Zugänge

n8n kann vielleicht zugreifen auf:

WordPress,

Mail,

Datenbank,

Cloud,

KI,

CRM.

Damit wird n8n selbst zu besonders schützenswerter Infrastruktur.

KI und n8n sollten über eine interne API verbunden werden

Zum Beispiel:

n8n
↓
http://ai-gateway.internal/classify

n8n muss nicht direkt GPU-Software steuern.

Das Gateway übernimmt:

Modellauswahl,

Validierung,

Limits.

Ein einfacher Textworkflow

WordPress
↓
Webhook
↓
n8n
↓
AI Gateway
↓
lokales Modell
↓
Structured Output
↓
n8n
↓
WordPress-Draft

Damit sind die Verantwortungen sauber verteilt.

KI erzeugt Interpretation

Zum Beispiel:

{
  "category": "web-wordpress",
  "content_type": "grundlagenartikel"
}

n8n übernimmt danach:

IF / Switch
↓
deterministische Logik

Das verbindet lokale KI mit strukturierten Ausgaben.

Ein lokaler KI-Server kann mehrere spezialisierte Endpoints besitzen

Beispiel:

POST /classify
POST /summarize
POST /generate
POST /embed

Damit muss nicht jeder Workflow selbst Prompts und Modelle auswählen.

Das macht KI zu einer internen Plattform

Statt:

100 Workflows
→ 100 unterschiedliche Promptimplementierungen

entsteht:

100 Workflows
↓
gemeinsame KI-Dienste

Beispielsweise:

classify-content

generate-metadata

search-knowledge

Das vereinfacht Updates

Der Klassifikationsprompt verbessert sich.

Nur:

classify-content

ändert sich.

Die 20 Workflows, die ihn benutzen, bleiben unverändert.

Promptversionierung gehört in den KI-Service

Beispiel:

Service:
article-classifier

Prompt:
v7

Model:
v3

Dann kann jedes Ergebnis später nachvollzogen werden.

Ein KI-Gateway kann Antwortmetadaten zurückgeben

Zum Beispiel:

{
  "result": {
    "category": "ai-automation"
  },
  "model": "local-14b-q5",
  "prompt_version": 7,
  "duration_ms": 812
}

Das verbessert Debugging und Evaluation.

Strukturierte KI-Dienste sind besser als ein universeller „Prompt-Endpunkt“

Unsicher beziehungsweise schwer wartbar:

{
  "prompt": "Mach irgendwas..."
}

Besser:

{
  "task": "classify_article",
  "article_id": 4711
}

Die serverseitige Anwendung weiß:

welcher Prompt,

welches Modell,

welches Schema

verwendet werden soll.

Dadurch können Nutzer keine internen Systemprompts beliebig überschreiben

Das ist nicht nur Komfort.

Es verbessert die Kontrolle.

Ein allgemeiner Chat-Endpunkt kann trotzdem existieren

Zum Beispiel:

/chat

für Menschen.

Automatisierungen sollten dagegen bevorzugt klar definierte Funktionen verwenden.

/classify

/extract

/embed

Das macht sie stabiler.

RAG ist eine der wichtigsten Erweiterungen

Ein reines Sprachmodell kennt nur:

Training

plus:

aktuellen Kontext.

Interne Dokumente kann es nicht automatisch durchsuchen.

Dafür benötigen wir RAG.

Dokumente
↓
Text extrahieren
↓
Chunks
↓
Embeddings
↓
Vektordatenbank

Bei einer Frage:

Frage
↓
Embedding
↓
semantische Suche
↓
relevante Chunks
↓
LLM

Ein lokaler KI-Server kann die gesamte RAG-Kette lokal halten

Dokumente
↓
lokales Embeddingmodell
↓
lokale Vector DB
↓
lokales LLM

Damit müssen die Dokumentinhalte nicht zwingend externe KI-Anbieter erreichen.

Die Vektordatenbank muss nicht auf der GPU laufen

Wie unter Vektordatenbank beschrieben, handelt es sich primär um ein Such- und Datenspeichersystem.

Es kann beispielsweise auf:

CPU,

RAM,

SSD

arbeiten.

Die wertvolle GPU bleibt für Modellinferenz frei.

PostgreSQL kann ebenfalls eine Rolle übernehmen

Wenn bereits PostgreSQL verwendet wird, kann eine Vektorerweiterung für viele kleinere und mittlere RAG-Systeme attraktiv sein.

Dann existieren:

Geschäftsdaten
+
Vektoren

im selben Datenbanksystem.

Ob eine spezialisierte Vector Database benötigt wird, hängt von Größe und Anforderungen ab.

Der Embedding-Service kann getrennt sein

n8n
↓
Embedding API
↓
kleines Modell

Das Modell kann auf:

CPU,

kleiner GPU,

zweiter GPU

laufen.

Das große Textmodell muss dafür nicht blockiert werden.

Ein Reranker kann die dritte KI-Komponente sein

Vector Search
↓
20 Kandidaten
↓
Reranker
↓
5 beste
↓
LLM

Damit wird Retrievalqualität verbessert.

Wieder gilt:

Nicht alles muss auf derselben GPU laufen.

Ein modularer RAG-Server

RAG API
│
├── Embedding Service
├── Vector DB
├── Reranker
└── LLM Service

Die Anwendung sieht nur:

RAG API

Diese Abstraktion ist ausgesprochen praktisch.

Aktualisierungen der Wissensbasis können über Webhooks laufen

Ein WordPress-Artikel wird geändert.

WordPress
↓
post.updated
↓
Webhook
↓
n8n
↓
RAG-Ingestion

Dann:

alten Indexeintrag finden
↓
Text neu laden
↓
Chunks aktualisieren
↓
Embeddings berechnen
↓
Vector DB aktualisieren

So bleibt die lokale Wissensbasis automatisch aktuell.

Nicht jede Änderung muss sofort das LLM belasten

Für die Indexierung wird hauptsächlich:

Embeddingmodell

benötigt.

Das große Generationsmodell kann parallel andere Aufgaben erledigen.

RAG braucht Versionsinformationen

Zum Beispiel:

document_id
document_version
embedding_model
chunking_version

Wenn das Embeddingmodell geändert wird, kann ein kompletter Reindex erforderlich sein.

Das ist ein wichtiger Backupaspekt

Die Vektordatenbank kann möglicherweise neu erzeugt werden.

Wenn vorhanden sind:

Originaldokumente

Chunkinglogik

Embeddingmodell

Metadaten

Dann lautet die Frage:

Muss der Vektorindex unbedingt täglich gesichert werden?

Vielleicht.

Aber häufig ist er ein reproduzierbares Artefakt.

Nicht alle Daten eines KI-Servers sind gleich wertvoll

Kategorie A:

öffentlich herunterladbare Modelle

Diese lassen sich möglicherweise erneut herunterladen.

Kategorie B:

eigene Konfiguration

wichtig.

Kategorie C:

eigene LoRA-Adapter

sehr wichtig.

Kategorie D:

Geschäftsdokumente

kritisch.

Kategorie E:

reproduzierbare Vektorindizes

eventuell neu erzeugbar.

Backups sollten nach Wiederherstellbarkeit geplant werden

Frage:

Was wäre morgen unwiederbringlich verloren, wenn die SSD stirbt?

Diese Daten verdienen die höchste Priorität.

Beispiel einer Backupstrategie

Backup
├── PostgreSQL
├── n8n-Daten
├── Konfiguration
├── Prompts
├── LoRA-Adapter
└── eigene Dokumente

Modelldownloads können separat behandelt werden.

Ein Docker-Backup ist nicht einfach „den Container kopieren“

Container sind ersetzbar.

Relevant sind:

Volumes

Datenbanken

Konfigurationsdateien

Secrets

Der Container selbst kann aus einem Image neu erstellt werden.

Infrastructure as Code erleichtert Wiederherstellung

Angenommen, der komplette Server ist defekt.

Du installierst:

Linux.

Dann:

Docker Compose
↓
Dienste starten
↓
Backups einspielen

Wenn Konfiguration dokumentiert beziehungsweise versioniert ist, kann das System relativ reproduzierbar neu entstehen.

Das ist besser als Serverarchäologie

Was hatte ich damals
eigentlich installiert?

sollte keine Recoverystrategie sein.

Monitoring gehört von Anfang an dazu

Bei einem KI-Server sind besonders interessant:

GPU-Auslastung

VRAM

Temperatur

CPU

RAM

SSD

Queue

Anfragen

Fehler

Damit lässt sich erkennen:

Wo liegt der Engpass?

Die GPU sollte nicht isoliert beobachtet werden

Beispiel:

GPU:
20 %
CPU:
100 %

Dann ist die GPU vermutlich nicht das Problem.

Anders:

VRAM:
99 %
GPU Compute:
50 %

Nun kann Speicher die Grenze sein.

Ein lokaler KI-Server braucht Applikationsmetriken

Nicht nur Hardware.

Zum Beispiel:

requests_per_minute

time_to_first_token

tokens_per_second

queue_length

error_rate

Diese Daten erklären die Nutzererfahrung.

Modellmetriken sollten ebenfalls gespeichert werden

Zum Beispiel:

model
quantization
input_tokens
output_tokens
duration

Damit kann analysiert werden:

Welches Modell ist langsam?

Welche Workflows senden riesige Prompts?

Promptinhalte müssen dafür nicht vollständig gespeichert werden

Ein sinnvoller Datenschutzansatz kann lauten:

Metadaten
→ dauerhaft

kompletter Prompt
→ nicht loggen

oder nur kurzzeitig bei:

Debugging.

Logs können sensible Geschäftsdaten enthalten

Ein Supportagent verarbeitet:

Kundennamen,

E-Mail-Adressen,

Problembeschreibungen.

Wenn alle Prompts dauerhaft gespeichert werden, entsteht ein riesiger zusätzlicher Datenbestand.

Lokale Speicherung beseitigt diese Problematik nicht.

Datenminimierung gilt auch lokal

nur speichern,
was wirklich gebraucht wird

ist weiterhin ein gutes Prinzip.

Der Server braucht Health Checks

Zum Beispiel:

GET /health

Antwort:

{
  "status": "ok"
}

Damit können andere Systeme prüfen:

Ist der Dienst erreichbar?

Zusätzlich ist Readiness interessant

Der Prozess läuft.

Aber das Modell wird gerade geladen.

alive
→ ja
ready
→ nein

Erst wenn das Modell verfügbar ist:

ready
→ ja

Docker kann Dienste erst nach Readiness freigeben

Damit verhindert man beispielsweise:

n8n sendet sofort nach Serverstart Anfragen,

während das LLM noch gar nicht geladen wurde.

KI-Jobs sollten nicht unbegrenzt gleichzeitig gestartet werden

Angenommen:

50 n8n-Workflows
↓
gleichzeitig
↓
eine GPU

Die GPU kann nicht beliebig viele Aufgaben gleichzeitig schnell bearbeiten.

Deshalb braucht man Concurrency Limits

Beispiel:

max_concurrent_jobs = 4

Weitere Jobs:

Queue

Dadurch bleibt das System stabil.

Eine Queue entkoppelt Workflow und GPU

Direkt:

n8n
↓
LLM

Der Workflow wartet auf die Antwort.

Für kurze Aufgaben hervorragend.

Für lange Batchjobs:

n8n
↓
Job Queue
↓
GPU Worker

kann sinnvoller sein.

Asynchrone Jobs benötigen eine ID

{
  "job_id": "ai_4711",
  "status": "queued"
}

Der Workflow kann später:

Status abfragen

oder:

auf ein Event warten.

Ein vollständiger asynchroner Ablauf

n8n
↓
Job erstellen
↓
job_id
↓
Queue
↓
GPU Worker
↓
Ergebnis speichern
↓
Webhook
↓
n8n fährt fort

Damit kann die KI-Verarbeitung Minuten dauern, ohne eine offene HTTP-Verbindung halten zu müssen.

Prioritätsqueues können sinnvoll sein

Interaktive Anfrage:

HIGH

nächtlicher Contentjob:

LOW

Dann wird der Chat nicht von zehntausenden Batchaufgaben blockiert.

Das ist besonders bei einer einzigen GPU wichtig

interaktiv
↓
schnell dran
Batch
↓
freie Kapazität nutzen

Der Server wird dadurch wesentlich angenehmer.

Mehrere GPUs erlauben getrennte Worker

Queue Interactive
↓
GPU 1
Queue Batch
↓
GPU 2

Das ist eine einfache und robuste Multi-GPU-Architektur.

Alternative: gemeinsamer Workerpool

Queue
↓
Scheduler
├── GPU 1
└── GPU 2

Der Scheduler weist freie Kapazität zu.

Das wird interessanter, sobald mehrere gleiche GPUs vorhanden sind.

Ein Scheduler muss VRAM berücksichtigen

Job A benötigt:

12 GB

GPU 1 hat frei:

4 GB

GPU 2:

16 GB

Dann sollte A zu GPU 2 gehen.

Ein wirklich flexibles KI-Serving-System wird dadurch zu Ressourcenmanagement.

Ein kleines Setup braucht das noch nicht

Eine GPU.

Ein Modell.

Ein Nutzer.

Dann:

API
↓
Modell

reicht.

Komplexität sollte erst entstehen, wenn ein reales Problem sie rechtfertigt.

Ein KI-Server kann Cloud-Fallback besitzen

Zum Beispiel:

lokales Modell
↓
verfügbar?
├── ja → lokal
└── nein → Cloud

Das erhöht Verfügbarkeit.

Aber nur, wenn die betroffenen Daten einen Cloudtransfer erlauben.

Datenschutzregeln müssen vor dem Routing greifen

Nicht:

lokales Modell kaputt
↓
alles automatisch in Cloud

sondern:

data_classification
↓
confidential?
├── ja → kein Cloud-Fallback
└── nein → Cloud erlaubt

Damit bleiben Datenregeln deterministisch.

Ein AI Gateway ist ideal für solche Regeln

Anfrage
↓
Klassifizierung der Daten
↓
Routing
├── lokal
├── anderes lokales Modell
└── erlaubte Cloud

Anwendungen müssen diese Logik nicht selbst implementieren.

Cloud kann auch Leistungsfallback sein

Lokale Queue:

2 Minuten

für eine zeitkritische öffentliche Aufgabe vielleicht zu lang.

Dann könnte eine erlaubte Cloudinstanz übernehmen.

Wieder gilt:

nur für freigegebene Daten.

Kostenrouting funktioniert genauso

kleine Standardaufgabe
→ lokales kleines Modell
schwierige Aufgabe
→ großes lokales Modell
sehr seltene Spezialaufgabe
→ Cloud

Damit kann eine hybride Infrastruktur wirtschaftlicher sein als entweder:

alles lokal

oder:

alles Cloud.

Ein lokaler KI-Server eignet sich hervorragend für Klassifikationsjobs

Beispiel:

Artikel
↓
lokales Modell
↓
Kategorie

Solche Ausgaben sind:

kurz,

strukturiert,

häufig.

Ein kleineres Modell kann große Mengen effizient verarbeiten.

Langformtexte belasten den Server wesentlich länger

Klassifikation:

20 Output-Tokens

Artikel:

5.000 Output-Tokens

Die zweite Aufgabe blockiert GPU-Kapazität erheblich länger.

Daher können verschiedene Jobklassen sinnvoll sein.

Verschiedene Modelle pro Aufgabe helfen

Klassifikation
→ kleines Modell
Zusammenfassung
→ mittleres Modell
Langtext
→ großes Modell

Das spart:

VRAM,

Strom,

Zeit.

Ein Modellrouter kann genau dies automatisieren

task_type
↓
├── classify → small
├── extract → small
├── summarize → medium
└── write → large

Der Router muss keine KI sein.

Eine einfache Tabelle kann ausreichen.

Harte Routingregeln sind oft besser

Wenn die Aufgabe eindeutig ist:

task = embedding
→ embedding server

Kein Agent muss darüber nachdenken.

Ein KI-Agent kann trotzdem lokale Dienste verwenden

Unter KI-Agenten haben wir Agenten als modellgesteuerte Entscheidungssysteme kennengelernt.

Lokal könnte das aussehen wie:

Agent
↓
lokales Modell
↓
Tools
├── RAG
├── Datenbank
├── WordPress
└── Monitoring

Tool-Server und Modellserver sollten getrennt sein

Das Modell braucht nicht selbst direkten Datenbankzugriff.

Besser:

Agent
↓
Tool:
get_article(id)
↓
Tool Service
↓
WordPress

Das schützt:

Credentials

und:

Berechtigungen.

Das Modell sollte nie Datenbankpasswörter kennen

Es braucht nur:

get_article

Die Toolimplementierung besitzt die Credentials.

Dieses Prinzip ist für lokale Agenten genauso wichtig wie für Cloud-Agenten.

Lokal verführt leicht zu übermäßigen Rechten

Gedanke:

Ist ja alles mein eigener Server.

Also erhält der Agent:

Shell,

Datenbank,

Dateisystem,

Root.

Genau das ist gefährlich.

Ein halluzinierender oder manipulierte Inhalte verarbeitender Agent kann dann erheblichen Schaden verursachen.

Ein read-only Agent ist ein guter Start

search_logs

read_metrics

read_wordpress

search_documents

aber nicht:

delete_database

oder:

execute_any_shell_command

Autonomie kann später gezielt erweitert werden.

Schreibende Tools brauchen starke Regeln

Beispiel:

create_wordpress_draft()

kann relativ harmlos sein.

publish_wordpress_article()

ist folgenreicher.

Noch kritischer:

delete_site()

Tools sollten deshalb nach Risiko kategorisiert werden.

Human Approval kann vor riskanten Aktionen liegen

Agent
↓
Vorschlag
↓
Mensch bestätigt
↓
Tool

Das lässt sich wiederum über n8n orchestrieren.

Ein lokaler Server braucht Ressourcenlimits

Ein Benutzer fragt:

Schreibe 500.000 Wörter.

Ohne Begrenzung kann das Modell sehr lange rechnen.

Darum:

max_input_tokens

max_output_tokens

max_runtime

max_concurrent_requests

Solche Limits schützen die Infrastruktur.

Agenten brauchen zusätzliche Grenzen

max_steps

max_tool_calls

max_runtime

Sonst kann eine Agentenschleife die GPU dauerhaft beschäftigen.

Öffentliche Nutzung braucht Rate Limits

Casiopeya bietet später vielleicht eine öffentliche KI-Suche.

Dann könnten Bots:

1.000 Requests / Sekunde

senden.

Die eigene GPU wäre sofort überlastet.

Deshalb:

Nutzer
↓
Rate Limit
↓
Queue
↓
KI

Rate Limits können nutzerbezogen sein

Zum Beispiel:

anonymer Nutzer
→ wenige Anfragen
angemeldeter Nutzer
→ mehr
interne Automatisierung
→ eigener Bereich

Dadurch konkurriert öffentlicher Traffic nicht ungefiltert mit internen Geschäftsprozessen.

Separate Queues können diese Trennung verstärken

public
→ begrenzte Queue
internal
→ höhere Priorität
batch
→ niedrige Priorität

Das ist eine robuste Serverarchitektur.

Speicherplatz sollte ebenfalls limitiert werden

Nutzer lädt:

50-GB-Datei.

Wenn deine Anwendung das ungeprüft annimmt:

SSD voll.

Darum:

max_upload_size

max_document_count

und:

Speicherquoten.

KI-Systeme sind ganz normale Webanwendungen und brauchen entsprechende Grenzen.

Modellverzeichnisse können ebenfalls enorm wachsen

Modell A Q4
Modell A Q5
Modell A Q8
Modell B Q4
Modell B Q6
...

Plötzlich:

mehrere Terabyte.

Darum sollte regelmäßig geprüft werden:

Welche Modelle werden tatsächlich verwendet?

Alte Modelle nicht sofort löschen

Ein Produktionsrollback kann wertvoll sein.

Beispiel:

current
→ model-v4
previous
→ model-v3

Mehrere uralte Testvarianten können dagegen archiviert werden.

Checksums helfen bei Modellen

Eine Modelldatei besitzt beispielsweise eine Prüfsumme.

Damit kann geprüft werden:

Ist es wirklich dieselbe Datei wie getestet?

Das verbessert Reproduzierbarkeit.

Provenienz ist ebenfalls wichtig

Dokumentieren:

Woher kam das Modell?

Welche Lizenz?

Welche Version?

Welche Quantisierung?

Wer hat es freigegeben?

Ein KI-Server sollte nicht aus einer zufälligen Sammlung unbekannter Dateien bestehen.

Modelle können Supply-Chain-Risiken darstellen

Modellrepositories, Bibliotheken und Containerimages sind externe Softwareartefakte.

Deshalb gelten dieselben Fragen wie bei anderen Dependencies:

Quelle vertrauenswürdig?

Image aktuell?

Signatur beziehungsweise Hash geprüft?

Bekannte Sicherheitsprobleme?

Lokales Hosting schützt nicht vor einer kompromittierten Softwarelieferkette.

Container sollten nicht blind mit „latest“ laufen

Schlecht:

image: something:latest

und automatisch aktualisieren.

Plötzlich ändert sich:

API,

Performance,

Verhalten.

Besser:

image: something:version

kontrolliert testen.

Updates brauchen einen Prozess

neue Version
↓
Testsystem
↓
KI-Benchmarks
↓
Workflowtests
↓
Produktiv

Denn selbst ein reines Inference-Update kann:

Geschwindigkeit,

VRAM-Bedarf,

Output

verändern.

Ein Staging-System muss nicht gleich ein zweiter teurer GPU-Server sein

Man kann beispielsweise:

kurzzeitig Produktionshardware verwenden,

ein kleineres Testmodell nutzen,

eine separate Testinstanz starten.

Wichtig ist eher:

Nicht jede Änderung ungeprüft in laufende Automatisierungen geben.

Produktionsworkflows brauchen Rollback

Neue Modellversion liefert schlechte Ergebnisse.

Dann:

model-v4
↓
deaktivieren
model-v3
↓
wieder aktiv

Ein AI Gateway macht solche Umschaltungen einfach.

Blue-Green-Deployment ist ebenfalls möglich

Blue
→ aktuelle KI-Version
Green
→ neue Version

Green wird getestet.

Dann Routing ändern.

Falls Probleme auftreten:

zurück auf Blue.

Für kleine Systeme oft unnötig, für wichtige Infrastruktur interessant.

Canary Releases reduzieren Risiko

95 %
→ Modell A
5 %
→ Modell B

Dann Ergebnisse vergleichen.

Bei guten Werten wird B schrittweise hochgefahren.

Shadow Mode ist noch sicherer

Produktiv:

Modell A
→ Ergebnis wird verwendet

parallel:

Modell B
→ Ergebnis nur gespeichert

Damit lässt sich B testen, ohne echte Entscheidungen zu beeinflussen.

Ein KI-Server braucht echte Evals

Nicht nur:

„Das neue Modell schreibt irgendwie schöner.“

Sondern:

Testfälle
↓
messbare Ergebnisse

Zum Beispiel für Klassifikation:

Accuracy

Precision

Recall

Für strukturierte Ausgaben:

Schema-Erfolgsrate

Für RAG:

korrekte Antworten

richtige Quellen

Performance gehört ebenfalls zum Eval

Time to First Token

Tokens pro Sekunde

VRAM

Latenz

Durchsatz

Eine neue Modellversion kann qualitativ besser, aber für den Server viel zu langsam sein.

Kosten lokal bedeuten Ressourcen

Es gibt vielleicht keine Rechnung pro Token.

Aber es existieren:

Strom,

Hardwarezeit,

Queuezeit.

Deshalb kann man trotzdem Kostenmodelle bauen.

Zum Beispiel:

GPU-Zeit pro Aufgabe

oder:

Wattstunden pro 1.000 Aufgaben

Strommessung ist besonders bei Dauerbetrieb sinnvoll

Ein Modell erzeugt:

10 Prozent bessere Qualität.

Verbraucht aber:

dreimal so viel Rechenzeit.

Ob das sinnvoll ist, hängt von der Aufgabe ab.

Idle-Verbrauch gehört ebenfalls zur Wirtschaftlichkeit

Der Server läuft:

24 Stunden.

Rechnet:

2 Stunden.

Dann kann der Leerlaufverbrauch den Gesamtstrom erheblich beeinflussen.

Vielleicht lohnt:

Sleep,

zeitgesteuertes Starten,

Wake-on-LAN.

Für Batchsysteme kann zeitgesteuertes Einschalten sinnvoll sein

Zum Beispiel:

02:00
↓
KI-Server startet
↓
Batchjobs
↓
Backups
↓
Server fährt herunter

Für einen jederzeit verfügbaren Chatserver dagegen nicht.

Ein zentraler Server kann ein Single Point of Failure sein

Wenn:

KI-Server down

dann vielleicht:

Contentworkflow down.

Supportautomation down.

RAG down.

Agent down.

Je wichtiger das System wird, desto wichtiger wird ein Fallback.

Der einfachste Fallback ist manuell

KI nicht verfügbar
↓
Workflow in Review-Queue

Das kann vollkommen ausreichend sein.

Nicht jede Anwendung braucht Hochverfügbarkeit.

Cloud-Fallback ist eine weitere Option

Nur für erlaubte Daten.

Wie bereits beschrieben:

lokal down
↓
Cloud erlaubt?
├── ja → Cloud
└── nein → warten / manuell

Ein zweiter lokaler Worker erhöht Verfügbarkeit

AI Gateway
├── Server A
└── Server B

Fällt A aus:

B übernimmt.

Das wird erst interessant, wenn Ausfallzeiten tatsächlich geschäftlich teuer werden.

Skalierung sollte schrittweise erfolgen

Stufe 1:

1 Rechner
1 GPU
1 Modell

Stufe 2:

1 Rechner
2 GPUs

Stufe 3:

1 Rechner
mehrere Services
+
Queues

Stufe 4:

mehrere GPU-Worker

Stufe 5:

AI Gateway
+
Scheduler
+
mehrere Nodes

Man sollte nicht mit Stufe 5 anfangen, wenn Stufe 1 den Bedarf vollständig erfüllt.

Ein zweiter Server kann später ein Worker werden

Gateway
↓
├── Worker A
└── Worker B

Damit lässt sich horizontal erweitern.

Der ursprüngliche Server bleibt bestehen.

Anwendungen müssen davon nichts wissen

Sie sprechen weiterhin:

AI Gateway

Das Gateway entscheidet:

welcher Worker.

Genau deshalb lohnt die API-Abstraktion von Anfang an.

Unterschiedliche Worker können unterschiedliche Hardware besitzen

Worker A
→ viel VRAM
→ großes Modell
Worker B
→ schnelle kleinere GPU
→ Klassifikation
Worker C
→ CPU
→ Embeddings

Das System muss nicht homogen sein.

Ein Scheduler kann Fähigkeiten statt Hardwareadressen kennen

Job:

{
  "capability": "longform-writing"
}

Scheduler:

welcher Worker kann das?

Nicht:

sende zu 192.168.1.27

Das macht Infrastruktur austauschbar.

Kubernetes ist dafür nicht automatisch nötig

Containerorchestrierung kann bei sehr großen Umgebungen sinnvoll sein.

Für:

einen oder wenige Server

ist Docker Compose häufig wesentlich einfacher.

Technische Eleganz besteht nicht darin, die komplexeste Lösung zu benutzen.

Ein einfaches System ist leichter zu sichern und wiederherzustellen

1 Host

5 Container

1 Konfigurationsdatei

ist überschaubar.

Bei:

50 Microservices

steigen:

Fehlerquellen,

Updates,

Monitoringaufwand.

Microservices sollte man nicht aus Modegründen bauen

Ein einzelner AI-Gateway-Service kann mehrere Funktionen enthalten:

classify

summarize

generate

Das ist völlig in Ordnung.

Erst wenn:

Skalierung,

Teams,

unterschiedliche Laufzeiten

es verlangen, kann weiter getrennt werden.

Ein lokaler KI-Server ist im Kern eine gewöhnliche Serviceplattform

Der grundlegende Aufbau unterscheidet sich kaum von anderen modernen Serversystemen.

Clients
↓
API
↓
Business Logic
↓
Backend Services
↓
Daten

Nur einer der Backenddienste enthält:

ein Sprachmodell auf einer GPU.

Das hilft, den vermeintlichen KI-Zauber zu entmystifizieren.

Was ein sinnvoller kleiner Aufbau enthalten könnte

Konzeptionell:

Internet / LAN
↓
Reverse Proxy
↓
├── n8n
└── AI Gateway
       ↓
       LLM Server
       ↓
       GPU

Dazu:

PostgreSQL

für dauerhafte Daten.

Das reicht bereits für sehr viele KI-Automatisierungen.

RAG kommt als weitere Schicht dazu

AI Gateway
↓
RAG Service
├── Embeddingmodell
├── Vector DB
└── LLM

Jetzt kann der Server eigenes Wissen nutzen.

Agenten kommen erst danach

Agent Service
↓
LLM
↓
Tools
├── RAG
├── n8n
├── WordPress
└── interne APIs

Damit wächst die Architektur nachvollziehbar.

Nicht mit dem Agenten beginnen

Ein sinnvoller Aufbaupfad lautet:

1. Modell läuft stabil
↓
2. API funktioniert
↓
3. strukturierte Ausgaben funktionieren
↓
4. n8n funktioniert
↓
5. RAG funktioniert
↓
6. erst dann Agenten

Sonst entstehen zu viele Fehlerquellen gleichzeitig.

Ein Fehler sollte einer Schicht zugeordnet werden können

Antwort schlecht.

Warum?

Modell?
Prompt?
Retrieval?
Tool?
Workflow?
API?

Modulare Architektur erleichtert diese Diagnose.

Ein monolithischer Mega-Agent erschwert Fehlersuche

Agent
↓
irgendetwas passiert
↓
falsches Ergebnis

Das ist schlecht debuggbar.

Besser:

Input
↓
Retrieval
↓
LLM
↓
Schema
↓
Business Rule
↓
Action

Jede Ebene kann geprüft werden.

Health Monitoring sollte automatisiert alarmieren

Beispielsweise:

GPU-Temperatur zu hoch
SSD fast voll
AI API nicht erreichbar
Queue > 1.000 Jobs

Dann entsteht ein Alarm.

Nicht erst:

Nutzer bemerken, dass nichts mehr funktioniert.

n8n kann sogar Teile dieses Monitorings übernehmen

Zum Beispiel:

alle 5 Minuten
↓
Health API
↓
Status != ok?
↓
Benachrichtigung

Für große Systeme ist spezialisierte Monitoringsoftware sinnvoller.

Für kleine Installationen kann eine einfache Überwachung zunächst genügen.

Monitoring darf nicht auf demselben Fehlerpfad vollständig verschwinden

Wenn der ganze Server ausgeht:

ein Monitoringprozess auf demselben Server kann ebenfalls nichts mehr melden.

Für wichtige Systeme ist deshalb ein externer Health Check sinnvoll.

Backups ebenfalls nicht ausschließlich auf derselben Maschine

Server
↓
Backup
↓
gleiche SSD

ist kein echtes Schutzkonzept gegen einen SSD-Defekt.

Mindestens eine Backupkopie sollte auf einem anderen Speichermedium beziehungsweise System liegen.

Ein lokaler KI-Server braucht nicht jedes Modell im Backup

Große öffentlich verfügbare Modelldateien könnten neu heruntergeladen werden.

Statt Terabytes davon täglich zu sichern, kann eine Model Registry dokumentieren:

Name

Version

Quelle

Checksum

Quantisierung

Dann lassen sie sich reproduzieren.

Eigene Fine-Tunes müssen dagegen unbedingt gesichert werden

Ein selbst trainierter LoRA-Adapter lässt sich möglicherweise nur mit erheblichem Aufwand neu erzeugen.

Also:

LoRA
→ Backup

Ebenso:

Trainingsdatensätze

und:

Evaluationsdaten.

Prompts sind ebenfalls wertvolle Produktdaten

Ein über Monate optimierter Prompt kann für eine Automatisierung genauso wichtig sein wie Quellcode.

Deshalb:

Prompt
→ Versionierung
→ Backup

Nicht nur irgendwo in einem n8n-Node speichern.

Workflowdefinitionen ebenfalls

Wenn n8n zentrale Geschäftsprozesse enthält:

n8n-Daten
→ Backup

Der Wert der Maschine liegt oft weniger in der GPU als in der Automatisierungslogik, die darauf aufgebaut wurde.

Ein Disaster-Recovery-Test ist wertvoll

Nicht nur:

Wir haben Backups.

Sondern:

Können wir daraus tatsächlich einen neuen Server herstellen?

Ein guter Test:

neuer Host
↓
Konfiguration
↓
Backup
↓
Dienste starten
↓
Testworkflow

Wenn das funktioniert, ist das Backup wirklich brauchbar.

Dokumentation sollte zum Server gehören

Mindestens:

Architektur

Dienste

Ports

Modelle

Volumes

Backups

Credentials-Struktur

Updateprozess

Recoveryprozess

Nicht jedes Detail muss ein hundertseitiges Handbuch werden.

Aber ein zukünftiger Administrator sollte das System verstehen können.

Ein Architekturdiagramm ist ausgesprochen hilfreich

Zum Beispiel:

                    ┌──────────────┐
                    │   Benutzer   │
                    └──────┬───────┘
                           ↓
                    ┌──────────────┐
                    │ Reverse Proxy│
                    └──────┬───────┘
                           ↓
                ┌────────────────────┐
                │     AI Gateway     │
                └─────┬────────┬─────┘
                      │        │
             ┌────────┘        └─────────┐
             ↓                           ↓
      ┌─────────────┐             ┌─────────────┐
      │ LLM Service │             │ RAG Service │
      └──────┬──────┘             └──────┬──────┘
             ↓                           │
           GPU                    ┌──────┴───────┐
                                  ↓              ↓
                             Embeddings      Vector DB

Daneben:

n8n
↓
AI Gateway

Damit versteht man die Plattform auf einen Blick.

Eine größere Architektur könnte so aussehen

                     Clients
                        ↓
                 Reverse Proxy
                        ↓
                   AI Gateway
                        ↓
              ┌─────────┴─────────┐
              ↓                   ↓
        Request Queue        RAG Service
              ↓                   ↓
        GPU Scheduler      Vector Database
        ┌─────┴─────┐
        ↓           ↓
     GPU 1         GPU 2
        ↓           ↓
      LLM A        LLM B

Dazu:

PostgreSQL

n8n

Monitoring

Backup

Auch hier gilt:

Nur bauen, wenn tatsächlich benötigt.

Ein lokaler KI-Server sollte mit einem einfachen Ziel starten

Zum Beispiel:

Dieser Server soll eingehende Texte klassifizieren.

Dann:

API
↓
Modell
↓
Structured Output

Das lässt sich testen und messen.

Danach zweiter Anwendungsfall

Zusätzlich soll er Texte generieren.

Dann:

zweites Modell

oder:

gleicher Modelldienst mit anderer Konfiguration.

Danach RAG

Nun soll er unsere Dokumente kennen.

Erst jetzt:

Embeddingmodell,

Vector DB.

Danach Agenten

Nun soll er selbstständig verschiedene Informationsquellen auswählen.

Erst dann:

Tool Calling

und:

agentische Schleifen.

So bleibt die Infrastruktur verständlich

Jede neue Schicht löst ein konkretes Problem.

Nicht:

Wir haben gelesen,
dass man eine Vektordatenbank,
Agenten,
Redis und Kubernetes braucht.

Sondern:

Problem
↓
passende Komponente

Was du dir über einen lokalen KI-Server merken solltest

Ein lokaler KI-Server ist nicht einfach ein PC, auf dem ein Sprachmodell läuft.

Er stellt KI-Funktionen dauerhaft für andere Anwendungen bereit.

Das einfachste Modell lautet:

Anwendung
↓
API
↓
Inference Server
↓
lokales Modell
↓
GPU

Der wichtigste Architekturgedanke ist dabei die Trennung der Komponenten.

n8n
→ orchestriert
AI Gateway
→ routet und kontrolliert
Inference Engine
→ führt das Modell aus
GPU
→ rechnet
Vector DB
→ speichert semantisch durchsuchbares Wissen
PostgreSQL
→ speichert Geschäftsdaten und Zustände

Dadurch können einzelne Teile unabhängig geändert werden.

Das Modell kann beispielsweise ersetzt werden:

Modell A
↓
Modell B

ohne alle Workflows umzubauen, solange die API stabil bleibt.

Container wie Docker eignen sich gut, um diese Dienste sauber voneinander zu trennen.

Docker Host
│
├── Reverse Proxy
├── n8n
├── AI Gateway
├── LLM Server
├── PostgreSQL
└── Vector DB

Nicht jeder Dienst benötigt GPU-Zugriff.

Die GPU sollte möglichst nur den Komponenten zur Verfügung stehen, die sie tatsächlich benötigen.

Die Infrastruktur sollte außerdem nicht unnötig öffentlich erreichbar sein.

Ein gutes Grundmodell lautet:

Client
↓
VPN / internes Netz / kontrolliertes HTTPS
↓
Reverse Proxy
↓
AI Gateway
↓
interne KI-Dienste

Nicht:

Internet
↓
offener Modellserver

Zu einem produktiven Server gehören genauso wie bei anderer IT:

Authentifizierung

Firewall

Least Privilege

Secrets Management

Updates

Monitoring

Backups

Lokales Hosting bedeutet:

mehr Kontrolle.

Aber auch:

mehr Verantwortung.

Für Automatisierung bietet sich n8n als Orchestrator an.

Trigger
↓
n8n
↓
lokale KI
↓
Structured Output
↓
deterministische Logik
↓
Aktion

Damit bleibt das Sprachmodell eine klar begrenzte Komponente.

Für eigene Dokumente kann RAG ergänzt werden.

Dokumente
↓
Embeddings
↓
Vektordatenbank
↓
Retrieval
↓
lokales LLM

Damit kann eine komplette Wissensverarbeitung innerhalb der eigenen Infrastruktur stattfinden.

Mehrere GPUs können unterschiedlich eingesetzt werden.

GPU 1
→ interaktives Sprachmodell
GPU 2
→ Batchjobs

oder:

GPU 1 + GPU 2
→ gemeinsames größeres Modell

Die erste Variante ist häufig einfacher.

Die zweite wird interessant, wenn ein gewünschtes Modell nicht in den VRAM einer einzelnen GPU passt.

Quantisierung kann diesen Speicherbedarf zusätzlich stark reduzieren.

Damit sollte vor dem Kauf zusätzlicher Hardware immer geprüft werden:

kleineres Modell?

stärkere Quantisierung?

weniger Kontext?

besseres RAG?

Erst danach:

mehr VRAM
oder
weitere GPU

Für größere Lasten kommen Queues hinzu.

Anwendungen
↓
Queue
↓
GPU Worker

Damit können:

interaktive Anfragen,

Batchjobs

und:

Agenten

kontrolliert dieselbe Infrastruktur nutzen.

Ein Server sollte außerdem beobachtbar sein.

GPU

VRAM

CPU

RAM

Temperatur

Queue

Latenz

Tokens pro Sekunde

Fehlerrate

Nur dann lässt sich entscheiden, welches Upgrade tatsächlich benötigt wird.

Der sinnvollste Aufbaupfad lautet deshalb:

1. Modell lokal stabil betreiben
↓
2. API bereitstellen
↓
3. Anwendungen anbinden
↓
4. Monitoring und Backups
↓
5. strukturierte KI-Dienste
↓
6. RAG
↓
7. Queues und mehrere Modelle
↓
8. Agenten
↓
9. bei echtem Bedarf mehrere Worker

Damit entsteht kein künstlich kompliziertes „KI-Rechenzentrum“.

Sondern eine Infrastruktur, die mit den tatsächlichen Anforderungen wachsen kann.

Und genau darin liegt der große Vorteil eigener KI-Hardware:

Man muss nicht von Anfang an wissen, wie das endgültige System aussehen wird.

Man braucht lediglich eine saubere Trennung zwischen:

Anwendung
↓
Schnittstelle
↓
KI-Dienst
↓
Hardware

Dann kann jede dieser Schichten später unabhängig weiterentwickelt werden.