SSD Nodes Learn 🎉 VPS ab $5.50/Monat
Anleitungen Matt ConnorVon Matt Connor · Aktualisiert 2026-08-21

Hister selbst hosten: persönliche Suchmaschine einrichten

Hister auf einem VPS installieren und besuchte Seiten sowie Dateien durchsuchen: mit Binary- oder Docker-Installation, TLS, Login und MCP-Endpunkt.

Was Hister ist und was es nicht ist

Hister ist eine selbst gehostete persönliche Suchmaschine. Sie indiziert den vollständigen Text der von Ihnen besuchten Seiten und der von Ihnen gespeicherten Dateien. Anschließend können Sie diese Sammlung über eine Weboberfläche, einen Terminal-Client, eine HTTP-API oder einen KI-Assistenten (künstliche Intelligenz) durchsuchen. Hister beantwortet eine Frage: Wo habe ich das gelesen?

Die meisten Leser lernen dieses Konzept über SearXNG kennen. Die beiden Werkzeuge sind jedoch nicht identisch. SearXNG ist ein Metasuch-Proxy. Ihre Suchanfrage geht an SearXNG. SearXNG fragt in Ihrem Namen andere Suchmaschinen ab und gibt deren Ergebnisse ohne Tracking zurück. Der Index gehört diesen Suchmaschinen. Hister erstellt seinen eigenen Index aus Inhalten, die Sie ihm bereitstellen: von einer Browser-Erweiterung erfasste Seiten, importierte Browserverläufe, gecrawlte URLs und Dateien in Verzeichnissen, die Sie angeben. Eine selbst gehostete SearXNG-Instanz ermöglicht Ihnen privaten Zugriff auf das öffentliche Web. Hister ermöglicht die Suche in Ihren eigenen gelesenen Inhalten. Die Aufgaben sind unterschiedlich. Daher ist es normal, beide Anwendungen auf demselben Server zu betreiben.

Hister ist freie Software unter der AGPLv3 (GNU Affero General Public License, Version 3) oder einer späteren Version. Die Software überträgt keine Telemetriedaten und benötigt keinen Cloud-Dienst. In dieser Anleitung wird die Version v0.17.0 verwendet. Sie war am 2026-07-28 die aktuelle Version. Prüfen Sie vor dem Kopieren von Inhalten die Releases-Seite auf den aktuellen Tag. Fixieren Sie anschließend den dort gefundenen Tag.

Warum Sie Hister auf einem VPS selbst hosten

Ein Index ist nur dann nützlich, wenn er vollständig ist. Vollständig ist er nur, wenn der Server läuft, während Sie lesen. Ein Laptop befindet sich die Hälfte des Tages im Ruhezustand. Seiten, die Sie in dieser Zeit auf dem Smartphone öffnen, erreichen ihn nicht. Auch ein nächtlicher Import startet dann nicht. Ein VPS (Virtual Private Server) bleibt eingeschaltet. Dadurch senden alle Ihre Geräte an denselben Index, und der Crawler arbeitet weiter, während Sie schlafen.

Der zweite Grund ist die Trennung. Wenn Sie user_handling: true im Abschnitt app konfigurieren, erhält jedes Konto eigene Zugangsdaten und eine eigene Dokumentsammlung innerhalb einer einzigen Instanz. Ein Server kann dadurch einen Haushalt oder ein kleines Team aufnehmen, ohne dass jemand die Leseinhalte einer anderen Person durchsuchen kann.

Der dritte Grund ist die Infrastruktur. Der VPS verfügt bereits über einen öffentlichen Hostnamen und ein Zertifikat. Beides benötigt die Browsererweiterung, um aus einem Netzwerk, das Sie nicht kontrollieren, den Server zu erreichen.

Installationsweg 1: das Release-Binary

Hister stellt pro Plattform ein Binary bereit. Laden Sie es zusammen mit der Prüfsummendatei herunter und überprüfen Sie es vor der Installation.

