Günlük diziniDockup / saha notu
Note / self-host-searxng

2026'da SearXNG'yi Self-Host Etme: Search API, Rate Limit'ler ve TLS

SearXNG'yi doğru portlar, kalıcı depolama, HTTPS, secret'lar, backup'lar ve upgrade kontrolleriyle self-host edin. Engine'ler sunucu IP'sini engellediğinde sorunu nasıl çözeceğinizi öğrenin.

SearXNG kurulum notlarının çoğu ilk sayfa yüklemesinde sona erer. Bu çok erken bir noktadır: engine'ler sunucu IP'sini engelleyebilir veya formatlar API client'ları için json içermeyebilir. Kullanışlı bir production testi daha kapsamlı olmalıdır — hem HTML hem de JSON search'leri gönderin, sonuçlara birden fazla engine'in katkıda bulunduğunu doğrulayın ve bir test client'ından yapılandırılmış limiter'ı tetikleyin.

SearXNG'nin rolü basittir: privacy odaklı bir metasearch engine ve search API. Operasyonel kapsamı web process'inden daha fazlasını içerir; bu nedenle gerçek veriler gelmeden önce dependency'ler, saklanan state ve public route açıkça tanımlanmalıdır.

Önce SearXNG için başarı kriterini tanımlayın

SearXNG image'ının production mimarisini yanlışlıkla belirlemesine izin vermeyin. Image, 8080 üzerinde çalışan bir process sağlar; storage, routing ve harici gereksinimler yine bilinçli lifecycle'lar gerektirir. Limiter ve bot-detection özellikleri etkinleştirildiğinde SearXNG'nin network contract'ı Redis veya Valkey'dir. Private endpoint'leri internal DNS üzerinde tutun, yalnızca gerekli outbound çağrılara izin verin ve SearXNG'ye kapsamı sınırlandırılmış bir service credential verin.

Deployment; hem HTML hem de JSON search'leri gönderebildiğinde, sonuçlara birden fazla engine'in katkıda bulunduğunu doğruladığında ve bir test client'ından yapılandırılmış limiter'ı tetiklediğinde daha kapsamlı testlere hazırdır. Log'larda transaction'ı takip edin ve upstream-engine latency'sini, eşzamanlı query'leri, result parsing'i ve sunucu IP'sine uygulanan ban'leri izleyin. Bu gözlemler, mevcut topology'nin doğru component'i izole edip etmediğini gösterir.

Değiştirilebilir container'ları kalıcı veriden ayırın

SearXNG için bir recovery manifest'i oluşturun: settings.yml, limiter configuration ve local plugin'ler. Bootstrap işleminden önce /etc/searxng'yi mount edin, zararsız örnek veriler yazın ve bu path'in gerçekten persistent olduğunu kanıtlamak için container'ı değiştirin. Ownership ve boş alanı şimdi kontrol edin; çünkü mount edilmiş ancak yazılamayan bir path, hiç persistence yokmuş gibi davranır.

Backup'ları çalışan sunucudan ayrı bir failure domain'a alın. SearXNG'yi pinned image'ından yeniden oluşturun ve custom engine'lerin, format'ların, limiter rule'larının ve proxy ayarlarının geri geldiğini; bilinen bir query'nin birden fazla engine'den sonuç ürettiğini doğrulayın. persistent-volume guide, bu çalışmayı snapshot ve retention policy'ye dönüştürmenize yardımcı olur.

Geçici setup erişimini kapatın

Bootstrap credential'ları geçicidir; trust model kalıcıdır. SearXNG kullanırken example secret_key değerini olduğu gibi production'a taşımamaya veya public endpoint'te rate control'leri devre dışı bırakmamaya dikkat edin; default olmayan bir secret key kullanın, abuse control'lerini etkinleştirin ve JSON'u yalnızca bir agent veya application gerektirdiğinde expose edin.

