SSD Nodes Learn Hosting plans →
指南 Matt Connor作者: Matt Connor · 已更新 2026-08-26

Searx 已死嗎?Searx 與 SearXNG 該裝哪個

Searx 自 2023 年 4 月後沒有程式碼提交,README 也寫明「Searx 已不再維護」。本文教你自行確認現況,並整理架設 SearXNG 的設定變更。

Searx 或 SearXNG:應該安裝哪一個?

Searx 與 SearXNG 是兩個不同的專案,名稱幾乎相同,但目前只有其中一個仍會取得修正。請安裝 SearXNG。原始的 Searx 自 2023 年 4 月起就沒有新的程式碼提交,其 README 也用一句話明確說明現況:「Searx 已不再維護。」

這不是理念上的問題,而是實務上的問題。兩個專案共用一張螢幕擷取畫面、大部分的設定檔,以及一半的名稱,因此針對其中一個專案撰寫的指南,看起來就像也適用於另一個專案。實際上並非如此。設定檔位於不同位置,機器人防護是新增功能,而目前的 Ubuntu 已不再提供該套件名稱。以下將說明兩者的差異、檢查現況的指令,以及架設執行個體時需要注意的變更。

Searx 是什麼,以及 SearXNG 的起源

Searx 是元搜尋引擎。它不維護自己的索引,而是接收查詢,將查詢轉送給 Bing、DuckDuckGo 或 Wikipedia 等其他搜尋服務,再把回傳結果合併成單一結果頁面。這樣的好處是,這些服務看到的是伺服器的位址,而不是你的位址。代價是維護成本。每個搜尋引擎模組都是一小段用來解析他人 HTML 或 API 的程式碼,因此上游服務一變更,模組就可能失效。元搜尋引擎的穩定性,取決於是否有人修正其搜尋引擎模組。

searx 儲存庫建立於 2013 年 10 月。2021 年 4 月,一名前任維護者以此為基礎建立 SearXNG fork。NG 代表 next generation。Searx 自己的 README 將兩個專案並列說明,而這段說明至今仍是兩者分歧最清楚的摘要:

SearxNG 是 searx 的 fork,由 searx 的前任維護者建立。
SearxNG 採用 rolling releases,更頻繁地更新相依套件,也更快修正搜尋引擎模組。

這次 fork 背後的歧見在於診斷資料。Searx 認為執行個體不應保留使用資料,其預設設定也明確表達這一點:enable_stats: False # activate /stats page - note: it may leak usage data。SearXNG 則做出相反的決定,並在預設設定中提供 enable_metrics: true。這些指標會填入回應時間列與錯誤頁面,讓管理者更容易找出並修正失效的搜尋引擎模組。兩種立場都有其合理性。但只有其中一個專案持續發布程式碼。

Searx 已經停止維護了嗎?如何自行確認

GitHub 不會回報「停止維護」這種狀態,因此請讀取現有的兩項訊號,再自行判斷。第一項是儲存庫是否已封存,以及最近一次 push 的時間。

curl -s https://api.github.com/repos/searx/searx | jq -r '.archived, .pushed_at'
curl -s https://api.github.com/repos/searxng/searxng | jq -r '.archived, .pushed_at'

在 2026 年 8 月 22 日,第一個命令會輸出 false2026-05-14T10:02:22Z。第二個命令會輸出 false,以及執行當天的時間戳記。請注意第一個值。searx 儲存庫尚未封存,也沒有人封鎖它,因此這個問題才會一再出現。

單獨來看,pushed_at 是較弱的訊號,因為任何分支的 push 都會更新它,包括只有一行的文件變更。請改讀取 commit 清單。

curl -s 'https://api.github.com/repos/searx/searx/commits?per_page=5' \
  | jq -r '.[] | .commit.committer.date[:10] + "  " + (.commit.message | split("\n")[0])'

截至 2026 年 8 月,輸出如下:

2026-05-14  [doc] add hister reference
2023-09-07  Searx is no longer maintained
2023-04-05  Fix quoting issue in search_operator plugin (#3479)
2023-04-04  Bump pallets-sphinx-themes from 2.0.2 to 2.0.3 (#3450)
2023-04-04  Bump selenium from 4.7.2 to 4.8.3 (#3490)

請從下往上閱讀。一般開發工作在 2023 年 4 月停止。2023 年 9 月的 commit 是維護者將通知寫入 README。此後唯一的 commit 是文件變更,因為原作者已轉而開發 Hister。Hister 是一個會索引你指定的網頁和檔案的搜尋工具,不會查詢其他搜尋引擎。這是不同的概念;如果你真正想要的是搜尋自己的內容的個人搜尋引擎,它會很有用。

第二項訊號是套件,而多數舊教學都默默依賴套件。

  • PyPI 只有一個 searx 版本,也就是 0.17.0,於 2020 年 7 月上傳。pip install searx 成功執行後,取得的是 fork 出現前 9 個月的程式碼。
  • Debian 在 Debian 12 (bookworm) 提供 searx 1.1.0,且目前仍保留在 unstable 中。它於 2023 年 10 月從 testing 移除,因此 Debian 13 (trixie) 完全沒有 searx 套件。
  • Ubuntu 最後一次提供此套件是在 22.04,版本為 1.0.0。在 Ubuntu 24.04 上,sudo apt install searx 會以 E: Unable to locate package searx 結束。
  • searx.space 是該專案一直引導使用者前往的公開執行個體目錄,現在列出的是 SearXNG 執行個體。

因此,實際狀態如下:程式碼仍公開、仍可執行,你今天仍可 clone 並啟動它。但你不會取得引擎修正或安全性更新,而對中繼搜尋引擎而言,這正是維護工作的核心。搜尋引擎會依照其他人的更新時程逐漸失效。未維護的執行個體每個月都會回傳更少的結果,即使沒有人操作該伺服器。

新執行個體的分支變更

設定檔已移動,現在改用 overlay

在 Searx 中,您會在原始碼樹內編輯 searx/settings.yml。在 SearXNG 中,檔案位於 /etc/searxng/settings.yml,程序會透過 SEARXNG_SETTINGS_PATH 環境變數找到它。安裝程式複製到該處的範本很短:

use_default_settings: true

general:
  debug: false
  instance_name: "SearXNG"

search:
  safe_search: 2
  autocomplete: 'duckduckgo'
  formats:
    - html

server:
  # Is overwritten by ${SEARXNG_SECRET}
  secret_key: "ultrasecretkey"
  limiter: true
  image_proxy: true

valkey:
  # URL to connect valkey database. Is overwritten by ${SEARXNG_VALKEY_URL}.
  url: valkey://localhost:6379/0

use_default_settings: true 是改變工作方式的那一行。加入這行後,您的檔案只需保存覆寫內容;省略的每個鍵都會使用套件內附的預設值。若未加入這行,檔案就必須逐一描述每個引擎的完整設定。許多人因此得到能正常啟動、卻找不到任何內容的執行個體。將舊版 Searx 設定檔貼到這個路徑時,它會被視為使用不同鍵名的完整設定,因此會採用第二種方式,而且會導致錯誤。

secret key 會使程序停止

sudo -H sed -i -e "s/ultrasecretkey/$(openssl rand -hex 16)/g" \
              "/etc/searxng/settings.yml"

複製範本後執行一次。若略過這個步驟,SearXNG 會記錄一行訊息並以狀態碼 1 結束,因為 webapp.py 會在提供任何服務前,將該金鑰與範本值進行比對:

server.secret_key is not changed. Please use something else instead of ultrasecretkey.

general.debug 為 true 時會略過這項檢查,因此執行個體可能在 debug 工作階段中正常運作,卻拒絕在 systemd 或容器中啟動。若容器因 docker compose logs 中有這一行而不斷重新啟動,表示是這項檢查被觸發,不是映像檔損壞。

limiter 是新增功能,且需要 Valkey

Searx 沒有在應用程式內建速率限制。公開的 Searx 執行個體會在前方使用獨立服務:filtron 用於請求篩選,morty 用於代理結果內容。這兩個儲存庫上次提交都在 2023 年。

SearXNG 自行處理這些工作。速率限制與 bot 偵測由 limiter 負責,並透過 server.limiter 啟用。套件附帶的預設值為 false,安裝程式範本中的值為 true;它需要 Valkey 資料庫保存計數器。Valkey 是 Redis 的分支,而 Ubuntu 24.04 已提供其套件:

sudo apt install -y valkey-server
server:
  limiter: true

valkey:
  url: valkey://localhost:6379/0

在該次重新命名之前撰寫的指南會改為設定 redis: 區塊,因此請從目前的 limiter 文件複製鍵名。細部調整位於第二個檔案 /etc/searxng/limiter.toml,而 server.public_instance: true 會啟用公開執行個體需要的較嚴格 bot 偵測,包括連結 token 方法。可見的結果是,部分請求會收到 HTTP 429,而不是搜尋結果;若您以 script 連線至該執行個體,自己的請求也可能受到影響。相關說明位於此頁:SearXNG 執行個體為何會回答 429 Too Many Requests

引擎會自行暫停,且逾時時間很長

當上游服務以 CAPTCHA 或速率限制頁面回應時,SearXNG 會引發具型別的例外,並在一段時間內停止向該引擎發出請求,而不是持續重試直到遭到封鎖。預設值位於 searx/settings.ymlsearch.suspended_times 下。截至 2026 年 8 月,已發布的值共有 6 個:

ChartSearXNG default engine suspension times, in seconds
The data behind this chart
[
  {
    "label": "SearxEngineAccessDenied",
    "suspend_seconds": "180"
  },
  {
    "label": "SearxEngineCaptcha",
    "suspend_seconds": "3,600"
  },
  {
    "label": "SearxEngineTooManyRequests",
    "suspend_seconds": "180"
  },
  {
    "label": "cf_SearxEngineCaptcha",
    "suspend_seconds": "1,296,000"
  },
  {
    "label": "cf_SearxEngineAccessDenied",
    "suspend_seconds": "86,400"
  },
  {
    "label": "recaptcha_SearxEngineCaptcha",
    "suspend_seconds": "604,800"
  }
]

一般的拒絕存取回應會使該引擎暫停 180 秒。CAPTCHA 會使其暫停 3,600 秒。Cloudflare CAPTCHA 會使其暫停 1,296,000 秒,也就是 15 天;Google reCAPTCHA 則會使其暫停 604,800 秒,也就是 1 週。這些較長的值是刻意設定的,因為服務已標記該位址後仍再次請求,可能導致執行個體 IP 永久遭到封鎖。

引擎暫停期間,結果頁面會略過該引擎,並在標題為 "Messages from the search engines" 的側邊欄區塊中回報;/stats/errors 會列出失敗的項目。新執行個體回傳的結果很少時,通常是因為這項機制,而不是安裝損壞。

JSON API 預設為關閉

套件附帶的預設值只有 formats: [html],因此每個 script 都需要的 API 會保持關閉,直到您手動開啟。

curl -s -o /dev/null -w '%{http_code}\n' \
  'http://127.0.0.1:8888/search?q=test&format=json'

這會輸出 403,因為要求的格式未列在 search.formats 中時,搜尋路由會呼叫 flask.abort(403)。加入該格式後重新啟動服務:

search:
  formats:
    - html
    - json

searx 設定檔完全沒有 formats 鍵,因此其 JSON 輸出只要提出請求就能取得。那個時期的每個 script 與程式碼片段都假設此行為,失敗時只會得到沒有說明的 403。如果您要將執行個體接入工具,讓 agent 使用 SearXNG endpoint 進行搜尋 的第一步就是設定這個值。

為何複製貼上的 Searx 教學會失效

以下每一行都出現在目前仍能排上搜尋結果的指南中,但在目前的安裝環境裡,不是失敗,就是會造成誤導。

  • sudo apt install searx 在 Ubuntu 24.04 會停在 E: Unable to locate package searx,因為該套件最後一次發布是在 22.04。
  • pip install searx 會成功,並安裝 2020 年 7 月發布的 0.17.0。沒有任何提示會告訴你,它早於分支專案的建立。
  • git clone https://github.com/asciimoo/searx 仍可運作,因為 GitHub 會將舊擁有者名稱重新導向,並提供 2023 年 4 月的程式碼樹。
  • 在原始碼樹中修改 searx/settings.yml 的步驟對 SearXNG 不會產生任何作用,因為 SearXNG 讀取的是 /etc/searxng/settings.yml
  • 安裝 filtron 或 morty 的步驟,其實是在重新建置 SearXNG 已經包含的部分。
  • 限流器使用的 redis: URL,比目前的 valkey: 金鑰少改了一次名稱。

SearXNG 指南也會過時,而 clone URL 是判斷指南年代最快的方法。Compose 檔案過去位於獨立的 searxng-docker repository。該 repository 已於 2026 年 3 月封存,檔案也已移至主 repository 的 container/。目前文件提供的容器快速入門如下:

mkdir -p ./searxng/core-config/
cd ./searxng/
curl -fsSL \
    -O https://raw.githubusercontent.com/searxng/searxng/master/container/docker-compose.yml \
    -O https://raw.githubusercontent.com/searxng/searxng/master/container/.env.example
cp -i .env.example .env
nano .env
docker compose up -d

請在最後一個命令前編輯 .env。該映像會將環境變數對應到設定金鑰,因此 SEARXNG_SECRET 會變成 server.secret_key,而 SEARXNG_BASE_URL 會變成 server.base_url。透過指令碼在主機上安裝,則是另一條能達到相同結果的路徑:

git clone https://github.com/searxng/searxng.git searxng
cd searxng
sudo -H ./utils/searxng.sh install all

這會建立 searxng 使用者、/usr/local/searxng 下的虛擬環境,以及 uWSGI 服務。這也是 SearXNG 文件中的參考設定。該路徑的完整操作說明請參閱 在自己的 VPS 上安裝 SearXNG

公開實例或自行架設的實例

公開實例是由他人維運的伺服器,負責終止你的 TLS(transport layer security)連線,因此該伺服器上的軟體可以讀取純文字查詢。SearXNG 的官方文件直接說明了信任問題:你必須信任管理員,而且無法知道請求是否會被記錄、彙整或轉交給第三方。可見的項目不多,而且內容完整。營運者的軟體堆疊可以看到查詢文字、時間、請求來源 IP 位址、瀏覽器 user agent,以及保存你設定的偏好設定 cookie。營運者也能控制程式碼,因此他們套用的任何修補程式都會在你於該實例執行的每次搜尋中運作。

其中一項預設設定可能讓系統意外記錄搜尋內容。Searx 會以 POST 傳送搜尋,SearXNG 則採用 method: "GET",並註明 POST 可避免搜尋查詢出現在瀏覽器歷程記錄中,但會造成可用性問題。使用 GET 時,查詢會位於請求列中,因此預設會寫入反向代理的存取日誌,也會出現在瀏覽器歷程記錄中。這是一般 Web 伺服器的行為。在選擇由哪個伺服器處理查詢前,應先了解這點。

自行執行實例只是轉移信任對象,並非消除信任需求。你可以控制程式碼與日誌;如果你完全不想為單一使用者的主機公開主機名稱或 TLS 憑證,透過 v3 onion service 連線可讓實例不出現在公開 DNS 中,同時仍能從任何地方連線。相對地,上游引擎會看到你所有搜尋都來自同一個位址;在單一使用者實例上,每個查詢都能追溯到你,而不會與其他使用者混在一起。繁忙的公開實例能提供這個使用者群體,並讓你無須管理日誌。請選擇你重視的特性;如果想先查看完整的風險清單,SearXNG 是否安全可用會逐項說明。

使用 VPS 時,還有一點實務事項需要注意。資料中心的位址範圍比家用連線更容易被標記,因此新實例在前幾次搜尋中,就可能在某些引擎遇到 CAPTCHA。這是上述的暫停行為正在發揮作用,並非設定錯誤。

如果你已經在執行 Searx instance

你在讀到本節的當天不會遇到任何故障。伺服器會持續運作,直到上游的變更導致其他引擎故障,之後服務就會維持在故障狀態。請規劃遷移,不要搬用原本的設定檔。從 SearXNG 範本開始,只重新加入你確實修改過的項目:instance 名稱、safe_search、你依名稱啟用或停用的引擎,以及介面的預設值。此 fork 中的引擎名稱與選項已經變更,因此請逐一對照目前的文件,不要假設原本的鍵仍然存在。Filtron 規則與 morty URL 沒有對應項目,因為這些工作已移入應用程式內部。

請在舊 instance 仍在執行時,於不同的連接埠啟動新 instance。首頁回傳 200、搜尋結果來自多個引擎,且 /stats/errors 為空或只列出你了解的失敗項目時,即表示運作正常。接著切換反向代理,並停止舊服務。

FAQ

Searx 在 2026 年已停止開發嗎?

儲存庫尚未封存,因此仍可複製,但專案已無人維護。最後一筆程式碼提交是在 2023 年 4 月,README 也寫著「Searx 已不再維護」。請使用 curl -s https://api.github.com/repos/searx/searx | jq -r '.pushed_at' 自行確認,再閱讀近期的提交訊息,因為單看推送日期,可能只是文件編輯造成的。對元搜尋引擎而言,無人維護代表搜尋結果會自行惡化,因為每個引擎模組都依賴持續變更的上游網站。

我仍可使用 apt 或 pip 安裝 Searx 嗎?

在目前的系統上不行;即使可以安裝,也沒有實際效益。Ubuntu 上次封裝 searx 是在 22.04,版本為 1.0.0,因此在 24.04 執行 sudo apt install searx 會回傳 E: Unable to locate package searx。Debian 在 Debian 12 提供 1.1.0,並於 2023 年 10 月從 testing 移除,因此 Debian 13 沒有此套件。PyPI 仍提供 2020 年 7 月發布的 0.17.0,比該分支本身還舊。請改為安裝 SearXNG。

我舊的 searx settings.yml 可在 SearXNG 中使用嗎?

不行。請複製設定值,不要直接複製檔案。SearXNG 會讀取 /etc/searxng/settings.yml,並要求檔案頂端有 use_default_settings: true,因此你的檔案會作為已發布預設值的覆寫層。舊的 searx 檔案是完整設定,使用不同的鍵名,而且沒有 limitervalkey 區塊及 formats 清單。請從 utils/templates/etc/searxng/settings.yml 的範本開始,再逐一重新加入你的變更。

為什麼我自己的 SearXNG 執行個體回傳的結果比公開執行個體少?

部分引擎會被暫停使用。當引擎回應 CAPTCHA 或速率限制頁面時,SearXNG 會在固定時間內停止查詢該引擎;普通拒絕的暫停時間為 180 秒,Cloudflare CAPTCHA 則最長為 1,296,000 秒。結果頁會在「搜尋引擎訊息」下方回報此狀況,而 /stats/errors 會列出失敗項目及其原因。資料中心位址比家用網路連線更早被標記,因此新的 VPS 執行個體很快就會遇到這個問題。

我應使用公開的 SearXNG 執行個體,還是自行執行?

如果你想控制程式碼與日誌,且能接受上游引擎將你的所有搜尋視為來自單一位址,請自行執行。如果你更重視將搜尋查詢與其他使用者混合,而不是了解哪些內容會被記錄,請使用公開執行個體。在公開執行個體上,營運者可以看到查詢文字、時間、你的 IP 位址及 user agent,也能隨時修改程式碼。營運者聲明的日誌政策無法從外部驗證。