cd /tmp
curl -LO https://github.com/asciimoo/hister/releases/download/v0.17.0/hister_0.17.0_linux_amd64
curl -LO https://github.com/asciimoo/hister/releases/download/v0.17.0/hister_0.17.0_checksums.txt
sha256sum --ignore-missing -c hister_0.17.0_checksums.txt

Ein korrektes Ergebnis besteht aus der einzelnen Zeile hister_0.17.0_linux_amd64: OK. Eine Zeile mit FAILED bedeutet, dass der Download beschädigt oder verändert wurde. Laden Sie die Datei in diesem Fall erneut herunter, statt sie zu installieren.

Installieren Sie das Binary. Erstellen Sie anschließend ein Systemkonto und die Verzeichnisse, die es verwendet.

sudo install -m 755 /tmp/hister_0.17.0_linux_amd64 /usr/local/bin/hister
sudo useradd --system --home-dir /var/lib/hister --shell /usr/sbin/nologin hister
sudo install -d -o hister -g hister -m 750 /var/lib/hister
sudo install -d -m 755 /etc/hister
sudo hister create-config /etc/hister/config.yml

create-config schreibt eine Standardkonfigurationsdatei und bestätigt zugleich, dass das Binary auf diesem System ausgeführt werden kann. Ein Download für die falsche Architektur schlägt an dieser Stelle mit cannot execute binary file: Exec format error fehl.

Passen Sie die wenigen wichtigen Einstellungen an. Der übrige Teil der generierten Datei kann unverändert bleiben.

app:
  directory: /var/lib/hister
  access_token: 'paste-a-long-random-string-here'
server:
  address: 127.0.0.1:4433
  base_url: https://hister.example.com

Generieren Sie das Token mit openssl rand -hex 32. Die Datei enthält nun ein Zugangsdaten, daher müssen Sie die Berechtigungen einschränken, bevor der Dienst gestartet wird.

sudo chown root:hister /etc/hister/config.yml
sudo chmod 640 /etc/hister/config.yml

Unter systemd ausführen

Schreiben Sie /etc/systemd/system/hister.service:

[Unit]
Description=Hister personal search engine
After=network-online.target
Wants=network-online.target

[Service]
User=hister
Group=hister
Environment=HISTER_CONFIG=/etc/hister/config.yml
ExecStart=/usr/local/bin/hister listen
Restart=on-failure
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/lib/hister

[Install]
WantedBy=multi-user.target

HISTER_CONFIG ist die dokumentierte Umgebungsvariable für den Konfigurationspfad. Dadurch hängt die Unit nicht vom Home-Verzeichnis des hister-Kontos ab. ProtectSystem=strict macht das gesamte Dateisystem für diesen Dienst schreibgeschützt. Deshalb muss ReadWritePaths das Datenverzeichnis angeben. ProtectHome=yes blendet /home für den Dienst aus. Ein überwachtes Verzeichnis unter /home würde dem Indexer deshalb leer erscheinen. Entfernen Sie diese Zeile, wenn Sie dort Dateien indizieren müssen.

sudo systemctl daemon-reload
sudo systemctl enable --now hister
systemctl status hister --no-pager
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:4433/

Jeder HTTP-Statuscode, den der letzte Befehl ausgibt, bedeutet, dass der Prozess auf Verbindungen wartet. curl: (7) Failed to connect bedeutet, dass dies nicht der Fall ist. journalctl -u hister -n 50 --no-pager zeigt den Grund an.

Installationspfad zwei: Docker Compose

Das Image wird in der GitHub Container Registry veröffentlicht. Für jedes Release gibt es einen eigenen Tag.

