SSD Nodes Learn Hosting plans →
Anleitungen Matt ConnorVon Matt Connor · Aktualisiert 2026-08-28

Hister selbst hosten: persönliche Suchmaschine einrichten

Installieren Sie Hister auf einem VPS und durchsuchen Sie besuchte Seiten und Dateien per Volltext. Mit Binary- oder Docker-Setup, 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 Webseiten 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 begegnen diesem Konzept über SearXNG. Die beiden Werkzeuge sind jedoch nicht identisch. Wenn Sie den älteren Namen Searx kennen, hat dieses Projekt seit 2023 keinen Code-Commit mehr erhalten, und SearXNG führt es weiter. Eine neue Instanz, die Sie heute einrichten, ist daher in jedem Fall SearXNG. SearXNG ist ein Metasuch-Proxy. Ihre Suchanfrage geht an SearXNG. SearXNG fragt in Ihrem Auftrag 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 bereitstellen: von einer Browser-Erweiterung erfasste Seiten, importierter Browserverlauf, 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 üblich, beide Dienste auf demselben Server zu betreiben. In diesem Fall sollten Sie wissen, wie viel Ihrer Suchvorgänge SearXNG tatsächlich verbirgt. Bei den Suchmaschinen ersetzt SearXNG Ihre IP-Adresse durch die IP-Adresse Ihres Servers, anstatt die Suchanfragen selbst zu verbergen.

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

Warum 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 während des Lesens lief. Ein Laptop befindet sich den halben Tag im Energiesparmodus. 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 aktiv. Dadurch überträgt jedes Ihrer Geräte Inhalte in 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 festlegen, erhält jedes Konto auf einer einzelnen Instanz eigene Zugangsdaten und eine eigene Dokumentsammlung. Ein Server kann dadurch einen Haushalt oder ein kleines Team aufnehmen, ohne dass jemand die Lektüre 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 Browser-Erweiterung, um den Server aus einem Netzwerk zu erreichen, das Sie nicht kontrollieren. Dieses Paar erfüllt auf dem System noch eine weitere Funktion, denn openGym registriert seinen ersten Passkey unter dem Hostnamen, der zu diesem Zeitpunkt aktiv ist. Daher müssen der Name und das Zertifikat feststehen, bevor das erste Konto erstellt wird.

Installationsweg 1: das Release-Binary

Hister veröffentlicht pro Plattform ein Binary. Laden Sie es zusammen mit der Prüfsummendatei herunter und verifizieren 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. Der Befehl bestätigt außerdem, dass das Binary auf diesem Computer 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.

Bearbeiten Sie die wenigen relevanten Einstellungen. Der übrige Inhalt 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 Zugangstoken. Beschränken Sie daher die Dateiberechtigungen, 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 Kontos hister 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 überwachtetes Verzeichnis unter /home würde dem Indexer daher 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.

Installationsvariante zwei: Docker Compose

Das Image wird in der GitHub Container Registry veröffentlicht. Für jedes Release gibt es ein eigenes 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 in der Form HISTER__<SECTION>__<KEY>. Als Trennzeichen dienen zwei Unterstriche. Daher benötigt eine Container-Bereitstellung keine eingebundene Konfigurationsdatei. Legen Sie HISTER_ACCESS_TOKEN in einer .env-Datei neben der Compose-Datei ab. Wenn Sie stattdessen eine Datei bearbeiten möchten, gibt docker run --rm ghcr.io/asciimoo/hister:v0.17.0 create-config > config.yml die Standardwerte aus.

Die beiden folgenden Zeilen werden leicht falsch konfiguriert. Beide Zusammenhänge sollten Sie verstehen.

Die Adresse im Container muss 0.0.0.0:4433 lauten. 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 Docker den Verkehr 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. Daher 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. Dieselbe Falle gilt für jeden Container auf dem Server. Docker Compose auf einem VPS behandelt die übrigen Aspekte.

Das Standard-Image wird mit UID 1000 und GID 1000 ausgeführt. 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 Problem. 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. Das ist bewusst so festgelegt. Überlegen Sie, welche Inhalte der Index nach einem Monat Nutzung enthält: interne Wiki-Seiten, Rechnungen, Support-Tickets, die Sie im eingeloggten Zustand geöffnet 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 geleakte Passwortdatenbank muss zunächst geknackt werden. Ein geleakter 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 wichtige Punkte. Hister benötigt standardmäßig keine Authentifizierung. Ein Reverse Proxy veröffentlicht daher allein bereits eine durchsuchbare Kopie Ihrer gelesenen Inhalte für jeden, der den Hostnamen kennt. Der MCP-Endpunkt wird standardmäßig außerdem unter /mcp bereitgestellt. Ohne Token kann jeder Client, der ihn erreicht, eine Suche im Index ausführen.

Konfigurieren Sie die Authentifizierung, bevor der Dienst zum ersten Mal nicht mehr nur auf localhost erreichbar ist. Ein einzelner Benutzer benötigt nur app.access_token. Dabei handelt es sich um ein gemeinsames Geheimnis, das von der Browser-Erweiterung, 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 Besitzer kann dieses über die Profilseite oder mit dem Flag --regen-token bei hister update-user neu generieren. Beim Erzeugen eines neuen Tokens wird das vorherige sofort ungültig. Daher müssen anschließend alle Geräte aktualisiert werden, die dieses Konto verwenden.

Lassen Sie app.public unverändert, sofern Sie dies nicht ausdrücklich beabsichtigen. Der öffentliche Modus ermöglicht die nicht authentifizierte Suche, Vorschauen, das Bereitstellen von Dateien und die MCP-Suche. Schreibvorgänge, der Zugriff auf den Verlauf und Administrationsvorgänge bleiben dabei weiterhin gesperrt.

Reverse Proxy, TLS und die Firewall

Hister stellt selbst kein HTTPS bereit. Beenden Sie TLS (Transport Layer Security) daher davor. Caddy ist dafür 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. Vor der Ausstellung eines Zertifikats 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. Wenn eine dieser Bedingungen fehlt, zeigt der Browser einen TLS-Fehler statt der Seite an, und das Caddy-Log protokolliert die fehlgeschlagene Challenge wiederholt.

Schließen Sie anschließend alle übrigen 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. Ein öffentlicher Hostname ist nicht der einzige Zugangsweg. Auch ein Onion Service, der auf denselben Loopback-Port zeigt, erreicht Ihren Index von Ihren eigenen Geräten aus, ohne DNS-Eintrag und ohne einen eingehenden Port öffnen zu müssen.

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 diese anschließend von einer Origin anfordert, die nicht antwortet. Dieselbe URL wird in die Browser-Erweiterung eingetragen.

Index befüllen

Die Browser-Erweiterung ist der wichtigste Collector. Installieren Sie sie über Mozilla Add-ons oder den Chrome Web Store, öffnen Sie ihre Optionsseite, setzen Sie die Server-URL auf https://hister.example.com und fügen Sie das Zugriffstoken ein. Danach erfasst sie den Titel, den vollständigen Text, 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 nach der Anmeldung und nach dem Rendering genau so wie Sie. Deshalb werden auch eine interne Wiki-Seite oder ein kostenpflichtiger Artikel korrekt indexiert. Ihr Server benötigt dafür niemals die Zugangsdaten. Gleichzeitig ist alles, was Sie ansehen, ein möglicher Kandidat für den Index. Deshalb sollten Sie Ausschlussregeln festlegen, bevor Sie weitere Inhalte hinzufügen.

Ausschlussregeln befinden sich bei einer Einzelbenutzerinstallation in rules.json oder pro Benutzer in der Datenbank. Der Tab Rules in der Weboberfläche ist die einfachste Möglichkeit, sie zu bearbeiten. Dabei handelt es sich um Go-Regular-Expressions, die gegen die vollständige URL abgeglichen werden:

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

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

Vorhandene Verläufe werden aus der Datenbank des Browsers importiert. Deshalb muss dieser Befehl auf dem Rechner ausgeführt werden, auf dem das Browserprofil liegt, also auf Ihrem Laptop und nicht auf dem VPS. Installieren Sie dort dasselbe Binary und verweisen Sie es auf den Server:

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

Ein Import läuft als fortsetzbarer Job mit dem Namen browser-import-YYYY-MM-DD. Sie können ihn daher unterbrechen und später erneut starten. Lesezeichen-Dienste werden auf dieselbe Weise importiert, darunter Linkwarden, Karakeep, Wallabag, Linkding, Readeck und Shaarli. Bei einem erneuten Import werden nur Einträge abgerufen, die seit dem letzten Import hinzugekommen sind.

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 dazu. Für eine Bildersammlung benötigen Sie daher einen Server, der Gesichter, Orte und Datumsangaben statt Text indexiert. PhotoPrism und Immich werden für diese Aufgabe normalerweise miteinander verglichen. Eine einzelne Seite fügen Sie mit hister index https://example.com hinzu. Ganze Websites für andere Tools in sauberen Text umzuwandeln ist eine separate Aufgabe. Dafür gibt es Self-Hosted-Crawler, die Seiten in sauberen Text umwandeln.

Die Suche arbeitet feldbasiert. Deshalb 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 ansetzen

MCP (Model Context Protocol) ist die Schnittstelle, über die ein Assistent Tools auf einem Server aufruft. Hister stellt die Schnittstelle unter POST /mcp unter derselben Basis-URL über den Streamable-HTTP-Transport bereit und bietet search, get_preview und get_history an. Für die Authentifizierung wird dasselbe Bearer-Token wie für den übrigen API-Zugriff verwendet. Wenn Tool-Aufrufe für Sie neu sind, ist das Schreiben einer kleinen Agentenschleife der schnellste Weg, um zu sehen, welche Daten ein Endpunkt wie dieser tatsächlich an einen Assistenten übergibt.

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

Ein X-Access-Token-Header funktioniert als Alternative zu Authorization.

Der Vorteil liegt darin, wonach der Agent sucht. Die offene Websuche liefert die Ergebnisse, die heute am besten ranken. Bei schnelllebiger Software handelt es sich dabei häufig um die Dokumentation einer Version, die Sie nicht einsetzen. Ihr eigener 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, wenn die ursprüngliche Seite offline geht. Geben Sie dem Agent beide Quellen, wenn Sie zusätzlich öffentliche Ergebnisse benötigen: ein von SearXNG unterstütztes Browser-Such-Skill 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 für jeden davon dasselbe Problem mit der öffentlichen Erreichbarkeit gilt.

Festplatte, Backups und Wartung

Die Dokumentation rechnet pro indexierter Seite mit etwa 100 KB einschließlich der komprimierten Vorschau. Hunderttausend Seiten entsprechen damit ungefähr 10 GB. Es gibt kein Quotasystem. 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 Aufträge, data/html/ für Vorschauen sowie rules.json. Ein Backup besteht aus einem angehaltenen Dienst, einer Kopie dieses gesamten Verzeichnisses und einer Kopie der Konfigurationsdatei. hister export backup.json schreibt Dokumente für die Migration als JSON. Es ist kein Server-Backup.

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

Das Löschen erfolgt über eine Abfrage. Führen Sie sie daher zuerst im Dry-Run-Modus aus:

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

Eine gelöschte Seite wird wieder angelegt, wenn ein Collector sie weiterhin übermittelt. Fügen Sie die Skip-Regel daher vor dem Löschen hinzu.

Die AGPLv3 ist erst relevant, wenn Sie den Code ändern. Der Betrieb einer unveränderten Kopie für den eigenen Gebrauch verpflichtet Sie zu nichts. Wenn Sie Hister ändern und anderen Personen Ihre Version über ein Netzwerk zur Verfügung stellen, müssen Sie ihnen laut 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 Parse-Fehler 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 die Protokolle der Erweiterung nicht in die normale Konsole: Öffnen Sie about:debugging#/runtime/this-firefox und prüfen Sie die Hister-Erweiterung.

Der Container wird beim Start beendet. Ein Berechtigungsfehler für ./data bedeutet, dass das Verzeichnis einem anderen UID als 1000 gehört. 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 für eine umfangreiche Historie ist normalerweise die 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: Es leitet Ihre Anfrage 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 beantwortet, „Was sagt das Web?“. Die beiden Systeme lösen unterschiedliche Probleme. Viele Nutzer betreiben beide auf einem Server.

Ist es sicher, meinen vollständigen Browserverlauf auf einem VPS zu speichern?

Erst, wenn Sie die erforderlichen Schutzmaßnahmen 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 alles lesen, ohne etwas knacken zu müssen.

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

Der Import ist eine einmalige Nachbefüllung. Er liest die Verlaufdatenbank des Browsers und läuft daher auf dem Computer, auf dem das Browserprofil liegt, nicht auf dem Server. Die Erweiterung hält den Index anschließend aktuell. Sie erfasst auch Seiten hinter einer Anmeldung, weil sie den Inhalt nach dem Rendern der Seite im Browser extrahiert. Ein gängiger Ablauf ist ein einmaliger Import, gefolgt von 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. Richten Sie den Client auf https://your-host/mcp und übergeben Sie einen Authorization: Bearer-Header mit Ihrem Zugriffstoken. Der Agent durchsucht dann die Dokumentation, die Sie tatsächlich gelesen haben, in der von Ihnen gelesenen Version. Er verwendet nicht einfach die Ergebnisse, die heute in einer öffentlichen Suchmaschine weit oben stehen.