docker项目-搭建个人搜索引擎SearXNG

SearXNG简介

SearXNG是一个免费的互联网元搜索引擎,它汇总了来自更多 超过 70 个搜索服务。

文档地址:https://docs.searxng.org/

github地址:https://github.com/searxng/searxng

Dokcer仓库:https://github.com/searxng/searxng-docker

演示Dome:https://searx.space/#

部署需求

Vps:一台,建议国外vps
系统:任意linux发行版,本文采用rocky
容器:docker
个人域名,带ssl证书

搭建过程

安装docker

yum install -y yum-utils
yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce -y

启动docker

systemctl enable docker --now

安装docker-compose

curl -L https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose

Git SearXNG项目

安装git

yum install git -y

建立项目目录

mkdir /data

克隆项目

cd /data
git clone https://github.com/searxng/searxng-docker.git

配置docker-compose

本次安装不采用caddy容器做代理,采用本地nginx做代理,因此注释掉caddy容器内容。

version: '3.7'services:#  caddy:#    container_name: caddy#    image: caddy:2-alpine#    network_mode: host#    volumes:#      - ./Caddyfile:/etc/caddy/Caddyfile:ro#      - caddy-data:/data:rw#      - caddy-config:/config:rw#    environment:#      - SEARXNG_HOSTNAME=${SEARXNG_HOSTNAME:-http://localhost:80}#      - SEARXNG_TLS=${LETSENCRYPT_EMAIL:-internal}#    cap_drop:#      - ALL#    cap_add:#      - NET_BIND_SERVICE#      - DAC_OVERRIDEredis:container_name: redisimage: "redis:alpine"command: redis-server --save "" --appendonly "no"networks:- searxngtmpfs:- /var/lib/rediscap_drop:- ALLcap_add:- SETGID- SETUID- DAC_OVERRIDEsearxng:container_name: searxngimage: searxng/searxng:latestnetworks:- searxngports:- "127.0.0.1:8080:8080"volumes:- ./searxng:/etc/searxng:rwenvironment:- SEARXNG_BASE_URL=https://${SEARXNG_HOSTNAME:-localhost}/cap_drop:- ALLcap_add:- CHOWN- SETGID- SETUID- DAC_OVERRIDElogging:driver: "json-file"options:max-size: "1m"max-file: "1"
networks:searxng:ipam:driver: defaultvolumes:caddy-data:caddy-config:

配置env文件

cd /data/searxng-docker
vim .env
/data/searxng-docker
[root@racknerd-944314 searxng-docker]# cat .env
# By default listen on https://localhost
# To change this:
# * uncomment SEARXNG_HOSTNAME, and replace <host> by the SearXNG hostname
# * uncomment LETSENCRYPT_EMAIL, and replace <email> by your email (require to create a Let's Encrypt certificate)SEARXNG_HOSTNAME=www.xxx.xx
# LETSENCRYPT_EMAIL=<email>

将SEARXNG_HOSTNAME修改为域名

配置settings.yml文件

cd /data/searxng-docker/searxng
生成secret_key秘钥
sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng/settings.yml
解决打开域名“too many requests”
limiter: false
添加engines配置,解决google引擎 “too many requests”
engines:- name: googleengine: googleshortcut: gouse_mobile_ui: true- name: google imagesengine: google_imagesuse_mobile_ui: true- name: google newsengine: google_newsuse_mobile_ui: true- name: google videosengine: google_videosuse_mobile_ui: true- name: google scholarengine: google_scholaruse_mobile_ui: true- name: google play appsengine: google_play_appsuse_mobile_ui: true
完整settings.yml文件配置
# see https://docs.searxng.org/admin/engines/settings.html#use-default-settings
use_default_settings: true
server:# base_url is defined in the SEARXNG_BASE_URL environment variable, see .env and docker-compose.ymlsecret_key: "3af379c948a8dfc252bc57f115c08c2f1ef7eaeab44a079082a9edd92d3d34ae"  # change this!limiter: false  # can be disabled for a private instanceimage_proxy: true
ui:static_use_hash: true
redis:url: redis://redis:6379/0
engines:- name: googleengine: googleshortcut: gouse_mobile_ui: true- name: google imagesengine: google_imagesuse_mobile_ui: true- name: google newsengine: google_newsuse_mobile_ui: true- name: google videosengine: google_videosuse_mobile_ui: true- name: google scholarengine: google_scholaruse_mobile_ui: true- name: google play appsengine: google_play_appsuse_mobile_ui: true

根据docker-compose生成容器

cd /data/searxng-docker/
docker-compose up -d

配置Nginx代理

安装nginx

通过二进制或者yum安装,本文采用二进制安装。

配置nginx

将https的443端口,代理转发到searxng容器的8080端口

vim nginx.conf
worker_processes  1;
events {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  logs/access.log  main;sendfile        on;keepalive_timeout  65;server {listen       443 ssl;server_name  www.xxx.xx; #你的域名ssl_certificate      xxx.xx.pem; #域名证书ssl_certificate_key  xxx.xx.key; #域名秘钥ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!eNULL;ssl_prefer_server_ciphers  on;location / {root html;index index.html index.htm;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Range $http_range;proxy_set_header If-Range $http_if_range;proxy_redirect off;proxy_pass http://127.0.0.1:8080;}}
}

访问域名验证

访问域名https://www.xxx.xx

更新和卸载

更新

#进入项目目录
cd /data/searxng-docker
#拉取最新镜像
docker-compose pull
#更新
docker-compose up -d

卸载

#进入项目
cd /data/searxng-docker
#停止容器,不会删除本地映射数据
docker-compose down
#完全删除本地数据
rm -rf /data/searxng-docker

官方settings.yaml配置模板

general:# Debug mode, only for developmentdebug: false# displayed nameinstance_name: "SearXNG"# For example: https://example.com/privacyprivacypolicy_url: false# use true to use your own donation page written in searx/info/en/donate.md# use false to disable the donation linkdonation_url: https://docs.searxng.org/donate.html# mailto:contact@example.comcontact_url: false# record statsenable_metrics: truebrand:new_issue_url: https://github.com/searxng/searxng/issues/newdocs_url: https://docs.searxng.org/public_instances: https://searx.spacewiki_url: https://github.com/searxng/searxng/wikiissue_url: https://github.com/searxng/searxng/issuessearch:# Filter results. 0: None, 1: Moderate, 2: Strictsafe_search: 0# Existing autocomplete backends: "dbpedia", "duckduckgo", "google", "yandex",# "seznam", "startpage", "swisscows", "qwant", "wikipedia" - leave blank to turn it off# by default.autocomplete: ""# minimun characters to type before autocompleter startsautocomplete_min: 4# Default search language - leave blank to detect from browser information or# use codes from 'languages.py'default_lang: ""# Available languages# languages:#   - all#   - en#   - en-US#   - de#   - it-IT#   - fr#   - fr-BE# ban time in seconds after engine errorsban_time_on_fail: 5# max ban time in seconds after engine errorsmax_ban_time_on_fail: 120# remove format to deny access, use lower case.# formats: [html, csv, json, rss]formats:- htmlserver:# If you change port, bind_address or base_url don't forget to rebuild# instance's environment (make buildenv)port: 8888bind_address: "127.0.0.1"base_url: false  # Possible values: false or "https://example.org/location".limiter: false  # rate limit the number of request on the instance, block some bots# If your instance owns a /etc/searxng/settings.yml file, then set the following# values there.secret_key: "ultrasecretkey"  # change this!# Proxying image results through searximage_proxy: false# 1.0 and 1.1 are supportedhttp_protocol_version: "1.0"# POST queries are more secure as they don't show up in history but may cause# problems when using Firefox containersmethod: "POST"default_http_headers:X-Content-Type-Options: nosniffX-XSS-Protection: 1; mode=blockX-Download-Options: noopenX-Robots-Tag: noindex, nofollowReferrer-Policy: no-referrerredis:# https://redis-py.readthedocs.io/en/stable/connections.html#redis.client.Redis.from_urlurl: falseui:# Custom static path - leave it blank if you didn't changestatic_path: ""static_use_hash: false# Custom templates path - leave it blank if you didn't changetemplates_path: ""# query_in_title: When true, the result page's titles contains the query# it decreases the privacy, since the browser can records the page titles.query_in_title: false# infinite_scroll: When true, automatically loads the next page when scrolling to bottom of the current page.infinite_scroll: false# ui themedefault_theme: simple# center the results ?center_alignment: false# URL prefix of the internet archive, don't forgett trailing slash (if needed).# cache_url: "https://webcache.googleusercontent.com/search?q=cache:"# Default interface locale - leave blank to detect from browser information or# use codes from the 'locales' config sectiondefault_locale: ""# Open result links in a new tab by default# results_on_new_tab: falsetheme_args:# style of simple theme: auto, light, darksimple_style: auto# Lock arbitrary settings on the preferences page.  To find the ID of the user
# setting you want to lock, check the ID of the form on the page "preferences".
#
# preferences:
#   lock:
#     - language
#     - autocomplete
#     - method
#     - query_in_title# searx supports result proxification using an external service:
# https://github.com/asciimoo/morty uncomment below section if you have running
# morty proxy the key is base64 encoded (keep the !!binary notation)
# Note: since commit af77ec3, morty accepts a base64 encoded key.
#
# result_proxy:
#   url: http://127.0.0.1:3000/
#   # the key is a base64 encoded string, the YAML !!binary prefix is optional
#   key: !!binary "your_morty_proxy_key"
#   # [true|false] enable the "proxy" button next to each result
#   proxify_results: true# communication with search engines
#
outgoing:# default timeout in seconds, can be override by enginerequest_timeout: 3.0# the maximum timeout in seconds# max_request_timeout: 10.0# suffix of searx_useragent, could contain information like an email address# to the administratoruseragent_suffix: ""# The maximum number of concurrent connections that may be established.pool_connections: 100# Allow the connection pool to maintain keep-alive connections below this# point.pool_maxsize: 20# See https://www.python-httpx.org/http2/enable_http2: true# uncomment below section if you want to use a custom server certificate# see https://www.python-httpx.org/advanced/#changing-the-verification-defaults# and https://www.python-httpx.org/compatibility/#ssl-configuration#  verify: ~/.mitmproxy/mitmproxy-ca-cert.cer## uncomment below section if you want to use a proxyq see: SOCKS proxies#   https://2.python-requests.org/en/latest/user/advanced/#proxies# are also supported: see#   https://2.python-requests.org/en/latest/user/advanced/#socks##  proxies:#    all://:#      - http://proxy1:8080#      - http://proxy2:8080##  using_tor_proxy: true## Extra seconds to add in order to account for the time taken by the proxy##  extra_proxy_timeout: 10.0## uncomment below section only if you have more than one network interface# which can be the source of outgoing search requests##  source_ips:#    - 1.1.1.1#    - 1.1.1.2#    - fe80::/126# External plugin configuration, for more details see
#   https://docs.searxng.org/dev/plugins.html
#
# plugins:
#   - plugin1
#   - plugin2
#   - ...# Comment or un-comment plugin to activate / deactivate by default.
#
# enabled_plugins:
#   # these plugins are enabled if nothing is configured ..
#   - 'Hash plugin'
#   - 'Search on category select'
#   - 'Self Information'
#   - 'Tracker URL remover'
#   - 'Ahmia blacklist'  # activation depends on outgoing.using_tor_proxy
#   # these plugins are disabled if nothing is configured ..
#   - 'Hostname replace'  # see hostname_replace configuration below
#   - 'Open Access DOI rewrite'
#   - 'Vim-like hotkeys'
#   - 'Tor check plugin'# Configuration of the "Hostname replace" plugin:
#
# hostname_replace:
#   '(.*\.)?youtube\.com$': 'invidious.example.com'
#   '(.*\.)?youtu\.be$': 'invidious.example.com'
#   '(.*\.)?youtube-noocookie\.com$': 'yotter.example.com'
#   '(.*\.)?reddit\.com$': 'teddit.example.com'
#   '(.*\.)?redd\.it$': 'teddit.example.com'
#   '(www\.)?twitter\.com$': 'nitter.example.com'
#   # to remove matching host names from result list, set value to false
#   'spam\.example\.com': falsechecker:# disable checker when in debug modeoff_when_debug: true# use "scheduling: false" to disable scheduling# scheduling: interval or int# to activate the scheduler:# * uncomment "scheduling" section# * add "cache2 = name=searxngcache,items=2000,blocks=2000,blocksize=4096,bitmap=1"#   to your uwsgi.ini# scheduling:#   start_after: [300, 1800]  # delay to start the first run of the checker#   every: [86400, 90000]     # how often the checker runs# additional tests: only for the YAML anchors (see the engines section)#additional_tests:rosebud: &test_rosebudmatrix:query: rosebudlang: enresult_container:- not_empty- ['one_title_contains', 'citizen kane']test:- unique_resultsandroid: &test_androidmatrix:query: ['android']lang: ['en', 'de', 'fr', 'zh-CN']result_container:- not_empty- ['one_title_contains', 'google']test:- unique_results# tests: only for the YAML anchors (see the engines section)tests:infobox: &tests_infoboxinfobox:matrix:query: ["linux", "new york", "bbc"]result_container:- has_infoboxcategories_as_tabs:general:images:videos:news:map:music:it:science:files:social media:engines:- name: 9gagengine: 9gagshortcut: 9gdisabled: true- name: apk mirrorengine: apkmirrortimeout: 4.0shortcut: apkmdisabled: true- name: apple app storeengine: apple_app_storeshortcut: apsdisabled: true# Requires Tor- name: ahmiaengine: ahmiacategories: onionsenable_http: trueshortcut: ah- name: arch linux wikiengine: archlinuxshortcut: al- name: archive isengine: xpathsearch_url: https://archive.is/search/?q={query}url_xpath: (//div[@class="TEXT-BLOCK"]/a)/@hreftitle_xpath: (//div[@class="TEXT-BLOCK"]/a)content_xpath: //div[@class="TEXT-BLOCK"]/ul/licategories: generaltimeout: 7.0disabled: trueshortcut: aisoft_max_redirects: 1about:website: https://archive.is/wikidata_id: Q13515725official_api_documentation: https://mementoweb.org/depot/native/archiveis/use_official_api: falserequire_api_key: falseresults: HTML- name: articengine: articshortcut: arctimeout: 4.0- name: arxivengine: arxivshortcut: arxtimeout: 4.0# tmp suspended:  dh key too small# - name: base#   engine: base#   shortcut: bs- name: bandcampengine: bandcampshortcut: bccategories: music- name: wikipediaengine: wikipediashortcut: wpbase_url: 'https://{language}.wikipedia.org/'- name: bingengine: bingshortcut: bidisabled: true- name: bing imagesengine: bing_imagesshortcut: bii- name: bing newsengine: bing_newsshortcut: bin- name: bing videosengine: bing_videosshortcut: biv- name: bitbucketengine: xpathpaging: truesearch_url: https://bitbucket.org/repo/all/{pageno}?name={query}url_xpath: //article[@class="repo-summary"]//a[@class="repo-link"]/@hreftitle_xpath: //article[@class="repo-summary"]//a[@class="repo-link"]content_xpath: //article[@class="repo-summary"]/pcategories: [it, repos]timeout: 4.0disabled: trueshortcut: bbabout:website: https://bitbucket.org/wikidata_id: Q2493781official_api_documentation: https://developer.atlassian.com/bitbucketuse_official_api: falserequire_api_key: falseresults: HTML- name: btdiggengine: btdiggshortcut: bt- name: ccc-tvengine: xpathpaging: falsesearch_url: https://media.ccc.de/search/?q={query}url_xpath: //div[@class="caption"]/h3/a/@hreftitle_xpath: //div[@class="caption"]/h3/a/text()content_xpath: //div[@class="caption"]/h4/@titlecategories: videosdisabled: trueshortcut: c3tvabout:website: https://media.ccc.de/wikidata_id: Q80729951official_api_documentation: https://github.com/voc/voctowebuse_official_api: falserequire_api_key: falseresults: HTML# We don't set language: de here because media.ccc.de is not just# for a German audience. It contains many English videos and many# German videos have English subtitles.- name: openverseengine: openversecategories: imagesshortcut: opv# - name: core.ac.uk#   engine: core#   categories: science#   shortcut: cor#   # get your API key from: https://core.ac.uk/api-keys/register/#   api_key: 'unset'- name: crossrefengine: crossrefshortcut: crtimeout: 30disabled: true- name: yepengine: json_engineshortcut: yepcategories: generaldisabled: truepaging: falsecontent_html_to_text: truetitle_html_to_text: truesearch_url: https://api.yep.com/fs/1/?type=web&q={query}&no_correct=false&limit=100results_query: 1/resultstitle_query: titleurl_query: urlcontent_query: snippetabout:website: https://yep.comuse_official_api: falserequire_api_key: falseresults: JSON- name: curlieengine: xpathshortcut: clcategories: generaldisabled: truepaging: truelang_all: ''search_url: https://curlie.org/search?q={query}&lang={lang}&start={pageno}&stime=92452189page_size: 20results_xpath: //div[@id="site-list-content"]/div[@class="site-item"]url_xpath: ./div[@class="title-and-desc"]/a/@hreftitle_xpath: ./div[@class="title-and-desc"]/a/divcontent_xpath: ./div[@class="title-and-desc"]/div[@class="site-descr"]about:website: https://curlie.org/wikidata_id: Q60715723use_official_api: falserequire_api_key: falseresults: HTML- name: currencyengine: currency_convertcategories: generalshortcut: cc- name: deezerengine: deezershortcut: dzdisabled: true- name: deviantartengine: deviantartshortcut: datimeout: 3.0- name: ddg definitionsengine: duckduckgo_definitionsshortcut: dddweight: 2disabled: truetests: *tests_infobox# cloudflare protected# - name: digbt#   engine: digbt#   shortcut: dbt#   timeout: 6.0#   disabled: true- name: docker hubengine: docker_hubshortcut: dhcategories: [it, packages]- name: erowidengine: xpathpaging: truefirst_page_num: 0page_size: 30search_url: https://www.erowid.org/search.php?q={query}&s={pageno}url_xpath: //dl[@class="results-list"]/dt[@class="result-title"]/a/@hreftitle_xpath: //dl[@class="results-list"]/dt[@class="result-title"]/a/text()content_xpath: //dl[@class="results-list"]/dd[@class="result-details"]categories: []shortcut: ewdisabled: trueabout:website: https://www.erowid.org/wikidata_id: Q1430691official_api_documentation:use_official_api: falserequire_api_key: falseresults: HTML# - name: elasticsearch#   shortcut: es#   engine: elasticsearch#   base_url: http://localhost:9200#   username: elastic#   password: changeme#   index: my-index#   # available options: match, simple_query_string, term, terms, custom#   query_type: match#   # if query_type is set to custom, provide your query here#   #custom_query_json: {"query":{"match_all": {}}}#   #show_metadata: false#   disabled: true- name: wikidataengine: wikidatashortcut: wdtimeout: 3.0weight: 2tests: *tests_infobox- name: duckduckgoengine: duckduckgoshortcut: ddg- name: duckduckgo imagesengine: duckduckgo_imagesshortcut: dditimeout: 3.0disabled: true- name: duckduckgo weatherengine: duckduckgo_weathershortcut: ddwdisabled: true- name: apple mapsengine: apple_mapsshortcut: apmdisabled: truetimeout: 5.0- name: emojipediaengine: emojipediatimeout: 4.0shortcut: emdisabled: true- name: tineyeengine: tineyeshortcut: tintimeout: 9.0- name: etymonlineengine: xpathpaging: truesearch_url: https://etymonline.com/search?page={pageno}&q={query}url_xpath: //a[contains(@class, "word__name--")]/@hreftitle_xpath: //a[contains(@class, "word__name--")]content_xpath: //section[contains(@class, "word__defination")]first_page_num: 1shortcut: etcategories: [dictionaries]disabled: falseabout:website: https://www.etymonline.com/wikidata_id: Q1188617official_api_documentation:use_official_api: falserequire_api_key: falseresults: HTML# - name: ebay#   engine: ebay#   shortcut: eb#   base_url: 'https://www.ebay.com'#   disabled: true#   timeout: 5- name: 1xengine: www1xshortcut: 1xtimeout: 3.0disabled: true- name: fdroidengine: fdroidshortcut: fddisabled: true- name: flickrcategories: imagesshortcut: fl# You can use the engine using the official stable API, but you need an API# key, see: https://www.flickr.com/services/apps/create/# engine: flickr# api_key: 'apikey' # required!# Or you can use the html non-stable engine, activated by defaultengine: flickr_noapi- name: free software directoryengine: mediawikishortcut: fsdcategories: [it, software wikis]base_url: https://directory.fsf.org/number_of_results: 5# what part of a page matches the query string: title, text, nearmatch# * title     - query matches title# * text      - query matches the text of page# * nearmatch - nearmatch in titlesearch_type: titletimeout: 5.0disabled: trueabout:website: https://directory.fsf.org/wikidata_id: Q2470288# - name: freesound#   engine: freesound#   shortcut: fnd#   disabled: true#   timeout: 15.0# API key required, see: https://freesound.org/docs/api/overview.html#   api_key: MyAPIkey- name: frinkiacengine: frinkiacshortcut: frkdisabled: true- name: geniusengine: geniusshortcut: gen- name: gigablastengine: gigablastshortcut: gbtimeout: 4.0disabled: trueadditional_tests:rosebud: *test_rosebud- name: gentooengine: gentooshortcut: ge- name: gitlabengine: json_enginepaging: truesearch_url: https://gitlab.com/api/v4/projects?search={query}&page={pageno}url_query: web_urltitle_query: name_with_namespacecontent_query: descriptionpage_size: 20categories: [it, repos]shortcut: gltimeout: 10.0disabled: trueabout:website: https://about.gitlab.com/wikidata_id: Q16639197official_api_documentation: https://docs.gitlab.com/ee/api/use_official_api: falserequire_api_key: falseresults: JSON- name: githubengine: githubshortcut: gh# This a Gitea service. If you would like to use a different instance,# change codeberg.org to URL of the desired Gitea host. Or you can create a# new engine by copying this and changing the name, shortcut and search_url.- name: codebergengine: json_enginesearch_url: https://codeberg.org/api/v1/repos/search?q={query}&limit=10url_query: html_urltitle_query: namecontent_query: descriptioncategories: [it, repos]shortcut: cbdisabled: trueabout:website: https://codeberg.org/wikidata_id:official_api_documentation: https://try.gitea.io/api/swaggeruse_official_api: falserequire_api_key: falseresults: JSON- name: googleengine: googleshortcut: go# see https://docs.searxng.org/src/searx.engines.google.html#module-searx.engines.googleuse_mobile_ui: false# additional_tests:#   android: *test_android# - name: google italian#   engine: google#   shortcut: goit#   use_mobile_ui: false#   language: it# - name: google mobile ui#   engine: google#   shortcut: gomui#   use_mobile_ui: true- name: google imagesengine: google_imagesshortcut: goi# additional_tests:#   android: *test_android#   dali:#     matrix:#       query: ['Dali Christ']#       lang: ['en', 'de', 'fr', 'zh-CN']#     result_container:#       - ['one_title_contains', 'Salvador']- name: google newsengine: google_newsshortcut: gon# additional_tests:#   android: *test_android- name: google videosengine: google_videosshortcut: gov# additional_tests:#   android: *test_android- name: google scholarengine: google_scholarshortcut: gos- name: google play appsengine: google_play_appsshortcut: gpadisabled: true- name: google play moviesengine: xpathsend_accept_language_header: truesearch_url: https://play.google.com/store/search?q={query}&c=moviesresults_xpath: '//div[@class="ImZGtf mpg5gc"]'title_xpath: './/div[@class="RZEgze"]//div[@class="kCSSQe"]//a'url_xpath: './/div[@class="RZEgze"]//div[@class="kCSSQe"]//a/@href'content_xpath: './/div[@class="kCSSQe"]'thumbnail_xpath: './/div[@class="uzcko"]/div/span[1]//img/@data-src'categories: videosshortcut: gpmdisabled: trueabout:website: https://play.google.com/wikidata_id: Q79576official_api_documentation:use_official_api: falserequire_api_key: falseresults: HTML- name: gpodderengine: json_engineshortcut: gpodtimeout: 4.0paging: falsesearch_url: https://gpodder.net/search.json?q={query}url_query: urltitle_query: titlecontent_query: descriptionpage_size: 19categories: musicdisabled: trueabout:website: https://gpodder.netwikidata_id: Q3093354official_api_documentation: https://gpoddernet.readthedocs.io/en/latest/api/use_official_api: falserequires_api_key: falseresults: JSON- name: habrahabrengine: xpathpaging: truesearch_url: https://habrahabr.ru/search/page{pageno}/?q={query}url_xpath: //article[contains(@class, "post")]//a[@class="post__title_link"]/@hreftitle_xpath: //article[contains(@class, "post")]//a[@class="post__title_link"]content_xpath: //article[contains(@class, "post")]//div[contains(@class, "post__text")]categories: ittimeout: 4.0disabled: trueshortcut: habrabout:website: https://habr.com/wikidata_id: Q4494434official_api_documentation: https://habr.com/en/docs/help/api/use_official_api: falserequire_api_key: falseresults: HTML- name: hoogleengine: xpathpaging: truesearch_url: https://hoogle.haskell.org/?hoogle={query}&start={pageno}results_xpath: '//div[@class="result"]'title_xpath: './/div[@class="ans"]//a'url_xpath: './/div[@class="ans"]//a/@href'content_xpath: './/div[@class="from"]'page_size: 20categories: [it, packages]shortcut: hoabout:website: https://hoogle.haskell.org/wikidata_id: Q34010official_api_documentation: https://hackage.haskell.org/apiuse_official_api: falserequire_api_key: falseresults: JSON- name: imdbengine: imdbshortcut: imdbtimeout: 6.0disabled: true- name: inaengine: inashortcut: intimeout: 6.0disabled: true- name: invidiousengine: invidious# Instanes will be selected randomly, see https://api.invidious.io/ for# instances that are stable (good uptime) and close to you.base_url:- https://invidious.snopyta.org- https://vid.puffyan.us# - https://invidious.kavin.rocks  # Error 1020 // Access denied by Cloudflare- https://invidio.xamh.de- https://inv.riverside.rocksshortcut: ivtimeout: 3.0disabled: true- name: jishoengine: jishoshortcut: jstimeout: 3.0disabled: true- name: kickassengine: kickassshortcut: kctimeout: 4.0disabled: true- name: library genesisengine: xpathsearch_url: https://libgen.fun/search.php?req={query}url_xpath: //a[contains(@href,"get.php?md5")]/@hreftitle_xpath: //a[contains(@href,"book/")]/text()[1]content_xpath: //td/a[1][contains(@href,"=author")]/text()categories: filestimeout: 7.0disabled: trueshortcut: lgabout:website: https://libgen.fun/wikidata_id: Q22017206official_api_documentation:use_official_api: falserequire_api_key: falseresults: HTML# Disabling zlibrary due to z-lib.org domain seizure# https://github.com/searxng/searxng/pull/1937## - name: z-library#   engine: zlibrary#   shortcut: zlib#   categories: files#   timeout: 3.0#   # choose base_url, otherwise engine will do it at initialization time#   # base_url: https://b-ok.cc#   # base_url: https://de1lib.org#   # base_url: https://booksc.eu   # does not have cover preview#   # base_url: https://booksc.org  # does not have cover preview- name: library of congressengine: locshortcut: loccategories: images- name: lingvaengine: lingvashortcut: lv# set lingva instance in url, by default it will use the official instance# url: https://lingva.ml- name: lobste.rsengine: xpathsearch_url: https://lobste.rs/search?utf8=%E2%9C%93&q={query}&what=stories&order=relevanceresults_xpath: //li[contains(@class, "story")]url_xpath: .//a[@class="u-url"]/@hreftitle_xpath: .//a[@class="u-url"]content_xpath: .//a[@class="domain"]categories: itshortcut: lotimeout: 5.0disabled: trueabout:website: https://lobste.rs/wikidata_id: Q60762874official_api_documentation:use_official_api: falserequire_api_key: falseresults: HTML- name: azlyricsshortcut: lyricsengine: xpathtimeout: 4.0disabled: truecategories: [music, lyrics]paging: truesearch_url: https://search.azlyrics.com/search.php?q={query}&w=lyrics&p={pageno}url_xpath: //td[@class="text-left visitedlyr"]/a/@hreftitle_xpath: //span/b/text()content_xpath: //td[@class="text-left visitedlyr"]/a/smallabout:website: https://azlyrics.comwikidata_id: Q66372542official_api_documentation:use_official_api: falserequire_api_key: falseresults: HTML- name: metacpanengine: metacpanshortcut: cpandisabled: truenumber_of_results: 20# - name: meilisearch#   engine: meilisearch#   shortcut: mes#   enable_http: true#   base_url: http://localhost:7700#   index: my-index- name: mixcloudengine: mixcloudshortcut: mc# MongoDB engine# Required dependency: pymongo# - name: mymongo#   engine: mongodb#   shortcut: md#   exact_match_only: false#   host: '127.0.0.1'#   port: 27017#   enable_http: true#   results_per_page: 20#   database: 'business'#   collection: 'reviews'  # name of the db collection#   key: 'name'  # key in the collection to search for- name: neevaengine: xpathshortcut: nvtime_range_support: truetime_range_url: '&alf%5Bfreshness%5D={time_range_val}'time_range_map:day: 'Day'week: 'Week'month: 'Month'year: 'Year'search_url: https://neeva.com/search?q={query}&c=All&src=Pagination&page={pageno}{time_range}results_xpath: //div[@class="web-index__component-2rKiM"] | //li[@class="web-rich-deep-links__deepLink-SIbD4"]url_xpath: .//a[@class="lib-doc-title__link-1b9rC"]/@href | ./h2/a/@hreftitle_xpath: .//a[@class="lib-doc-title__link-1b9rC"] | ./h2/acontent_xpath: >.//div[@class="lib-doc-snippet__component-3ewW6"]/text() |.//div[@class="lib-doc-snippet__component-3ewW6"]/*[not(self::a)] |./pcontent_html_to_text: truesuggestion_xpath: //span[@class="result-related-searches__link-2ho_u"]paging: truedisabled: truecategories: [general, web]timeout: 5.0soft_max_redirects: 2about:website: https://neeva.comofficial_api_documentation:use_official_api: falserequire_api_key: falseresults: HTML- name: npmengine: json_enginepaging: truefirst_page_num: 0search_url: https://api.npms.io/v2/search?q={query}&size=25&from={pageno}results_query: resultsurl_query: package/links/npmtitle_query: package/namecontent_query: package/descriptionpage_size: 25categories: [it, packages]disabled: truetimeout: 5.0shortcut: npmabout:website: https://npms.io/wikidata_id: Q7067518official_api_documentation: https://api-docs.npms.io/use_official_api: falserequire_api_key: falseresults: JSON- name: nyaaengine: nyaashortcut: ntdisabled: true- name: mankierengine: json_enginesearch_url: https://www.mankier.com/api/v2/mans/?q={query}results_query: resultsurl_query: urltitle_query: namecontent_query: descriptioncategories: itshortcut: manabout:website: https://www.mankier.com/official_api_documentation: https://www.mankier.com/apiuse_official_api: truerequire_api_key: falseresults: JSON- name: openairedatasetsengine: json_enginepaging: truesearch_url: https://api.openaire.eu/search/datasets?format=json&page={pageno}&size=10&title={query}results_query: response/results/resulturl_query: metadata/oaf:entity/oaf:result/children/instance/webresource/url/$title_query: metadata/oaf:entity/oaf:result/title/$content_query: metadata/oaf:entity/oaf:result/description/$content_html_to_text: truecategories: "science"shortcut: oadtimeout: 5.0about:website: https://www.openaire.eu/wikidata_id: Q25106053official_api_documentation: https://api.openaire.eu/use_official_api: falserequire_api_key: falseresults: JSON- name: openairepublicationsengine: json_enginepaging: truesearch_url: https://api.openaire.eu/search/publications?format=json&page={pageno}&size=10&title={query}results_query: response/results/resulturl_query: metadata/oaf:entity/oaf:result/children/instance/webresource/url/$title_query: metadata/oaf:entity/oaf:result/title/$content_query: metadata/oaf:entity/oaf:result/description/$content_html_to_text: truecategories: scienceshortcut: oaptimeout: 5.0about:website: https://www.openaire.eu/wikidata_id: Q25106053official_api_documentation: https://api.openaire.eu/use_official_api: falserequire_api_key: falseresults: JSON# - name: opensemanticsearch#   engine: opensemantic#   shortcut: oss#   base_url: 'http://localhost:8983/solr/opensemanticsearch/'- name: openstreetmapengine: openstreetmapshortcut: osm- name: openreposengine: xpathpaging: truesearch_url: https://openrepos.net/search/node/{query}?page={pageno}url_xpath: //li[@class="search-result"]//h3[@class="title"]/a/@hreftitle_xpath: //li[@class="search-result"]//h3[@class="title"]/acontent_xpath: //li[@class="search-result"]//div[@class="search-snippet-info"]//p[@class="search-snippet"]categories: filestimeout: 4.0disabled: trueshortcut: orabout:website: https://openrepos.net/wikidata_id:official_api_documentation:use_official_api: falserequire_api_key: falseresults: HTML- name: packagistengine: json_enginepaging: truesearch_url: https://packagist.org/search.json?q={query}&page={pageno}results_query: resultsurl_query: urltitle_query: namecontent_query: descriptioncategories: [it, packages]disabled: truetimeout: 5.0shortcut: packabout:website: https://packagist.orgwikidata_id: Q108311377official_api_documentation: https://packagist.org/apidocuse_official_api: truerequire_api_key: falseresults: JSON- name: pdbeengine: pdbeshortcut: pdb# Hide obsolete PDB entries.  Default is not to hide obsolete structures#  hide_obsolete: false- name: photonengine: photonshortcut: ph- name: piratebayengine: piratebayshortcut: tpb# You may need to change this URL to a proxy if piratebay is blocked in your# countryurl: https://thepiratebay.org/timeout: 3.0# Required dependency: psychopg2#  - name: postgresql#    engine: postgresql#    database: postgres#    username: postgres#    password: postgres#    limit: 10#    query_str: 'SELECT * from my_table WHERE my_column = %(query)s'#    shortcut : psql- name: pub.devengine: xpathshortcut: pdsearch_url: https://pub.dev/packages?q={query}&page={pageno}paging: trueresults_xpath: /html/body/main/div/div[@class="search-results"]/div[@class="packages"]/divurl_xpath: ./div/h3/a/@hreftitle_xpath: ./div/h3/acontent_xpath: ./p[@class="packages-description"]categories: [packages, it]timeout: 3.0disabled: truefirst_page_num: 1about:website: https://pub.dev/official_api_documentation: https://pub.dev/help/apiuse_official_api: falserequire_api_key: falseresults: HTML- name: pubmedengine: pubmedshortcut: pubtimeout: 3.0- name: pypishortcut: pypiengine: xpathpaging: truesearch_url: https://pypi.org/search?q={query}&page={pageno}results_xpath: /html/body/main/div/div/div/form/div/ul/li/a[@class="package-snippet"]url_xpath: ./@hreftitle_xpath: ./h3/span[@class="package-snippet__name"]content_xpath: ./psuggestion_xpath: /html/body/main/div/div/div/form/div/div[@class="callout-block"]/p/span/a[@class="link"]first_page_num: 1categories: [it, packages]about:website: https://pypi.orgwikidata_id: Q2984686official_api_documentation: https://warehouse.readthedocs.io/api-reference/index.htmluse_official_api: falserequire_api_key: falseresults: HTML- name: qwantqwant_categ: webengine: qwantshortcut: qwcategories: [general, web]disabled: falseadditional_tests:rosebud: *test_rosebud- name: qwant newsqwant_categ: newsengine: qwantshortcut: qwncategories: newsdisabled: falsenetwork: qwant- name: qwant imagesqwant_categ: imagesengine: qwantshortcut: qwicategories: [images, web]disabled: falsenetwork: qwant- name: qwant videosqwant_categ: videosengine: qwantshortcut: qwvcategories: [videos, web]disabled: falsenetwork: qwant# - name: library#   engine: recoll#   shortcut: lib#   base_url: 'https://recoll.example.org/'#   search_dir: ''#   mount_prefix: /export#   dl_prefix: 'https://download.example.org'#   timeout: 30.0#   categories: files#   disabled: true# - name: recoll library reference#   engine: recoll#   base_url: 'https://recoll.example.org/'#   search_dir: reference#   mount_prefix: /export#   dl_prefix: 'https://download.example.org'#   shortcut: libr#   timeout: 30.0#   categories: files#   disabled: true- name: redditengine: redditshortcut: repage_size: 25# Required dependency: redis# - name: myredis#   shortcut : rds#   engine: redis_server#   exact_match_only: false#   host: '127.0.0.1'#   port: 6379#   enable_http: true#   password: ''#   db: 0# tmp suspended: bad certificate#  - name: scanr structures#    shortcut: scs#    engine: scanr_structures#    disabled: true- name: sepiasearchengine: sepiasearchshortcut: sep- name: soundcloudengine: soundcloudshortcut: sc- name: stackoverflowengine: stackexchangeshortcut: stapi_site: 'stackoverflow'categories: [it, q&a]- name: askubuntuengine: stackexchangeshortcut: ubuntuapi_site: 'askubuntu'categories: [it, q&a]- name: superuserengine: stackexchangeshortcut: suapi_site: 'superuser'categories: [it, q&a]- name: searchcode codeengine: searchcode_codeshortcut: sccdisabled: true- name: framalibreengine: framalibreshortcut: frldisabled: true# - name: searx#   engine: searx_engine#   shortcut: se#   instance_urls :#       - http://127.0.0.1:8888/#       - ...#   disabled: true- name: semantic scholarengine: semantic_scholardisabled: trueshortcut: se# Spotify needs API credentials# - name: spotify#   engine: spotify#   shortcut: stf#   api_client_id: *******#   api_client_secret: *******# - name: solr#   engine: solr#   shortcut: slr#   base_url: http://localhost:8983#   collection: collection_name#   sort: '' # sorting: asc or desc#   field_list: '' # comma separated list of field names to display on the UI#   default_fields: '' # default field to query#   query_fields: '' # query fields#   enable_http: true# - name: springer nature#   engine: springer#   # get your API key from: https://dev.springernature.com/signup#   # working API key, for test & debug: "a69685087d07eca9f13db62f65b8f601"#   api_key: 'unset'#   shortcut: springer#   timeout: 15.0- name: startpageengine: startpageshortcut: sptimeout: 6.0disabled: trueadditional_tests:rosebud: *test_rosebud- name: tokyotoshokanengine: tokyotoshokanshortcut: tttimeout: 6.0disabled: true- name: solidtorrentsengine: solidtorrentsshortcut: solidtimeout: 4.0disabled: falsebase_url:- https://solidtorrents.net- https://solidtorrents.eu- https://solidtorrents.to- https://bitsearch.to# For this demo of the sqlite engine download:#   https://liste.mediathekview.de/filmliste-v2.db.bz2# and unpack into searx/data/filmliste-v2.db# Query to test: "!demo concert"## - name: demo#   engine: sqlite#   shortcut: demo#   categories: general#   result_template: default.html#   database: searx/data/filmliste-v2.db#   query_str:  >-#     SELECT title || ' (' || time(duration, 'unixepoch') || ')' AS title,#            COALESCE( NULLIF(url_video_hd,''), NULLIF(url_video_sd,''), url_video) AS url,#            description AS content#       FROM film#      WHERE title LIKE :wildcard OR description LIKE :wildcard#      ORDER BY duration DESC#   disabled: false# Requires Tor- name: torchengine: xpathpaging: truesearch_url:http://xmh57jrknzkhv6y3ls3ubitzfqnkrwxhopf5aygthi7d6rplyvk3noyd.onion/cgi-bin/omega/omega?P={query}&DEFAULTOP=andresults_xpath: //table//trurl_xpath: ./td[2]/atitle_xpath: ./td[2]/bcontent_xpath: ./td[2]/smallcategories: onionsenable_http: trueshortcut: tch# torznab engine lets you query any torznab compatible indexer.  Using this# engine in combination with Jackett (https://github.com/Jackett/Jackett)# opens the possibility to query a lot of public and private indexers directly# from SearXNG.# - name: torznab#   engine: torznab#   shortcut: trz#   base_url: http://localhost:9117/api/v2.0/indexers/all/results/torznab#   enable_http: true  # if using localhost#   api_key: xxxxxxxxxxxxxxx#   # https://github.com/Jackett/Jackett/wiki/Jackett-Categories#   torznab_categories:  # optional#     - 2000#     - 5000- name: twittershortcut: twengine: twitterdisabled: true# maybe in a fun category#  - name: uncyclopedia#    engine: mediawiki#    shortcut: unc#    base_url: https://uncyclopedia.wikia.com/#    number_of_results: 5# tmp suspended - too slow, too many errors#  - name: urbandictionary#    engine      : xpath#    search_url  : https://www.urbandictionary.com/define.php?term={query}#    url_xpath   : //*[@class="word"]/@href#    title_xpath : //*[@class="def-header"]#    content_xpath: //*[@class="meaning"]#    shortcut: ud- name: unsplashengine: unsplashshortcut: us- name: yahooengine: yahooshortcut: yhdisabled: true- name: yahoo newsengine: yahoo_newsshortcut: yhn- name: youtubeshortcut: yt# You can use the engine using the official stable API, but you need an API# key See: https://console.developers.google.com/project## engine: youtube_api# api_key: 'apikey' # required!## Or you can use the html non-stable engine, activated by defaultengine: youtube_noapi- name: dailymotionengine: dailymotionshortcut: dm- name: vimeoengine: vimeoshortcut: vm- name: wibyengine: json_enginesearch_url: https://wiby.me/json/?q={query}url_query: URLtitle_query: Titlecontent_query: Snippetcategories: [general, web]shortcut: wibdisabled: trueabout:website: https://wiby.me/- name: marginaliaengine: json_engineshortcut: marcategories: generalpaging: false# index: {"0": "popular", "1": "blogs", "2": "big_sites",# "3": "default", "4": experimental"}search_url: https://api.marginalia.nu/public/search/{query}?index=4&count=20results_query: resultsurl_query: urltitle_query: titlecontent_query: descriptiontimeout: 1.5disabled: trueabout:website: https://www.marginalia.nu/official_api_documentation: https://api.marginalia.nu/use_official_api: truerequire_api_key: trueresults: JSON- name: alexandriaengine: json_engineshortcut: alxcategories: generalpaging: truesearch_url: https://api.alexandria.org/?a=1&q={query}&p={pageno}results_query: resultstitle_query: titleurl_query: urlcontent_query: snippettimeout: 1.5disabled: trueabout:website: https://alexandria.org/official_api_documentation: https://github.com/alexandria-org/alexandria-api/raw/master/README.mduse_official_api: truerequire_api_key: falseresults: JSON- name: wikibooksengine: mediawikishortcut: wbcategories: generalbase_url: "https://{language}.wikibooks.org/"number_of_results: 5search_type: textdisabled: trueabout:website: https://www.wikibooks.org/wikidata_id: Q367- name: wikinewsengine: mediawikishortcut: wncategories: newsbase_url: "https://{language}.wikinews.org/"number_of_results: 5search_type: textdisabled: trueabout:website: https://www.wikinews.org/wikidata_id: Q964- name: wikiquoteengine: mediawikishortcut: wqcategories: generalbase_url: "https://{language}.wikiquote.org/"number_of_results: 5search_type: textdisabled: trueadditional_tests:rosebud: *test_rosebudabout:website: https://www.wikiquote.org/wikidata_id: Q369- name: wikisourceengine: mediawikishortcut: wscategories: generalbase_url: "https://{language}.wikisource.org/"number_of_results: 5search_type: textdisabled: trueabout:website: https://www.wikisource.org/wikidata_id: Q263- name: wiktionaryengine: mediawikishortcut: wtcategories: [dictionaries]base_url: "https://{language}.wiktionary.org/"number_of_results: 5search_type: textdisabled: falseabout:website: https://www.wiktionary.org/wikidata_id: Q151- name: wikiversityengine: mediawikishortcut: wvcategories: generalbase_url: "https://{language}.wikiversity.org/"number_of_results: 5search_type: textdisabled: trueabout:website: https://www.wikiversity.org/wikidata_id: Q370- name: wikivoyageengine: mediawikishortcut: wycategories: generalbase_url: "https://{language}.wikivoyage.org/"number_of_results: 5search_type: textdisabled: trueabout:website: https://www.wikivoyage.org/wikidata_id: Q373- name: wolframalphashortcut: wa# You can use the engine using the official stable API, but you need an API# key.  See: https://products.wolframalpha.com/api/## engine: wolframalpha_api# api_key: ''## Or you can use the html non-stable engine, activated by defaultengine: wolframalpha_noapitimeout: 6.0categories: []- name: dictzoneengine: dictzoneshortcut: dc- name: mymemory translatedengine: translatedshortcut: tltimeout: 5.0disabled: false# You can use without an API key, but you are limited to 1000 words/day# See: https://mymemory.translated.net/doc/usagelimits.php# api_key: ''# Required dependency: mysql-connector-python#  - name: mysql#    engine: mysql_server#    database: mydatabase#    username: user#    password: pass#    limit: 10#    query_str: 'SELECT * from mytable WHERE fieldname=%(query)s'#    shortcut: mysql- name: 1337xengine: 1337xshortcut: 1337xdisabled: true- name: dudenengine: dudenshortcut: dudisabled: true- name: seznamshortcut: sznengine: seznamdisabled: true# - name: deepl#   engine: deepl#   shortcut: dpl#   # You can use the engine using the official stable API, but you need an API key#   # See: https://www.deepl.com/pro-api?cta=header-pro-api#   api_key: ''  # required!#   timeout: 5.0#   disabled: true- name: mojeekshortcut: mjkengine: xpathpaging: truecategories: [general, web]search_url: https://www.mojeek.com/search?q={query}&s={pageno}results_xpath: //a[@class="ob"]url_xpath: ./@hreftitle_xpath: ./h2content_xpath: ../p[@class="s"]suggestion_xpath: /html/body//div[@class="top-info"]/p[@class="top-info spell"]/afirst_page_num: 0page_size: 10disabled: trueabout:website: https://www.mojeek.com/wikidata_id: Q60747299official_api_documentation: https://www.mojeek.com/services/api.html/use_official_api: falserequire_api_key: falseresults: HTML- name: navershortcut: nvrcategories: [general, web]engine: xpathpaging: truesearch_url: https://search.naver.com/search.naver?where=webkr&sm=osp_hty&ie=UTF-8&query={query}&start={pageno}url_xpath: //a[@class="link_tit"]/@hreftitle_xpath: //a[@class="link_tit"]content_xpath: //a[@class="total_dsc"]/divfirst_page_num: 1page_size: 10disabled: trueabout:website: https://www.naver.com/wikidata_id: Q485639official_api_documentation: https://developers.naver.com/docs/nmt/examples/use_official_api: falserequire_api_key: falseresults: HTMLlanguage: ko- name: rubygemsshortcut: rbgengine: xpathpaging: truesearch_url: https://rubygems.org/search?page={pageno}&query={query}results_xpath: /html/body/main/div/a[@class="gems__gem"]url_xpath: ./@hreftitle_xpath: ./span/h2content_xpath: ./span/psuggestion_xpath: /html/body/main/div/div[@class="search__suggestions"]/p/afirst_page_num: 1categories: [it, packages]disabled: trueabout:website: https://rubygems.org/wikidata_id: Q1853420official_api_documentation: https://guides.rubygems.org/rubygems-org-api/use_official_api: falserequire_api_key: falseresults: HTML- name: peertubeengine: peertubeshortcut: ptbpaging: true# https://instances.joinpeertube.org/instancesbase_url: https://peertube.biz/# base_url: https://tube.tardis.world/categories: videosdisabled: truetimeout: 6.0- name: mediathekviewwebengine: mediathekviewwebshortcut: mvwdisabled: true# - name: yacy#   engine: yacy#   shortcut: ya#   base_url: http://localhost:8090# required if you aren't using HTTPS for your local yacy instance'#   enable_http: true#   number_of_results: 5#   timeout: 3.0- name: rumbleengine: rumbleshortcut: rubase_url: https://rumble.com/paging: truecategories: videosdisabled: true- name: wordnikengine: wordnikshortcut: defbase_url: https://www.wordnik.com/categories: [dictionaries]timeout: 5.0disabled: false- name: woxikon.de synonymeengine: xpathshortcut: woxicategories: [dictionaries]timeout: 5.0disabled: truesearch_url: https://synonyme.woxikon.de/synonyme/{query}.phpurl_xpath: //div[@class="upper-synonyms"]/a/@hrefcontent_xpath: //div[@class="synonyms-list-group"]title_xpath: //div[@class="upper-synonyms"]/ano_result_for_http_status: [404]about:website: https://www.woxikon.de/wikidata_id:  # No Wikidata IDuse_official_api: falserequire_api_key: falseresults: HTMLlanguage: de- name: sjp.pwnengine: sjpshortcut: sjpbase_url: https://sjp.pwn.pl/timeout: 5.0disabled: true# wikimini: online encyclopedia for children# The fulltext and title parameter is necessary for Wikimini because# sometimes it will not show the results and redirect instead- name: wikiminiengine: xpathshortcut: wkmnsearch_url: https://fr.wikimini.org/w/index.php?search={query}&title=Sp%C3%A9cial%3ASearch&fulltext=Searchurl_xpath: //li/div[@class="mw-search-result-heading"]/a/@hreftitle_xpath: //li//div[@class="mw-search-result-heading"]/acontent_xpath: //li/div[@class="searchresult"]categories: generaldisabled: trueabout:website: https://wikimini.org/wikidata_id: Q3568032use_official_api: falserequire_api_key: falseresults: HTMLlanguage: fr- name: wttr.inengine: wttrshortcut: wttrtimeout: 9.0- name: braveshortcut: braveengine: xpathpaging: truetime_range_support: truefirst_page_num: 0time_range_url: "&tf={time_range_val}"search_url: https://search.brave.com/search?q={query}&offset={pageno}&spellcheck=1{time_range}url_xpath: //a[@class="result-header"]/@hreftitle_xpath: //span[@class="snippet-title"]content_xpath: //p[1][@class="snippet-description"]suggestion_xpath: //div[@class="text-gray h6"]/atime_range_map:day: 'pd'week: 'pw'month: 'pm'year: 'py'categories: [general, web]disabled: trueheaders:Accept-Encoding: gzip, deflateabout:website: https://brave.com/search/wikidata_id: Q107355971use_official_api: falserequire_api_key: falseresults: HTML- name: petalsearchshortcut: ptsengine: xpathpaging: truesearch_url: https://petalsearch.com/search?query={query}&pn={pageno}results_xpath: //div[@class="webpage-content"]/div[@class="title-cont"]/aurl_xpath: ./@hreftitle_xpath: .content_xpath: ../../div[@class="webpage-text"]suggestion_xpath: //div[@class="related-search-items"]/afirst_page_num: 1disabled: trueabout:website: https://petalsearch.com/wikidata_id: Q104399280use_official_api: falserequire_api_key: falseresults: HTML- name: petalsearch imagesengine: petal_imagesshortcut: ptsidisabled: truetimeout: 3.0- name: petalsearch newsshortcut: ptsncategories: newsengine: xpathpaging: truesearch_url: https://petalsearch.com/search?channel=news&query={query}&pn={pageno}results_xpath: //div[@class="news-container"]/div/div/div/aurl_xpath: ./@hreftitle_xpath: ./divcontent_xpath: ../div[@class="news-text"]thumbnail_xpath: ../../../../img/@srcfirst_page_num: 1disabled: trueabout:website: https://petalsearch.com/wikidata_id: Q104399280use_official_api: falserequire_api_key: falseresults: HTML- name: lib.rsshortcut: lrsengine: xpathsearch_url: https://lib.rs/search?q={query}results_xpath: /html/body/main/div/ol/li/aurl_xpath: ./@hreftitle_xpath: ./div[@class="h"]/h4content_xpath: ./div[@class="h"]/pcategories: [it, packages]disabled: trueabout:website: https://lib.rswikidata_id: Q113486010use_official_api: falserequire_api_key: falseresults: HTML- name: sourcehutshortcut: srhtengine: xpathpaging: truesearch_url: https://sr.ht/projects?page={pageno}&search={query}results_xpath: (//div[@class="event-list"])[1]/div[@class="event"]url_xpath: ./h4/a[2]/@hreftitle_xpath: ./h4/a[2]content_xpath: ./pfirst_page_num: 1categories: [it, repos]disabled: trueabout:website: https://sr.htwikidata_id: Q78514485official_api_documentation: https://man.sr.ht/use_official_api: falserequire_api_key: falseresults: HTML# Doku engine lets you access to any Doku wiki instance:
# A public one or a privete/corporate one.
#  - name: ubuntuwiki
#    engine: doku
#    shortcut: uw
#    base_url: 'https://doc.ubuntu-fr.org'# Be careful when enabling this engine if you are
# running a public instance. Do not expose any sensitive
# information. You can restrict access by configuring a list
# of access tokens under tokens.
#  - name: git grep
#    engine: command
#    command: ['git', 'grep', '{{QUERY}}']
#    shortcut: gg
#    tokens: []
#    disabled: true
#    delimiter:
#        chars: ':'
#        keys: ['filepath', 'code']# Be careful when enabling this engine if you are
# running a public instance. Do not expose any sensitive
# information. You can restrict access by configuring a list
# of access tokens under tokens.
#  - name: locate
#    engine: command
#    command: ['locate', '{{QUERY}}']
#    shortcut: loc
#    tokens: []
#    disabled: true
#    delimiter:
#        chars: ' '
#        keys: ['line']# Be careful when enabling this engine if you are
# running a public instance. Do not expose any sensitive
# information. You can restrict access by configuring a list
# of access tokens under tokens.
#  - name: find
#    engine: command
#    command: ['find', '.', '-name', '{{QUERY}}']
#    query_type: path
#    shortcut: fnd
#    tokens: []
#    disabled: true
#    delimiter:
#        chars: ' '
#        keys: ['line']# Be careful when enabling this engine if you are
# running a public instance. Do not expose any sensitive
# information. You can restrict access by configuring a list
# of access tokens under tokens.
#  - name: pattern search in files
#    engine: command
#    command: ['fgrep', '{{QUERY}}']
#    shortcut: fgr
#    tokens: []
#    disabled: true
#    delimiter:
#        chars: ' '
#        keys: ['line']# Be careful when enabling this engine if you are
# running a public instance. Do not expose any sensitive
# information. You can restrict access by configuring a list
# of access tokens under tokens.
#  - name: regex search in files
#    engine: command
#    command: ['grep', '{{QUERY}}']
#    shortcut: gr
#    tokens: []
#    disabled: true
#    delimiter:
#        chars: ' '
#        keys: ['line']doi_resolvers:oadoi.org: 'https://oadoi.org/'doi.org: 'https://doi.org/'doai.io: 'https://dissem.in/'sci-hub.se: 'https://sci-hub.se/'sci-hub.st: 'https://sci-hub.st/'sci-hub.ru: 'https://sci-hub.ru/'default_doi_resolver: 'oadoi.org'

docker项目-搭建个人搜索引擎SearXNG相关推荐

  1. 【Docker】手把手教你搭建好玩的docker项目合集

    这是我在使用docker后,慢慢一个个累计起来的项目,觉得还挺有意思的. 之后我会持续慢慢的更新新的项目,大伙如何有好玩的docker项目,欢迎来找我讨论哇,我每天都会看私信的 文章目录 docker ...

  2. docker容器没有apt_使用Docker快速搭建Rails开发环境

    引言 Docker with rails 学习 Ruby On Rails 开发的同学经常会遇到因为电脑系统环境不同,同样的程序在自己这边跑起来没问题,给了其他人之后就是各种依赖或者环境问题,尤其是在 ...

  3. Docker Compose搭建consul群集环境(了解Docker Compose及常用命令,Docker四种网络,Doker指定端口)

    文章目录 Docker Compose搭建consul群集环境 认识Docker Compose IConsul Docker Compose容器编排 Dasker Compose配置常用字段 Bos ...

  4. [转]2020年排名前20的基于SpringBoot搭建的开源项目,帮你快速进行项目搭建!

    △Hollis, 一个对Coding有着独特追求的人△ 这是Hollis的第 287 篇原创分享 作者 l Hollis 来源 l Hollis(ID:hollischuang) SpringBoot ...

  5. 2020年排名前20的基于SpringBoot搭建的开源项目,帮你快速进行项目搭建!

    △Hollis, 一个对Coding有着独特追求的人△ 这是Hollis的第 287 篇原创分享 作者 l Hollis 来源 l Hollis(ID:hollischuang) SpringBoot ...

  6. 如何基于Docker快速搭建Elasticsearch集群?

    如何基于Docker快速搭建Elasticsearch集群? Elasticsearch  作为一个搜索引擎,我们对它的基本要求就是存储海量数据并且可以在非常短的时间内查询到我们想要的信息.所以第一步 ...

  7. Docker快速搭建Taiga敏捷开发项目管理平台

    Taiga.io , Open Source, full featured project management platform for startups and agile developers ...

  8. 使用Docker高效搭建开发环境

    女主宣言 Docker 作为轻量级的基于容器的解决方案,它对系统侵入性低,容易移植,天生就适合做复杂业务部署和开发环境搭建,今天给大家带来的是我司开发是如何使用 Docker 高效搭建开发环境的.本文 ...

  9. 五分钟用Docker快速搭建Go开发环境

    挺早以前在我写过一篇用 Docker搭建LNMP开发环境的文章:用Docker搭建Laravel开发环境,里面详细介绍了将 nginx. mysql和 php三个容器用 docker-compose编 ...

最新文章

  1. Spark 把RDD数据保存到hdfs单个文件中,而不是目录
  2. centos6.5 安装mysql8,centos6上安装mysql8.0版本
  3. Information Theory, Inference, and Learning Algorithms
  4. lua--面向对象使用middleclass
  5. [转]Google的C++代码规范
  6. halcon基本,vb,vc连接halcon读取图像,视频
  7. weblogic概览下的上下文根配置_Weblogic服务下获取上下文路劲问题
  8. Nginx 网站定义自己的错误页面
  9. Ubuntu16.04 开启多个终端,一个终端多个小窗口
  10. 书评 – 程序员经典读物(1)
  11. [html] iframe父页面如何获取子页面的元素?
  12. 《程序是怎样跑起来的》第十一章读后感
  13. 《毫米波雷达运动人体目标建模与特征提取》---论文学习笔记
  14. Java Web图书管理系统总结(jsp+servlet+jdbc+javabean+dao)
  15. maya mel uf8_对于学习MAYA MEL必须收藏的一篇文章
  16. 泰迪杯数据挖掘挑战赛—机器学习(二)
  17. 微信小程序-detail详情页静态页面搭建
  18. 浅析 Hinton 最近提出的 Capsule 计划
  19. 电子不停车收费系统(ETC)专题(5)——最新动态
  20. 华为服务器虚拟机登录密码,虚拟机登录密码忘记了怎么办

热门文章

  1. 计算机在条形码的应用,条码应用系统的组成
  2. JAVA毕业设计BS架构考研交流学习平台设计与实现计算机源码+lw文档+系统+调试部署+数据库
  3. Linux下的虚拟化部署
  4. 基于51单片机的多功能八路抢答器
  5. 109篇社会网络分析论文集推荐-AMiner
  6. TensorFlow入门教程(18)语音识别(中)
  7. spark left join 和 right join 的坑
  8. 刚删除的文件怎么找回?
  9. pytest框架二次开发之自定义注解
  10. 罗斯蒙特流量计应用领域