services:
  hister:
    image: ghcr.io/asciimoo/hister:v0.17.0
    container_name: hister
    user: '1000:1000'
    restart: unless-stopped
    environment:
      - HISTER__SERVER__ADDRESS=0.0.0.0:4433
      - HISTER__SERVER__BASE_URL=https://hister.example.com
      - HISTER__APP__ACCESS_TOKEN=${HISTER_ACCESS_TOKEN}
    volumes:
      - ./data:/hister/data
    ports:
      - 127.0.0.1:4433:4433

Für jeden Konfigurationsschlüssel gibt es einen Umgebungsvariablen-Override im Format HISTER__<SECTION>__<KEY>. Als Trennzeichen dienen zwei Unterstriche. Deshalb benötigt eine Container-Bereitstellung keine eingebundene Konfigurationsdatei. Legen Sie HISTER_ACCESS_TOKEN in einer .env-Datei neben der Compose-Datei ab. Wenn Sie lieber eine Datei bearbeiten, gibt docker run --rm ghcr.io/asciimoo/hister:v0.17.0 create-config > config.yml die Standardwerte aus.

Die beiden obigen Zeilen sind leicht falsch umzusetzen. Beide Zusammenhänge sollten Sie verstehen.

Die Adresse im Container muss 0.0.0.0:4433 sein. Ein Container verfügt über einen eigenen Netzwerk-Namespace. Ein Prozess, der dort an 127.0.0.1 gebunden ist, ist daher nur innerhalb dieses Containers erreichbar. Für den veröffentlichten Port gibt es dann kein Ziel, an das er weiterleiten kann.

Der veröffentlichte Port wird als 127.0.0.1:4433:4433 angegeben, nicht als 4433:4433. Docker veröffentlicht Ports, indem es eigene netfilter-Regeln einfügt. Diese Regeln werden vor den ufw-Regeln ausgewertet. Deshalb bleibt ein einfacher 4433:4433 aus dem Internet erreichbar, selbst wenn ufw status auf einem System den Port als geschlossen anzeigt. Wenn Sie die Host-Seite an 127.0.0.1 binden, bleibt der Reverse Proxy der einzige Zugangsweg. Die gleiche Falle gilt für jeden Container auf dem Server. Docker Compose auf einem VPS behandelt die übrigen Aspekte.

Das Standard-Image läuft als UID 1000 und GID 1000. Daher muss ./data für dieses Konto beschreibbar sein. Andernfalls beendet sich der Container beim Start mit einem Berechtigungsfehler. sudo chown -R 1000:1000 ./data behebt das. Wenn Ihnen diese Zahlen nicht vertraut sind, lesen Sie zuerst unter welcher UID und GID ein Container Dateien schreibt.

Warum ein persönlicher Suchindex niemals öffentlich erreichbar sein sollte

Hister lauscht standardmäßig auf 127.0.0.1:4433. Dieser Standardwert ist bewusst gewählt. Überlegen Sie, welche Inhalte der Index nach einem Monat Nutzung enthält: interne Wiki-Seiten, Rechnungen, Support-Tickets, die Sie während einer angemeldeten Sitzung erstellt haben, Seiten zum Zurücksetzen von Passwörtern und den vollständigen Text aller anderen Inhalte, die Sie gelesen haben. In der Projektdokumentation steht es ausdrücklich: „Hister überträgt Ihren gesamten Browserverlauf einschließlich der Seiteninhalte zum Server und vom Server.“

Eine offengelegte Passwortdatenbank muss zunächst noch geknackt werden. Ein offengelegter persönlicher Index liegt dagegen im Klartext vor und ist bereits durchsuchbar. Er erfordert daher mehr Schutz als die kleine selbst gehostete Anwendung, der er ähnelt.

Daraus ergeben sich zwei Punkte. Hister benötigt standardmäßig keine Authentifizierung. Ein Reverse Proxy veröffentlicht daher allein noch keine Zugriffskontrolle und stellt eine durchsuchbare Kopie Ihrer gelesenen Inhalte für jeden bereit, der den Hostnamen kennt. Der MCP-Endpunkt wird standardmäßig ebenfalls unter /mcp bereitgestellt. Ohne Token kann jeder Client, der ihn erreicht, eine Suche im Index ausführen.

