【手順つき】Ollama+Dify+SearXNGで“最新情報も扱える”ローカルLLM環境を作る(Rocky Linux 9 / Docker)

ローカルLLM(Ollama)は「社内に閉じられる」のが強みですが、弱点もあります。そう、最新情報です。

そこで今回は Ollama(Windowsホスト)+Dify(Rocky Linux 9 / VMware)+SearXNG(Rocky Linux 9 / 同居) で、必要なときだけ検索し、検索結果を根拠としてローカル推論に渡す“実用構成”をまとめます。


0) 前提

  • Windowsホスト:Ollama 導入済み(ポート 11434で稼働)
  • VMware上:Rocky Linux 9(ゲスト)に Dify を Docker Compose で稼働済み、または導入予定
  • Rocky9(ゲスト)から Windowsホストの http://<WindowsホストIP>:11434 に到達できること
  • 本記事では Dify の compose と 同一 docker-compose(同居)で SearXNG を立てます

注意:Linux(Docker)環境では host.docker.internal が効かないケースがあるため、WindowsホストIPの直指定が安定です。


Difyの導入(.envの調整:接続先・メール設定)

.env の編集場所

Dify の docker ディレクトリへ移動します(例)。

cd /opt/dify/docker
# 例です。あなたの環境のDifyディレクトリに合わせてください

.envを編集します。

1) Ollama への接続先(OpenAI互換APIを使う例)

OllamaはOpenAI互換API(/v1)を提供しているため、Dify側をOpenAI互換として繋ぐのが分かりやすいです。

# WindowsホストIPは例:192.168.1.10
OPENAI_API_BASE=http://<WindowsホストIP>:11434/v1
OPENAI_API_KEY=ollama

※ OPENAI_API_KEY は実トークンではなくダミー文字列で動作する運用が多いですが、ツール仕様や設定画面により異なる場合があります。

2) Dify の接続先URL(管理画面/APIのURL)

LAN内利用の例です(必要に応じてHTTPS/リバースプロキシ構成に置き換えてください)。

CONSOLE_WEB_URL=http://<Rocky9のIP>:3000
API_BASE_URL=http://<Rocky9のIP>:5001

3) メール送信設定(SMTP)

Difyは招待や通知などでメール送信を使うことがあります。SMTP設定を追記します(値は環境に合わせて調整)。

例:Gmail(アプリパスワード利用)

MAIL_TYPE=smtp
MAIL_DEFAULT_SEND_FROM=noreply@example.com

SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=your_account@gmail.com
SMTP_PASSWORD=your_app_password
SMTP_USE_TLS=true
SMTP接続でエラーになる場合等、必要に応じて下記項目も設定してください。 SMTP_LOCAL_HOSTNAME=SMTP HELO/EHLOで使用するローカルホスト名 を設定してください

手順(SearXNGのインストール作業を含む:Dify docker-compose と同居)

1) Dify の compose ファイル場所へ移動

Dify を起動しているディレクトリに移動します(例)。

cd /opt/dify/docker
# 例です。あなたの環境のDifyディレクトリに合わせてください

2) SearXNG 用の設定ディレクトリを作る(ホスト側)

mkdir -p ./searxng

3) Dify の docker-compose.yml に SearXNG サービスを追加(=インストール)

Dify の docker-compose.yml(または docker-compose.yaml)に、services 配下へ以下を追記します。

重要:networks: は Dify 側の既存ネットワーク名に合わせてください。多くの環境では default のままでOKです(Difyが使っているネットワークに同居させるのが目的)。

services:
searxng:
image: searxng/searxng:latest
restart: unless-stopped
environment:
- BASE_URL=http://searxng:8080/
volumes:
- ./searxng:/etc/searxng
ports: - "8081:8080" # ホストから動作確認したい時だけ。不要なら削除OK
networks:
- default

これで SearXNG が同居(= 同一サーバー・同一compose/同一ネットワーク)します。

Dify コンテナからは http://searxng:8080 で到達できます(サービス名解決)。


4) SearXNG の settings.yml を用意して JSON を有効化(403回避の要点)

./searxng/settings.yml を作成して、最低限これだけ入れてください(既にあるなら追記)。

vi ./searxng/settings.yml
use_default_settings: true

server:
# base_url は環境変数 SEARXNG_BASE_URL / BASE_URL を使う運用でもOK
# base_url: http://searxng:8080/
secret_key: "REPLACE_WITH_RANDOM_HEX"

search:
formats:
- html
- json

重要:SearXNG は未許可の format を指定すると 403 になるため、json を許可するのが重要です。


5) SearXNG を起動(= pull + run)

docker compose up -d searxng

6) SearXNG 単体の動作確認(推奨)

ホストに 8081:8080 を公開した場合:

curl 'http://localhost:8081/search?q=beer&format=json'

JSON が返ればOK。403 なら手順4(formatsにjson)を再確認します。


7) Dify 側で SearXNG を認証(連携完了)

Dify 管理画面で Tools → SearXNG → Authenticate を開き、Base URL に以下を入力して保存します。

http://searxng:8080

これでDifyからSearXNGへ検索が可能になります。


構成イメージ(ざっくり)

Dify Workflow

HTTP(SearXNGへ検索)

検索結果(JSON)

Templateで整形(根拠URL込み)

LLM(Ollama:ローカル推論)

Answer

よくある詰まりポイント

  • VM → WindowsホストのOllamaに繋がらない:VMwareのNAT/ブリッジ設定、Windows側FWで 11434 がブロックされていないか確認
  • SearXNGで403settings.ymlsearch.formatsjson が入っているか確認
  • DifyがSearXNGに到達しない:Difyからは http://searxng:8080(サービス名)でアクセス。localhost はNG

参考(一次情報・公式)


関連記事