← Homelab

Der Compose-Stack in der Konzeption

Nach dem Konzept für die Suchschicht steht die erste Umsetzungsentscheidung an: Wo und wie soll das Ganze laufen? Die Antwort war schnell gefunden, der Weg dorthin nicht.

4 Min. Lesezeit
Der Compose-Stack in der Konzeption - Vector-Search
Inhalt · 6 Abschnitte
  1. Keine Dienste roh auf dem Rechner
  2. Welcher Host? Die Doku widersprach sich
  3. Die RAM-Jagd, die keine war
  4. Kurswechsel: erst der Prototyp
  5. Fazit
  6. Ausblick

Nach dem Konzept für die Suchschicht steht die erste Umsetzungsentscheidung an: Wo und wie soll das Ganze laufen? Die Antwort war schnell gefunden, der Weg dorthin nicht. Zwei Stolpersteine kosteten Zeit, und keiner davon war ein Programmierfehler. Beide beruhten auf falschen Annahmen: dass die eigene Dokumentation den aktuellen Zustand zeigt und dass sich durch Aufräumen Arbeitsspeicher freischaufeln lässt.

Keine Dienste roh auf dem Rechner

Meine Vorgabe lautete, keine einzelnen Dienste direkt auf einem NUC zu installieren. Die Lösung soll sich auf andere Hardware übertragen lassen, ohne dass etwas neu aufgebaut werden muss. Daraus wurde ein Docker-Compose-Stack aus vier Diensten:

  • Postgres mit pgvector: die Datenbank, die neben normalen Daten auch die Zahlenfolgen zur Bedeutung der Notizen speichert und durchsuchbar macht.
  • Ollama: stellt das Modell bereit, das diese Zahlenfolgen, die Embeddings, lokal berechnet, ganz ohne Cloud-Anbindung.
  • Ingestion-Service: liest die Notizen aus dem Vault und schreibt sie samt Embedding in die Datenbank.
  • MCP-Server: die Schnittstelle, über die der Redakteur die Suche als Werkzeug aufrufen kann.

Alle Dienste laufen mit fest gepinnten Versionen, nie mit latest, und zwar in einer eigenen, neu angelegten LXC statt auf der vorhandenen Docker-VM. Dort laufen bereits andere sicherheitskritische Dienste, die ich nicht mit einem neuen Experiment koppeln wollte. Der eigentliche Portabilitätsgewinn liegt im Stack selbst: Der Host bleibt austauschbar, weil sich alles per docker compose up neu starten lässt.

Welcher Host? Die Doku widersprach sich

Für die Platzierung kamen zwei Maschinen in Frage. Die Hardware-Spezifikation führte den dritten NUC, eine GMKtec NucBox G11, als "frei". Der Name eines bereits eingerichteten Claude-Connectors deutete dagegen auf Home-Assistant-Nutzung auf genau diesem Gerät hin. Bevor die LXC entstand, habe ich das gezielt nachgeprüft. Ergebnis: Die Spezifikation stammte aus der Zeit vor dem Umzug von Home Assistant. Der NUC lief seit dem 20. Juli produktiv mit einer Home-Assistant-VM und einer zweiten Docker-VM für Grafana und InfluxDB. Auch die zentrale Infrastruktur-Übersicht war an dieser Stelle nicht mehr aktuell. Beide Dokumente habe ich korrigiert, als Ziel-Host blieb der ASUS-Hauptserver (NUC 2). Wie sich die Geräte im Homelab verteilen, beschreibt der Beitrag zum Aufbau des Homelabs.

Die RAM-Jagd, die keine war

Auf dem NUC 2 waren nur etwa 6 GB Arbeitsspeicher frei, knapp für den Stack samt Embedding-Modell. Zwei Kandidaten zum Aufräumen standen fest: eine ungenutzte WireGuard-LXC, die längst durch Tailscale abgelöst ist (wie der Zugriff von unterwegs heute läuft, steht im Beitrag zu Claude Remote auf der LXC), und eine gestoppte Superset-VM, deren Projekt aktuell pausiert. Ich habe die LXC entfernt und den Status der VM geprüft, in der Erwartung, mehrere Gigabyte zurückzugewinnen.

Der Gewinn lag bei null. Beide Gäste liefen bereits nicht mehr, und ein gestoppter Proxmox-Gast belegt keinen Host-Arbeitsspeicher. Aufräumen schafft nur dann Platz, wenn das Entfernte vorher tatsächlich lief. Diese Erwartung war ein Denkfehler über die Ressourcenverwaltung, kein Zufall.

Kurswechsel: erst der Prototyp

Statt den NUC weiter auszuquetschen, läuft der Prototyp vorerst auf dem deutlich stärkeren Gaming-PC (i7-14700KF, 64 GB RAM, RTX 4070 Super), und der Stack stand dort binnen weniger Minuten, samt verifizierter GPU-Durchreichung. Welcher NUC am Ende die LXC bekommt, ist bewusst vertagt. Genau dafür war der portable Stack gedacht.

Fazit

Der Ausgangspunkt war eine einfache Frage: Wohin mit dem Stack? Die vorläufige Antwort ist der leistungsstärkere Gaming-PC, und der portable Compose-Stack macht diesen Umweg ohne Aufwand möglich; die Entwicklung kann später einfach auf anderen Geräten integriert werden.

Ausblick

Die vier Dienste sind hier nur kurz vorgestellt und bekommen in den nächsten Teilen ihren eigenen Auftritt: erst das Embedding-Modell, von dem die Hardware-Entscheidung abhängt (zwei Kandidaten treten gegeneinander an, und ein Ergebnis fiel anders aus, als der erste Messwert vermuten ließ), danach Datenbank und Ingestion und schließlich die Suche als Werkzeug. Wo der Stack am Ende produktiv läuft und ob dafür ein Umzug nötig wird, kommt in einem späteren Teil.

Porträt Moritz Conjé

Geschrieben von

Moritz Conjé

Senior Projektmanager & Konzepter für Verwaltungsdigitalisierung

Projektmanager bei Dataport AöR, zertifiziert nach PRINCE2 Agile und IPMA Level D. Ich führe Teams zwischen Fachbereich, Management und IT und ordne Technik für Entscheidungen ein.

Meine Rolle in dieser Serie: Konzeption, Planung, Steuerung und Abnahme – die technische Umsetzung erfolgt KI-gestützt.

Beitrag teilen
LinkedIn Xing

Weiterlesen

Mehr aus der Serie Vector Search

Alle 14 Teile

Remote Claude nutzt LiteLLM

Remote Claude nutzt LiteLLM

Im Beitrag über das Gateway habe ich einen zentralen Zugang gebaut, über den KI-Werkzeuge die Suche und das Regelwerk meines Second Brains erreichen. Zwei Wochen später fiel mir auf, dass ihn noch niemand benutzte. Den Anstoß gab etwas ganz anderes: ...
Eine eigene Statuszeile fürs Terminal: mehr Überblick bei der Arbeit mit Claude Code

Eine eigene Statuszeile fürs Terminal: mehr Überblick bei der Arbeit mit Claude Code

Wer täglich mit einer KI im Terminal arbeitet, kennt das Problem: Wie ausgelastet die laufende Sitzung gerade ist, wie nah man an ein Nutzungslimit kommt oder was sie bereits gekostet hat, bleibt normalerweise unsichtbar. Man merkt es meist erst, wen ...