Konfigurieren Sie die Authentifizierung, bevor der Dienst erstmals localhost verlässt. Für einen einzelnen Benutzer benötigen Sie nur app.access_token, ein gemeinsames Secret, das von der Browsererweiterung, dem Terminal-Client und jedem MCP-Client gesendet wird. Für mehrere Personen setzen Sie user_handling: true und erstellen Konten:

sudo -u hister hister create-user alice --admin --config /etc/hister/config.yml

Der Befehl fordert ein Passwort mit mindestens 8 Zeichen an. Jedes Konto erhält eigene Dokumente und ein persönliches API-Token. Der Kontoinhaber kann dieses auf der Profilseite oder mit dem Flag --regen-token bei hister update-user neu generieren. Durch das Generieren eines neuen Tokens wird das bisherige Token sofort ungültig. Danach müssen Sie jedes vom Konto verwendete Gerät aktualisieren.

Lassen Sie app.public unverändert, sofern Sie diese Funktion nicht ausdrücklich benötigen. Der öffentliche Modus erlaubt die nicht authentifizierte Suche, Vorschauen, das Bereitstellen von Dateien und die MCP-Suche. Schreibzugriffe, der Zugriff auf den Verlauf und administrative Vorgänge bleiben dabei blockiert.

Reverse Proxy, TLS und die Firewall

Hister stellt HTTPS nicht selbst bereit. Beenden Sie TLS (Transport Layer Security) daher davor. Caddy ist der kürzeste Weg, weil es Zertifikate über ACME (Automatic Certificate Management Environment) selbst anfordert und erneuert.

hister.example.com {
    reverse_proxy 127.0.0.1:4433
}

Laden Sie die Konfiguration mit sudo systemctl reload caddy neu. Bevor ein Zertifikat ausgestellt werden kann, müssen zwei Bedingungen erfüllt sein: Der A-Record für hister.example.com muss auf diesen Server zeigen, und Port 80 muss geöffnet sein, weil dort die HTTP-01-Challenge beantwortet wird. Fehlt eine dieser Bedingungen, zeigt der Browser statt der Seite einen TLS-Fehler an, und das Caddy-Log protokolliert die fehlgeschlagene Challenge wiederholt.

Schließen Sie anschließend alle anderen Ports.

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

Port 4433 fehlt absichtlich in dieser Liste.

server.base_url muss einschließlich des Schemas mit der Adresse übereinstimmen, die Sie im Browser eingeben. Bei einer Abweichung wird die Oberfläche mit unformatiertem Text und fehlenden Bildern geladen, weil der Server seine Asset-Links aus base_url erstellt und der Browser sie anschließend von einer Origin anfordert, die nicht antwortet. Verwenden Sie dieselbe URL in der Browser-Erweiterung.

Index befüllen

Die Browser-Erweiterung ist der wichtigste Collector. Installieren Sie sie über Mozilla Add-ons oder den Chrome Web Store, öffnen Sie die Optionsseite, setzen Sie die Server-URL auf https://hister.example.com und fügen Sie das Zugriffstoken ein. Anschließend erfasst sie den Titel, den vollständigen Text, das HTML und das Favicon jeder von Ihnen besuchten Seite und sendet diese Daten an Ihren Server. Die Extraktion erfolgt clientseitig im Browser. Die Erweiterung kontaktiert keine Drittanbieter. Die einzige externe Anfrage betrifft das Favicon der Seite.