SEARXNG_SECRET'a SearXNG'deki rolüne uygun şekilde davranın: hassas değerleri Git dışında tutun, rotation etkilerini belgeleyin ve production'da hiçbir zaman public bir example kullanmayın. Image'ı gereksiz Linux capability'leri olmadan çalıştırın ve yalnızca public application route'unu expose edin. Secret değerleri kaydetmeden administrator etkinliklerini görünür tutun.

Bilinen ve sorunsuz bir SearXNG deployment'ını kaydedin

SearXNG smoke test'ini tekrarlanabilir bir release command'ına veya kısa bir runbook'a dönüştürün. Çıktısı şu sonucu kanıtlamalıdır: hem HTML hem de JSON search'lerini gönderin, sonuçlara birden fazla engine'in katkıda bulunduğunu doğrulayın ve bir test client'ından yapılandırılmış limiter'ı tetikleyin. Application version'ı, container digest'ini, route hostname'ini ve test-data identifier'ını sonuçla birlikte kaydedin.

Aynı kontrolü rutin bir container değişiminden sonra ve settings.yml, limiter configuration ile local plugin'leri başka bir konuma restore ettikten sonra çalıştırın. Restore işlemi; custom engine'ler, format'lar, limiter rule'ları ve proxy ayarları geri geldiğinde ve bilinen bir query birden fazla engine'den sonuç ürettiğinde başarılıdır. Upstream-engine latency'si, eşzamanlı query'ler, result parsing ve sunucu IP'sine uygulanan ban'lerle ilgili timing ve consumption değerlerini karşılaştırın; final action hâlâ başarılı olsa bile büyük bir değişiklik incelenmeye değerdir.

Ardından güvenli bir failure senaryosunu test edin: limiter ve bot-detection özellikleri etkinleştirildiğinde test identity'sinin Redis veya Valkey erişimini geçici olarak engelleyin. SearXNG'nin hatayı görünür hâle getirdiğini ve yıkıcı manual edit'ler olmadan normale döndüğünü doğrulayın. Yalnızca gerekli, redakte edilmiş log excerpt'ini saklayın. Bu dört parçalı gate; startup, persistence, recovery ve failure handling süreçlerini kapsar.

İlk production benzeri instance'ı çalıştırın

Container'ı gerçeğin kaynağı olarak değil, değiştirilebilir bir runtime olarak kullanın.

docker run -d \
  --name searxng \
  --restart unless-stopped \
  -p 127.0.0.1:8080:8080 \
  -v searxng-data:/etc/searxng \
  -e SEARXNG_SECRET=replace-with-a-long-random-value \
  searxng/searxng:latest

Limiter ve bot-detection özellikleri etkinleştirildiğinde Redis veya Valkey için gözden geçirilmiş connection ayarlarını ekleyin; private service'ler için private name'ler kullanın. Expose etmeden önce container user'ını, yazılabilir path'leri ve bound listener'ı inceleyin. Eksiksiz action'ı çalıştırın — hem HTML hem de JSON search'lerini gönderin, sonuçlara birden fazla engine'in katkıda bulunduğunu doğrulayın ve bir test client'ından yapılandırılmış limiter'ı tetikleyin — ve sonucu üreten tam image reference'ını kaydedin.

Proxy başarısının application failure'ını maskelemesini önleyin

SearXNG için tek bir HTTPS hostname expose edin; raw port 8080'i private tutun. HTTPS için server base_url ve trusted proxy header'larını ayarlayın. Bu, browser'ların ve API client'larının birbiriyle yarışan iki farklı adres öğrenmesini önler.

Temiz bir client'tan bilinen ve sorunsuz transaction'ı çalıştırın ve başarısız olan ilk request'i inceleyin. DNS veya TLS yanlışsa custom-domain guide kılavuzunu kullanın. Route'un çalıştığı kanıtlandıktan sonra “engine'ler sunucu IP'sini engelliyor veya formatlar API client'ları için json içermiyor” durumunu ayrı bir application diagnosis olarak ele alın.

Bir sonraki soruyu yanıtlayan log'lar

