← Alle Artikel

Zuse — mein Heim-AI-Server

Zuse — My Home AI Server

Es gibt zwei Arten, KI zu nutzen: man mietet sie, oder man stellt sie sich in den Keller. Ich habe mich für den Keller entschieden. Der Server heißt Zuse — eine alte HP Z840 Workstation, Ubuntu, irgendwo in Ostfriesland an einer Starlink-Leitung mit 250–400 Mbit/s. Kein Cluster, keine Cloud-Rechnung, kein "Ihr Guthaben ist aufgebraucht".

Der Reiz ist nicht Geld sparen. Der Reiz ist: die Rohdaten verlassen das Haus nicht. Für ein paar meiner Projekte — Automotive-Logs zum Beispiel — ist das keine Spielerei, sondern Bedingung.

Was drauf läuft

Der Stack ist über Monate gewachsen. Jede Schicht ist ein eigener Container, jeder Container hat genau eine Aufgabe:

Schicht Dienst GPU Modell / Notiz
LLM vLLM 2× RTX 3090 (TP=2) Qwen3 27B, int4, 256K Kontext, ~65 tok/s
Embeddings/Rerank Infinity 1070 Ti bge-m3 + Reranker
Speech-to-Text Whisper large-v3 1070 Ti mit VAD-Proxy davor
Text-to-Speech Piper CPU deutsch
Bildgenerierung ComfyUI 1070 Ti SDXL-Lightning, ~40–70 s/Bild
Wissensbasis Open-WebUI + Tika OCR über Dokumente
Agent Hermes OpenAI-kompatibel + Telegram-Bot

Drei GPUs aus drei Epochen: zwei RTX 3090 für das große Sprachmodell im Tensor-Parallel-Modus, und eine betagte 1070 Ti, die sich klaglos um Embeddings, Whisper und Bildgenerierung kümmert. Alte Hardware ist nicht peinlich. Alte Hardware, die nichts mehr tut, ist peinlich.

Die Lektionen, die wehtun

Ein Heim-AI-Stack sieht im Architekturdiagramm hübsch aus. Der Schmerz steckt in den Details, die kein Tutorial erwähnt.

Modelle gehören auf SSD, niemals auf die HDD. Ich habe die Modell-Caches einmal auf die große, langsame Platte gelegt. Das Wort, das ich damals benutzt habe, war "fatal". Ladezeiten im Minutenbereich, vLLM, das in Timeouts läuft. Seitdem: ML-Modelle leben ausschließlich auf SSD, Punkt.

Container reden über host.docker.internal, nicht über ein gemeinsames Docker-Netz. Klingt nach Detail, ist aber die Entscheidung, die den ganzen Zoo wartbar hält. Jeder Dienst ist für sich startbar, testbar, neustartbar. Kein Kartenhaus, bei dem ein Container den nächsten mitreißt.

Whisper halluziniert auf Stille. Schickt man dem Spracherkenner einen sehr kurzen oder leisen Clip, erfindet er fröhlich Endlosschleifen aus Phantasiewörtern. Die Lösung ist ein kleiner Proxy davor, der Voice-Activity-Detection erzwingt und die Sprache vorbelegt, falls der Client es vergisst. Eine Schicht Misstrauen zwischen Anwendung und Modell — das zieht sich durch den ganzen Stack.

Warum sich das lohnt

Was dabei herauskommt, ist kein ChatGPT-Klon im Wohnzimmer. Es ist eine Plattform, auf der meine anderen Projekte stehen: der Code-Worker, der nachts an Spielen mitprogrammiert. Der Agent, der mir Mails sortiert. Der MIDI-Orchestrator, der echten Synthesizern sagt, was sie spielen sollen.

Zuse ist die Antwort auf eine simple Frage: Wenn ich ohnehin den ganzen Tag mit Engineering verbringe — warum sollte die spannendste Technologie der Dekade als Mietobjekt in einem fremden Rechenzentrum stehen, statt brummend neben dem Heizungskeller?

Geplant ist noch Hardware-Spielerei für die Seele: drei magische Augen — alte Röhren-Anzeigen aus Radios der 50er — als analoge GPU-Auslastungsanzeige. Weil ein Server, der arbeitet, das auch zeigen darf.

There are two ways to use AI: you rent it, or you put it in your basement. I went with the basement. The server is called Zuse — an old HP Z840 workstation, Ubuntu, somewhere in East Frisia on a Starlink line doing 250–400 Mbit/s. No cluster, no cloud invoice, no "your credit has run out."

The appeal isn't saving money. The appeal is this: the raw data never leaves the house. For some of my projects — automotive logs, for instance — that's not a gimmick, it's a requirement.

What's running

The stack grew over months. Each layer is its own container, each container does exactly one job:

Layer Service GPU Model / note
LLM vLLM 2× RTX 3090 (TP=2) Qwen3 27B, int4, 256K context, ~65 tok/s
Embeddings/Rerank Infinity 1070 Ti bge-m3 + reranker
Speech-to-text Whisper large-v3 1070 Ti with a VAD proxy in front
Text-to-speech Piper CPU German
Image generation ComfyUI 1070 Ti SDXL-Lightning, ~40–70 s/image
Knowledge base Open-WebUI + Tika OCR over documents
Agent Hermes OpenAI-compatible + Telegram bot

Three GPUs from three eras: two RTX 3090s for the big language model in tensor-parallel mode, and an aging 1070 Ti that uncomplainingly handles embeddings, Whisper, and image generation. Old hardware isn't embarrassing. Old hardware that does nothing is.

The lessons that hurt

A home AI stack looks pretty in an architecture diagram. The pain lives in the details no tutorial mentions.

Models belong on SSD, never on the HDD. I once put the model caches on the big, slow drive. The word I used at the time was "fatal." Load times in the minutes, vLLM running into timeouts. Ever since: ML models live on SSD only, full stop.

Containers talk over host.docker.internal, not a shared Docker network. Sounds like a detail, but it's the decision that keeps the whole zoo maintainable. Every service is independently startable, testable, restartable. No house of cards where one container drags down the next.

Whisper hallucinates on silence. Feed the recognizer a very short or quiet clip and it cheerfully invents infinite loops of made-up words. The fix is a small proxy in front that forces voice-activity detection and pre-sets the language in case the client forgets. A layer of distrust between application and model — that runs through the whole stack.

Why it's worth it

What comes out of this isn't a ChatGPT clone in the living room. It's a platform my other projects stand on: the code worker that programs games with me at night. The agent that sorts my mail. The MIDI orchestrator that tells real synthesizers what to play.

Zuse is the answer to a simple question: if I spend all day doing engineering anyway — why should the most exciting technology of the decade sit as a rental in someone else's data center, instead of humming away next to the boiler room?

Still on the to-do list is some hardware whimsy for the soul: three magic eyes — old tube displays from 1950s radios — as an analog GPU-load gauge. Because a server that's working is allowed to show it.