Die clientseitige Extraktion ermöglicht einen privaten Index. Die Erweiterung sieht eine Seite genau so, wie Sie sie sehen, also nach der Anmeldung und nach dem Rendern. Dadurch werden beispielsweise interne Wiki-Seiten oder kostenpflichtige Artikel korrekt indexiert, ohne dass Ihr Server die Zugangsdaten benötigt. Gleichzeitig kann alles, was Sie aufrufen, in den Index aufgenommen werden. Deshalb sollten Sie zuerst Ausschlussregeln festlegen, bevor Sie weitere Inhalte hinzufügen.

Ausschlussregeln befinden sich bei einer Einzelbenutzerinstallation in rules.json oder benutzerbezogen in der Datenbank. Der Tab Rules in der Weboberfläche ist die einfachste Möglichkeit, sie zu bearbeiten. Die Regeln sind reguläre Go-Ausdrücke, die gegen die vollständige URL abgeglichen werden:

^https://mail\.example\.com
^https://bank\.example\.com
.*?utm_source=

Ein Muster wie ^mail.example.com stimmt nie überein, weil die geprüfte Zeichenfolge mit https:// beginnt. Ein abschließendes $ schlägt bei jeder URL mit Query-String ebenfalls fehl, weil die Query-Parameter beim Abgleich erhalten bleiben.

Vorhandene Verläufe werden aus der Datenbank des Browsers importiert. Der Befehl muss daher auf dem Rechner ausgeführt werden, der das Browserprofil enthält, also auf Ihrem Laptop und nicht auf dem VPS. Installieren Sie dort dasselbe Binary und geben Sie den Server an:

export HISTER_TOKEN='your-access-token'
hister import browser firefox -u https://hister.example.com -t "$HISTER_TOKEN"

Ein Import wird als fortsetzbarer Job mit dem Namen browser-import-YYYY-MM-DD ausgeführt. Sie können ihn daher unterbrechen und später erneut starten. Lesezeichen-Dienste werden auf dieselbe Weise importiert. Dazu gehören Linkwarden, Karakeep, Wallabag, Linkding, Readeck und Shaarli. Bei einem erneuten Import werden nur Inhalte abgerufen, die neuer sind als beim letzten Import.

Dateien auf dem Server werden indexiert, indem Sie Verzeichnisse in der Konfiguration angeben:

indexer:
  directories:
    - path: '/var/lib/hister/documents'
      label: 'documents'
      filetypes: ['pdf', 'docx', 'md', 'txt']

PDF-, DOCX-, Markdown-, Org-mode- und gültige UTF-8-Textdateien werden als vollständiger Text eingelesen. Fotos und Videos gehören nicht zu dieser Liste. Für eine Bildersammlung benötigen Sie daher einen Server, der Gesichter, Orte und Datumsangaben indexiert, statt Text zu verarbeiten. PhotoPrism und Immich werden für diese Aufgabe normalerweise miteinander verglichen. Mit hister index https://example.com fügen Sie eine einzelne Seite hinzu. Ganze Websites für andere Werkzeuge in bereinigten Text umzuwandeln, ist eine separate Aufgabe. Dafür verwenden Sie selbst gehostete Crawler, die Seiten in bereinigten Text umwandeln.

Die Suche basiert auf Feldern. Daher lohnt es sich, zehn Minuten in die Abfragesprache zu investieren:

"connection reset" domain:github.com added:<30d
title:(wireguard|nftables) -tutorial sort:-visits

Einen Coding-Agent auf den eigenen Index über MCP verweisen

MCP (Model Context Protocol) ist die Schnittstelle, über die ein Assistent Tools auf einem Server aufruft. Hister stellt diese Schnittstelle unter POST /mcp über dieselbe Basis-URL und den Streamable-HTTP-Transport bereit und bietet search, get_preview und get_history an. Die Authentifizierung verwendet dasselbe Bearer-Token wie der übrige API-Zugriff.

{
  "mcpServers": {
    "hister": {
      "url": "https://hister.example.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_ACCESS_TOKEN"
      }
    }
  }
}

Ein X-Access-Token-Header ist eine Alternative zu Authorization.

