SSD Nodes Learn Hosting plans →
Rehberler Matt ConnorYazan Matt Connor · Güncellendi 2026-08-28

Kendi sunucunuzda Hister arama motoru nasıl kurulur?

Hister ile ziyaret ettiğiniz sayfaları ve dosyalarınızı indeksleyerek kişisel arama motorunuzu oluşturun. Docker kurulumu, TLS yapılandırması ve MCP entegrasyonu detayları.

Hister nedir ve ne değildir

Hister, kendi sunucunuzda barındırdığınız kişisel bir arama motorudur. Ziyaret ettiğiniz sayfaların ve sakladığınız dosyaların tam metin dizinini oluşturur; ardından bu koleksiyonda bir web arayüzü, terminal istemcisi, HTTP API veya bir yapay zeka asistanı aracılığıyla arama yapmanıza olanak tanır. Hister tek bir soruya yanıt verir: "Bunu nerede okumuştum?"

Çoğu kullanıcı bu kavramla SearXNG üzerinden karşılaşır; ancak bu ikisi aynı araç değildir. Bildiğiniz ad eski Searx ise, bu projeye 2023 yılından beri herhangi bir kod commit edilmedi ve SearXNG onu sürdürerek geliştirmeye devam ediyor. Bu nedenle bugün kuracağınız yeni instance her durumda SearXNG olur. SearXNG bir metasearch proxy'dir. Sorgunuzu SearXNG'e gönderirsiniz; o da sizin adınıza diğer arama motorlarına sorar ve izleme bilgileri kaldırılmış sonuçları size iletir. Dizin bu arama motorlarına aittir. Hister ise kendisine sağladığınız içerikten kendi dizinini oluşturur: browser extension tarafından yakalanan sayfalar, içe aktarılan browser history, taranan URL'ler ve belirttiğiniz dizinlerdeki dosyalar. Self-host edilen bir SearXNG instance'ı public web'e özel erişim sağlar. Hister ise kendi okuma içerikleriniz üzerinde arama yapmanızı sağlar. Bu görevler farklıdır; bu nedenle her ikisini aynı sunucuda çalıştırmak normaldir. İkisini çalıştıracaksanız, SearXNG'in aramalarınızın ne kadarını gerçekten gizlediğini bilmek yararlı olur; çünkü sorguların kendisini gizlemek yerine arama motorlarında IP adresiniz yerine sunucunuzun IP adresini kullanır.

Hister, AGPLv3 (GNU Affero General Public License, sürüm 3) veya sonraki sürümleri altında lisanslanmış özgür bir yazılımdır. Telemetri içermez ve herhangi bir bulut servisine ihtiyaç duymaz. Bu kılavuz, 2026-07-28 tarihinde güncel sürüm olan v0.17.0 sürümünü temel almaktadır. Herhangi bir komutu kopyalamadan önce güncel etiketi görmek için sürümler sayfasına göz atın ve bulduğunuz etiketi sabitleyin.

Hister uygulamasını neden bir VPS üzerinde barındırmalısınız?

Bir dizin ancak tam olduğunda kullanışlıdır; tam olması için de siz okuma yaparken sunucunun çalışıyor olması gerekir. Dizüstü bilgisayarlar günün yarısında uyku modundadır. Bu süre zarfında telefonunuzda açtığınız sayfalar sunucuya ulaşmaz ve gece başlatılan bir içe aktarma işlemi asla başlamaz. Bir VPS (sanal özel sunucu) sürekli çalışır durumdadır; böylece sahip olduğunuz tüm cihazlar aynı dizine veri gönderir ve siz uyurken tarayıcı çalışmaya devam eder.

İkinci neden ise ayrıştırmadır. user_handling: true ayarını app bölümünde yapılandırmak, her hesaba kendi kimlik bilgilerini ve kendi belge koleksiyonunu tek bir örnek üzerinde sağlar. Böylece tek bir sunucu, bir hane halkının veya küçük bir ekibin verilerini, kimse bir başkasının okuma geçmişini arayamayacak şekilde barındırabilir.

Üçüncü neden altyapıdır. VPS üzerinde zaten genel erişime açık bir hostname ve sertifika bulunur. Tarayıcı uzantısının, denetiminizde olmayan bir ağ üzerinden sunucuya ulaşabilmesi için bunlar gerekir. Aynı ikili sunucunun başka bir bölümünde de kullanılır; çünkü openGym ilk passkey kaydını o sırada etkin olan hostname üzerinden yapar. Bu nedenle ilk hesap oluşturulmadan önce hostname ve sertifikanın kesinleştirilmesi gerekir.

