Open WebUI + SearXNG のWeb検索が403になる問題を解決する

ozy's labo.


Open WebUI の Web検索が動かない

ローカルLLM環境で

  • Open WebUI
  • SearXNG

を組み合わせて Web検索を有効にしたところ,ツール呼び出しはされるのに検索結果が返らない問題に遭遇しました.

モデルはツールを呼ぼうとしており,UIにもハンマーアイコンが表示されます.しかし SearXNG のログにはアクセスが現れません.

調査してみると,Open WebUI のログに次のエラーが出ていました.

403 Client Error: Forbidden for url:
/search?q=...&format=json

つまり

Open WebUI → SearXNG にはアクセスしているが,SearXNG が拒否している

という状態でした.

原因

Open WebUI は SearXNG に対して次のようなリクエストを送ります.

/search?q=検索語&format=json

SearXNG では

  • HTML検索
  • JSON API

が別扱いになっており,デフォルト設定では JSON API が制限されることがあります.

そのため

/search?q=test

は成功しますが

/search?q=test&format=json

は 403 になります.

確認は curl で行えます.

curl "http://192.168.10.3:7777/search?q=test"
curl "http://192.168.10.3:7777/search?q=test&format=json"

後者が 403 になる場合,SearXNG の設定が原因です.

解決方法

SearXNG の設定ファイルを編集します.

/etc/searxng/settings.yml

以下の設定を追加または変更します.

search:
  formats:
    - html
    - json

server:
  limiter: false
  public_instance: true

botdetection:
  ip_limit:
    enabled: false

編集後,コンテナを再起動します.

docker restart searxng

これで Open WebUI からの検索が正常に動作します.

Docker コンテナ内の設定ファイルを編集する方法

Docker コンテナ内のファイルはそのままでは編集しにくいため,次の方法が便利です.

コンテナからファイルを取り出す

docker cp searxng:/etc/searxng/settings.yml .

これでカレントディレクトリに settings.yml がコピーされます.

編集

nano settings.yml

コンテナに戻す

docker cp settings.yml searxng:/etc/searxng/settings.yml

再起動

docker restart searxng

Docker 起動時に設定ディレクトリをマウントする

毎回 docker cp を使うのは面倒なので,設定ディレクトリをマウントすると便利です.

まず設定用ディレクトリを作ります.

mkdir searxng-config

設定ファイルをコピーします.

docker cp searxng:/etc/searxng/settings.yml searxng-config/

その後コンテナを作り直します.

docker stop searxng
docker rm searxng

起動時に volume を指定します.

docker run -d \
  --name searxng \
  -p 7777:8080 \
  -v $(pwd)/searxng-config:/etc/searxng \
  --restart unless-stopped \
  searxng/searxng

これで

./searxng-config/settings.yml

を編集するだけで設定変更が可能になります.

さらに原因が

これでクエリは通ったかに見えましたが,今度はコンテキスト溢れ問題.

結論から言うと,クエリURLをこの様な形にするとうまくいきました.

http://192.168.10.3:7777/search?q=<query>

まとめ

Open WebUI と SearXNG を組み合わせたときに Web検索が動かない場合,原因は次のケースが多いです.

  • JSON API が無効
  • bot detection による拒否
  • rate limiter

今回のように

/search?q=...&format=json

が 403 になる場合は,SearXNG の設定を見直すことで解決できます.

ローカルLLM環境で Web検索を安定して使うには,SearXNG の設定調整がほぼ必須と言えるでしょう.


Date: 2026-03-10

Author: ozyukiwo

Created: 2026-03-11 水 08:08

Emacs 26.3 (Org mode 9.1.9)

Validate