Ευρετήριο ημερολογίουDockup / σημείωση πεδίου
Note / self-host-searxng

Πώς να κάνετε self-host το SearXNG το 2026: Search API, rate limits και TLS

Κάντε self-host το SearXNG με σωστά ports, persistent storage, HTTPS, secrets, backups και ελέγχους αναβάθμισης. Μάθετε πώς να διορθώσετε την περίπτωση όπου οι engines μπλοκάρουν τη server IP.

Οι περισσότερες σημειώσεις εγκατάστασης του SearXNG σταματούν στο πρώτο page load. Αυτό είναι πολύ νωρίς: οι engines μπλοκάρουν τη server IP ή ορισμένα formats δεν περιλαμβάνουν json για API clients. Ένα χρήσιμο production test είναι πιο απαιτητικό — υποβάλετε searches τόσο σε HTML όσο και σε JSON, επιβεβαιώστε ότι αρκετές engines συνεισφέρουν αποτελέσματα και ενεργοποιήστε τον ρυθμιστή που έχετε διαμορφώσει από ένα test client.

Ο ρόλος του SearXNG είναι ξεκάθαρος: metasearch engine και search API με έμφαση στο privacy. Το operational boundary του περιλαμβάνει περισσότερα από το web process, επομένως πρέπει να οριστούν ρητά το dependency, το stored state και το public route πριν φτάσουν πραγματικά δεδομένα.

Ορίστε πρώτα τι σημαίνει επιτυχία για το SearXNG

Μην αφήσετε το SearXNG image να επιλέξει κατά λάθος την production αρχιτεκτονική. Το image παρέχει ένα process στο 8080· το storage, το routing και οι εξωτερικές απαιτήσεις χρειάζονται ξεχωριστό lifecycle και προσεκτικό σχεδιασμό. Το network contract του SearXNG είναι το Redis ή το Valkey όταν είναι ενεργοποιημένες οι λειτουργίες limiter και bot detection. Διατηρήστε τα private endpoints σε internal DNS, επιτρέψτε μόνο τις απαιτούμενες outbound κλήσεις και δώστε στο SearXNG ένα service credential με περιορισμένο scope.

Το deployment είναι έτοιμο για πιο εκτεταμένο testing όταν μπορεί να υποβάλει searches τόσο σε HTML όσο και σε JSON, να επιβεβαιώσει ότι αρκετές engines συνεισφέρουν αποτελέσματα και να ενεργοποιήσει τον ρυθμιστή που έχετε διαμορφώσει από ένα test client. Παρακολουθήστε τη συναλλαγή στα logs και ελέγξτε το upstream-engine latency, τα simultaneous queries, το result parsing και τα bans που εφαρμόζονται στη server IP. Αυτές οι παρατηρήσεις δείχνουν αν η τρέχουσα topology απομονώνει το σωστό component.

Ξεχωρίστε τα replaceable containers από τα lasting data

Δημιουργήστε ένα recovery manifest για το SearXNG: το settings.yml, τη limiter configuration και τυχόν local plugins. Κάντε mount το /etc/searxng πριν από το bootstrap, γράψτε ακίνδυνα sample data και αντικαταστήστε το container για να αποδείξετε ότι το συγκεκριμένο path είναι πράγματι persistent. Ελέγξτε τώρα το ownership και τον διαθέσιμο χώρο, επειδή ένα mounted αλλά μη εγγράψιμο path συμπεριφέρεται σαν να μην υπάρχει καθόλου persistence.

Κάντε backup σε failure domain ξεχωριστό από τον running server. Δημιουργήστε ξανά το SearXNG από το pinned image και επαληθεύστε ότι επιστρέφουν τα custom engines, τα formats, οι limiter rules και οι proxy settings και ότι ένα γνωστό query παράγει αποτελέσματα από πολλές engines. Ο οδηγός persistent volumes βοηθά να μετατρέψετε αυτή την άσκηση σε πολιτική για snapshots και retention.

Κλείστε την προσωρινή πρόσβαση του setup

Τα bootstrap credentials είναι προσωρινά· το trust model είναι μόνιμο. Στο SearXNG, προσέξτε μήπως διανείμετε το example secret_key ή απενεργοποιήσετε τα rate controls σε public endpoint, διατηρήστε non-default secret key, ενεργοποιήστε τα abuse controls και εκθέστε το JSON μόνο όταν το απαιτεί ένας agent ή μια εφαρμογή.

Χειριστείτε το SEARXNG_SECRET σύμφωνα με τον ρόλο του στο SearXNG: κρατήστε τις ευαίσθητες τιμές εκτός Git, τεκμηριώστε τις επιπτώσεις του rotation και μην αντικαταστήσετε ποτέ ένα public example σε production. Εκτελέστε το image χωρίς περιττές Linux capabilities και εκθέστε μόνο το public application route. Διατηρήστε ορατή τη δραστηριότητα των administrators χωρίς να καταγράφετε secret values.

Καταγράψτε ένα γνωστά καλό SearXNG deployment

Μετατρέψτε το SearXNG smoke test σε επαναλήψιμη release command ή σε σύντομο runbook. Το output του πρέπει να αποδεικνύει το εξής αποτέλεσμα: υποβολή searches τόσο σε HTML όσο και σε JSON, επιβεβαίωση ότι αρκετές engines συνεισφέρουν αποτελέσματα και ενεργοποίηση του configured limiter από ένα test client. Καταγράψτε μαζί με το αποτέλεσμα την application version, το container digest, το route hostname και το test-data identifier.

Εκτελέστε τον ίδιο έλεγχο μετά από ένα routine container swap και μετά την επαναφορά των settings.yml, limiter configuration και τυχόν local plugins σε διαφορετικό σημείο. Η επαναφορά έχει ολοκληρωθεί με επιτυχία όταν επιστρέφουν τα custom engines, τα formats, οι limiter rules και οι proxy settings και ένα γνωστό query παράγει αποτελέσματα από πολλές engines. Συγκρίνετε το timing και την κατανάλωση που σχετίζονται με το upstream-engine latency, τα simultaneous queries, το result parsing και τα bans που εφαρμόζονται στη server IP· μια μεγάλη αλλαγή αξίζει διερεύνηση ακόμη και όταν το τελικό action εξακολουθεί να περνά.

Στη συνέχεια, δοκιμάστε μια ασφαλή αστοχία: αρνηθείτε προσωρινά στο test identity την πρόσβαση στο Redis ή στο Valkey όταν είναι ενεργοποιημένες οι λειτουργίες limiter και bot detection. Επιβεβαιώστε ότι το SearXNG εμφανίζει το fault και επιστρέφει σε κανονική λειτουργία χωρίς καταστροφικές manual edits. Διατηρήστε μόνο το απαραίτητο, redacted απόσπασμα του log. Αυτό το τετραμερές gate καλύπτει το startup, το persistence, την ανάκτηση και τη διαχείριση αστοχιών.

Εκτελέστε το πρώτο production-shaped instance

Χρησιμοποιήστε το container ως replaceable runtime και όχι ως την πηγή της αλήθειας.

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

Προσθέστε τις ελεγμένες connection settings για Redis ή Valkey όταν είναι ενεργοποιημένες οι λειτουργίες limiter και bot detection· χρησιμοποιήστε private names για private services. Ελέγξτε τον container user, τα writable paths και τον bound listener πριν το εκθέσετε. Εκτελέστε ολόκληρο το action — υποβολή searches τόσο σε HTML όσο και σε JSON, επιβεβαίωση ότι αρκετές engines συνεισφέρουν αποτελέσματα και ενεργοποίηση του configured limiter από ένα test client — και αποθηκεύστε το ακριβές image reference που παρήγαγε το αποτέλεσμα.

Αποτρέψτε το proxy success από το να κρύψει application failure

Εκθέστε ένα HTTPS hostname για το SearXNG και διατηρήστε το raw port 8080 private. Ορίστε τα server base_url και trusted proxy headers για HTTPS. Έτσι αποτρέπετε browsers και API clients από το να μαθαίνουν δύο ανταγωνιστικές διευθύνσεις.

Από ένα clean client, εκτελέστε τη known-good συναλλαγή και ελέγξτε το πρώτο request που αποτυγχάνει. Χρησιμοποιήστε τον οδηγό custom domain όταν υπάρχει πρόβλημα με το DNS ή το TLS. Αντιμετωπίστε το “engines block the server IP or formats omit json for API clients” ως ξεχωριστή application diagnosis, αφού πρώτα επιβεβαιωθεί το route.

Logs που απαντούν στην επόμενη ερώτηση

