Jak uruchomić Hister: własna wyszukiwarka lokalna
Dowiedz się, jak samodzielnie hostować Hister na VPS. Instrukcja obejmuje instalację binarną i Docker, konfigurację TLS, zabezpieczenie logowania oraz integrację z MCP.
Czym jest Hister, a czym nie jest
Hister to osobista wyszukiwarka z możliwością samodzielnego hostowania. Indeksuje ona pełną treść odwiedzonych stron oraz przechowywanych plików, umożliwiając przeszukiwanie tej kolekcji za pomocą interfejsu WWW, klienta terminalowego, API HTTP lub asystenta AI (sztucznej inteligencji). Hister odpowiada na jedno pytanie: gdzie to czytałem.
Większość użytkowników poznaje tę koncepcję za pośrednictwem SearXNG, ale te dwa narzędzia nie są tym samym. Jeśli znana jest nazwa starszego projektu Searx, od 2023 nie dodano do niego żadnego kodu, a SearXNG rozwija go dalej, dlatego nowa instancja uruchomiona obecnie będzie w praktyce instancją SearXNG. SearXNG jest proxy metawyszukiwarki. Zapytanie trafia do niego, następnie SearXNG wysyła je w imieniu użytkownika do innych wyszukiwarek i zwraca ich wyniki po usunięciu mechanizmów śledzenia. Indeks należy do tych wyszukiwarek. Hister tworzy własny indeks na podstawie dostarczonych treści: stron przechwyconych przez rozszerzenie przeglądarki, zaimportowanej historii przeglądania, adresów URL poddanych crawlingowi oraz plików w wskazanych katalogach. Samodzielnie hostowana instancja SearXNG zapewnia prywatny dostęp do publicznego Internetu. Hister umożliwia wyszukiwanie we własnych materiałach. Są to różne zadania, dlatego uruchomienie obu narzędzi na jednym serwerze jest typowym rozwiązaniem. W takim przypadku warto wiedzieć, jak dużą część wyszukiwania SearXNG faktycznie ukrywa, ponieważ w wyszukiwarkach zastępuje adres IP użytkownika adresem IP serwera, ale nie ukrywa samych zapytań.
Hister to wolne oprogramowanie na licencji AGPLv3 (GNU Affero General Public License, wersja 3) lub nowszej. Nie posiada telemetrii i nie wymaga usług chmurowych. Niniejszy przewodnik odnosi się do wersji v0.17.0, która była aktualnym wydaniem w dniu 2026-07-28. Przed skopiowaniem jakichkolwiek poleceń należy sprawdzić stronę wydań w celu ustalenia aktualnego tagu, a następnie użyć znalezionej wersji.
Dlaczego warto hostować Hister samodzielnie na VPS
Indeks jest użyteczny tylko wtedy, gdy jest kompletny, a staje się kompletny tylko wtedy, gdy serwer działa w trakcie czytania. Laptop przechodzi w stan uśpienia przez połowę dnia. Strony otwierane na telefonie w tym czasie nigdy do niego nie dotrą, a import zaplanowany na noc nigdy się nie rozpocznie. Serwer VPS (virtual private server) działa nieprzerwanie, dzięki czemu każde posiadane urządzenie wysyła dane do tego samego indeksu, a crawler pracuje, gdy użytkownik śpi.
Drugim powodem jest separacja. Ustawienie user_handling: true w sekcji app nadaje każdemu kontu własne dane uwierzytelniające oraz własną kolekcję dokumentów w ramach jednej instancji. Jeden serwer może zatem obsługiwać gospodarstwo domowe lub mały zespół bez ryzyka, że ktokolwiek będzie przeszukiwał zasoby czytane przez inne osoby.
Trzeci powód dotyczy infrastruktury. VPS ma już publiczną nazwę hosta i certyfikat, których rozszerzenie przeglądarki potrzebuje, aby połączyć się z serwerem z sieci, nad którą nie ma się kontroli. Ta sama para jest wykorzystywana także w innym miejscu na serwerze, ponieważ openGym rejestruje pierwszy klucz dostępu względem nazwy hosta aktywnej w danym momencie, dlatego nazwa i certyfikat muszą być ustalone przed utworzeniem pierwszego konta.
Instalacja ścieżką pierwszą: binarka wydania
Hister dostarcza jedną binarkę na platformę. Pobierz ją wraz z plikiem sum kontrolnych i zweryfikuj przed instalacją.
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.txtPoprawny wynik to pojedyncza linia hister_0.17.0_linux_amd64: OK. Linia FAILED oznacza, że pobrany plik jest uszkodzony lub zmodyfikowany, dlatego należy pobrać go ponownie zamiast przeprowadzać instalację.
Zainstaluj binarkę, a następnie utwórz konto systemowe oraz katalogi, z których będzie korzystać.
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.ymlcreate-config tworzy domyślny plik konfiguracyjny i jednocześnie potwierdza, że binarka uruchamia się na danej maszynie. Pobranie pliku dla niewłaściwej architektury zakończy się w tym miejscu błędem cannot execute binary file: Exec format error.
Edytuj kluczowe ustawienia. Pozostała część wygenerowanego pliku może pozostać bez zmian.
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.comWygeneruj token za pomocą openssl rand -hex 32. Plik zawiera teraz dane uwierzytelniające, dlatego należy ograniczyć do niego dostęp przed uruchomieniem usługi.
sudo chown root:hister /etc/hister/config.yml
sudo chmod 640 /etc/hister/config.ymlUruchomienie pod kontrolą systemd
Utwórz plik /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.targetHISTER_CONFIG to udokumentowana zmienna środowiskowa określająca ścieżkę konfiguracji, dzięki czemu jednostka nie zależy od katalogu domowego konta hister. ProtectSystem=strict ustawia cały system plików jako tylko do odczytu dla tej usługi, dlatego ReadWritePaths musi wskazywać katalog z danymi. ProtectHome=yes ukrywa /home przed usługą, więc monitorowany katalog wewnątrz /home będzie wyglądał dla indeksatora na pusty. Usuń tę linię, jeśli musisz indeksować pliki w tej lokalizacji.
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/Dowolny kod stanu HTTP zwrócony przez powyższe polecenie oznacza, że proces nasłuchuje. curl: (7) Failed to connect oznacza brak nasłuchiwania, a journalctl -u hister -n 50 --no-pager wskaże przyczynę.
Druga ścieżka instalacji: Docker Compose
Obraz jest publikowany w rejestrze kontenerów GitHub, z jednym tagiem na każde wydanie.
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:4433Każdy klucz konfiguracyjny posiada nadpisanie środowiskowe w formacie HISTER__<SECTION>__<KEY>, gdzie separatorem są dwa znaki podkreślenia, dzięki czemu wdrożenie kontenerowe nie wymaga montowania pliku konfiguracyjnego. Przechowuj HISTER_ACCESS_TOKEN w pliku .env obok pliku compose. Jeśli wolisz edytować plik, docker run --rm ghcr.io/asciimoo/hister:v0.17.0 create-config > config.yml wyświetli wartości domyślne.
Powyższe dwie linie łatwo błędnie zinterpretować, dlatego warto zrozumieć obie.
Adres wewnątrz kontenera musi wynosić 0.0.0.0:4433. Kontener posiada własną przestrzeń nazw sieci, więc proces powiązany z 127.0.0.1 jest osiągalny tylko z wnętrza tego kontenera, a opublikowany port nie ma czego przekazywać.
Opublikowany port zapisuje się jako 127.0.0.1:4433:4433, a nie 4433:4433. Docker publikuje porty poprzez wstawianie własnych reguł netfilter, a reguły te są oceniane przed regułami ufw, więc zwykłe 4433:4433 pozostaje osiągalne z Internetu nawet na maszynie, gdzie ufw status wskazuje, że port jest zamknięty. Powiązanie strony hosta z 127.0.0.1 sprawia, że reverse proxy pozostaje jedyną drogą dostępu. Ta sama pułapka dotyczy każdego kontenera na serwerze, a Docker Compose na VPS omawia resztę tego zagadnienia.
Domyślny obraz działa z UID 1000 i GID 1000, więc ./data musi być zapisywalne przez to konto, w przeciwnym razie kontener zatrzyma się przy starcie z błędem uprawnień. sudo chown -R 1000:1000 ./data rozwiązuje ten problem. Jeśli te liczby są nieznane, przeczytaj najpierw z jakim UID i GID kontener zapisuje pliki.
Dlaczego osobisty indeks wyszukiwania jest najgorszym zasobem do udostępnienia
Hister domyślnie nasłuchuje na 127.0.0.1:4433 i jest to ustawienie celowe. Należy rozważyć, co zawiera indeks po miesiącu użytkowania: wewnętrzne strony wiki, faktury, zgłoszenia do pomocy technicznej otwarte po zalogowaniu, strony resetowania haseł oraz pełną treść wszystkiego, co zostało przeczytane. Dokumentacja projektu stwierdza to wprost: "Hister przesyła całą historię przeglądania wraz z zawartością stron do i z serwera".
Wyciekła baza haseł wymaga jeszcze złamania. Wyciekły indeks osobisty jest tekstem jawnym i gotowym do przeszukiwania, dlatego wymaga większej ochrony niż mała, samodzielnie hostowana aplikacja, na którą wygląda.
Wynikają z tego dwa fakty. Hister nie wymaga uwierzytelniania w konfiguracji domyślnej, więc sam reverse proxy publikuje przeszukiwalną kopię historii przeglądania każdemu, kto pozna nazwę hosta. Punkt końcowy MCP jest również domyślnie udostępniany pod /mcp i bez tokena każdy klient, który uzyska do niego dostęp, może przeszukiwać indeks.
Skonfiguruj uwierzytelnianie, zanim usługa po raz pierwszy opuści localhost. Dla jednego użytkownika wystarczy app.access_token, jeden współdzielony sekret przesyłany przez rozszerzenie przeglądarki, klienta terminalowego oraz dowolnego klienta MCP. Dla wielu osób ustaw user_handling: true i utwórz konta:
sudo -u hister hister create-user alice --admin --config /etc/hister/config.ymlPolecenie wymaga podania hasła o długości co najmniej 8 znaków. Każde konto otrzymuje własne dokumenty oraz osobisty token API, który właściciel może wygenerować ponownie na stronie profilu lub za pomocą flagi --regen-token w hister update-user. Wygenerowanie nowego tokena natychmiast unieważnia poprzedni, więc każde urządzenie korzystające z tego konta musi zostać po tym fakcie zaktualizowane.
Pozostaw app.public bez zmian, chyba że jest to zamierzone działanie. Tryb publiczny umożliwia nieuwierzytelnione wyszukiwanie, podgląd, serwowanie plików oraz wyszukiwanie przez MCP, blokując jednocześnie zapisywanie danych, dostęp do historii oraz operacje administracyjne.
Reverse proxy, TLS i firewall
Hister nie obsługuje samodzielnie protokołu HTTPS, dlatego terminację TLS (transport layer security) należy zrealizować przed nim. Caddy stanowi najkrótszą drogę, ponieważ automatycznie żąda i odnawia certyfikaty za pośrednictwem ACME (automatic certificate management environment).
hister.example.com {
reverse_proxy 127.0.0.1:4433
}Przeładuj go za pomocą sudo systemctl reload caddy. Przed wydaniem certyfikatu muszą zostać spełnione dwa warunki: rekord A dla hister.example.com musi wskazywać na ten serwer, a port 80 musi być otwarty, ponieważ to tam następuje odpowiedź na wyzwanie HTTP-01. W przypadku braku któregokolwiek z nich, przeglądarka zamiast strony wyświetli błąd TLS, a dziennik Caddy będzie powtarzał informację o nieudanym wyzwaniu.
Następnie zamknij wszystkie pozostałe porty.
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw statusPort 4433 celowo pominięto na tej liście. Publiczna nazwa hosta nie jest jedynym sposobem dostępu, a usługa onion skierowana na ten sam port loopback pozwala uzyskać dostęp do indeksu z własnych urządzeń bez rekordu DNS i bez otwierania jakichkolwiek portów przychodzących.
server.base_url musi być zgodne z adresem wpisywanym w przeglądarce, wliczając w to schemat. Gdy wartości te nie są zgodne, interfejs ładuje się bez stylów i brakujących obrazów, ponieważ serwer buduje linki do zasobów na podstawie base_url, a przeglądarka następnie żąda ich z pochodzenia, które nie odpowiada. Ten sam adres URL należy wprowadzić w rozszerzeniu przeglądarki.
Wypełnianie indeksu
Rozszerzenie przeglądarki jest głównym narzędziem zbierającym dane. Zainstaluj je z Mozilla Add-ons lub Chrome Web Store, otwórz stronę opcji, ustaw adres URL serwera na https://hister.example.com i wklej token dostępu. Rozszerzenie przechwytuje tytuł, pełny tekst, kod HTML oraz ikonę favicon każdej odwiedzanej strony i przesyła je na serwer. Ekstrakcja odbywa się po stronie klienta, wewnątrz przeglądarki. Rozszerzenie nie kontaktuje się z żadnymi stronami trzecimi, a jedyne zewnętrzne żądanie dotyczy pobrania ikony favicon strony.
Ekstrakcja po stronie klienta umożliwia stworzenie prywatnego indeksu. Rozszerzenie widzi stronę dokładnie tak samo jak użytkownik, po zalogowaniu i wyrenderowaniu zawartości, dzięki czemu wewnętrzne strony wiki lub płatne artykuły są poprawnie indeksowane, a serwer nie potrzebuje danych uwierzytelniających. Oznacza to również, że każda przeglądana treść jest kandydatem do indeksowania, dlatego reguły pomijania (skip rules) są ważniejsze niż dodawanie kolejnych treści.
Reguły pomijania znajdują się w rules.json w instalacjach jednoosobowych lub są przechowywane w bazie danych dla każdego użytkownika. Najwygodniejszym sposobem ich edycji jest zakładka Rules w interfejsie webowym. Są to wyrażenia regularne języka Go, dopasowywane do pełnego adresu URL:
^https://mail\.example\.com
^https://bank\.example\.com
.*?utm_source=Wzorzec taki jak ^mail.example.com nigdy nie zostanie dopasowany, ponieważ testowany ciąg znaków zaczyna się od https://. Końcowy znak $ również spowoduje niepowodzenie w przypadku każdego adresu URL zawierającego ciąg zapytania (query string), ponieważ parametry zapytania są zachowywane podczas dopasowywania.
Istniejąca historia przeglądania jest importowana poprzez odczyt bazy danych przeglądarki. Polecenie to należy uruchomić na maszynie, na której znajduje się profil przeglądarki, czyli na laptopie, a nie na serwerze VPS. Zainstaluj tam ten sam plik binarny i wskaż adres serwera:
export HISTER_TOKEN='your-access-token'
hister import browser firefox -u https://hister.example.com -t "$HISTER_TOKEN"Import działa jako wznawialne zadanie o nazwie browser-import-YYYY-MM-DD, więc można je przerwać i uruchomić ponownie w późniejszym czasie. Serwisy zakładek importuje się w ten sam sposób, w tym Linkwarden, Karakeep, Wallabag, Linkding, Readeck oraz Shaarli. Powtórny import pobiera tylko te elementy, które są nowsze od ostatnio zaimportowanych.
Pliki na serwerze są indeksowane poprzez wskazanie katalogów w konfiguracji:
indexer:
directories:
- path: '/var/lib/hister/documents'
label: 'documents'
filetypes: ['pdf', 'docx', 'md', 'txt']Pliki PDF, DOCX, Markdown, Org mode oraz poprawne pliki tekstowe UTF-8 są odczytywane jako pełny tekst. Zdjęcia i wideo nie znajdują się na tej liście, dlatego biblioteka obrazów wymaga serwera, który indeksuje twarze, miejsca i daty, a nie tekst. PhotoPrism i Immich to dwa rozwiązania, które zazwyczaj są porównywane pod kątem tego zadania. Pojedynczą stronę można dodać za pomocą hister index https://example.com. Przekształcanie całych witryn w czysty tekst dla innych narzędzi to osobne zadanie, obsługiwane przez samodzielnie hostowane crawlery, które konwertują strony na czysty tekst.
Wyszukiwanie opiera się na polach, dlatego warto poświęcić dziesięć minut na zapoznanie się z językiem zapytań:
"connection reset" domain:github.com added:<30d
title:(wireguard|nftables) -tutorial sort:-visitsWskazanie agentowi programistycznemu własnego indeksu przez MCP
MCP (model context protocol) to interfejs, którego asystent używa do wywoływania narzędzi na serwerze. Hister udostępnia go pod adresem POST /mcp w ramach tego samego bazowego adresu URL, za pośrednictwem transportu streamable HTTP, oraz udostępnia search, get_preview i get_history. Uwierzytelnianie odbywa się za pomocą tego samego tokena bearer co w pozostałej części API. Jeśli wywoływanie narzędzi jest nowym zagadnieniem, samodzielne napisanie małej pętli agenta to najszybszy sposób, aby zobaczyć, jakie informacje punkt końcowy taki jak ten faktycznie przekazuje asystentowi.
{
"mcpServers": {
"hister": {
"url": "https://hister.example.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN"
}
}
}
}Nagłówek X-Access-Token działa jako alternatywa dla Authorization.
Wartość tego rozwiązania tkwi w tym, co przeszukuje agent. Otwarte wyszukiwanie w sieci zwraca wyniki aktualnie najwyżej oceniane, co w przypadku szybko zmieniającego się oprogramowania często oznacza dokumentację wersji, której użytkownik nie posiada. Własny indeks zwraca stronę, którą już przeczytano i zdecydowano się zachować, a get_preview serwuje zapisaną kopię, dzięki czemu odpowiedź pozostaje dostępna nawet po wyłączeniu oryginalnej strony. Należy udostępnić agentowi oba źródła, jeśli wymagane są również wyniki publiczne: narzędzie wyszukiwania w przeglądarce oparte na SearXNG dodaje otwartą sieć jako osobne narzędzie. Po uruchomieniu więcej niż jednego z tych punktów końcowych warto przeczytać hosting serwerów MCP na VPS, ponieważ każdy z nich współdzieli ten sam problem z ekspozycją.
Dyski, kopie zapasowe i utrzymanie
Dokumentacja szacuje jedną zaindeksowaną stronę na około 100 KB, wliczając skompresowany podgląd, więc sto tysięcy stron zajmuje w przybliżeniu 10 GB. System limitów (quota) nie istnieje. Dwa ustawienia są często mylone: indexer.max_file_size_mb (domyślnie 1 MiB) ogranicza rozmiar pojedynczego monitorowanego pliku, a server.max_batch_body_size (domyślnie 40 MiB) ogranicza pojedyncze żądanie API.
Katalog wskazany przez app.directory przechowuje index.db z plikami indeksów dla poszczególnych języków, db.sqlite3 dla kont i zadań, data/html/ dla podglądów oraz rules.json. Kopia zapasowa to zatrzymana usługa oraz kopia całego tego katalogu wraz z plikiem konfiguracyjnym. hister export backup.json zapisuje dokumenty w formacie JSON w celu migracji i nie stanowi kopii zapasowej serwera.
Warto znać dwa polecenia konserwacyjne. hister reindex przebudowuje indeksy wyszukiwania, co jest wymagane po zmianie ustawień indeksatora. Jeśli podczas dużego importu zużycie pamięci wzrasta, należy ustawić detect_languages: false w sekcji indexer i ponownie zaindeksować dane. hister cleanup usuwa osierocone pliki podglądów i ikon favicon, które pozostały po usunięciu stron.
Usuwanie jest zapytaniem, więc najpierw należy uruchomić je w trybie próbnym (dry mode):
hister delete 'domain:example.com' --dry --verboseUsunięta strona powróci, jeśli kolektor nadal będzie ją przesyłał, dlatego przed usunięciem należy dodać regułę pomijania (skip rule).
Licencja AGPLv3 ma znaczenie tylko w przypadku modyfikacji kodu. Uruchamianie niezmodyfikowanej kopii na własny użytek nie nakłada żadnych zobowiązań. Jeśli zmodyfikujesz Hister i udostępnisz innym osobom korzystanie ze swojej wersji przez sieć, licencja wymaga udostępnienia im zmodyfikowanego kodu źródłowego.
Tryby awarii i komunikaty, które zobaczysz
Serwer nie uruchamia się. Port 4433 jest już zajęty lub plik konfiguracyjny zawiera błąd składni YAML. sudo ss -lntp | grep 4433 wskazuje proces blokujący port, a journalctl -u hister -n 50 --no-pager wyświetla błąd parsowania.
Interfejs ładuje się, ale wygląda na uszkodzony. Pomieszany tekst i brakujące obrazy oznaczają, że server.base_url nie pasuje do adresu URL w pasku przeglądarki. Ukośnik na końcu adresu jest traktowany jako niezgodność.
Rozszerzenie nie łączy się. Adres URL serwera w rozszerzeniu musi być identyczny z base_url, serwer musi działać i być aktualny, a firewall znajdujący się pomiędzy nimi może blokować połączenie bez wyświetlania komunikatu na stronie. Firefox przechowuje dzienniki rozszerzeń poza standardową konsolą: otwórz about:debugging#/runtime/this-firefox i sprawdź rozszerzenie Hister.
Kontener kończy działanie przy starcie. Błąd uprawnień do ./data oznacza, że właścicielem katalogu jest UID inny niż 1000, który jest kontem użytkownika wewnątrz domyślnego obrazu.
Błąd 403 Forbidden przy próbie dostępu do ścieżki administratora. POST /api/reindex oraz POST /api/cleanup są dostępne tylko dla administratorów, gdy obsługa użytkowników jest włączona, dlatego zwykłe konto otrzymuje odmowę dostępu.
Zużycie pamięci rośnie podczas importu. Zazwyczaj przyczyną jest wykrywanie języka w obszernej historii. Ustaw detect_languages: false i uruchom hister reindex po zakończeniu operacji.
FAQ
Czym Hister różni się od SearXNG?
SearXNG to metawyszukiwarka działająca jako proxy: przekazuje zapytanie do publicznych wyszukiwarek i zwraca wyniki po usunięciu śledzenia, więc indeks należy do tych wyszukiwarek. Hister przechowuje własny pełnotekstowy indeks odwiedzonych stron oraz przechowywanych plików, dzięki czemu odpowiada na pytanie „gdzie to czytałem”, podczas gdy SearXNG odpowiada na pytanie „co mówi sieć”. Rozwiązują one różne problemy i wiele osób uruchamia oba narzędzia na jednym serwerze.
Czy przechowywanie całej historii przeglądania na VPS jest bezpieczne?
Tylko pod warunkiem wcześniejszego zabezpieczenia dostępu. Hister domyślnie wiąże się z adresem 127.0.0.1:4433 i nie wymaga uwierzytelniania. Należy ustawić app.access_token lub user_handling: true, umieścić przed nim reverse proxy z obsługą TLS i zablokować port 4433 na firewallu. Indeks pełnotekstowy historii przeglądania to zwykły tekst, więc każdy, kto uzyska dostęp do portu, może odczytać wszystko bez konieczności łamania zabezpieczeń.
Czy potrzebuję rozszerzenia przeglądarki, czy mogę po prostu zaimportować historię?
Import to jednorazowe uzupełnienie danych. Odczytuje on własną bazę danych historii przeglądarki, więc działa na komputerze, na którym znajduje się profil przeglądarki, a nie na serwerze. Rozszerzenie dba o aktualność indeksu od tego momentu i przechwytuje strony wymagające logowania, ponieważ wyodrębnia treść w przeglądarce po wyrenderowaniu strony. Typowa konfiguracja to jednorazowy import, a następnie korzystanie z rozszerzenia.
Czy agent programistyczny może przeszukiwać mój indeks Hister?
Tak. Hister jest serwerem MCP (model context protocol) pod adresem POST /mcp w ramach Twojego bazowego URL, udostępniającym search, get_preview oraz get_history. Skieruj klienta na https://your-host/mcp z nagłówkiem Authorization: Bearer zawierającym Twój token dostępu. Agent przeszukuje wtedy dokumentację, którą faktycznie czytałeś, w wersji, w której ją czytałeś, zamiast polegać na tym, co aktualnie znajduje się wysoko w rankingach publicznych wyszukiwarek.