Der Vorteil liegt darin, welche Inhalte der Agent durchsucht. Eine offene Websuche liefert die Ergebnisse, die heute am höchsten eingestuft werden. Bei schnelllebiger Software handelt es sich dabei oft um die Dokumentation einer Version, die Sie nicht einsetzen. Der eigene Index liefert die Seite, die Sie bereits gelesen und zum Aufbewahren ausgewählt haben. get_preview stellt die gespeicherte Kopie bereit. Dadurch bleibt die Antwort verfügbar, auch wenn die ursprüngliche Seite offline geht. Geben Sie dem Agenten beide Quellen, wenn Sie zusätzlich öffentliche Ergebnisse benötigen: ein von SearXNG unterstütztes Browser-Such-Tool fügt das offene Web als separates Tool hinzu. Sobald Sie mehr als einen dieser Endpunkte betreiben, sollten Sie MCP-Server auf einem VPS hosten lesen, weil alle diese Endpunkte dasselbe Problem mit der Erreichbarkeit haben.

Festplattenplatz, Backups und Wartung

Die Dokumentation veranschlagt pro indexierter Seite etwa 100 KB einschließlich der komprimierten Vorschau. Hunderttausend Seiten entsprechen damit ungefähr 10 GB. Es gibt kein Quoten-System. Zwei Einstellungen werden häufig verwechselt: indexer.max_file_size_mb (standardmäßig 1 MiB) begrenzt die Größe einer einzelnen überwachten Datei. server.max_batch_body_size (standardmäßig 40 MiB) begrenzt die Größe einer einzelnen API-Anfrage.

Das von app.directory angegebene Verzeichnis enthält index.db mit den sprachspezifischen Indexdateien, db.sqlite3 für Konten und Jobs, data/html/ für Vorschauen sowie rules.json. Ein Backup besteht aus einem gestoppten Dienst, einer Kopie dieses gesamten Verzeichnisses und einer Kopie der Konfigurationsdatei. hister export backup.json schreibt Dokumente für die Migration als JSON. Es handelt sich dabei nicht um ein Server-Backup.

Zwei Wartungsbefehle sollten Sie kennen. hister reindex erstellt die Suchindizes neu. Das ist nach Änderungen an den Indexer-Einstellungen erforderlich. Wenn der Speicherverbrauch während eines großen Imports steigt, setzen Sie detect_languages: false im Abschnitt indexer und erstellen Sie die Indizes neu. hister cleanup entfernt verwaiste Vorschau- und Favicon-Dateien, die nach Löschvorgängen zurückbleiben.

Beim Löschen handelt es sich um eine Abfrage. Führen Sie sie daher zuerst im Testmodus aus:

hister delete 'domain:example.com' --dry --verbose

Eine gelöschte Seite wird erneut hinzugefügt, wenn ein Collector sie weiterhin übermittelt. Fügen Sie die Ausschlussregel daher vor dem Löschen hinzu.

Die AGPLv3 wird erst relevant, wenn Sie den Code ändern. Für die eigene Nutzung einer unveränderten Kopie bestehen keine entsprechenden Pflichten. Wenn Sie Hister ändern und anderen Ihre Version über ein Netzwerk zur Verfügung stellen, müssen Sie ihnen gemäß der Lizenz den geänderten Quellcode anbieten.

Fehlerbilder und die angezeigten Meldungen

Der Server startet nicht. Entweder wird Port 4433 bereits verwendet, oder die Konfigurationsdatei enthält einen YAML-Syntaxfehler. sudo ss -lntp | grep 4433 zeigt, welcher Prozess den Port belegt, und journalctl -u hister -n 50 --no-pager gibt den Analysefehler aus.

Die Oberfläche wird geladen, sieht aber fehlerhaft aus. Unleserlicher Text und fehlende Bilder bedeuten, dass server.base_url nicht mit der URL in der Adressleiste übereinstimmt. Ein abschließender Schrägstrich gilt ebenfalls als Abweichung.

