Step by step installation¶
Step by step installation with virtualenv. For Ubuntu, be sure to have enable universe repository.
Install packages¶
$ sudo -H apt-get install -y \
python3-dev python3-babel python3-venv \
uwsgi uwsgi-plugin-python3 \
git build-essential libxslt-dev zlib1g-dev libffi-dev libssl-dev \
shellcheck
$ sudo -H pacman -S --noconfirm \
python python-pip python-lxml python-babel \
uwsgi uwsgi-plugin-python \
git base-devel libxml2 \
shellcheck
$ sudo -H dnf install -y \
python python-pip python-lxml python-babel \
uwsgi uwsgi-plugin-python3 \
git @development-tools libxml2 \
ShellCheck
Hint
This installs also the packages needed by uwsgi
Create user¶
$ sudo -H useradd --shell /bin/bash --system \
--home-dir "/usr/local/searx" \
--comment 'Privacy-respecting metasearch engine' searx
$ sudo -H mkdir "/usr/local/searx"
$ sudo -H chown -R "searx:searx" "/usr/local/searx"
install searx & dependencies¶
Start a interactive shell from new created user and clone searx:
$ sudo -H -u searx -i
(searx)$ git clone "https://github.com/searxng/searxng" "/usr/local/searx/searx-src"
In the same shell create virtualenv:
(searx)$ python3 -m venv "/usr/local/searx/searx-pyenv"
(searx)$ echo ". /usr/local/searx/searx-pyenv/bin/activate" >> "/usr/local/searx/.profile"
To install searx’s dependencies, exit the searx bash session you opened above and restart a new. Before install, first check if your virtualenv was sourced from the login (~/.profile):
$ sudo -H -u searx -i
(searx)$ command -v python && python --version
/usr/local/searx/searx-pyenv/bin/python
Python 3.8.1
# update pip's boilerplate ..
pip install -U pip
pip install -U setuptools
pip install -U wheel
pip install -U pyyaml
# jump to searx's working tree and install searx into virtualenv
(searx)$ cd "/usr/local/searx/searx-src"
(searx)$ pip install -e .
Tip
Open a second terminal for the configuration tasks and leave the (searx)$
terminal open for the tasks below.
Configuration¶
To create a initial /etc/searx/settings.yml
you can start with a copy of the
file git://utils/templates/etc/searx/use_default_settings.yml. This setup
use default settings from
git://searx/settings.yml and is recommended since PR 2291 is merged.
For a minimal setup, configure like shown below – replace searx@$(uname
-n)
with a name of your choice, set ultrasecretkey
– and/or edit
/etc/searx/settings.yml
to your needs.
$ sudo -H mkdir -p "/etc/searx"
$ sudo -H cp "/usr/local/searx/searx-src/utils/templates/etc/searx/use_default_settings.yml" \
"/etc/searx/settings.yml"
$ sudo -H mkdir -p "/etc/searx"
$ sudo -H cp "/usr/local/searx/searx-src/searx/settings.yml" \
"/etc/searx/settings.yml"
$ sudo -H sed -i -e "s/ultrasecretkey/$(openssl rand -hex 16)/g" "/etc/searx/settings.yml"
$ sudo -H sed -i -e "s/{instance_name}/searx@$(uname -n)/g" "/etc/searx/settings.yml"
use_default_settings: True
general:
debug : False # Debug mode, only for development
instance_name : "searx" # displayed name
search:
safe_search : 0 # Filter results. 0: None, 1: Moderate, 2: Strict
autocomplete : "" # Existing autocomplete backends: "dbpedia", "duckduckgo", "google", "startpage", "swisscows", "qwant", "wikipedia" - leave blank to turn it off by default
default_lang : "" # Default search language - leave blank to detect from browser information or use codes from 'languages.py'
formats: [html, csv, json, rss]
server:
port : 8888
bind_address : "127.0.0.1" # address to listen on
secret_key : "ultrasecretkey" # change this!
base_url : False # Set custom base_url. Possible values: False or "https://your.custom.host/location/"
image_proxy : False # Proxying image results through searx
# uncomment below section if you have running morty proxy
#result_proxy:
# url : http://127.0.0.1:3000/
# key : !!binary "your_morty_proxy_key"
general:
debug : False # Debug mode, only for development
instance_name : "searxng" # displayed name
contact_url: False # mailto:contact@example.com
brand:
git_url: https://github.com/searxng/searxng
git_branch: master
issue_url: https://github.com/searxng/searxng/issues
new_issue_url: https://github.com/searxng/searxng/issues/new
docs_url: https://searxng.github.io/searxng
public_instances: https://searx.space
wiki_url: https://github.com/searxng/searxng/wiki
search:
safe_search : 0 # Filter results. 0: None, 1: Moderate, 2: Strict
autocomplete : "" # Existing autocomplete backends: "dbpedia", "duckduckgo", "google", "startpage", "swisscows", "qwant", "wikipedia" - leave blank to turn it off by default
default_lang : "" # Default search language - leave blank to detect from browser information or use codes from 'languages.py'
ban_time_on_fail : 5 # ban time in seconds after engine errors
max_ban_time_on_fail : 120 # max ban time in seconds after engine errors
formats: [html, csv, json, rss] # remove format to deny access, use lower case.
server:
port : 8888
bind_address : "127.0.0.1" # address to listen on
secret_key : "ultrasecretkey" # change this!
base_url : False # Set custom base_url. Possible values: False or "https://your.custom.host/location/"
image_proxy : False # Proxying image results through searx
http_protocol_version : "1.0" # 1.0 and 1.1 are supported
method: "POST" # POST queries are more secure as they don't show up in history but may cause problems when using Firefox containers
default_http_headers:
X-Content-Type-Options : nosniff
X-XSS-Protection : 1; mode=block
X-Download-Options : noopen
X-Robots-Tag : noindex, nofollow
Referrer-Policy : no-referrer
ui:
static_path : "" # Custom static path - leave it blank if you didn't change
templates_path : "" # Custom templates path - leave it blank if you didn't change
default_theme : oscar # ui theme
default_locale : "" # Default interface locale - leave blank to detect from browser information or use codes from the 'locales' config section
theme_args :
oscar_style : logicodev # default style of oscar
# results_on_new_tab: False # Open result links in a new tab by default
# categories_order :
# - general
# - files
# - map
# - it
# - science
# 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
# 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/
# key : !!binary "your_morty_proxy_key"
# proxify_results : True # [True|False] enable the "proxy" button next to each result
outgoing: # communication with search engines
request_timeout : 3.0 # default timeout in seconds, can be override by engine
# max_request_timeout: 10.0 # the maximum timeout in seconds
useragent_suffix : "" # suffix of searx_useragent, could contain informations like an email address to the administrator
pool_connections : 100 # The maximum number of concurrent connections that may be established.
pool_maxsize : 20 # Allow the connection pool to maintain keep-alive connections below this point.
enable_http2: True # See https://www.python-httpx.org/http2/
# uncomment below section if you want to use a proxy
# see https://2.python-requests.org/en/latest/user/advanced/#proxies
# SOCKS 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_proxy_timeout : 10.0 # Extra seconds to add in order to account for the time taken by the proxy
# 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
# See https://searxng.github.io/searxng/dev/plugins.html for more details
#
# plugins:
# - plugin1
# - plugin2
# - ...
# uncomment below section if you want to configure which plugin is enabled by default
#
# enabled_plugins:
# - "HTTPS rewrite"
# - ...
checker:
# disable checker when in debug mode
off_when_debug: True
# scheduling: interval or int
# use "scheduling: False" to disable scheduling
# to activate the scheduler:
# * uncomment "scheduling" section
# * add "cache2 = name=searxcache,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_rosebud
matrix:
query: rosebud
lang: en
result_container:
- not_empty
- ['one_title_contains', 'citizen kane']
test:
- unique_results
android: &test_android
matrix:
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_infobox
infobox:
matrix:
query: ["linux", "new york", "bbc"]
result_container:
- has_infobox
engines:
- name: apk mirror
engine: apkmirror
timeout: 4.0
shortcut: apkm
disabled: True
# Requires Tor
- name : ahmia
engine : ahmia
categories : onions
enable_http : True
shortcut : ah
- name : arch linux wiki
engine : archlinux
shortcut : al
- name : archive is
engine : xpath
search_url : https://archive.is/search/?q={query}
url_xpath : (//div[@class="TEXT-BLOCK"]/a)/@href
title_xpath : (//div[@class="TEXT-BLOCK"]/a)
content_xpath : //div[@class="TEXT-BLOCK"]/ul/li
categories : general
timeout : 7.0
disabled : True
shortcut : ai
soft_max_redirects: 1
about:
website: https://archive.is/
wikidata_id: Q13515725
official_api_documentation: http://mementoweb.org/depot/native/archiveis/
use_official_api: false
require_api_key: false
results: HTML
- name : artic
engine : artic
shortcut : arc
timeout : 4.0
- name : arxiv
engine : arxiv
shortcut : arx
categories : science
timeout : 4.0
# tmp suspended: dh key too small
# - name : base
# engine : base
# shortcut : bs
- name: bandcamp
engine: bandcamp
shortcut: bc
categories: music
- name : wikipedia
engine : wikipedia
shortcut : wp
base_url : 'https://{language}.wikipedia.org/'
- name : bing
engine : bing
shortcut : bi
- name : bing images
engine : bing_images
shortcut : bii
- name : bing news
engine : bing_news
shortcut : bin
- name : bing videos
engine : bing_videos
shortcut : biv
- name : bitbucket
engine : xpath
paging : True
search_url : https://bitbucket.org/repo/all/{pageno}?name={query}
url_xpath : //article[@class="repo-summary"]//a[@class="repo-link"]/@href
title_xpath : //article[@class="repo-summary"]//a[@class="repo-link"]
content_xpath : //article[@class="repo-summary"]/p
categories : it
timeout : 4.0
disabled : True
shortcut : bb
about:
website: https://bitbucket.org/
wikidata_id: Q2493781
official_api_documentation: https://developer.atlassian.com/bitbucket
use_official_api: false
require_api_key: false
results: HTML
- name : btdigg
engine : btdigg
shortcut : bt
- name : ccc-tv
engine : xpath
paging : False
search_url : https://media.ccc.de/search/?q={query}
url_xpath : //div[@class="caption"]/h3/a/@href
title_xpath : //div[@class="caption"]/h3/a/text()
content_xpath : //div[@class="caption"]/h4/@title
categories : videos
disabled : True
shortcut : c3tv
about:
website: https://media.ccc.de/
wikidata_id: Q80729951
official_api_documentation: https://github.com/voc/voctoweb
use_official_api: false
require_api_key: false
results: HTML
- name : ccengine
engine : ccengine
categories : images
shortcut : cce
# - 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 : crossref
engine : json_engine
paging : True
search_url : https://search.crossref.org/dois?q={query}&page={pageno}
url_query : doi
title_query : title
title_html_to_text: True
content_query : fullCitation
content_html_to_text: True
categories : science
shortcut : cr
about:
website: https://www.crossref.org/
wikidata_id: Q5188229
official_api_documentation: https://github.com/CrossRef/rest-api-doc
use_official_api: false
require_api_key: false
results: JSON
- name : currency
engine : currency_convert
categories : general
shortcut : cc
- name : deezer
engine : deezer
shortcut : dz
- name : deviantart
engine : deviantart
shortcut : da
timeout : 3.0
- name : ddg definitions
engine : duckduckgo_definitions
shortcut : ddd
weight : 2
disabled : True
tests: *tests_infobox
# cloudflare protected
# - name : digbt
# engine : digbt
# shortcut : dbt
# timeout : 6.0
# disabled : True
- name : digg
engine : digg
shortcut : dg
- name : erowid
engine : xpath
paging : True
first_page_num : 0
page_size : 30
search_url : https://www.erowid.org/search.php?q={query}&s={pageno}
url_xpath : //dl[@class="results-list"]/dt[@class="result-title"]/a/@href
title_xpath : //dl[@class="results-list"]/dt[@class="result-title"]/a/text()
content_xpath : //dl[@class="results-list"]/dd[@class="result-details"]
categories : general
shortcut : ew
disabled : True
about:
website: https://www.erowid.org/
wikidata_id: Q1430691
official_api_documentation:
use_official_api: false
require_api_key: false
results: 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 : wikidata
engine : wikidata
shortcut : wd
timeout : 3.0
weight : 2
tests: *tests_infobox
- name : duckduckgo
engine : duckduckgo
shortcut : ddg
disabled : True
- name : duckduckgo images
engine : duckduckgo_images
shortcut : ddi
timeout: 3.0
disabled : True
- name : etools
engine : etools
shortcut : eto
disabled : True
additional_tests:
rosebud: *test_rosebud
- name : etymonline
engine : xpath
paging : True
search_url : https://etymonline.com/search?page={pageno}&q={query}
url_xpath : //a[contains(@class, "word__name--")]/@href
title_xpath : //a[contains(@class, "word__name--")]
content_xpath : //section[contains(@class, "word__defination")]
first_page_num : 1
shortcut : et
disabled : True
about:
website: https://www.etymonline.com/
wikidata_id: Q1188617
official_api_documentation:
use_official_api: false
require_api_key: false
results: HTML
# - name : ebay
# engine : ebay
# shortcut : eb
# disabled : True
# timeout: 5
- name : 1x
engine : www1x
shortcut : 1x
timeout : 3.0
disabled : True
- name : fdroid
engine : fdroid
shortcut : fd
disabled : True
- name : flickr
categories : images
shortcut : 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 default
engine : flickr_noapi
- name : free software directory
engine : mediawiki
shortcut : fsd
categories : it
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 title
search_type : title
timeout : 5.0
disabled : True
about:
website: https://directory.fsf.org/
wikidata_id: Q2470288
# - name : freesound
# engine : freesound
# shortcut : fnd
# disabled : True
# timeout : 15.0
# api_key : MyAPIkey
# API key required, see : https://freesound.org/docs/api/overview.html
- name : frinkiac
engine : frinkiac
shortcut : frk
disabled : True
- name : genius
engine : genius
shortcut : gen
- name : gigablast
engine : gigablast
shortcut : gb
timeout : 3.0
disabled: True
additional_tests:
rosebud: *test_rosebud
- name : gentoo
engine : gentoo
shortcut : ge
- name : gitlab
engine : json_engine
paging : True
search_url : https://gitlab.com/api/v4/projects?search={query}&page={pageno}
url_query : web_url
title_query : name_with_namespace
content_query : description
page_size : 20
categories : it
shortcut : gl
timeout : 10.0
disabled : True
about:
website: https://about.gitlab.com/
wikidata_id: Q16639197
official_api_documentation: https://docs.gitlab.com/ee/api/
use_official_api: false
require_api_key: false
results: JSON
- name : github
engine : github
shortcut : 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 : codeberg
engine : json_engine
search_url : https://codeberg.org/api/v1/repos/search?q={query}&limit=10
url_query : html_url
title_query : name
content_query : description
categories : it
shortcut : cb
disabled : True
about:
website: https://codeberg.org/
wikidata_id:
official_api_documentation: https://try.gitea.io/api/swagger
use_official_api: false
require_api_key: false
results: JSON
- name : google
engine : google
shortcut : go
# additional_tests:
# android: *test_android
- name : google images
engine : google_images
shortcut : 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 news
engine : google_news
shortcut : gon
# additional_tests:
# android: *test_android
- name : google videos
engine : google_videos
shortcut : gov
# additional_tests:
# android: *test_android
- name : google scholar
engine : google_scholar
shortcut : gos
- name : google play apps
engine : xpath
search_url : https://play.google.com/store/search?q={query}&c=apps
results_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="RZEgze"]//a[@class="mnKHRc"]'
thumbnail_xpath : './/div[@class="uzcko"]/div/span[1]//img/@data-src'
categories : files
shortcut : gpa
disabled : True
about:
website: https://play.google.com/
wikidata_id: Q79576
official_api_documentation:
use_official_api: false
require_api_key: false
results: HTML
- name : google play movies
engine : xpath
search_url : https://play.google.com/store/search?q={query}&c=movies
results_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 : videos
shortcut : gpm
disabled : True
about:
website: https://play.google.com/
wikidata_id: Q79576
official_api_documentation:
use_official_api: false
require_api_key: false
results: HTML
- name : geektimes
engine : xpath
paging : True
search_url : https://habr.com/en/search/page{pageno}/?q={query}
url_xpath : //article[contains(@class, "post")]//a[@class="post__title_link"]/@href
title_xpath : //article[contains(@class, "post")]//a[@class="post__title_link"]
content_xpath : //article[contains(@class, "post")]//div[contains(@class, "post__text")]
categories : it
timeout : 4.0
disabled : True
shortcut : gt
about:
website: https://geektimes.ru/
wikidata_id: Q50572423
official_api_documentation:
use_official_api: false
require_api_key: false
results: HTML
- name : habrahabr
engine : xpath
paging : True
search_url : https://habrahabr.ru/search/page{pageno}/?q={query}
url_xpath : //article[contains(@class, "post")]//a[@class="post__title_link"]/@href
title_xpath : //article[contains(@class, "post")]//a[@class="post__title_link"]
content_xpath : //article[contains(@class, "post")]//div[contains(@class, "post__text")]
categories : it
timeout : 4.0
disabled : True
shortcut : habr
about:
website: https://habr.com/
wikidata_id: Q4494434
official_api_documentation: https://habr.com/en/docs/help/api/
use_official_api: false
require_api_key: false
results: HTML
- name : hoogle
engine : xpath
paging : True
search_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 : 20
categories : it
shortcut : ho
about:
website: https://www.haskell.org/
wikidata_id: Q34010
official_api_documentation: https://hackage.haskell.org/api
use_official_api: false
require_api_key: false
results: JSON
- name : ina
engine : ina
shortcut : in
timeout : 6.0
disabled : True
- name : invidious
engine : invidious
base_url :
- https://invidious.tube/
- https://invidious.snopyta.org/
shortcut: iv
timeout : 5.0
disabled : True
- name: kickass
engine : kickass
shortcut : kc
timeout : 4.0
disabled : True
- name : library genesis
engine : xpath
enable_http: True
search_url : http://libgen.rs/search.php?req={query}
url_xpath : //a[contains(@href,"bookfi.net/md5")]/@href
title_xpath : //a[contains(@href,"book/")]/text()[1]
content_xpath : //td/a[1][contains(@href,"=author")]/text()
categories : general
timeout : 7.0
disabled : True
shortcut : lg
about:
website: http://libgen.rs/
wikidata_id: Q22017206
official_api_documentation:
use_official_api: false
require_api_key: false
results: HTML
- name : library of congress
engine : loc
shortcut : loc
categories : images
- name : lobste.rs
engine : xpath
search_url : https://lobste.rs/search?utf8=%E2%9C%93&q={query}&what=stories&order=relevance
results_xpath : //li[contains(@class, "story")]
url_xpath : .//a[@class="u-url"]/@href
title_xpath : .//a[@class="u-url"]
content_xpath : .//a[@class="domain"]
categories : it
shortcut : lo
timeout : 5.0
disabled: True
about:
website: https://lobste.rs/
wikidata_id: Q60762874
official_api_documentation:
use_official_api: false
require_api_key: false
results: HTML
# - name : meilisearch
# engine : meilisearch
# shortcut: mes
# enable_http: True
# base_url : http://localhost:7700
# index : my-index
- name : microsoft academic
engine : microsoft_academic
categories : science
shortcut : ma
- name : mixcloud
engine : mixcloud
shortcut : mc
- name : npm
engine : json_engine
paging : True
search_url : https://api.npms.io/v2/search?q={query}&size=25&from={pageno}
results_query : results
url_query : package/links/npm
title_query : package/name
content_query : package/description
page_size : 25
categories : it
disabled: True
timeout: 5.0
shortcut : npm
about:
website: https://npms.io/
wikidata_id: Q7067518
official_api_documentation: https://api-docs.npms.io/
use_official_api: false
require_api_key: false
results: JSON
# Requires Tor
- name : not evil
engine : not_evil
categories : onions
enable_http : True
shortcut : ne
- name : nyaa
engine : nyaa
shortcut : nt
disabled : True
- name: mankier
engine: json_engine
paging: true
search_url: https://www.mankier.com/api/v2/mans/?q={query}
results_query: results
url_query: url
title_query: name
content_query: description
categories: it
shortcut: man
about:
website: https://www.mankier.com/
official_api_documentation: https://www.mankier.com/api
use_official_api: true
require_api_key: false
results: JSON
- name : openairedatasets
engine : json_engine
paging : True
search_url : https://api.openaire.eu/search/datasets?format=json&page={pageno}&size=10&title={query}
results_query : response/results/result
url_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: True
categories : science
shortcut : oad
timeout: 5.0
about:
website: https://www.openaire.eu/
wikidata_id: Q25106053
official_api_documentation: https://api.openaire.eu/
use_official_api: false
require_api_key: false
results: JSON
- name : openairepublications
engine : json_engine
paging : True
search_url : https://api.openaire.eu/search/publications?format=json&page={pageno}&size=10&title={query}
results_query : response/results/result
url_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: True
categories : science
shortcut : oap
timeout: 5.0
about:
website: https://www.openaire.eu/
wikidata_id: Q25106053
official_api_documentation: https://api.openaire.eu/
use_official_api: false
require_api_key: false
results: JSON
# - name : opensemanticsearch
# engine : opensemantic
# shortcut : oss
# base_url : 'http://localhost:8983/solr/opensemanticsearch/'
- name : openstreetmap
engine : openstreetmap
shortcut : osm
- name : openrepos
engine : xpath
paging : True
search_url : https://openrepos.net/search/node/{query}?page={pageno}
url_xpath : //li[@class="search-result"]//h3[@class="title"]/a/@href
title_xpath : //li[@class="search-result"]//h3[@class="title"]/a
content_xpath : //li[@class="search-result"]//div[@class="search-snippet-info"]//p[@class="search-snippet"]
categories : files
timeout : 4.0
disabled : True
shortcut : or
about:
website: https://openrepos.net/
wikidata_id:
official_api_documentation:
use_official_api: false
require_api_key: false
results: HTML
- name : pdbe
engine : pdbe
shortcut : pdb
# Hide obsolete PDB entries.
# Default is not to hide obsolete structures
# hide_obsolete : False
- name : photon
engine : photon
shortcut : ph
- name : piratebay
engine : piratebay
shortcut : tpb
# You may need to change this URL to a proxy if piratebay is blocked in your country
url: 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 : pubmed
engine : pubmed
shortcut : pub
categories: science
timeout : 3.0
- name: pypi
shortcut: pypi
engine: xpath
paging: true
search_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: ./@href
title_xpath: ./h3/span[@class="package-snippet__name"]
content_xpath: ./p
suggestion_xpath: /html/body/main/div/div/div/form/div/div[@class="callout-block"]/p/span/a[@class="link"]
first_page_num: 1
categories: it
about:
website: https://pypi.org
wikidata_id: Q2984686
official_api_documentation: https://warehouse.readthedocs.io/api-reference/index.html
use_official_api: false
require_api_key: false
results: HTML
- name : qwant
engine : qwant
shortcut : qw
categories : general
disabled : True
additional_tests:
rosebud: *test_rosebud
- name : qwant images
engine : qwant
shortcut : qwi
categories : images
network: qwant
- name : qwant news
engine : qwant
shortcut : qwn
categories : news
network: 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 : reddit
engine : reddit
shortcut : re
page_size : 25
timeout : 10.0
disabled : True
# tmp suspended: bad certificate
# - name : scanr structures
# shortcut: scs
# engine : scanr_structures
# disabled : True
- name: sepiasearch
engine: sepiasearch
shortcut: sep
- name : soundcloud
engine : soundcloud
shortcut : sc
- name : stackoverflow
engine : stackoverflow
shortcut : st
- name : searchcode code
engine : searchcode_code
shortcut : scc
disabled : True
- name : framalibre
engine : framalibre
shortcut : frl
disabled : True
# - name : searx
# engine : searx_engine
# shortcut : se
# instance_urls :
# - http://127.0.0.1:8888/
# - ...
# disabled : True
- name : semantic scholar
engine : semantic_scholar
disabled : True
shortcut : se
categories : science
about:
website: https://www.semanticscholar.org/
wikidata_id: Q22908627
official_api_documentation: https://api.semanticscholar.org/
use_official_api: false
require_api_key: false
results: JSON
# 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
# api_key : 'unset' # working API key, for test & debug: "a69685087d07eca9f13db62f65b8f601"
# shortcut : springer
# categories : science
# timeout : 6.0
- name : startpage
engine : startpage
shortcut : sp
timeout : 6.0
disabled : True
additional_tests:
rosebud: *test_rosebud
- name : tokyotoshokan
engine : tokyotoshokan
shortcut : tt
timeout : 6.0
disabled : True
- name : solidtorrents
engine : solidtorrents
shortcut : solid
timeout : 3.0
disabled : True
# 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
- name : torrentz
engine : torrentz
shortcut : tor
url: https://torrentz2.eu/
timeout : 3.0
# Requires Tor
- name : torch
engine : xpath
paging : True
search_url : http://xmh57jrknzkhv6y3ls3ubitzfqnkrwxhopf5aygthi7d6rplyvk3noyd.onion/cgi-bin/omega/omega?P={query}&DEFAULTOP=and
results_xpath : //table//tr
url_xpath : ./td[2]/a
title_xpath : ./td[2]/b
content_xpath : ./td[2]/small
categories : onions
enable_http : True
shortcut : tch
# 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 : http://www.urbandictionary.com/define.php?term={query}
# url_xpath : //*[@class="word"]/@href
# title_xpath : //*[@class="def-header"]
# content_xpath : //*[@class="meaning"]
# shortcut : ud
- name : unsplash
engine : unsplash
shortcut : us
- name : yahoo
engine : yahoo
shortcut : yh
disabled : True
- name : yahoo news
engine : yahoo_news
shortcut : yhn
- name : youtube
shortcut : 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 default
engine : youtube_noapi
- name : yggtorrent
engine : yggtorrent
shortcut : ygg
url: https://www4.yggtorrent.li/
disabled : True
timeout : 4.0
- name : dailymotion
engine : dailymotion
shortcut : dm
- name : vimeo
engine : vimeo
shortcut : vm
- name : wiby
engine : json_engine
search_url : https://wiby.me/json/?q={query}
url_query : URL
title_query : Title
content_query : Snippet
categories : general
shortcut : wib
disabled : True
- name : wikibooks
engine : mediawiki
shortcut : wb
categories : general
base_url : "https://{language}.wikibooks.org/"
number_of_results : 5
search_type : text
disabled : True
about:
website: https://www.wikibooks.org/
wikidata_id: Q367
- name : wikinews
engine : mediawiki
shortcut : wn
categories : news
base_url : "https://{language}.wikinews.org/"
number_of_results : 5
search_type : text
disabled : True
about:
website: https://www.wikinews.org/
wikidata_id: Q964
- name : wikiquote
engine : mediawiki
shortcut : wq
categories : general
base_url : "https://{language}.wikiquote.org/"
number_of_results : 5
search_type : text
disabled : True
additional_tests:
rosebud: *test_rosebud
about:
website: https://www.wikiquote.org/
wikidata_id: Q369
- name : wikisource
engine : mediawiki
shortcut : ws
categories : general
base_url : "https://{language}.wikisource.org/"
number_of_results : 5
search_type : text
disabled : True
about:
website: https://www.wikisource.org/
wikidata_id: Q263
- name : wiktionary
engine : mediawiki
shortcut : wt
categories : general
base_url : "https://{language}.wiktionary.org/"
number_of_results : 5
search_type : text
disabled : True
about:
website: https://www.wiktionary.org/
wikidata_id: Q151
- name : wikiversity
engine : mediawiki
shortcut : wv
categories : general
base_url : "https://{language}.wikiversity.org/"
number_of_results : 5
search_type : text
disabled : True
about:
website: https://www.wikiversity.org/
wikidata_id: Q370
- name : wikivoyage
engine : mediawiki
shortcut : wy
categories : general
base_url : "https://{language}.wikivoyage.org/"
number_of_results : 5
search_type : text
disabled : True
about:
website: https://www.wikivoyage.org/
wikidata_id: Q373
- name : wolframalpha
shortcut : wa
# You can use the engine using the official stable API, but you need an API key
# See : http://products.wolframalpha.com/api/
# engine : wolframalpha_api
# api_key: '' # required!
engine : wolframalpha_noapi
timeout: 6.0
categories : science
- name : dictzone
engine : dictzone
shortcut : dc
- name : mymemory translated
engine : translated
shortcut : tl
timeout : 5.0
disabled : True
# You can use without an API key, but you are limited to 1000 words/day
# See : http://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 : 1337x
engine : 1337x
shortcut : 1337x
disabled : True
- name : duden
engine : duden
shortcut : du
disabled : True
- name : seznam
shortcut: szn
engine: seznam
disabled : True
- name : mojeek
shortcut: mjk
engine: xpath
paging : True
search_url : https://www.mojeek.com/search?q={query}&s={pageno}
results_xpath: /html/body//div[@class="results"]/ul[@class="results-standard"]/li
url_xpath : ./h2/a/@href
title_xpath : ./h2
content_xpath : ./p[@class="s"]
suggestion_xpath : /html/body//div[@class="top-info"]/p[@class="top-info spell"]/a
first_page_num : 0
page_size : 10
disabled : True
about:
website: https://www.mojeek.com/
wikidata_id: Q60747299
official_api_documentation: https://www.mojeek.com/services/api.html/
use_official_api: false
require_api_key: false
results: HTML
- name : naver
shortcut: nvr
engine: xpath
paging : True
search_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"]/@href
title_xpath : //a[@class="link_tit"]
content_xpath : //a[@class="total_dsc"]/div
first_page_num : 1
page_size : 10
disabled : True
about:
website: https://www.naver.com/
wikidata_id: Q485639
official_api_documentation: https://developers.naver.com/docs/nmt/examples/
use_official_api: false
require_api_key: false
results: HTML
- name : rubygems
shortcut: rbg
engine: xpath
paging : True
search_url : https://rubygems.org/search?page={pageno}&query={query}
results_xpath: /html/body/main/div/a[@class="gems__gem"]
url_xpath : ./@href
title_xpath : ./span/h2
content_xpath : ./span/p
suggestion_xpath : /html/body/main/div/div[@class="search__suggestions"]/p/a
first_page_num : 1
categories: it
disabled : True
about:
website: https://rubygems.org/
wikidata_id: Q1853420
official_api_documentation: https://guides.rubygems.org/rubygems-org-api/
use_official_api: false
require_api_key: false
results: HTML
- name : peertube
engine: peertube
shortcut: ptb
paging : True
base_url : https://peer.tube/
categories: videos
disabled : True
- name : mediathekviewweb
engine : mediathekviewweb
shortcut : mvw
# - name : yacy
# engine : yacy
# shortcut : ya
# base_url : 'http://localhost:8090'
# enable_http: True # required if you aren't using HTTPS for your local yacy instance
# number_of_results : 5
# timeout : 3.0
- name : rumble
engine : rumble
shortcut : ru
base_url : https://rumble.com/
paging : True
categories: videos
disabled : True
- name: wordnik
engine: wordnik
shortcut: def
base_url: https://www.wordnik.com/
categories: general
timeout: 5.0
disabled: True
- name: słownik języka polskiego
engine: sjp
shortcut: sjp
base_url: https://sjp.pwn.pl/
categories: general
timeout: 5.0
disabled: True
# wikimini: online encyclopedia for children
# Tthe fulltext and title parameter is necessary for Wikimini because
# sometimes it will not show the results and redirect instead
- name: wikimini
engine: xpath
shortcut: wkmn
search_url : https://fr.wikimini.org/w/index.php?search={query}&title=Sp%C3%A9cial%3ASearch&fulltext=Search
url_xpath : //li/div[@class="mw-search-result-heading"]/a/@href
title_xpath : //li//div[@class="mw-search-result-heading"]/a
content_xpath : //li/div[@class="searchresult"]
categories : general
disabled: True
about:
website: https://wikimini.org/
wikidata_id: Q3568032
use_official_api: false
require_api_key: false
results: HTML
- name: dogpile
shortcut: dp
engine: xpath
paging: true
page_size: 9
# Doesn't work without the 'sc' parameter
search_url: https://www.dogpile.com/serp?q={query}&page={pageno}&sc=Gp0GqqlRVflv20
url_xpath: //span[@class="web-bing__url"]
title_xpath: //a[@class="web-bing__title"]
content_xpath: //span[@class="web-bing__description"]
categories: general
timeout: 3.0
disabled: true
about:
website: https://www.dogpile.com
wikidata_id: Q3595363
use_official_api: false
require_api_key: false
results: 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 : 'http://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']
locales:
en : English
ar : العَرَبِيَّة (Arabic)
bg : Български (Bulgarian)
bo : བོད་སྐད་ (Tibetian)
ca : Català (Catalan)
cs : Čeština (Czech)
cy : Cymraeg (Welsh)
da : Dansk (Danish)
de : Deutsch (German)
el_GR : Ελληνικά (Greek_Greece)
eo : Esperanto (Esperanto)
es : Español (Spanish)
et : Eesti (Estonian)
eu : Euskara (Basque)
fa_IR : (fārsī) فارسى (Persian)
fi : Suomi (Finnish)
fil : Wikang Filipino (Filipino)
fr : Français (French)
gl : Galego (Galician)
he : עברית (Hebrew)
hr : Hrvatski (Croatian)
hu : Magyar (Hungarian)
ia : Interlingua (Interlingua)
it : Italiano (Italian)
ja : 日本語 (Japanese)
lt : Lietuvių (Lithuanian)
nl : Nederlands (Dutch)
nl_BE : Vlaams (Dutch_Belgium)
oc : Lenga D'òc (Occitan)
pl : Polski (Polish)
pt : Português (Portuguese)
pt_BR : Português (Portuguese_Brazil)
ro : Română (Romanian)
ru : Русский (Russian)
sk : Slovenčina (Slovak)
sl : Slovenski (Slovene)
sr : српски (Serbian)
sv : Svenska (Swedish)
te : తెలుగు (telugu)
ta : தமிழ் (Tamil)
tr : Türkçe (Turkish)
uk : українська мова (Ukrainian)
vi : tiếng việt (Vietnamese)
zh : 中文 (Chinese)
zh_TW : 國語 (Taiwanese Mandarin)
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.do : 'https://sci-hub.do/'
scihubtw.tw : 'https://scihubtw.tw/'
sci-hub.st : 'https://sci-hub.st/'
sci-hub.bar : 'https://sci-hub.bar/'
sci-hub.it.nf : 'https://sci-hub.it.nf/'
default_doi_resolver : 'oadoi.org'
Check¶
To check your searx setup, optional enable debugging and start the webapp.
Searx looks at the exported environment $SEARX_SETTINGS_PATH
for a
configuration file.
# enable debug ..
$ sudo -H sed -i -e "s/debug : False/debug : True/g" "/etc/searx/settings.yml"
# start webapp
$ sudo -H -u searx -i
(searx)$ cd /usr/local/searx/searx-src
(searx)$ export SEARX_SETTINGS_PATH="/etc/searx/settings.yml"
(searx)$ python searx/webapp.py
# disable debug
$ sudo -H sed -i -e "s/debug : True/debug : False/g" "/etc/searx/settings.yml"
Open WEB browser and visit http:// . If you are inside a container or in a script, test with curl:
$ xdg-open http://
$ curl --location --verbose --head --insecure
* Trying 127.0.0.1:8888...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 8888 (#0)
> HEAD / HTTP/1.1
> Host: 127.0.0.1:8888
> User-Agent: curl/7.68.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
HTTP/1.0 200 OK
...
If everything works fine, hit [CTRL-C]
to stop the webapp and disable the
debug option in settings.yml
. You can now exit searx user bash (enter exit
command twice). At this point searx is not demonized; uwsgi allows this.