diff --git a/.env b/.env index 56dcead..3c97c28 100644 --- a/.env +++ b/.env @@ -1,2 +1,2 @@ PROD_URL=searx.gmoker.com -IMAGEAPP=docker.io/searxng/searxng:2025.1.26-70f1b6500 +IMAGEAPP=docker.io/searxng/searxng:2025.5.2-590b21165 diff --git a/config/settings.yml b/config/settings.yml index c7b0832..c3372b5 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -33,8 +33,8 @@ brand: search: # Filter results. 0: None, 1: Moderate, 2: Strict safe_search: 0 - # Existing autocomplete backends: "baidu", "brave", "dbpedia", "duckduckgo", "google", "yandex", - # "mwmbl", "seznam", "startpage", "stract", "swisscows", "qwant", "wikipedia" - + # Existing autocomplete backends: "360search", "baidu", "brave", "dbpedia", "duckduckgo", "google", "yandex", + # "mwmbl", "seznam", "sogou", "stract", "swisscows", "quark", "qwant", "wikipedia" - # leave blank to turn it off by default. autocomplete: "" # minimun characters to type before autocompleter starts @@ -47,9 +47,9 @@ search: default_lang: "auto" # max_page: 0 # if engine supports paging, 0 means unlimited numbers of pages # Available languages - languages: - - fr-FR - - en-US + #languages: + # - fr-FR + # - en-US # ban time in seconds after engine errors ban_time_on_fail: 5 # max ban time in seconds after engine errors @@ -78,7 +78,7 @@ server: port: 8888 bind_address: "127.0.0.1" # public URL of the instance, to ensure correct inbound links. Is overwritten - # by ${SEARXNG_URL}. + # by ${SEARXNG_BASE_URL}. base_url: false # "http://example.com/location" # rate limit the number of request on the instance, block some bots. # Is overwritten by ${SEARXNG_LIMITER} @@ -96,7 +96,8 @@ server: # 1.0 and 1.1 are supported http_protocol_version: "1.0" # POST queries are more secure as they don't show up in history but may cause - # problems when using Firefox containers + # problems when using Firefox containers. + # Is overwritten by ${SEARXNG_METHOD} method: "GET" default_http_headers: X-Content-Type-Options: nosniff @@ -143,14 +144,24 @@ ui: # URL formatting: pretty, full or host url_formatting: pretty -# 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". +# Lock arbitrary settings on the preferences page. # # preferences: # lock: +# - categories # - language # - autocomplete +# - favicon +# - safesearch # - method +# - doi_resolver +# - locale +# - theme +# - results_on_new_tab +# - infinite_scroll +# - search_on_category_select +# - method +# - image_proxy # - query_in_title # searx supports result proxification using an external service: @@ -211,28 +222,38 @@ outgoing: # - 1.1.1.2 # - fe80::/126 -# External plugin configuration, for more details see -# https://docs.searxng.org/dev/plugins.html +# Plugin configuration, for more details see +# https://docs.searxng.org/admin/settings/settings_plugins.html # -# plugins: -# - plugin1 -# - plugin2 -# - ... +plugins: + + searx.plugins.calculator.SXNGPlugin: + active: true + + searx.plugins.hash_plugin.SXNGPlugin: + active: true + + searx.plugins.self_info.SXNGPlugin: + active: true + + searx.plugins.unit_converter.SXNGPlugin: + active: true + + searx.plugins.ahmia_filter.SXNGPlugin: + active: true + + searx.plugins.hostnames.SXNGPlugin: + active: true + + searx.plugins.oa_doi_rewrite.SXNGPlugin: + active: false + + searx.plugins.tor_check.SXNGPlugin: + active: false + + searx.plugins.tracker_url_remover.SXNGPlugin: + active: false -# Comment or un-comment plugin to activate / deactivate by default. -# -enabled_plugins: - # these plugins are enabled if nothing is configured .. - - 'Basic Calculator' - - 'Hash plugin' - - 'Self Information' - - 'Tracker URL remover' - - 'Unit converter plugin' - - 'Ahmia blacklist' # activation depends on outgoing.using_tor_proxy -# # these plugins are disabled if nothing is configured .. - - 'Hostnames plugin' # see 'hostnames' configuration below -# - 'Open Access DOI rewrite' -# - 'Tor check plugin' # Configuration of the "Hostnames plugin": # @@ -296,11 +317,26 @@ categories_as_tabs: music: engines: + - name: 360search + engine: 360search + shortcut: 360so + disabled: true + + - name: 360search videos + engine: 360search_videos + shortcut: 360sov + disabled: true + - name: 9gag engine: 9gag shortcut: 9g disabled: true + - name: acfun + engine: acfun + shortcut: acf + disabled: true + - name: adobe stock engine: adobe_stock shortcut: asi @@ -368,6 +404,11 @@ engines: disabled: true shortcut: aa + - name: ansa + engine: ansa + shortcut: ans + disabled: true + # - name: annas articles # engine: annas_archive # shortcut: aaa @@ -446,6 +487,27 @@ engines: shortcut: bc categories: music + - name: baidu + baidu_category: general + categories: [general] + engine: baidu + shortcut: bd + disabled: true + + - name: baidu images + baidu_category: images + categories: [images] + engine: baidu + shortcut: bdi + disabled: true + + - name: baidu kaifa + baidu_category: it + categories: [it] + engine: baidu + shortcut: bdk + disabled: true + - name: wikipedia engine: wikipedia shortcut: wp @@ -475,6 +537,11 @@ engines: engine: bing_videos shortcut: biv + - name: bitchute + engine: bitchute + shortcut: bit + disabled: true + - name: bitbucket engine: xpath paging: true @@ -524,6 +591,38 @@ engines: # to show premium or plus results too: # skip_premium: false + # WARNING: links from chinaso.com voilate users privacy + # Before activate these engines its mandatory to read + # - https://github.com/searxng/searxng/issues/4694 + # - https://docs.searxng.org/dev/engines/online/chinaso.html + + - name: chinaso news + engine: chinaso + shortcut: chinaso + categories: [news] + chinaso_category: news + chinaso_news_source: all + disabled: true + inactive: true + + - name: chinaso images + engine: chinaso + network: chinaso news + shortcut: chinasoi + categories: [images] + chinaso_category: images + disabled: true + inactive: true + + - name: chinaso videos + engine: chinaso + network: chinaso news + shortcut: chinasov + categories: [videos] + chinaso_category: videos + disabled: true + inactive: true + - name: cloudflareai engine: cloudflareai shortcut: cfai @@ -598,26 +697,6 @@ engines: search_type: news disabled: true - - name: curlie - engine: xpath - shortcut: cl - categories: general - disabled: true - paging: true - lang_all: '' - search_url: https://curlie.org/search?q={query}&lang={lang}&start={pageno}&stime=92452189 - page_size: 20 - results_xpath: //div[@id="site-list-content"]/div[@class="site-item"] - url_xpath: ./div[@class="title-and-desc"]/a/@href - title_xpath: ./div[@class="title-and-desc"]/a/div - content_xpath: ./div[@class="title-and-desc"]/div[@class="site-descr"] - about: - website: https://curlie.org/ - wikidata_id: Q60715723 - use_official_api: false - require_api_key: false - results: HTML - - name: currency engine: currency_convert categories: general @@ -696,17 +775,18 @@ engines: results: HTML # - name: elasticsearch - # shortcut: es + # shortcut: els # engine: elasticsearch # base_url: http://localhost:9200 # username: elastic # password: changeme # index: my-index + # enable_http: true # # 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 + # # custom_query_json: {"query":{"match_all": {}}} + # # show_metadata: false # disabled: true - name: wikidata @@ -1014,6 +1094,27 @@ engines: require_api_key: false results: JSON + - name: il post + engine: il_post + shortcut: pst + + - name: huggingface + engine: huggingface + shortcut: hf + disabled: true + + - name: huggingface datasets + huggingface_endpoint: datasets + engine: huggingface + shortcut: hfd + disabled: true + + - name: huggingface spaces + huggingface_endpoint: spaces + engine: huggingface + shortcut: hfs + disabled: true + - name: imdb engine: imdb shortcut: imdb @@ -1036,14 +1137,8 @@ engines: # 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.io.lol - - https://invidious.fdn.fr - - https://yt.artemislena.eu - - https://invidious.tiekoetter.com - - https://invidious.flokinet.to - - https://vid.puffyan.us - - https://invidious.privacydev.net - - https://inv.tux.pizza + - https://invidious.adminforge.de + - https://inv.nadeko.net shortcut: iv timeout: 3.0 disabled: true @@ -1053,6 +1148,11 @@ engines: shortcut: ip disabled: true + - name: iqiyi + engine: iqiyi + shortcut: iq + disabled: true + - name: jisho engine: jisho shortcut: js @@ -1128,8 +1228,7 @@ engines: engine: libretranslate # https://github.com/LibreTranslate/LibreTranslate?tab=readme-ov-file#mirrors base_url: - - https://translate.terraprint.co - - https://trans.zillyhuhn.com + - https://libretranslate.com/translate # api_key: abc123 shortcut: lt disabled: true @@ -1203,12 +1302,19 @@ engines: disabled: true number_of_results: 20 + # https://docs.searxng.org/dev/engines/offline/search-indexer-engines.html#module-searx.engines.meilisearch # - name: meilisearch # engine: meilisearch # shortcut: mes # enable_http: true # base_url: http://localhost:7700 # index: my-index + # auth_key: Bearer XXXX + + - name: microsoft learn + engine: microsoft_learn + shortcut: msl + disabled: true - name: mixcloud engine: mixcloud @@ -1245,6 +1351,11 @@ engines: shortcut: mwm disabled: true + - name: niconico + engine: niconico + shortcut: nico + disabled: true + - name: npm engine: npm shortcut: npm @@ -1272,18 +1383,31 @@ engines: require_api_key: false results: JSON - # read https://docs.searxng.org/dev/engines/online/mullvad_leta.html - # - name: mullvadleta - # engine: mullvad_leta - # leta_engine: google # choose one of the following: google, brave - # use_cache: true # Only 100 non-cache searches per day, suggested only for private instances - # search_url: https://leta.mullvad.net - # categories: [general, web] - # shortcut: ml + # https://docs.searxng.org/dev/engines/online/mullvad_leta.html + - name: mullvadleta + engine: mullvad_leta + disabled: true + leta_engine: google + categories: [general, web] + shortcut: ml + + - name: mullvadleta brave + engine: mullvad_leta + network: mullvadleta + disabled: true + leta_engine: brave + categories: [general, web] + shortcut: mlb - name: odysee engine: odysee shortcut: od + disabled: true + + - name: ollama + engine: ollama + shortcut: ollama + disabled: true - name: openairedatasets engine: json_engine @@ -1325,6 +1449,13 @@ engines: require_api_key: false results: JSON + - name: openclipart + engine: openclipart + shortcut: ocl + inactive: true + disabled: true + timeout: 30 + - name: openlibrary engine: openlibrary shortcut: ol @@ -1409,9 +1540,12 @@ engines: frontend_url: https://srv.piped.video # Instance will be selected randomly, for more see https://piped-instances.kavin.rocks/ backend_url: - - https://pipedapi.kavin.rocks - - https://pipedapi-libre.kavin.rocks - https://pipedapi.adminforge.de + - https://pipedapi.nosebs.ru + - https://pipedapi.ducks.party + - https://pipedapi.reallyaweso.me + - https://api.piped.private.coffee + - https://pipedapi.darkness.services - name: piped.music engine: piped @@ -1523,7 +1657,7 @@ engines: require_api_key: false results: HTML - - name: Public Domain Image Archive + - name: public domain image archive engine: public_domain_image_archive shortcut: pdia disabled: true @@ -1537,6 +1671,20 @@ engines: shortcut: pypi engine: pypi + - name: quark + quark_category: general + categories: [general] + engine: quark + shortcut: qk + disabled: true + + - name: quark images + quark_category: images + categories: [images] + engine: quark + shortcut: qki + disabled: true + - name: qwant qwant_categ: web engine: qwant @@ -1598,6 +1746,12 @@ engines: page_size: 25 disabled: true + - name: reuters + engine: reuters + shortcut: reu + # https://docs.searxng.org/dev/engines/online/reuters.html + # sort_order = "relevance" + - name: right dao engine: xpath paging: true @@ -1652,10 +1806,36 @@ engines: about: website: https://searchmysite.net + - name: selfhst icons + engine: selfhst + shortcut: si + inactive: true + disabled: true + - name: sepiasearch engine: sepiasearch shortcut: sep + - name: sogou + engine: sogou + shortcut: sogou + disabled: true + + - name: sogou images + engine: sogou_images + shortcut: sogoui + disabled: true + + - name: sogou videos + engine: sogou_videos + shortcut: sogouv + disabled: true + + - name: sogou wechat + engine: sogou_wechat + shortcut: sogouw + disabled: true + - name: soundcloud engine: soundcloud shortcut: sc @@ -1746,11 +1926,28 @@ engines: - name: startpage engine: startpage shortcut: sp - timeout: 6.0 - disabled: true + startpage_categ: web + categories: [general, web] additional_tests: rosebud: *test_rosebud + - name: startpage news + engine: startpage + startpage_categ: news + categories: [news, web] + shortcut: spn + + - name: startpage images + engine: startpage + startpage_categ: images + categories: [images, web] + shortcut: spi + + - name: steam + engine: steam + shortcut: stm + disabled: true + - name: tokyotoshokan engine: tokyotoshokan shortcut: tt @@ -1768,15 +1965,15 @@ engines: # 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" + # Query to test: "!mediathekview concert" # - # - name: demo + # - name: mediathekview # engine: sqlite - # shortcut: demo - # categories: general - # result_template: default.html + # shortcut: mediathekview + # categories: [general, videos] + # result_type: MainResult # database: searx/data/filmliste-v2.db - # query_str: >- + # 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 @@ -2317,6 +2514,7 @@ engines: engine: wallhaven # api_key: abcdefghijklmnopqrstuvwxyz shortcut: wh + disabled: true # wikimini: online encyclopedia for children # The fulltext and title parameter is necessary for Wikimini because @@ -2442,6 +2640,12 @@ engines: shortcut: pgo disabled: true + - name: senscritique + engine: senscritique + shortcut: scr + timeout: 4.0 + disabled: true + # Doku engine lets you access to any Doku wiki instance: # A public one or a privete/corporate one. # - name: ubuntuwiki diff --git a/diff.sh b/diff.sh index c67ffb5..d6ed2ef 100755 --- a/diff.sh +++ b/diff.sh @@ -3,17 +3,15 @@ . ./.env DOCKER_API='https://hub.docker.com/v2/namespaces/searxng/repositories/searxng' -REPO='https://github.com/searxng/searxng/raw' +REPO='https://github.com/searxng/searxng' tmp="$(mktemp)" new_tag="$(curl -L "$DOCKER_API/tags" | jq -r '.results[2].name')" new_commit="$(grep -Eo '\w+$' <<< "$new_tag")" -for f in limiter.toml settings.yml; do - if curl -Lo "$tmp" "$REPO/$new_commit/searx/$f" && ! diff -Z "$tmp" "config/$f" > /dev/null; then - $EDITOR -d -c "wincmd l" -- "$tmp" "config/$f" - fi -done +if curl -Lo "$tmp" "$REPO/raw/$new_commit/searx/settings.yml" && ! diff -Z "$tmp" "config/settings.yml" > /dev/null; then + $EDITOR -d -- "config/settings.yml" "$tmp" +fi sed -i "/^IMAGEAPP=/s/:.*/:$new_tag/" .env diff --git a/manifests/bin/deploy.sh b/manifests/bin/deploy.sh index c260ff1..9ef8b2f 100755 --- a/manifests/bin/deploy.sh +++ b/manifests/bin/deploy.sh @@ -3,34 +3,33 @@ set -o pipefail function kapply() { for f in "$@"; do - kubectl apply -f <(envsubst < "manifests/$f") + kubectl apply --server-side \ + -f<(envsubst "$(env | sed 's/^/$/')" < "manifests/$f") done }; export -f kapply function kcreatesec() { - kubectl create secret generic --dry-run=client -oyaml "$@" | kubectl replace -f- + kubectl apply --server-side \ + -f<(kubectl create secret generic --dry-run=client -oyaml "$@") }; export -f kcreatesec function kcreatecm() { - kubectl create configmap --dry-run=client -oyaml "$@" | kubectl replace -f- + kubectl apply --server-side \ + -f<(kubectl create configmap --dry-run=client -oyaml "$@") }; export -f kcreatecm function kgseckey() { local sec="$1"; shift local key="$1"; shift - if ! kubectl get secret "$sec" -ojson | jq -re ".data.\"$key\" // empty" | base64 -d; then - return 1 - fi + kubectl get secret "$sec" -ojson | jq -re ".data.\"$key\"" | base64 -d }; export -f kgseckey function kgcmkey() { local cm="$1"; shift local key="$1"; shift - if ! kubectl get configmap "$cm" -ojson | jq -re ".data.\"$key\" // empty"; then - return 1 - fi + kubectl get configmap "$cm" -ojson | jq -re ".data.\"$key\"" }; export -f kgcmkey diff --git a/manifests/common/app.yaml b/manifests/common/app.yaml index 0e76fcf..94bbda6 100644 --- a/manifests/common/app.yaml +++ b/manifests/common/app.yaml @@ -5,11 +5,6 @@ metadata: name: app annotations: cert-manager.io/cluster-issuer: letsencrypt-prod - gethomepage.dev/enabled: "true" - gethomepage.dev/instance: "$GITHUB_REF_NAME" - gethomepage.dev/name: SearXNG - gethomepage.dev/icon: searxng - gethomepage.dev/description: Metasearch engine spec: ingressClassName: nginx tls: