Installation
Aktuell ist Version 0.4.0. Fertige Pakete für Debian 13 (amd64) gibt es über eine eigene apt-Paketquelle; Updates kommen dann mit `apt upgrade`. Wer lieber selbst baut, nutzt `make deb`. Danach kann man mit eigenen API-Keys chatten.
Stand 0.4.0: Zu jedem Versions-Tag baut GitHub Actions das Paket auf Debian 13, hängt es an das GitHub-Release und stellt es in die apt-Paketquelle (die letzten drei Versionen). Neu sind die Abhängigkeiten bubblewrap (Berechnungen) sowie Pango, harfbuzz und DejaVu-Schriften (PDF-Blätter). Wer von 0.2 kommt, liest Update auf 0.3. Eine Testinstallation auf einem frischen Debian 13 steht noch aus, der Docker-Weg ist bisher ungetestet. Die vollständige Betriebsanleitung (mit Backup) folgt mit Meilenstein 12.
Voraussetzungen
- Debian 13 (oder ein anderes System mit apt) mit Python 3.12 oder neuer.
- PostgreSQL mit der Erweiterung pgvector – lokal oder auf einem anderen Rechner.
- nginx (ab 1.25.1) und
ssl-cert– installiert apt als Abhängigkeiten mit. - Für Berechnungen:
bubblewrap(installiert apt mit) und erlaubte unprivilegierte User-Namespaces (unter Debian 13 Standard). - Für PDF-Blätter:
libpango-1.0-0,libpangoft2-1.0-0,libharfbuzz-subset0undfonts-dejavu-core– installiert apt ebenfalls mit. - Nur für den eigenen Paketbau:
debhelperunddh-virtualenv.
Weg 1: Debian-Paket (empfohlen)
Das Paket multi-gpt bringt seine eigene Python-Umgebung in /usr/share/python/multi-gpt
mit und wird über systemd gestartet. Es legt den Systemnutzer multi-gpt an, Daten liegen
in /var/lib/multi-gpt. nginx und TLS sind Teil des Pakets: gunicorn lauscht nur auf
127.0.0.1, davor steht nginx auf demselben Rechner.
1. Paketquelle einrichten (einmalig):
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://beerlesklopfer.github.io/multi-gpt/apt/multi-gpt.gpg \
| sudo tee /etc/apt/keyrings/multi-gpt.gpg >/dev/null
sudo tee /etc/apt/sources.list.d/multi-gpt.sources >/dev/null <<'EOF'
Types: deb
URIs: https://beerlesklopfer.github.io/multi-gpt/apt
Suites: stable
Components: main
Architectures: amd64
Signed-By: /etc/apt/keyrings/multi-gpt.gpg
EOF
sudo apt update
Der Schlüssel, mit dem die Paketquelle signiert ist, hat den Fingerabdruck
8822 DF96 2A10 31EC AD6A 6F40 3DE7 6675 16FC 28FF (prüfen mit gpg --show-keys /etc/apt/keyrings/multi-gpt.gpg).
2. Installieren:
sudo apt install multi-gpt
Updates kommen danach mit sudo apt update && sudo apt upgrade. Ohne Paketquelle geht es auch
mit dem .deb aus dem GitHub-Release
(sudo apt install ./multi-gpt_<version>_amd64.deb) oder selbst gebaut im Quellcode-Ordner:
sudo apt install build-essential debhelper dh-virtualenv python3-dev python3-venv
make deb # das .deb liegt danach im übergeordneten Ordner
Bei der Installation passiert Folgendes:
- Fragen per debconf: der oder die Hostnamen, unter denen MultiGPT aufgerufen wird
(Vorschlag:
hostname -f), und der Pfad zum TLS-Zertifikat samt Schlüssel. Bleibt das Zertifikat leer, nutzt nginx das selbstsignierte snakeoil-Zertifikat: Browser warnen dann, und das Mikrofon ist ggf. eingeschränkt.ALLOWED_HOSTSundCSRF_TRUSTED_ORIGINSleitet das Paket aus den Hostnamen und den IP-Adressen des Rechners ab. Ändern lässt sich alles später mitsudo dpkg-reconfigure multi-gpt. - nginx mit TLS: Das Paket richtet die Site
/etc/nginx/sites-available/multi-gptein (HTTPS, Weiterleitung von HTTP auf HTTPS, gestreamte Antworten ohne Puffer, Upload-Grenze passend zuDOCUMENT_MAX_UPLOAD_MB), prüft sie mitnginx -tund aktiviert sie. Debians unveränderte Standard-Sitedefaultwird dafür abgeschaltet. Einzelheiten, eigenes Zertifikat und Fehlersuche stehen im Wiki: nginx und TLS. - Konfiguration: Bei der ersten Installation entsteht
/etc/multi-gpt/.env(Eigentümerroot:multi-gpt, Rechte 0640) mit frisch erzeugten Schlüsseln. Updates überschreiben die Datei nicht. - Datenbank: Läuft auf dem Rechner ein PostgreSQL, legt das Paket (preinst) die Rolle
multi-gpt, die gleichnamige Datenbank und die Erweiterung pgvector an. Vorhandenes bleibt unverändert; zeigtDATABASE_URLauf einen anderen Rechner, passiert nichts. - Migration: Ist die Datenbank erreichbar, migriert das Paket (postinst) das Schema automatisch, bevor der Dienst startet oder neu startet – bei der Installation und bei jedem Update. Ist sie nicht erreichbar, gibt es nur einen Hinweis; die Installation läuft trotzdem durch.
- Zusätzliche Pakete für Dokumente (RAG): apt installiert als Abhängigkeiten
poppler-utils(PDF-Seiten als Bild) sowietesseract-ocr,tesseract-ocr-deuundtesseract-ocr-engfür die Texterkennung gescannter Seiten. Weitere Sprachen gibt es als Paketetesseract-ocr-<sprache>(dannOCR_LANGUAGESin/etc/multi-gpt/.envanpassen). - Zusätzliche Pakete für Berechnungen und PDF:
bubblewrapfür die Sandbox vonrun_pythonsowie Pango, harfbuzz undfonts-dejavu-corefür die PDF-Erzeugung mit WeasyPrint (WeasyPrint selbst liegt im venv des Pakets). Die Unitmulti-gpt.serviceerlaubt dafür zusätzlichAF_NETLINK, nur für das Loopback-Gerät der Sandbox. Prüfen im Admin unter „Chat-Einstellungen“ → „Sandbox testen“. - Zwei Dienste:
multi-gpt.service(Weboberfläche) undmulti-gpt-worker.service(Worker, der hochgeladene Dokumente im Hintergrund indexiert). Beide werden aktiviert, gestartet und bei Updates nach der Migration neu gestartet. Prüfen mitsystemctl status multi-gpt multi-gpt-worker.
3. Datenbank von Hand anlegen (nur nötig, wenn das Paket sie nicht anlegen konnte, etwa weil PostgreSQL bei der Installation nicht lief):
sudo -u postgres createuser multi-gpt
sudo -u postgres createdb -O multi-gpt multi-gpt
sudo -u postgres psql -d multi-gpt -c 'CREATE EXTENSION IF NOT EXISTS vector'
4. Konfiguration prüfen: In /etc/multi-gpt/.env bei Bedarf DATABASE_URL anpassen.
Danach sudo systemctl restart multi-gpt.
5. Ersten Verwalter erstellen (und das Schema nachziehen, falls die automatische Migration nicht lief):
sudo mgpt-ctl migrate
sudo mgpt-ctl createsuperuser
mgpt-ctl ist ein Wrapper um Djangos manage.py, der als Nutzer multi-gpt mit
/etc/multi-gpt/.env läuft. mgpt-ctl migrate lässt sich jederzeit gefahrlos wiederholen.
Alle Befehle stehen im Wiki: mgpt-ctl.
MultiGPT ist danach unter https://<hostname>/ erreichbar. Ob die App läuft, zeigt
curl -k https://<hostname>/healthz/ (-k nur mit dem snakeoil-Zertifikat).
6. Dokumentsuche einrichten (optional): Im Admin unter „Dokumente (RAG)“ →
„Einstellungen“ ein Embedding-Modell wählen (lokal z. B. nomic-embed-text über LM Studio)
und mit „Speichern und Embedding testen“ prüfen; für gescannte PDFs das OCR-Verfahren
(olmOCR über LM Studio oder Tesseract) wählen und mit „Speichern und OCR testen“ prüfen.
Die Anleitung dazu steht im Wiki: RAG einrichten,
Ordner vom Server oder NAS beschreibt
Wiki: Verzeichnisquellen
(dafür RAG_SOURCE_ROOTS in /etc/multi-gpt/.env setzen).
7. Websuche einrichten (optional): Ein SearXNG im Heimnetz aufsetzen, im Admin die Adresse eintragen und mit „SearXNG testen“ prüfen, danach die Websuche einschalten. Die Anleitung steht im Wiki: SearXNG.
Runner (optional)
Der Runner gibt Modellen einen Container auf einem Rechner im Heimnetz als Arbeitsumgebung.
Er ist ein eigenes Programm (multigpt-runner) und gehört nicht zur Installation des
Servers. Auf dem Rechner, auf dem der Browser läuft, braucht man Linux (amd64 oder arm64) mit
systemd und Podman rootless. Ablauf: auf der Seite „Runner“ in MultiGPT einen Token
erzeugen, das Programm dort von MultiGPT herunterladen (mit Prüfsumme) und mit pair
koppeln. Die Schritte stehen im Wiki unter
Runner.
Zur Sicherheit: Die Web-Ports des Runners (24080 und 24443) sind standardmäßig im ganzen
Heimnetz ohne Anmeldung erreichbar. Wer das nicht will, setzt MGPT_EXPOSE_BIND=127.0.0.1
(Einzelheiten im Wiki).
Update auf 0.3
Das Paket migriert die Datenbank bei jedem Update selbst. Beim Update von 0.2 auf 0.3.x sind
zusätzlich einige Schritte einmalig von Hand nötig (sie stehen auch in debian/NEWS):
1. Paket aktualisieren (holt bubblewrap, Pango, harfbuzz und DejaVu mit) – mit der
Paketquelle aus Weg 1 sudo apt update && sudo apt upgrade, sonst:
sudo apt install ./multi-gpt_<version>_amd64.deb
2. Fähigkeiten der Modelle erkennen lassen. Vorhandene Modelle stehen bei „Werkzeuge“ auf „nein“ und bekommen sonst weder Websuche noch Seitenabruf, Dokument-Werkzeuge, Berechnungen oder PDF-Blätter angeboten:
sudo mgpt-ctl guess_capabilities # Vorschau
sudo mgpt-ctl guess_capabilities --apply # speichern
Alternativ im Admin: „KI-Modelle“ → Aktion „Fähigkeiten automatisch erkennen“. Neue Modelle bekommen ihre Fähigkeiten automatisch. Die MCP-Freigabe je Modell ändert der Befehl nie; neue lokale Modelle dürfen MCP-Werkzeuge erst nach Freigabe in der Spalte „MCP“ nutzen.
3. Dokumente neu indexieren, damit Zitate Absatz und Abschnitt nennen (und, falls eingeschaltet, Abbildungen beschrieben werden): im Admin unter „Dokumente (RAG)“ „Alles neu indexieren“ oder
sudo mgpt-ctl reindex
4. Prüfen: Im Admin unter „Chat-Einstellungen“ → „Sandbox testen“. Wer die Unit
multi-gpt.service per Drop-in überschreibt, ergänzt AF_NETLINK bei
RestrictAddressFamilies= bzw. lässt RestrictNamespaces= weg.
Alle Verwaltungsbefehle und Optionen beschreibt das Wiki: mgpt-ctl.
Weg 2: Docker
Für Systeme ohne apt. Das Image baut und installiert dasselbe Debian-Paket;
compose.yaml bringt PostgreSQL mit pgvector als zweiten Dienst mit. Konfiguration kommt
aus .env im Projektordner (mindestens SECRET_KEY, FIELD_ENCRYPTION_KEY,
ALLOWED_HOSTS, POSTGRES_PASSWORD).
docker compose build
docker compose up -d db
docker compose run --rm web mgpt-ctl migrate
docker compose run --rm web mgpt-ctl createsuperuser
docker compose up -d
Hinweis: Der Docker-Weg ist noch nicht getestet.
Weg 3: Entwicklung mit make
Das Makefile ist die Bedienoberfläche für die Entwicklung. Voraussetzung ist ein lokales PostgreSQL mit pgvector.
make db-create install migrate user dev
make db-createlegt einmalig persudoDatenbank, Rolle und die Erweiterungvectoran.make installerzeugt.venvund eine.envmit generierten Schlüsseln (Rechte 600).make userlegt einen Nutzer an,make devstartet den Entwicklungsserver.make workerstartet den Worker für die Indexierung von Dokumenten im Vordergrund,make reindexreiht alle Dokumente neu ein (nach einem Wechsel des Embedding-Modells). Für OCR braucht der Entwicklungsrechnerpoppler-utils,tesseract-ocr,tesseract-ocr-deuundtesseract-ocr-eng.make runstartet gunicorn,make testundmake lintprüfen den Code,make helpzeigt alle Ziele.