Personal Self-Hosted
Betreibe deinen eigenen Contextify Cloud-Server, von Anfang bis Ende.
Zu einer laufenden Installation kommst du auf zwei Wegen: Überlasse die Einrichtung deinem Coding-Agenten oder gehe die vier manuellen Schritte selbst durch. In beiden Fällen betreibst du einen Server: Starte ihn, setze HTTPS davor, verbinde Contextify und prüfe, ob Suche und Recall funktionieren.
Personal Self-Hosted ist der kostenlose Weg für einen einzelnen Nutzer, den Contextify Cloud-Synchronisierungsserver auf eigener Hardware zu betreiben. Der Quellcode ist unter der Functional Source License, Version 1.1, Apache 2.0 Future License (FSL-1.1-Apache-2.0) verfügbar. Jedes Release geht zwei Jahre nach seiner Veröffentlichung in die Apache License 2.0 über, und der Quellcode liegt auf GitHub.
Schnellster Weg
Lass deine KI die Einrichtung übernehmen
Du nutzt bereits einen Coding-Agenten. Gib ihm diese Anleitung, und er richtet den Server für dich ein. Er führt jeden Befehl in deiner Shell aus und fragt dich bei den wichtigen Entscheidungen. Alles läuft auf deinem Rechner.
Gib deiner KI diesen Prompt
Kopiere diesen Prompt in Claude Code, Codex oder einen anderen Coding-Agenten. Er verweist auf eine Anleitung, die wir aktuell halten. So bleibt der Prompt kurz und beständig.
Help me set up a self-hosted Contextify server on this machine. Read the runbook at https://contextify.sh/docs/self-hosted/agent-setup.md and follow it exactly: run the commands in my shell, show me what you are doing, generate any secrets locally on this machine, and pause to ask me at every step marked [ASK ME]. When it is done, verify the server is healthy and my Contextify app can search across it.
Die Anleitung liegt unter contextify.sh/docs/self-hosted/agent-setup.md. Wenn dein Agent keine URL abrufen kann, öffne sie und füge ihren Inhalt in den Chat ein.
Was deine KI übernimmt und was du entscheidest
- Sie führt Befehle in deinem Terminal aus und zeigt dir jeden davon.
- Sie erzeugt Geheimnisse auf deinem Rechner und schreibt sie nur in die Server-Konfigurationsdatei, nicht in den Chat.
- Sie hält bei den wichtigen Entscheidungen an und fragt dich nach der URL deines Servers, vor jeder Änderung außerhalb des Projekts und bevor sie dein Konto erstellt.
- Du kannst jederzeit stoppen.
Während der Einrichtung wird nichts übertragen. Sobald der Server läuft, wird dein Verlauf ausschließlich mit dem gerade erstellten Server synchronisiert.
Demnächst: Wenn du die CLI contextify mit Claude Code oder Codex nutzt, wird ein integrierter Einrichtungs-Skill daraus einen einzigen Befehl machen. Er erscheint in einem künftigen Contextify-Release. Nutze bis dahin den Prompt oben.
Selbst einrichten
Bevor du beginnst
Du möchtest die Einrichtung selbst ausführen oder genau lesen, was dein Agent tun würde? Hier sind dieselben vier Schritte von Anfang bis Ende.
Ein Rechner, den du betreibst
Ein Mac mini, Linux-Rechner oder privater Tailnet-Host mit installiertem Docker. Ein freier Rechner in deinem Netzwerk reicht; Contextify-Infrastruktur ist an diesem Verbindungsweg nicht beteiligt.
Docker
Docker mit Compose v2 (docker compose). Der Stack baut das API-Image lokal und betreibt PostgreSQL daneben.
Der öffentliche Quellcode
Das Repository contextify-cloud-self-hosted enthält den Docker-Stack, den du betreibst.
Lege zuerst die URL deines Servers fest. Die Adresse, die deine Rechner nutzen, wird in der Server-Konfiguration und im TLS-Zertifikat verankert. Wähle sie deshalb, bevor du Konfiguration schreibst. Ein Tailscale-HTTPS-Hostname (your-host.your-tailnet.ts.net) ist die einfachste Wahl: Er gibt dir einen stabilen Namen und ein gültiges Zertifikat, ohne etwas ins öffentliche Internet zu stellen. Du kannst auch einen LAN-Hostnamen mit eigenem Zertifikat nutzen. Verwende diese URL überall, wo die folgenden Schritte nach deiner Server-URL fragen.
Schritt 1: Server starten
Klone den öffentlichen Quellcode und erstelle deine Umgebungsdatei aus dem Beispiel:
git clone https://github.com/PeterPym/contextify-cloud-self-hosted.git
cd contextify-cloud-self-hosted
cp .env.example .env
Setze deine Geheimnisse und URLs in .env
Erzeuge drei Geheimnisse in der Shell und kopiere jeden Wert in .env. Füge keinen Befehl $(...) in die Datei ein: Docker Compose liest .env wörtlich und führt keine Befehle aus. Eine Zeile $(openssl ...) würde deshalb zu deinem tatsächlichen Geheimnis werden.
openssl rand -hex 32 # copy into API_SECRET_KEY
openssl rand -hex 20 # copy into DB_PASSWORD
openssl rand -hex 32 # copy into CONTEXTIFY_SELF_HOSTED_SETUP_TOKEN
Bearbeite dann .env, sodass diese Werte gesetzt sind:
| Variable | Vorgehen |
|---|---|
API_SECRET_KEY |
Ersetze den mitgelieferten Wert dev-secret-change-me durch deinen erzeugten Hexwert aus 32 Bytes. Mit dem Standardwert verweigert der Server den Start. |
DB_PASSWORD |
Ersetze den Standardwert contextify durch deinen erzeugten Hexwert aus 20 Bytes. Setze ihn vor dem ersten Start (siehe Warnung unten). |
CONTEXTIFY_SELF_HOSTED_SETUP_TOKEN |
Füge diese Zeile hinzu. Sie fehlt in .env.example, und ohne sie startet der Stack nicht. Sie schützt die einmalige Einrichtungsseite für das Eigentümerkonto. |
ALLOWED_ORIGINS |
Ersetze den Beispielwert vollständig durch die URL deines Servers. Der Standard enthält Adressen, die du nicht brauchst. |
EMAIL_BASE_URL, INVITATION_BASE_URL |
Ändere beide vom localhost-Standard auf die URL deines Servers. |
SELF_HOSTED |
Lass den Wert auf true. |
Setze DB_PASSWORD vor dem ersten Start. PostgreSQL übernimmt das Passwort nur beim erstmaligen Erstellen seines Daten-Volumes. Wenn du den Stack mit dem Standard startest und danach DB_PASSWORD änderst, kann die API die Datenbank nicht mehr erreichen. Eine spätere Änderung bedeutet, das Datenbank-Volume zurückzusetzen.
Die Zeile DATABASE_URL in .env.example wird von dieser Compose-Datei ignoriert. Sie bildet ihre eigene Verbindungszeichenfolge aus DB_PASSWORD, du musst die Zeile also nicht bearbeiten. Die Anmeldung erfolgt per Passwort; ein E-Mail-Anbieter ist deshalb optional. Lass RESEND_API_KEY leer, dann werden Anmelde-E-Mails ins Serverprotokoll geschrieben statt gesendet.
Starte den Stack
docker compose -f docker-compose.selfhosted.yml up -d --build
Der erste Durchlauf baut das API-Image. Auf einem kleinen Rechner dauert das einige Minuten. Prüfe den Fortschritt mit docker compose -f docker-compose.selfhosted.yml ps. Die API bindet standardmäßig an Loopback (127.0.0.1:8443); Schritt 2 setzt HTTPS davor.
Prüfe den Zustand
curl -s http://127.0.0.1:8443/api/v1/health
Ein funktionsfähiger selbst gehosteter Server antwortet mit:
{"status": "ok", "self_hosted": true}
Du erstellst das Eigentümerkonto in Schritt 2, sobald dein tatsächlicher Hostname und HTTPS eingerichtet sind. So zeigt der Setup-Link auf die Adresse, die deine Rechner wirklich nutzen werden.
Schritt 2: Absichern
Die API lauscht auf einem Loopback-Port. Du erreichst sie über HTTPS unter einem stabilen Hostnamen mit passendem TLS-Zertifikat. Empfohlen ist Tailscale HTTPS: Es setzt HTTPS vor den Loopback-Port der API unter einem Hostnamen .ts.net, der in deinem privaten Tailnet bleibt. Der Server wird also nie dem öffentlichen Internet zugänglich gemacht. Der vom Zertifikat bestätigte Hostname ist der Name, mit dem du Contextify konfigurierst. Den Server über einen eigenen Reverse-Proxy öffentlich erreichbar zu machen, ist eine fortgeschrittene Option. Dabei verantwortest du die Absicherung von TLS, Anmeldung und Rate-Limiting. Halte ihn privat, wenn du keinen konkreten Grund dagegen hast.
Anleitung zu TLS, VPN und Tailscale lesen
Passe die Konfiguration an die endgültige URL an
Sobald HTTPS vorgeschaltet ist, prüfe, dass der Server für genau diese Origin konfiguriert ist:
-
Prüfe die URL-Variablen
Prüfe, dass
ALLOWED_ORIGINS,EMAIL_BASE_URLundINVITATION_BASE_URLin.envalle deiner endgültigen HTTPS-Origin entsprechen. -
Aktiviere sichere Cookies
Setze
FORCE_SECURE_COOKIES=truein.env. Im Beispiel ist der Wert zur lokalen HTTP-Prüfung auffalsegesetzt. -
Übernimm die Änderungen
Führe
docker compose -f docker-compose.selfhosted.yml up -derneut aus, damit der Container die aktualisierte Umgebung übernimmt.
Erstelle das Eigentümerkonto
Personal Self-Hosted ist für einen einzelnen Nutzer bestimmt. Dieses erste Konto ist der Eigentümer des Servers. Erstelle es einmal unter deinem tatsächlichen HTTPS-Hostnamen. Öffne entweder die einmalige Einrichtungsseite in einem Browser:
https://your-server.example.ts.net/setup?token=YOUR_SETUP_TOKEN
Oder erstelle bei einem Server ohne grafische Oberfläche das Eigentümerkonto über die Kommandozeile:
docker compose -f docker-compose.selfhosted.yml exec api \
python -m contextify_cloud create-admin --email you@example.com
Die Einrichtungsseite ist nur verfügbar, solange kein Eigentümer existiert. Ein falsches oder fehlendes Token führt zu 404. Sobald ein Eigentümer erstellt wurde, gibt die Seite 410 zurück und funktioniert nicht mehr. Das Feld für den Workspace-Namen im Formular ist nur eine Bezeichnung für deinen Einzelnutzerserver. Behandle das Setup-Token wie ein Passwort: Es erscheint in deiner URL und deinem Shell-Verlauf und wird unwirksam, sobald das Eigentümerkonto existiert.
Schritt 3: Contextify verbinden
Wenn der Server läuft und erreichbar ist, verbinde deine Rechner. Nutze die Server-URL und einen im Dashboard erstellten API-Schlüssel mit Synchronisierungsberechtigung.
Mac-App
Öffne Settings, dann Cloud, und wähle Contextify Cloud Self-Hosted. Gib deine Server-URL ein (den Hostnamen auf dem TLS-Zertifikat) und füge einen API-Schlüssel mit Synchronisierungsberechtigung ein.
Linux oder die CLI
Führe contextify cloud setup --url https://your-server.example.ts.net aus, danach contextify cloud status --json und contextify cloud sync.
Vollständige Verbindungsanleitung lesen
Wenn dein Server nur innerhalb eines VPN oder Tailnets erreichbar ist, führe die Verbindungsbefehle auf einem Gerät in diesem Netzwerk aus.
Schritt 4: Suche und Recall prüfen
Prüfe von einem verbundenen Rechner aus, ob der gesamte Weg hin und zurück funktioniert.
-
Prüfe die Synchronisierung
Führe
contextify cloud status --jsonaus und prüfe, ob aktuelle Projekte synchronisiert wurden. Du kannst auch das schreibgeschützte Dashboard unter deiner Server-URL öffnen. -
Durchsuche deinen Verlauf
Suche in der Mac-App oder im Dashboard nach einem Begriff, der sicher in einer früheren Sitzung vorkommt. Die Ergebnisse kommen von dem Server, den du betreibst.
-
Abruf durch deinen Assistenten
Nutze Total Recall, um eine frühere Entscheidung, Fehlerbehebung oder Debugging-Sitzung in deine aktuelle Arbeit zu holen:
/total-recallin Claude Code,$total-recallin Codex.
Gerade verbunden, aber die Suche ist leer? Die App schließt die lokale Indexierung vor der Synchronisierung ab. Ein großer erster Durchlauf kann deshalb dauern. Lies mehr zu Erfassung und Synchronisierung, um zu verstehen, was passiert, bevor die Cloud aufholt.
Weiter geht’s
TLS, VPN und Tailscale
Prüfe bei einer fehlgeschlagenen Verbindung Namensauflösung, VPN-Routing, Port-Erreichbarkeit und Zertifikatsidentität getrennt.
Client verbinden
Die vollständige Anleitung zum Verbinden der Mac-App und der CLI mit einem bereits bestehenden Server.
Probleme mit der Cloud-Verbindung
Prüfe den Tab Cloud, den konfigurierten Server, DNS, VPN und den TLS-Namen, wenn die Synchronisierung keine Verbindung herstellen kann.
Zuletzt aktualisiert: 10. Juli 2026