Το πρώτο χρήσιμο operational metric για το SearXNG είναι αν μπορεί να υποβάλει searches τόσο σε HTML όσο και σε JSON, να επιβεβαιώσει ότι αρκετές engines συνεισφέρουν αποτελέσματα και να ενεργοποιήσει τον configured limiter από ένα test client. Συνδυάστε το με saturation signals για το upstream-engine latency, τα simultaneous queries, το result parsing και τα bans που εφαρμόζονται στη server IP. Ένα process-only probe δεν πρέπει να καλεί expensive dependencies ούτε να κάνει restart το container επειδή ένα upstream δεν είναι προσωρινά διαθέσιμο.

Αντιμετωπίστε τα upgrades ως data changes, επειδή το settings syntax, οι engine definitions και η συμπεριφορά του limiter μπορεί να αλλάξουν, επομένως αναπτύξτε τις αλλαγές στο configuration και στο image ως ένα ενιαίο review. Κάντε pin τις versions, πραγματοποιήστε rehearsal σε restored state και διατηρήστε διαθέσιμο το προηγούμενο image μέχρι να παραμένει έγκυρο ένα rollback. Όταν οι engines μπλοκάρουν τη server IP ή τα formats δεν περιλαμβάνουν json για API clients, διατηρήστε τα logs πριν από το restart· συνήθως περιέχουν το causal message.

Συνδέστε το SearXNG στο lifecycle του Dockup

Το platform layer για το SearXNG αποτελείται από το port 8080, το ingress, το TLS, το runtime configuration, το storage και τη reachability των dependencies. Το Dockup μπορεί να αναπαράγει αυτά τα στοιχεία για τη δική του υποδομή ή για έναν server στον οποίο συνδέεται ο πελάτης.

Στη συνέχεια, ο operator ολοκληρώνει το product layer: ορίστε τα server base_url και trusted proxy headers για HTTPS· επιβάλετε αυτόν τον access rule — διατηρήστε non-default secret key, ενεργοποιήστε τα abuse controls και εκθέστε το JSON μόνο όταν το απαιτεί ένας agent ή μια εφαρμογή· και εκτελέστε το “submit both HTML and JSON searches, confirm several engines contribute results and trigger the configured limiter from a test client”. Η καταγραφή αυτού του test μαζί με το deployment αποτρέπει τη σύγχυση μεταξύ automated provisioning και application readiness.

Συχνές ερωτήσεις

Τι χρειάζεται το SearXNG για ένα production deployment;

Δρομολογήστε το SearXNG container στο port 8080 μέσω ενός HTTPS origin. Η supporting network requirement είναι το Redis ή το Valkey όταν είναι ενεργοποιημένες οι λειτουργίες limiter και bot detection. Μην θεωρήσετε το SearXNG έτοιμο μέχρι να μπορείτε να υποβάλετε searches τόσο σε HTML όσο και σε JSON, να επιβεβαιώσετε ότι αρκετές engines συνεισφέρουν αποτελέσματα και να ενεργοποιήσετε τον configured limiter από ένα test client.

Ποια δεδομένα του SearXNG πρέπει να περιλαμβάνονται σε backup;

Κάντε persist το /etc/searxng και συμπεριλάβετε τα settings.yml, limiter configuration και τυχόν local plugins στο ίδιο recovery manifest. Ένα clean SearXNG restore ολοκληρώνεται επιτυχώς μόνο όταν επιστρέφουν τα custom engines, τα formats, οι limiter rules και οι proxy settings και ένα γνωστό query παράγει αποτελέσματα από πολλές engines.

Απαιτεί το SearXNG HTTPS πίσω από reverse proxy;

Χρησιμοποιήστε HTTPS για το public SearXNG origin και διατηρήστε το port 8080 στο internal route. Εφαρμόστε σωστά το SearXNG setting: ορίστε τα server base_url και trusted proxy headers για HTTPS. Για το SearXNG, το HTTPS προστατεύει credentials ή user content κατά τη μεταφορά και διατηρεί συνεπή τη συμπεριφορά του client που εξαρτάται από το origin.

Πώς πρέπει να δοκιμάζεται ένα SearXNG upgrade;

Επαναφέρετε το τρέχον SearXNG state σε ένα isolated deployment, εφαρμόστε την candidate version και επαναλάβετε το acceptance transaction. Δώστε ιδιαίτερη προσοχή, επειδή το settings syntax, οι engine definitions και η συμπεριφορά του limiter μπορεί να αλλάξουν, επομένως αναπτύξτε τις αλλαγές στο configuration και στο image ως ένα ενιαίο review. Διατηρήστε το προηγούμενο SearXNG image μέχρι να έχετε κατανοήσει τα όρια του data migration και του rollback.