SearXNGని మీ సొంత సర్వర్లో హోస్ట్ చేయడం ఎలా?
Docker Compose ఉపయోగించి SearXNGని మీ VPSలో సెటప్ చేయండి. settings.yml కాన్ఫిగరేషన్, Nginx TLS సెట్టింగ్లు మరియు మీ స్క్రిప్ట్ల కోసం JSON APIని ఎలా ఉపయోగించాలో ఈ గైడ్లో చూడండి.
మీరు ఏమి నిర్మిస్తున్నారు
SearXNG ను self-host చేయడం ద్వారా మీ స్వంత సర్వర్లో నడిచే ఒక ప్రైవేట్ సెర్చ్ ఇంజిన్ మీకు లభిస్తుంది. SearXNG ఒక metasearch ఇంజిన్: ఇది మీ క్వెరీని తీసుకుని, Google, Bing, DuckDuckGo మరియు Wikipedia వంటి ఇతర ఇంజిన్లను అడిగి, తిరిగి వచ్చిన ఫలితాలను ఒకే పేజీలో కలిపి చూపిస్తుంది. ఇందులో ఎటువంటి ప్రొఫైల్ రూపొందించబడదు మరియు ట్రాకింగ్ కుకీలు సెట్ చేయబడవు, ఎందుకంటే మీ క్వెరీని నిల్వ చేసే ఏకైక యంత్రం మీదే. కేవలం Searx అని పిలువబడే పాత గైడ్లు మీకు కనిపిస్తే, ఇది ఆ ప్రాజెక్ట్ నుండి ఫోర్క్ చేయబడినది, మరియు అది 2023 నుండి ఎటువంటి commit ను పొందలేదు, కాబట్టి ఏదైనా ఒక గైడ్ను అనుసరించే ముందు రెండింటి స్థితిని తనిఖీ చేయండి.
దీని stack చాలా చిన్నది. రెండు containers, ఒక settings ఫైల్, ఒక reverse proxy. ఇది ఒక చిన్న VPS లో సులభంగా నడుస్తుంది, ఇది ప్రతి self-hosted సేవకు సాధ్యం కాదు: PhotoPrism మరియు Immich మధ్య పోలికలో పేర్కొన్న ఫోటో లైబ్రరీలు వెబ్ యాప్ కంటే ఇండెక్సర్ ద్వారా ఎక్కువ RAM ను వినియోగిస్తాయి. అసలైన నిర్ణయం ఏమిటంటే, మీ instance ప్రైవేట్గా ఉండాలా (అంటే మీరు మరియు మీ స్క్రిప్ట్లు మాత్రమే దాన్ని యాక్సెస్ చేయగలవు), లేదా పబ్లిక్గా ఉండాలా (అంటే ఇంటర్నెట్లోని ఎవరైనా దాన్ని ఉపయోగించవచ్చు). ఆ ఎంపిక భద్రతా సెట్టింగ్లను మారుస్తుంది, కాబట్టి మీరు దేనినైనా టైప్ చేసే ముందే ఆ నిర్ణయం తీసుకోండి. డిఫాల్ట్ సమాధానం ప్రైవేట్.
దీనిని రన్ చేయడానికి రెండవ కారణం కూడా ఉంది. ఒక SearXNG instance JSON లో మాట్లాడుతుంది, కాబట్టి మీరు రాసే ఏదైనా స్క్రిప్ట్ లేదా AI ఏజెంట్ మీకు సొంతమైన సెర్చ్ API ని పొందుతుంది, దీనికి ఎటువంటి key, per-query బిల్లింగ్ లేదా కోటా మెయిల్ అవసరం ఉండదు.
Docker Compose ఉపయోగించి SearXNGని ఇన్స్టాల్ చేయడం
ఈ ప్రాజెక్ట్ ఒక కంటైనర్ ఇమేజ్ మరియు Compose ఫైల్ను విడుదల చేస్తుంది. Docker Engine మరియు Compose ప్లగిన్ ఇప్పటికే ఉన్న కొత్త Ubuntu 24.04 సర్వర్లోకి వీటిని డౌన్లోడ్ (pull) చేయండి. మీకు Docker కొత్త అయితే, ముందుగా VPSపై Docker Compose ప్రాథమికాంశాలు చదివి, ఆపై ఇక్కడికి తిరిగి రండి.
sudo install -d -o "$USER" -g "$USER" -m 750 /opt/searxng
cd /opt/searxng
mkdir -p core-config
curl -fsSL \
-O https://raw.githubusercontent.com/searxng/searxng/master/container/docker-compose.yml \
-O https://raw.githubusercontent.com/searxng/searxng/master/container/.env.example
cp -i .env.example .envఈ Compose ఫైల్ రెండు సేవలను నిర్వచిస్తుంది. core అనేది SearXNG, మరియు valkey అనేది రేట్ లిమిటింగ్ మరియు స్వల్పకాలిక స్టేట్ కోసం ఉపయోగించే ఇన్-మెమరీ డేటా స్టోర్. ఇది కంటైనర్ లోపల /etc/searxng/ వద్ద ./core-config/ని మౌంట్ చేస్తుంది, కాబట్టి మీరు కాన్ఫిగర్ చేసే ప్రతిదీ హోస్ట్ మెషీన్లోని ఆ ఒక్క డైరెక్టరీలోనే ఉంటుంది.
ఇప్పుడు .envని ఎడిట్ చేయండి. అందించిన ఉదాహరణలో ప్రతి లైన్ కామెంట్ చేయబడి ఉంటుంది, అందుకే కంటైనర్ ప్రతి అడ్రస్లో 8080 పోర్ట్పై ప్రారంభమవుతుంది. వాటిని అన్కామెంట్ చేసి, ఈ మూడు సెట్టింగ్లను అమర్చండి.
SEARXNG_VERSION=latest
SEARXNG_HOST=127.0.0.1
SEARXNG_PORT=8080SEARXNG_HOST=127.0.0.1 అనేది చాలా ముఖ్యమైనది. ఇది పబ్లిష్ చేసిన పోర్ట్ను [::]:8080:8080కి బదులుగా 127.0.0.1:8080:8080గా మారుస్తుంది, తద్వారా కంటైనర్ కేవలం లూప్బ్యాక్ అడ్రస్పై మాత్రమే స్పందిస్తుంది మరియు ఇంటర్నెట్ ద్వారా నేరుగా చేరుకోలేము. దీన్ని విస్మరిస్తే, కంటైనర్ ప్రారంభమైన వెంటనే బహిర్గతమవుతుంది, ఎందుకంటే పబ్లిష్ చేసిన Docker పోర్ట్ మీ ఫైర్వాల్ నియమాల కంటే ముందే అమలులోకి వస్తుంది. ఆ ప్రమాదం గురించి పూర్తిగా చదవడం మంచిది: పబ్లిష్ చేసిన Docker పోర్ట్లు ufwని దాటవేస్తాయి.
మీరు నేర్చుకునే దశలో ఉన్నప్పుడు SEARXNG_VERSION=latest సరిపోతుంది. మీరు ప్రాముఖ్యతనిచ్చే సర్వర్పై, ఇమేజ్ ట్యాగ్ను పిన్ (pin) చేయండి. జూలై 2026 నాటికి, రిలీజ్ ట్యాగ్లు తేదీ ఆధారితంగా 2026.3.25-541c6c3cb వలె ఉంటాయి, కాబట్టి మీరు నిర్ణయించుకున్నప్పుడు మాత్రమే డిప్లాయ్మెంట్ అప్గ్రేడ్ అవుతుంది, రిజిస్ట్రీలో మార్పులు జరిగినప్పుడు కాదు. సర్వర్పై ఎక్కువ కాలం ఉండే ఇతర సేవల విషయంలో కూడా ఇదే క్రమశిక్షణ పాటించడం మంచిది, అందుకే self-hosted RustDesk relay కూడా తన ఇమేజ్ ట్యాగ్లను పిన్ చేస్తుంది: రిమోట్ యాక్సెస్ సేవకు ఆటోమేటిక్ అప్గ్రేడ్ జరగడం అత్యంత అసౌకర్యమైన సమయంలో సమస్యలను సృష్టించవచ్చు.
settings.yml: ముఖ్యమైన భాగాలు
మొదటిసారి ప్రారంభించే ముందు core-config/settings.yml ను సృష్టించండి. use_default_settings: true సెట్టింగ్, SearXNG తన సొంత డిఫాల్ట్ విలువలను లోడ్ చేసుకుని, ఆపై మీరు రాసిన కీలను మాత్రమే వర్తింపజేయాలని సూచిస్తుంది. దీనివల్ల మీ ఫైల్ చిన్నదిగా ఉంటుంది మరియు కొత్త ఆప్షన్లు వచ్చే అప్గ్రేడ్ల తర్వాత కూడా ఇది సురక్షితంగా ఉంటుంది.
ముందుగా secret ను జనరేట్ చేయండి, ఎందుకంటే ఆ విలువ నేరుగా ఫైల్లోకి వెళ్తుంది.
openssl rand -hex 32use_default_settings: true
general:
instance_name: "search.example.com"
server:
base_url: "https://search.example.com/"
secret_key: "paste-the-openssl-output-here"
limiter: false
public_instance: false
image_proxy: true
valkey:
url: valkey://valkey:6379/0
search:
safe_search: 0
autocomplete: "duckduckgo"
formats:
- html
- jsonsecret_key సెషన్ మరియు టోకెన్ డేటాను సైన్ చేస్తుంది. డిఫాల్ట్గా ఉండే విలువ ultrasecretkey అనే స్ట్రింగ్. దీన్ని అలాగే వదిలేస్తే, ఆ డిఫాల్ట్ విలువ తెలిసిన ఎవరైనా టోకెన్లను ఫోర్జరీ చేయగలరు. దీన్ని ఒక్కసారి మార్చండి, ఆపై అలాగే ఉంచండి: తర్వాత దీన్ని మారిస్తే సేవ్ చేసిన అన్ని ప్రాధాన్యతలు (preferences) తొలగిపోతాయి.
base_url తప్పనిసరిగా పబ్లిక్ HTTPS అడ్రస్ అయి ఉండాలి, చివరలో స్లాష్ (/) ఉండాలి. SearXNG తాను రూపొందించే లింకులలో ఈ అడ్రస్నే రాస్తుంది. దీన్ని localhost కి పాయింట్ చేస్తే, రిమోట్ బ్రౌజర్లో "next page" లింక్ యూజర్ సొంత మెషీన్కు పాయింట్ అయ్యి విఫలమవుతుంది.
formats వెబ్ ఎండ్పాయింట్ ఏ రకమైన అవుట్పుట్లను ఉత్పత్తి చేయాలో నిర్ణయిస్తుంది. json డిఫాల్ట్ జాబితాలో ఉండదు, కాబట్టి మీరు దీన్ని జోడించే వరకు JSON అభ్యర్థన 403 ఎర్రర్ను ఇస్తుంది. image_proxy: true ఫలితాల థంబ్నెయిల్లను మీ సర్వర్ ద్వారా రూట్ చేస్తుంది, తద్వారా ఆ చిత్రాలను హోస్ట్ చేసే సైట్లు మీ సందర్శకుల అడ్రస్లను చూడలేవు.
valkey.url, valkey హోస్ట్నేమ్ను ఉపయోగిస్తుంది, ఎందుకంటే Compose ఫైల్లో అదే సర్వీస్ పేరు. Compose రెండు కంటైనర్లను ఒకే నెట్వర్క్లో ఉంచుతుంది, అక్కడ సర్వీస్ పేర్లు రిజాల్వ్ అవుతాయి. దీన్ని localhost కి పాయింట్ చేస్తే, లిమిటర్ విఫలమవుతుంది, ఎందుకంటే core కంటైనర్ లోపల localhost అంటే ఆ కంటైనరే అవుతుంది.
ఈ secret ఒక సాధారణ ఫైల్లో ఉంటుంది, కాబట్టి ఫైల్ కంటే దాని చుట్టూ ఉన్న డైరెక్టరీని రక్షించండి. chmod 750 /opt/searxng ఇతర హోస్ట్ యూజర్లు లోపలికి రాకుండా చేస్తుంది. core-config/settings.yml పర్మిషన్లను 600 మోడ్కు తగ్గించవద్దు: కంటైనర్ తన సొంత unprivileged యూజర్గా రన్ అవుతుంది, కాబట్టి అది చదవలేని ఫైల్ ఉంటే SearXNG అస్సలు ప్రారంభం కాదు.
స్టాక్ను ప్రారంభించి, దాన్ని తనిఖీ చేయండి.
cd /opt/searxng
docker compose up -d
docker compose ps
curl -I http://127.0.0.1:8080/docker compose ps కమాండ్ రెండు కంటైనర్లు running స్థితిలో ఉన్నాయని చూపాలి. curl, HTTP/1.1 200 OK అని సమాధానం ఇవ్వాలి. ఒకవేళ ఏ సమాధానం రాకపోతే, docker compose logs core ను చదవండి, ఎందుకంటే settings.yml లో ఏదైనా YAML తప్పు ఉంటే అది అక్కడ parse error గా కనిపిస్తుంది మరియు ఏ లైన్లో తప్పుందో తెలియజేస్తుంది.
Nginx మరియు TLS వెనుక ఉంచడం
ఈ కంటైనర్ కేవలం loopback లో మాత్రమే వింటుంది, కాబట్టి Nginx ద్వారానే దీనిని చేరుకోగలము మరియు ఇది రవాణా పొర భద్రతను (TLS) కూడా జోడిస్తుంది. /etc/nginx/sites-available/searxng ను రాయండి.
server {
listen 80;
server_name search.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}sudo ln -s /etc/nginx/sites-available/searxng /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo certbot --nginx -d search.example.comnginx -t ను రన్ చేసే ముందు అది syntax is ok మరియు test is successful లను ప్రింట్ చేస్తుంది. Certbot అదే ఫైల్ను తిరిగి రాసి, సర్టిఫికేట్తో 443 పోర్ట్ వద్ద వినేలా చేస్తుంది మరియు పోర్ట్ 80 నుండి రీడైరెక్ట్ను జోడిస్తుంది. search.example.com కోసం DNS రికార్డ్ ఇప్పటికే ఈ సర్వర్ను సూచించాలి, ఎందుకంటే సర్టిఫికేట్ అథారిటీ HTTP ద్వారా ఒక ఫైల్ను పొందడం ద్వారా యాజమాన్యాన్ని ధృవీకరిస్తుంది. రెన్యూవల్తో సహా పూర్తి వివరాలు Ubuntu 24.04 కోసం Certbot మరియు Nginx గైడ్ లో ఉన్నాయి.
ఈ రెండు ఫార్వార్డింగ్ హెడర్లు కేవలం అలంకరణ కోసం కావు. X-Forwarded-For మరియు X-Real-IP లేకపోతే, SearXNG కి వచ్చే ప్రతి అభ్యర్థన ప్రాక్సీ అడ్రస్ను కలిగి ఉంటుంది, దీనివల్ల రేట్ లిమిటర్ మొత్తం ట్రాఫిక్ను ఒకే క్లయింట్ చేస్తున్నట్లు భావిస్తుంది మరియు సందర్శకులను వేరు చేయలేదు.
స్క్రిప్ట్లు మరియు ఏజెంట్లకు JSON సెర్చ్ API ఎందుకు అవసరం
json లోని formats తో, పేజీని రెండర్ చేసే అదే ఎండ్పాయింట్ నిర్మాణాత్మక డేటాను (structured data) తిరిగి ఇస్తుంది.
curl -s 'http://127.0.0.1:8080/search?q=wireguard+mtu&format=json' \
| jq -r '.results[0:5][] | .url'మీకు results అర్రే (array) ఉన్న ఆబ్జెక్ట్ అందుతుంది. ఇందులో ప్రతి ఎంట్రీ url, title, content మరియు దానిని అందించిన ఇంజిన్తో పాటు, answers, infoboxes మరియు suggestions లను కలిగి ఉంటుంది. ఒక సమ్మరైజర్ (summariser), లింక్ చెకర్ లేదా రీసెర్చ్ లూప్కు డేటాను అందించడానికి ఇది సరిపోతుంది. ఆ ఫలితాలను లాంగ్వేజ్ మోడల్కు పంపడం అనేది పైకి కనిపించే దానికంటే పెద్ద ప్రక్రియ, ఎందుకంటే సెర్చ్ ఫలితాలు నమ్మదగని టెక్స్ట్ మరియు అవి సొంత సూచనలను కలిగి ఉండవచ్చు. దీని గురించి మీ SearXNG ఇన్స్టాన్స్ వైపు AI ఏజెంట్ను మళ్లించడం అనే విభాగంలో వివరంగా చర్చించబడింది.
ఏజెంట్ తరహాలో పనిచేసే దేనికైనా ఇది ముఖ్యం. లాంగ్వేజ్ మోడల్కు శిక్షణ పరిమితి (training cutoff) ఉంటుంది, కాబట్టి ప్రస్తుత విషయాల గురించి సమాధానం ఇవ్వడానికి దానికి లైవ్ సెర్చ్ అవసరం. వాణిజ్య సెర్చ్ APIలు ప్రతి క్వెరీకి ఛార్జ్ చేస్తాయి మరియు కఠినమైన రేట్ పరిమితులను (rate limit) విధిస్తాయి. ఒక లోకల్ ఇన్స్టాన్స్ కోసం మీరు ఇప్పటికే చెల్లిస్తున్న సర్వర్లోని ఒక కంటైనర్ సరిపోతుంది, మరియు క్వెరీలు సర్వర్ దాటి బయటకు వెళ్లవు. మీరు ఒక మోడల్కు టూల్స్ను అనుసంధానిస్తున్నట్లయితే, అదే కారణంతో VPSలో MCP సర్వర్లను రన్ చేయడం ప్రాధాన్యత సంతరించుకుంటుంది, అక్కడ సెర్చ్ టూల్ అనేది సాధారణంగా ప్రజలు మొదట జోడించేది.
API వినియోగం కోసం రెండు నియమాలు ఉన్నాయి. ఇన్స్టాన్స్ను ప్రైవేట్గా ఉంచండి, అంటే API వైపు లూప్బ్యాక్ అడ్రస్ (loopback address) లేదా ప్రైవేట్ నెట్వర్క్కు మాత్రమే బైండ్ చేయండి మరియు మీ స్వంత హోస్ట్లను మాత్రమే అనుమతించండి. ఆ తర్వాత, క్వెరీలను జాగ్రత్తగా పంపండి. SearXNG మీ అభ్యర్థనను అసలైన సెర్చ్ ఇంజిన్లకు ఫార్వర్డ్ చేస్తుంది, కాబట్టి సెకనుకు వంద క్వెరీలు పంపే స్క్రిప్ట్ మీ సర్వర్ను బ్లాక్ చేయమని గూగుల్ను కోరడంతో సమానం.
లిమిటర్ మరియు పబ్లిక్ ఇన్స్టెన్స్ కోసం మారే అంశాలు
లిమిటర్ అనేది SearXNG యొక్క బాట్ డిఫెన్స్ (bot defence). ఇది రిక్వెస్ట్ హెడర్లు, అడ్రస్లు మరియు రిక్వెస్ట్ రేట్లను పర్యవేక్షిస్తుంది, ఆటోమేటెడ్ అనిపించే ట్రాఫిక్ను ఇది నిలిపివేస్తుంది. ఈ స్థితిని నిల్వ చేయడానికి దీనికి Valkey అవసరం, అందుకే Compose ఫైల్లో ఇది అందించబడింది.
ప్రైవేట్ ఇన్స్టెన్స్లో limiter: false ను అలాగే ఉంచండి. మీ స్వంత స్క్రిప్ట్లు నిర్వచనం ప్రకారం ఆటోమేటెడ్ ట్రాఫిక్, కాబట్టి మీరు ఏ JSON కాల్స్ కోసం అయితే ఇన్స్టెన్స్ను నిర్మించారో, ఆ లిమిటర్ వాటినే బ్లాక్ చేస్తుంది. యాక్సెస్ కంట్రోల్ అనేది రివర్స్ ప్రాక్సీ పని: nginx location లోని allow మరియు deny జత, HTTP బేసిక్ అథెంటికేషన్, లేదా మీ ఇతర సర్వర్లను మాత్రమే అనుమతించే ఫైర్వాల్ను ఉపయోగించండి. మీరు నెట్వర్క్ల మధ్య మారే ల్యాప్టాప్ నుండి ప్రైవేట్ ఇన్స్టెన్స్ను చేరుకోవాలంటే, దాని ముందు v3 onion అడ్రస్ను ఉంచడం నాలుగో ఎంపిక, ఎందుకంటే tor ఇంటర్నెట్కు కొత్తగా దేనినీ బహిర్గతం చేయకుండా అదే లూప్బ్యాక్ పోర్ట్కు కనెక్ట్ అవుతుంది.
ఒకవేళ మీరు ఇన్స్టెన్స్ను ఇతరుల కోసం పబ్లిష్ చేస్తే, రెండు స్విచ్లను ఆన్ చేయండి.
server:
limiter: true
public_instance: trueమరింత ఖచ్చితమైన నియంత్రణ core-config/limiter.toml లో ఉంటుంది, దీనిని కంటైనర్ /etc/searxng/limiter.toml వద్ద చదువుతుంది. మీరు మార్చాలనుకుంటున్న కీలను మాత్రమే అక్కడ రాయండి. ప్రాక్సీ వెనుక ఉన్నప్పుడు మీరు ప్రాక్సీని డిక్లేర్ చేయాలి, లేకపోతే లిమిటర్ మీ nginx అడ్రస్ను ఒకే ఒక అబ్యూసివ్ క్లయింట్గా పరిగణిస్తుంది.
[botdetection]
trusted_proxies = [
'127.0.0.0/8',
'::1',
]
[botdetection.ip_limit]
link_token = truelink_token = true ద్వారా SearXNG ఒక టోకెన్ను జారీ చేస్తుంది, దీనిని కేవలం నిజమైన బ్రౌజర్ సెషన్ మాత్రమే పొందుతుంది, ఇది చాలా వరకు సాధారణ స్క్రాపర్లను నిలిపివేస్తుంది. పబ్లిక్ ఇన్స్టెన్స్ ప్రారంభించిన కొన్ని రోజుల్లోనే అవి వస్తాయని ఆశించండి. ఇంజిన్ ఎర్రర్లను కూడా ఆశించండి, ఎందుకంటే మీరు ఎంత ఎక్కువ ట్రాఫిక్ను ఫార్వర్డ్ చేస్తే, అప్స్ట్రీమ్ ఇంజిన్లు మీ సర్వర్ అడ్రస్కు అంత త్వరగా CAPTCHAలను పంపడం ప్రారంభిస్తాయి. పబ్లిక్ SearXNG ఇన్స్టెన్స్ అనేది నిరంతర పని. ప్రైవేట్ ఇన్స్టెన్స్ అలా కాదు, అందుకే ఇది 2026లో self-host చేయడానికి విలువైన విషయాల జాబితాలో అగ్రస్థానంలో ఉంటుంది. ఆ జాబితాలోని ప్రతిదీ ఇన్ఫ్రాస్ట్రక్చర్ కాదు: Jellyfin లైబ్రరీని 90ల నాటి రెంటల్ స్టోర్లా మార్చడం కూడా అదే nginx బ్లాక్ వెనుక ఉన్న ఒకే కంటైనర్, ఇది పని కోసం కాకుండా సాయంత్రం సమయాల్లో వినోదం కోసం ఉపయోగపడుతుంది.
శోధన ఫలితాలు ఎందుకు రావడం లేదు
మీ instance లో /stats ని తెరవండి. ఇది ప్రతి engine యొక్క error rate మరియు response time ను చూపుతుంది, ఫలితాలు తక్కువగా ఉన్నప్పుడు మొదట ఇక్కడే చూడాలి.
"Access denied" లేదా "CAPTCHA" లోపాలతో కనిపించే engine మీ server address ను block చేసింది. Data centre rangeలకు చెందిన addresses విషయంలో ఇది సాధారణం. Search engines వాటిని scrapers కు చెందినవిగా భావిస్తాయి. విఫలమైన engine కు మళ్లీ ప్రయత్నించకుండా SearXNG కొంతకాలం దాన్ని suspend చేస్తుంది. అందువల్ల block అయిన ఒక engine మీ results నుంచి నిశ్శబ్దంగా తొలగిపోతుంది. దాన్ని settings.yml లో disable చేయండి లేదా ఆ నష్టాన్ని అంగీకరించండి. అయితే ఇవి మాత్రమే ఉన్న రెండు మార్గాలు కావు, ఎందుకంటే కొన్ని CAPTCHA blocks కు restart తర్వాత కూడా పనిచేసే పరిష్కారం ఉంది. మిగిలిన engines ఇంకా సమాధానం ఇస్తాయి. 429 అనేది స్పష్టత లేని సందర్భం. అది మీ స్వంత limiter నుంచి రావచ్చు లేదా upstream engine మీ server ను నిరాకరించడం వల్ల రావచ్చు. Settings మార్చడం ప్రారంభించే ముందు మీరు ఎదుర్కొంటున్నది ఈ రెండింటిలో ఏదో log line చెబుతుంది.
ఒకవేళ అన్ని engines ఒకేసారి విఫలమైతే, ఆ container కు సరైన outbound name resolution లేదని లేదా ఇంటర్నెట్కు route లేదని అర్థం. దీన్ని container లోపలి నుండి పరీక్షించండి.
docker compose exec core wget -qO- https://duckduckgo.com > /dev/null && echo okఈ తనిఖీ విఫలమైనప్పుడు సర్వర్లో ఏదీ మీకు తెలియజేయదు, కాబట్టి దీన్ని cron ద్వారా రన్ చేయండి. ఫలితాలు తగ్గిపోయాయని మీరు గమనించే వరకు వేచి ఉండకుండా, వైఫల్యం సంభవించినప్పుడు మీ స్వంత ntfy సర్వర్ నుండి మీ ఫోన్కు alert పంపేలా ఏర్పాటు చేసుకోండి.
FAQ
SearXNG నా శోధనలను అజ్ఞాతంగా (anonymous) ఉంచుతుందా?
ఇది మీరు శోధించే ఇంజిన్ల నుండి మీ గుర్తింపును దాచిపెడుతుంది, ఎందుకంటే మీ బ్రౌజర్కు బదులుగా మీ సర్వర్ అభ్యర్థనను పంపుతున్నట్లు ఆ ఇంజిన్లు భావిస్తాయి. అయితే, ఇది మీ సర్వర్ నుండి శోధనను దాచదు మరియు మీ సర్వర్ను ఆ ఇంజిన్ల నుండి దాచదు. ఒకే వినియోగదారు ఉన్న instance లో, ఆ IP నుండి వచ్చే మొత్తం ట్రాఫిక్ మీదే కాబట్టి, ఆ IP చిరునామానే మీ గుర్తింపుగా మారుతుంది. మీ బ్రౌజర్ మరియు మీ instance మధ్య జరిగే ట్రాఫిక్ TLS certificate ద్వారా రక్షించబడుతుంది. మీ ISP, పబ్లిక్ instance ఆపరేటర్ మరియు శోధన ఇంజిన్ల నుండి మీకు ఎంతవరకు రక్షణ లభిస్తుందనేది SearXNG వాస్తవానికి దేనిని దాస్తుంది అనే విభాగంలో వివరించబడింది.
JSON అభ్యర్థన 403 Forbidden అని ఎందుకు చూపిస్తుంది?
దీనికి రెండు కారణాలు ఉన్నాయి, రెండూ కాన్ఫిగరేషన్కు సంబంధించినవే. ఒకటి, settings.yml లోని search: కింద ఉన్న formats జాబితాలో json లేకపోవడం (ఇది డిఫాల్ట్ స్థితి), లేదా limiter ఆన్లో ఉండి మీ స్క్రిప్ట్ను బాట్గా గుర్తించడం. ముందుగా ఫార్మాట్ను జోడించి, docker compose restart core తో రీస్టార్ట్ చేసి, మళ్ళీ ప్రయత్నించండి. ఒకవేళ అప్పటికీ విఫలమైతే, limiter: false ని సెట్ చేసి, reverse proxy స్థాయిలో యాక్సెస్ను నియంత్రించండి.
నేను limiter ను ఆపివేస్తే, నాకు Valkey కంటైనర్ అవసరమా?
దాన్ని రన్ అవుతూనే ఉంచండి. Valkey లేకుండా SearXNG పనిచేస్తుంది, కానీ దానిని ఆపివేస్తే తర్వాత limiter ను ఆన్ చేయడం సాధ్యం కాదు, అలాగే ఇది ఇతర స్వల్పకాలిక సమాచారాన్ని కూడా నిల్వ చేస్తుంది. ఈ కంటైనర్ చాలా చిన్నది మరియు కేవలం cached డేటాను మాత్రమే నిల్వ చేస్తుంది, కాబట్టి దీన్ని తొలగించడం వల్ల పెద్దగా ప్రయోజనం ఉండదు, పైగా భవిష్యత్తులో ఆప్షన్లను కోల్పోతారు.
SearXNG ని ఎలా అప్డేట్ చేయాలి?
/opt/searxng లో docker compose pull ఆపై docker compose up -d రన్ చేయండి. ఇమేజ్ మారిన ప్రతి కంటైనర్ను Compose తిరిగి సృష్టిస్తుంది, కానీ మీ core-config/ డైరెక్టరీని ఏమీ చేయదు, కాబట్టి settings.yml సురక్షితంగా ఉంటుంది. use_default_settings: true మీ కీలను డిఫాల్ట్ సెట్టింగ్లతో విలీనం చేస్తుంది కాబట్టి, అప్స్ట్రీమ్లో కొత్తగా చేర్చిన ఆప్షన్లు ఫైల్ను పాడు చేయకుండా సరైన విలువలతో అందుతాయి.
ఒకే instance ను పలువురు వ్యక్తులు ఉపయోగించవచ్చా?
అవును, అటువంటి సందర్భంలోనే మీరు limiter ను ఆన్ చేసి public_instance: true ని సెట్ చేయాలి. ప్రాధాన్యతలు (preferences) ప్రతి సందర్శకుడి బ్రౌజర్లోనే నిల్వ చేయబడతాయి, కాబట్టి అకౌంట్లను నిర్వహించాల్సిన అవసరం లేదు. instance ను ఇతరులకు అందుబాటులోకి తెచ్చిన తర్వాత ఒక వారం పాటు /stats ని గమనిస్తూ ఉండండి, ఎందుకంటే ఫలితాలు రావడం ఆగిపోయాయని మీకు తెలిసేలోపే, అప్స్ట్రీమ్ ఇంజిన్లు మీ సర్వర్ను బ్లాక్ చేసే అవకాశం ఉంది.