Kurulum yolu bir: release binary

Hister, her platform için bir adet binary dosyası sunar. Dosyayı checksums dosyası ile birlikte indirin ve kurulumdan önce doğrulayın.

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

Başarılı bir sonuç, hister_0.17.0_linux_amd64: OK satırını döndürür. FAILED satırı, indirilen dosyanın hasarlı veya değiştirilmiş olduğu anlamına gelir; bu durumda kurulum yapmayın, dosyayı tekrar indirin.

Binary dosyasını kurun, ardından bir sistem hesabı ve bu hesabın kullanacağı dizinleri oluşturun.

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 varsayılan bir yapılandırma dosyası oluşturur ve binary dosyasının bu makinede çalıştığını doğrular. Yanlış mimari için yapılan bir indirme işlemi, tam bu noktada cannot execute binary file: Exec format error hatası ile başarısız olur.

Önemli olan birkaç ayarı düzenleyin. Oluşturulan dosyanın geri kalanı olduğu gibi bırakılabilir.

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

Token değerini openssl rand -hex 32 ile oluşturun. Dosya artık bir kimlik bilgisi içerdiğinden, servis başlamadan önce dosya izinlerini kısıtlayın.

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

systemd altında çalıştırma

/etc/systemd/system/hister.service dosyasını oluşturun:

[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, yapılandırma yolu için belgelenmiş ortam değişkenidir; bu sayede birim, hister hesabının ev dizinine bağımlı olmaz. ProtectSystem=strict, bu servis için tüm dosya sistemini salt okunur hale getirir; bu nedenle ReadWritePaths ile veri dizininin belirtilmesi gerekir. ProtectHome=yes, /home dizinini servisten gizler; dolayısıyla /home altındaki izlenen bir dizin, indeksleyiciye boş görünecektir. Oradaki dosyaları indekslemeniz gerekiyorsa bu satırı kaldırın.

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/

Son komut tarafından yazdırılan herhangi bir HTTP durum kodu, sürecin dinlemede olduğu anlamına gelir. curl: (7) Failed to connect, sürecin dinlemede olmadığını gösterir; journalctl -u hister -n 50 --no-pager ise bunun nedenini açıklayacaktır.

Kurulum yolu iki: Docker Compose

İmaj, her sürüm için bir etiketle GitHub container registry üzerinde yayınlanmaktadır.

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

Her yapılandırma anahtarının HISTER__<SECTION>__<KEY> biçiminde bir ortam değişkeni geçersiz kılma (override) seçeneği bulunur; ayırıcı olarak iki alt çizgi kullanılır. Bu sayede container dağıtımı için mount edilmiş bir yapılandırma dosyasına ihtiyaç duyulmaz. HISTER_ACCESS_TOKEN değerini, compose dosyasının yanındaki bir .env dosyasında tutun. Eğer bir dosyayı düzenlemeyi tercih ederseniz, docker run --rm ghcr.io/asciimoo/hister:v0.17.0 create-config > config.yml komutu varsayılan değerleri yazdırır.

Yukarıdaki iki satırın yanlış yapılandırılması kolaydır ve her ikisini de anlamak önemlidir.

Container içindeki adres 0.0.0.0:4433 olmalıdır. Bir container kendi ağ ad alanına (network namespace) sahiptir; bu nedenle orada 127.0.0.1 adresine bağlı bir süreç yalnızca o container içinden erişilebilirdir ve yayınlanan portun yönlendirecek bir hedefi kalmaz.

Yayınlanan port 4433:4433 değil, 127.0.0.1:4433:4433 şeklinde yazılmalıdır. Docker, portları kendi netfilter kurallarını ekleyerek yayınlar. Bu kurallar ufw kurallarından önce değerlendirilir; dolayısıyla basit bir 4433:4433, ufw status komutu portun kapalı olduğunu gösterse bile internetten erişilebilir kalır. Host tarafını 127.0.0.1 adresine bağlamak, reverse proxy'yi içeriye giden tek yol haline getirir. Aynı tuzak sunucudaki her container için geçerlidir ve VPS üzerinde Docker Compose rehberi bu konunun geri kalanını ele almaktadır.

Varsayılan imaj UID 1000 ve GID 1000 ile çalışır; bu nedenle ./data dizininin bu hesap tarafından yazılabilir olması gerekir, aksi takdirde container başlangıçta izin hatası vererek durur. sudo chown -R 1000:1000 ./data komutu bu sorunu çözer. Eğer bu numaralar size tanıdık gelmiyorsa, önce bir container'ın hangi UID ve GID ile dosya yazdığı konusunu okuyun.

Kişisel bir arama dizinini dış dünyaya açmak neden en büyük risktir

Hister varsayılan olarak 127.0.0.1:4433 adresini dinler ve bu varsayılan ayar bilinçli olarak seçilmiştir. Bir aylık kullanımın ardından dizinin neleri barındırdığını düşünün: dahili wiki sayfaları, faturalar, oturum açmışken oluşturduğunuz destek talepleri, parola sıfırlama sayfaları ve okuduğunuz diğer her şeyin tam metni. Proje belgeleri bunu doğrudan belirtir: "Hister, tüm tarama geçmişinizi, sayfa içerikleriyle birlikte sunucuya ve sunucudan iletir."

Sızdırılmış bir parola veritabanının yine de kırılması gerekir. Sızdırılmış bir kişisel dizin ise düz metin halindedir ve halihazırda aranabilir durumdadır; bu nedenle, benzeri olduğu küçük self-hosted uygulamalardan çok daha fazla özen gerektirir.

Bundan iki gerçek ortaya çıkar. Hister kutudan çıktığı haliyle kimlik doğrulaması gerektirmez, bu nedenle yalnızca bir reverse proxy kullanmak, ana bilgisayar adını öğrenen herkese okuma geçmişinizin aranabilir bir kopyasını yayınlamanıza neden olur. MCP uç noktası da varsayılan olarak /mcp adresinde sunulur ve bir token olmadan bu noktaya erişen her istemci dizin üzerinde arama yapabilir.

Servisi ilk kez localhost dışına çıkarmadan önce kimlik doğrulamasını yapılandırın. Tek bir kullanıcı için yalnızca app.access_token yeterlidir; bu, tarayıcı eklentisi, terminal istemcisi ve tüm MCP istemcileri tarafından gönderilen paylaşımlı bir gizli anahtardır. Birden fazla kişi için user_handling: true ayarını yapın ve hesaplar oluşturun:

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

Komut, en az 8 karakter uzunluğunda bir parola ister. Her hesap kendi belgelerine ve kişisel bir API token değerine sahip olur; kullanıcı bu token değerini profil sayfasından veya hister update-user üzerinde --regen-token bayrağını kullanarak yeniden oluşturabilir. Yeni bir token oluşturmak, bir öncekini derhal geçersiz kılar; bu nedenle o hesabı kullanan her cihazın daha sonra güncellenmesi gerekir.

Gerçekten istemediğiniz sürece app.public ayarına dokunmayın. Genel mod (public mode), yazma işlemlerini, geçmiş erişimini ve yönetici işlemlerini engellemeye devam ederken; kimlik doğrulaması gerektirmeyen arama, önizleme, dosya sunumu ve MCP aramasına izin verir.

Reverse proxy, TLS ve güvenlik duvarı

Hister HTTPS hizmetini kendisi sunmaz, bu nedenle TLS (transport layer security) sonlandırma işlemini ön tarafta gerçekleştirin. Caddy en kısa yoldur; çünkü ACME (automatic certificate management environment) üzerinden sertifikaları kendi başına talep eder ve yeniler.

hister.example.com {
    reverse_proxy 127.0.0.1:4433
}

sudo systemctl reload caddy komutu ile yeniden yükleyin. Bir sertifikanın düzenlenebilmesi için iki koşulun sağlanması gerekir: hister.example.com için tanımlanan A kaydı bu sunucuyu işaret etmelidir ve HTTP-01 sınaması (challenge) buradan yanıtlandığı için 80 numaralı port açık olmalıdır. Bunlardan biri eksik olduğunda, tarayıcı sayfa yerine bir TLS hatası döndürür ve Caddy günlüğü başarısız olan sınamayı tekrarlar.

Ardından diğer tüm portları kapatın.

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

4433 numaralı port bu listede kasten yer almamaktadır. Genel bir ana makine adı (hostname) içeriye erişmenin tek yolu değildir; ayrıca aynı loopback portuna yönlendirilmiş bir onion servisi, herhangi bir DNS kaydı veya gelen port açma işlemi gerektirmeden, kendi cihazlarınızdan dizininize ulaşmanızı sağlar.

server.base_url, tarayıcıya yazdığınız adresle (şema dahil) eşleşmelidir. Eşleşme sağlanmadığında arayüz, biçimlendirilmemiş metinler ve eksik görsellerle yüklenir; çünkü sunucu varlık bağlantılarını base_url üzerinden oluşturur ve tarayıcı bunları yanıt vermeyen bir kaynaktan talep eder. Aynı URL tarayıcı eklentisine de girilmelidir.

Dizini doldurma

Tarayıcı eklentisi temel toplayıcıdır. Eklentiyi Mozilla Add-ons veya Chrome Web Store üzerinden kurun, seçenekler sayfasını açın, sunucu URL'sini https://hister.example.com olarak ayarlayın ve erişim belirtecini (access token) yapıştırın. Eklenti, ziyaret ettiğiniz her sayfanın başlığını, tam metnini, HTML içeriğini ve favicon'unu yakalayarak sunucunuza gönderir. Ayıklama işlemi istemci tarafında, tarayıcı içinde gerçekleşir. Eklenti hiçbir üçüncü tarafla iletişim kurmaz; dışarıya yaptığı tek istek sayfa favicon'u içindir.

İstemci tarafında ayıklama, özel bir dizinin mümkün olmasını sağlar. Eklenti, sayfayı tıpkı sizin gördüğünüz gibi, oturum açıldıktan ve render edildikten sonra görür; bu sayede dahili bir wiki sayfası veya ücretli bir makale doğru şekilde dizine eklenir ve sunucunuzun kimlik bilgilerine ihtiyacı kalmaz. Bu durum aynı zamanda baktığınız her şeyin dizin için bir aday olduğu anlamına gelir; atlama kurallarının daha fazla içerikten önce gelmesinin nedeni budur.

Atlama kuralları tek kullanıcılı kurulumlarda rules.json dosyasında veya veritabanında kullanıcı bazlı olarak tutulur; web arayüzündeki Kurallar (Rules) sekmesi bunları düzenlemenin en kolay yoludur. Bu kurallar, tam URL ile eşleştirilen Go düzenli ifadeleridir:

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

^mail.example.com gibi bir desen asla eşleşmez, çünkü test edilen dizge https:// ile başlar. Sondaki bir $ de sorgu dizisi (query string) içeren herhangi bir URL'de başarısız olur, çünkü sorgu parametreleri eşleştirme sırasında korunur.

Mevcut geçmiş, tarayıcının kendi veritabanı okunarak içe aktarılır; bu nedenle komut, tarayıcı profilini barındıran makinede, yani VPS'nizde değil dizüstü bilgisayarınızda çalıştırılmalıdır. Aynı ikili dosyayı oraya kurun ve sunucuya yönlendirin:

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

İçe aktarma işlemi browser-import-YYYY-MM-DD adında, kaldığı yerden devam edebilen bir iş olarak çalışır; bu sayede işlemi kesip daha sonra tekrar başlatabilirsiniz. Yer imi servisleri de Linkwarden, Karakeep, Wallabag, Linkding, Readeck ve Shaarli dahil olmak üzere aynı şekilde içe aktarılır ve tekrarlanan bir içe aktarma işlemi yalnızca bir öncekinden daha yeni olanları getirir.

Sunucudaki dosyalar, yapılandırma dosyasında dizinler belirtilerek dizine eklenir:

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

PDF, DOCX, Markdown, Org mode ve geçerli UTF-8 metin dosyaları tam metin olarak okunur. Fotoğraflar ve videolar bu listede yer almaz; bu nedenle bir fotoğraf kütüphanesi, metinden ziyade yüzleri, yerleri ve tarihleri dizine ekleyen bir sunucuya ihtiyaç duyar ve PhotoPrism ve Immich bu iş için genellikle karşılaştırılan iki araçtır. Tek bir sayfa hister index https://example.com ile eklenir. Tüm siteleri diğer araçlar için temiz metne dönüştürmek ayrı bir iştir ve sayfaları temiz metne dönüştüren self-hosted tarayıcılar tarafından yönetilir.

Arama alan tabanlıdır, bu nedenle sorgu dili on dakikalık bir okumaya değerdir:

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

Kendi dizininizi MCP üzerinden bir kodlama aracına yönlendirme

MCP (model context protocol), bir asistanın sunucudaki araçları çağırmak için kullandığı arayüzdür. Hister, bunu aynı temel URL altında, streamable HTTP aktarımı üzerinden POST /mcp adresinde sunar ve search, get_preview ile get_history öğelerini kullanıma açar. Kimlik doğrulama, API'nin geri kalanıyla aynı bearer token kullanılarak yapılır. Araç çağırma yeni bir konuysa, kendiniz küçük bir agent döngüsü yazmak, bunun gibi bir endpoint'in asistana gerçekte ne sağladığını görmenin en hızlı yoludur.

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

Bir X-Access-Token başlığı, Authorization yerine alternatif olarak kullanılabilir.

Buradaki değer, aracın neyi aradığıyla ilgilidir. Açık web araması, bugün neyin üst sıralarda yer aldığına göre sonuç döndürür; bu da hızlı değişen yazılımlar için genellikle kullanmadığınız bir sürümün dokümantasyonudur. Kendi dizininiz ise zaten okuduğunuz ve saklamayı seçtiğiniz sayfayı döndürür; get_preview ise depolanan kopyayı sunduğu için, orijinal sayfa çevrimdışı olsa bile yanıt varlığını korur. Genel sonuçları da istiyorsanız araca her iki kaynağı da verin: SearXNG destekli bir tarayıcı arama yeteneği, açık web'i ayrı bir araç olarak ekler. Bu uç noktalardan birden fazlasını çalıştırdığınızda, bir VPS üzerinde MCP sunucuları barındırmak konusunu okumaya değer; çünkü her biri bu erişim sorunuyla karşı karşıyadır.

Disk, yedekler ve bakım

Dokümantasyon, sıkıştırılmış önizleme dahil olmak üzere dizinlenmiş bir sayfayı yaklaşık 100 KB olarak hesaplar; dolayısıyla yüz bin sayfa kabaca 10 GB yer kaplar. Bir kota sistemi bulunmamaktadır. İki ayar sıklıkla birbirine karıştırılır: indexer.max_file_size_mb (varsayılan olarak 1 MiB) tek bir izlenen dosyayı, server.max_batch_body_size (varsayılan olarak 40 MiB) ise tek bir API isteğini sınırlar.

app.directory tarafından belirtilen dizin; dile özgü dizin dosyalarını içeren index.db, hesaplar ve işler için db.sqlite3, önizlemeler için data/html/ ve rules.json öğelerini barındırır. Bir yedekleme; durdurulmuş bir servis ile bu dizinin tamamının ve yapılandırma dosyasının bir kopyasından oluşur. hister export backup.json, belgeleri taşıma işlemleri için JSON formatında yazar; bu bir sunucu yedeklemesi değildir.

İki bakım komutunu bilmekte fayda vardır. hister reindex, dizinleyici ayarları değiştirildikten sonra gerekli olan arama dizinlerini yeniden oluşturur. Büyük bir içe aktarma sırasında bellek kullanımı artarsa, indexer bölümünde detect_languages: false ayarını yapılandırın ve yeniden dizinleme yapın. hister cleanup, silme işlemleri sonucunda geride kalan yetim önizleme ve favicon dosyalarını temizler.

Silme işlemi bir sorgu olduğu için önce kuru çalışma (dry mode) modunda çalıştırın:

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

Silinen bir sayfa, bir toplayıcı (collector) tarafından gönderilmeye devam edilirse geri gelir; bu nedenle silme işleminden önce atlama kuralını ekleyin.

AGPLv3 lisansı yalnızca kodu değiştirmeniz durumunda önem kazanır. Değiştirilmemiş bir kopyayı kendiniz için çalıştırmanın herhangi bir yükümlülüğü yoktur. Hister üzerinde değişiklik yapar ve sürümünüzü başkalarının bir ağ üzerinden kullanmasına izin verirseniz, lisans gereği değiştirilmiş kaynak kodunuzu onlara sunmanız gerekir.

Hata modları ve karşılaşacağınız dizgeler

Sunucu başlamıyor. Ya 4433 numaralı port zaten kullanımda ya da yapılandırma dosyasında bir YAML sözdizimi hatası var. sudo ss -lntp | grep 4433 portu neyin tuttuğunu gösterir, journalctl -u hister -n 50 --no-pager ise ayrıştırma hatasını yazdırır.

Arayüz yükleniyor ancak bozuk görünüyor. Karışık metinler ve eksik görseller, server.base_url değerinin adres çubuğundaki URL ile eşleşmediği anlamına gelir. Sondaki bir eğik çizgi (/) uyumsuzluk olarak kabul edilir.

Eklenti bağlanmıyor. Eklentideki sunucu URL'si base_url ile aynı olmalı, sunucu çalışır durumda ve güncel olmalıdır; aradaki bir güvenlik duvarı hiçbir hata mesajı vermeden bağlantıyı engelliyor olabilir. Firefox, eklenti günlüklerini normal konsolun dışında tutar: about:debugging#/runtime/this-firefox adresini açın ve Hister eklentisini inceleyin.

Kapsayıcı başlangıçta kapanıyor. ./data üzerindeki bir izin hatası, dizinin varsayılan imaj içindeki hesap olan 1000 dışındaki bir UID'ye ait olduğu anlamına gelir.

Yönetici rotasından 403 Forbidden hatası. Kullanıcı yönetimi açıkken POST /api/reindex ve POST /api/cleanup yalnızca yöneticiye özeldir, bu nedenle sıradan bir hesabın erişimi reddedilir.

İçe aktarma sırasında bellek kullanımı artıyor. Büyük bir geçmiş üzerinde dil algılama işlemi genellikle buna neden olur. detect_languages: false değerini ayarlayın ve ardından hister reindex komutunu çalıştırın.

FAQ

Hister, SearXNG'den nasıl farklıdır?

SearXNG bir metasearch proxy'sidir: sorgunuzu genel arama motorlarına iletir ve izleme verilerinden arındırılmış sonuçları döndürür; dolayısıyla dizin bu arama motorlarına aittir. Hister ise ziyaret ettiğiniz sayfaların ve sakladığınız dosyaların kendi tam metin dizinini tutar. Bu sayede SearXNG "web ne diyor" sorusuna yanıt verirken, Hister "bunu nerede okumuştum" sorusuna yanıt verir. İkisi farklı sorunları çözer ve birçok kullanıcı her ikisini de tek bir sunucuda çalıştırır.

Tüm tarama geçmişimi bir VPS üzerinde tutmak güvenli midir?

Yalnızca gerekli güvenlik önlemleri alındığında güvenlidir. Hister varsayılan olarak 127.0.0.1:4433 adresine bağlanır ve kimlik doğrulaması gerektirmez. app.access_token veya user_handling: true ayarlarını yapılandırın, önüne TLS destekli bir reverse proxy koyun ve 4433 numaralı portu güvenlik duvarında kapalı tutun. Okuma geçmişinizin tam metin dizini düz metin halindedir; bu nedenle porta erişebilen herkes, herhangi bir kırma işlemi yapmadan her şeyi okuyabilir.

Tarayıcı eklentisine ihtiyacım var mı, yoksa geçmişimi içe aktarabilir miyim?

İçe aktarma işlemi tek seferlik bir geçmiş yüklemesidir. Tarayıcının kendi geçmiş veritabanını okur, bu nedenle sunucuda değil, tarayıcı profilini barındıran bilgisayarda çalıştırılır. Eklenti, dizini o andan itibaren güncel tutar ve sayfa içeriği tarayıcıda oluşturulduktan sonra veriyi çektiği için giriş yapılması gereken sayfaların içeriğini de yakalayabilir. Yaygın kullanım şekli, bir kez içe aktarma yapıp ardından eklentiyi kullanmaktır.

Bir kodlama ajanı Hister dizinimde arama yapabilir mi?

Evet. Hister, temel URL'niz üzerinde POST /mcp adresinde bir MCP (model context protocol) sunucusudur ve search, get_preview ve get_history uç noktalarını dışa açar. İstemciyi, erişim jetonunuzu içeren bir Authorization: Bearer başlığı ile https://your-host/mcp adresine yönlendirin. Ajan, genel arama motorlarında bugün üst sıralarda yer alan sonuçlar yerine, bizzat okuduğunuz belgeleri ve okuduğunuz sürümleri arayacaktır.