Die Erweiterung stellt keine Verbindung her. Die Server-URL in der Erweiterung muss mit base_url übereinstimmen. Der Server muss laufen und aktuell sein. Außerdem kann eine Firewall dazwischen die Verbindung ohne Meldung auf der Seite blockieren. Firefox schreibt Erweiterungsprotokolle nicht in die normale Konsole. Öffnen Sie about:debugging#/runtime/this-firefox und prüfen Sie die Erweiterung Hister.

Der Container wird beim Start beendet. Ein Berechtigungsfehler für ./data bedeutet, dass das Verzeichnis einem anderen UID als 1000 gehört. UID 1000 ist das Konto innerhalb des Standard-Images.

403 Forbidden bei einer Administrationsroute. POST /api/reindex und POST /api/cleanup sind bei aktivierter Benutzerverwaltung nur für Administratoren verfügbar. Ein normales Konto wird dort daher abgewiesen.

Der Speicherverbrauch steigt während eines Imports. Die Spracherkennung über eine umfangreiche Historie ist die häufigste Ursache. Setzen Sie detect_languages: false und führen Sie anschließend hister reindex aus.

FAQ

Wie unterscheidet sich Hister von SearXNG?

SearXNG ist ein Metasuch-Proxy: Er leitet Ihre Suchanfrage an öffentliche Suchmaschinen weiter und gibt deren Ergebnisse ohne Tracking zurück. Der Index gehört daher diesen Suchmaschinen. Hister verwaltet einen eigenen Volltextindex der von Ihnen besuchten Seiten und gespeicherten Dateien. Hister beantwortet die Frage „Wo habe ich das gelesen?“, während SearXNG die Frage „Was sagt das Web?“ beantwortet. Beide Systeme lösen unterschiedliche Probleme. Viele Benutzer betreiben sie auf einem Server gemeinsam.

Ist es sicher, meinen gesamten Browserverlauf auf einem VPS abzulegen?

Nur, wenn Sie die erforderlichen Schutzmaßnahmen zuvor umgesetzt haben. Hister bindet standardmäßig an 127.0.0.1:4433 und erfordert keine Authentifizierung. Setzen Sie app.access_token oder user_handling: true, schalten Sie einen Reverse Proxy mit TLS davor und halten Sie Port 4433 in der Firewall geschlossen. Ein Volltextindex Ihrer gelesenen Inhalte liegt als Klartext vor. Jeder, der den Port erreicht, kann daher sämtliche Inhalte lesen, ohne etwas knacken zu müssen.

Benötige ich die Browsererweiterung, oder kann ich einfach meinen Browserverlauf importieren?

Der Import ist eine einmalige Nachinitialisierung. Er liest die Datenbank des Browsers mit dessen eigenem Verlauf. Deshalb wird er auf dem Computer ausgeführt, auf dem sich das Browserprofil befindet, und nicht auf dem Server. Die Erweiterung hält den Index anschließend aktuell. Sie erfasst auch Seiten hinter einer Anmeldung, weil sie deren Inhalt nach dem Rendern im Browser extrahiert. Ein typischer Ablauf besteht aus einem einmaligen Import und der anschließenden Verwendung der Erweiterung.

Kann ein Coding-Agent meinen Hister-Index durchsuchen?

Ja. Hister ist ein MCP-Server (model context protocol) unter POST /mcp auf Ihrer Basis-URL. Er stellt search, get_preview und get_history bereit. Konfigurieren Sie den Client mit https://your-host/mcp und einem Authorization: Bearer-Header, der Ihr Zugriffstoken enthält. Der Agent durchsucht dann die Dokumentation, die Sie tatsächlich gelesen haben, in der von Ihnen gelesenen Version. Er verwendet nicht die Ergebnisse, die heute in einer öffentlichen Suchmaschine höher eingestuft werden.