SearXNG için ilk kullanışlı operational metric; hem HTML hem de JSON search'lerini gönderebilmesi, sonuçlara birden fazla engine'in katkıda bulunduğunu doğrulaması ve bir test client'ından yapılandırılmış limiter'ı tetiklemesidir. Bunu upstream-engine latency'si, eşzamanlı query'ler, result parsing ve sunucu IP'sine uygulanan ban'ler için saturation sinyalleriyle birlikte değerlendirin. Yalnızca process'i kontrol eden bir probe, pahalı dependency'leri çağırmamalı veya upstream kısa süreliğine kullanılamadığında container'ı restart etmemelidir.

Settings syntax'ı, engine definition'ları ve limiter behavior değişebileceğinden upgrade'leri data change olarak değerlendirin; configuration ve image değişikliklerini tek bir review kapsamında deploy edin. Version'ları pin'leyin, restore edilmiş state üzerinde prova yapın ve rollback geçerli kalana kadar önceki image'ı kullanılabilir tutun. Engine'ler sunucu IP'sini engellediğinde veya formatlar API client'ları için json içermediğinde restart öncesindeki log'ları koruyun; bunlar genellikle nedensel mesajı içerir.

SearXNG'yi Dockup lifecycle'ına bağlayın

SearXNG için platform katmanı; port 8080, ingress, TLS, runtime configuration, storage ve dependency reachability'den oluşur. Dockup bu parçaları kendi infrastructure'ı veya müşterinin bağladığı bir server için yeniden oluşturabilir.

Ardından operator product katmanını tamamlar: HTTPS için server base_url ve trusted proxy header'larını ayarlayın; şu access rule'u uygulayın — default olmayan bir secret key kullanın, abuse control'lerini etkinleştirin ve JSON'u yalnızca bir agent veya application gerektirdiğinde expose edin — ve “hem HTML hem de JSON search'lerini gönderin, sonuçlara birden fazla engine'in katkıda bulunduğunu doğrulayın ve bir test client'ından yapılandırılmış limiter'ı tetikleyin” işlemini çalıştırın. Bu testi deployment ile birlikte kaydetmek, automated provisioning ile application readiness kavramlarının karıştırılmasını önler.

Sık sorulan sorular

Production deployment için SearXNG'nin neye ihtiyacı vardır?

SearXNG container'ını port 8080 üzerinden tek bir HTTPS origin'e yönlendirin. Limiter ve bot-detection özellikleri etkinleştirildiğinde supporting network requirement Redis veya Valkey'dir. Hem HTML hem de JSON search'lerini gönderemeden, sonuçlara birden fazla engine'in katkıda bulunduğunu doğrulayamadan ve bir test client'ından yapılandırılmış limiter'ı tetikleyemeden SearXNG'yi hazır kabul etmeyin.

SearXNG'ye ait hangi veriler backup'a dahil edilmelidir?

/etc/searxng'yi persistent hâle getirin ve settings.yml, limiter configuration ile local plugin'leri aynı recovery manifest'ine dahil edin. Temiz bir SearXNG restore işlemi ancak custom engine'ler, format'lar, limiter rule'ları ve proxy ayarları geri geldiğinde ve bilinen bir query birden fazla engine'den sonuç ürettiğinde başarılıdır.

SearXNG'nin reverse proxy arkasında HTTPS kullanması gerekir mi?

Public SearXNG origin'i için HTTPS kullanın ve port 8080'i internal route üzerinde tutun. SearXNG ayarını doğru uygulayın: HTTPS için server base_url ve trusted proxy header'larını ayarlayın. SearXNG açısından HTTPS, credential'ları veya user content'i transit sırasında korur ve origin'e duyarlı client davranışının tutarlı kalmasını sağlar.

Bir SearXNG upgrade'i nasıl test edilmelidir?

Mevcut SearXNG state'ini izole bir deployment'a restore edin, candidate version'ı uygulayın ve acceptance transaction'ını tekrarlayın. Settings syntax'ı, engine definition'ları ve limiter behavior değişebileceğinden özellikle dikkatli olun; configuration ve image değişikliklerini tek bir review kapsamında deploy edin. Data migration ve rollback sınırları anlaşılana kadar önceki SearXNG image'ını saklayın.