OllamaとDifyを連携させる方法|ローカルLLMでRAG・チャットボット・AIエージェントをノーコードで構築する手順

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)ローカルLLM > OllamaとDifyを連携させる方法|ローカルLLMでRAG・チャットボット・AIエージェントをノーコードで構築する手順
「Ollamaでローカルに動かしたLLMを、社内でもっと使いやすいアプリとして展開したい」
「RAGやエージェント機能をコードなしで実装したいが、どのツールを選べばいいか分からない」

そんな悩みを抱えるLinuxエンジニアやシステム管理者は多い。Ubuntu ServerでOllamaを構築するところまではできても、そこからアプリケーション基盤へ発展させる段階で手が止まってしまう。Open WebUIでチャット画面は作れても、RAGとエージェントを組み合わせてAPIとして外部に提供したいとなると、別の構成が必要になる。

この記事では、OllamaとDifyを連携させて、ローカルLLM環境にチャットボット・RAGナレッジベース・AIエージェントをノーコードで構築する手順を解説する。Difyは2024年以降に国内でも急速に普及したLLMアプリ開発プラットフォームで、Open WebUIがチャット画面特化であるのに対し、Difyはアプリ作成・RAG・エージェント・API公開を一つのUIで管理できる。Ubuntu 24.04 LTS・Docker 26.x以上・Ollama 0.3.x以上の環境を前提に手順を進める。

この記事のポイント

・DifyをDockerでインストールし、OllamaのエンドポイントURLを登録するだけで連携できる
・チャットボット・RAGナレッジベース・AIエージェントをノーコードUIで構築できる
・DifyのAPIエンドポイントを使えば既存の業務システムにローカルLLMを組み込める
・連携時のモデル未認識・Docker疎通エラーは対処パターンが決まっており解消しやすい


OllamaとDifyを連携させる方法|ローカルLLMでRAG・チャットボット・AIエージェントをノーコードで構築する手順

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

DifyとOllamaを連携させる前に確認しておくこと

DifyとOllamaを組み合わせると、チャットボット・RAG・エージェント・APIエンドポイントをまとめて管理できる基盤が出来上がる。ただし連携には前提となる設定がいくつかある。事前に整えておくことで、後からトラブルで詰まるリスクを大きく減らせる。

DifyはDocker Composeで動作する複数コンテナ構成(API・Worker・Web・PostgreSQL・Redis・Vector DB)をまとめて起動する。このDockerコンテナからホスト上で動いているOllamaのAPIにアクセスする必要があるため、Ollamaのリスニングアドレスをデフォルトのローカルループバックから変更しておく必要がある。

また、Difyはデフォルトで80番ポートを使用するため、ApacheやNginxが動いている場合は事前に停止するか、DifyのNGINX_HTTP_PORT環境変数で別ポートを指定しておく。

1. 動作環境と前提条件を確認する

まずOllamaが正常に動作していることをcurlで確認する。

# OllamaのAPIが応答しているか確認する $ curl http://localhost:11434/api/tags {"models":[{"name":"llama3.3:70b-instruct-q4_0","model":"llama3.3:70b-instruct-q4_0","modified_at":"2026-06-10T08:23:11Z","size":43002828624,"digest":"abc123def456...","details":{"format":"gguf","family":"llama","parameter_size":"70B","quantization_level":"Q4_0"}}]}

モデルが一覧に表示されれば、OllamaのAPIは正常に動作している。次にDockerが導入済みであることも確認する。DifyはDockerとDocker Composeの両方を必要とする。

もしOllamaのモデルをまだ選定中であれば、Llama3.3・Mistral・Gemma 3・Phi-4の性能比較と用途別の使い分けを先に確認しておくと、Difyに接続するモデルの選択がスムーズになる。

2. OllamaのAPIをDockerコンテナからアクセスできる設定に変更する

Ollamaはデフォルトで127.0.0.1にバインドするため、Dockerコンテナからは直接アクセスできない。systemdのOverrideファイルでOLLAMA_HOSTを変更してリスニングアドレスを0.0.0.0に切り替える。

# systemd overrideファイルを作成する $ sudo mkdir -p /etc/systemd/system/ollama.service.d/ $ sudo tee /etc/systemd/system/ollama.service.d/override.conf <<'EOF' [Service] Environment="OLLAMA_HOST=0.0.0.0:11434" EOF # 設定を反映してOllamaを再起動する $ sudo systemctl daemon-reload $ sudo systemctl restart ollama # 0.0.0.0でLISTENしていることを確認する $ ss -tlnp | grep 11434 LISTEN 0 128 0.0.0.0:11434 0.0.0.0:* users:(("ollama",pid=3142,fd=7))

この設定後は11434番ポートへのアクセスをファイアウォールで社内ネットワークのみに制限することを強く推奨する。外部公開が必要な場合はNginxリバースプロキシとBasic認証を組み合わせた認証付きの構成を用意する。

DifyをDockerでインストールする方法

DifyはGitHubの公式リポジトリをクローンしてDocker Composeを起動するだけでインストールできる。Web・API・Worker・PostgreSQL・Redis・Weaviateが一括で起動し、ブラウザでの初期セットアップまで含めて15分程度で完了する。

1. DockerとDocker Composeの準備

Ubuntu 24.04 LTSでDockerが未導入の場合は公式インストールスクリプトで一括導入する。

# Docker公式インストールスクリプトを実行する $ curl -fsSL https://get.docker.com | sudo sh # 現ユーザーをdockerグループに追加する(再ログイン後に有効) $ sudo usermod -aG docker $USER # バージョンを確認する $ docker --version Docker version 26.1.4, build 5650f9b $ docker compose version Docker Compose version v2.27.1

2. DifyのリポジトリをCloneしてコンテナを起動する

公式リポジトリをクローンし、環境変数ファイルをサンプルからコピーしてコンテナを起動する。

# リポジトリをクローンする(最新1件のみ取得) $ git clone https://github.com/langgenius/dify.git --depth=1 $ cd dify/docker # 環境変数ファイルをサンプルからコピーする $ cp .env.example .env # コンテナをバックグラウンドで起動する $ docker compose up -d # コンテナの起動状態を確認する $ docker compose ps NAME IMAGE STATUS dify-api-1 langgenius/dify-api Up 3 minutes (healthy) dify-web-1 langgenius/dify-web Up 3 minutes dify-worker-1 langgenius/dify-api Up 3 minutes (healthy) dify-db-1 postgres:15-alpine Up 3 minutes (healthy) dify-redis-1 redis:6-alpine Up 3 minutes (healthy) dify-weaviate-1 semitechnologies/weaviate Up 3 minutes

すべてのコンテナが「Up」になるまで2~3分かかる。特にdify-api-1が「healthy」表示になるまで待ってから次に進む。healthyになる前にブラウザでアクセスすると接続エラーになる。

3. Difyの初期セットアップを完了させる

ブラウザで `http://サーバーIP/install` にアクセスして管理者アカウントを作成する。メールアドレスとパスワードを入力してセットアップを完了させるとダッシュボードが表示される。この画面は初回のみ表示され、2回目以降はログイン画面に切り替わる。

チームで使う場合はダッシュボードの「Settings → Members → Invite」からメンバーを招待できる。招待されたメンバーはメールのリンクからアカウントを作成してDifyにログインできるようになる。

DifyにOllamaを接続してモデルを認識させる方法

DifyはOpenAI・Anthropic・Google等の外部APIに加えてOllamaも標準でサポートしている。Settings画面からモデルプロバイダーを追加することで、Dify上のすべてのアプリでOllamaのモデルを選択できるようになる。

社内でChatGPTを使えない環境でローカルLLMを展開するアプローチを検討している場合は、社内でChatGPTが使えないときの代替手段としてのローカルLLMも合わせて参考にしてほしい。

1. DifyのSettings画面でOllamaプロバイダーを追加する

ダッシュボード右上のアカウントアイコンから「Settings → Model Provider」に移動する。プロバイダー一覧から「Ollama」を選択して以下の情報を入力する。

・Base URL: `http://host-gateway:11434`(DockerコンテナからホストのOllamaに接続するアドレス)
・Model Name: `llama3.3:70b-instruct-q4_0`(ollama listで確認したモデル名をそのまま入力)
・Model Type: LLM

「host-gateway」はDockerがLinuxホストのIPに自動解決する特別なホスト名だ。`localhost` や `127.0.0.1` はDockerコンテナ自身を指すためOllamaには届かない点に注意する。入力後「Save」をクリックして「Connected successfully」が表示されれば接続完了だ。

モデルを複数使い分けたい場合は「Add Model」を繰り返して追加できる。用途別に特化したモデルを複数登録しておき、アプリごとに使い分けるとよい。

2. Playgroundでモデルの動作を確認する

「Explore → Playground」でチャット画面を開き、追加したOllamaモデルを選択してテストメッセージを送る。日本語の質問に正しく応答すれば動作確認完了だ。

レスポンスが遅い場合はモデルサイズを下げることを検討する。PoC(概念実証)段階ではGemma 3の4Bモデルや軽量なMistralモデルから始め、品質を確認しながら大型モデルに切り替えるのが現場での定石だ。

Difyでチャットボットアプリを作成する手順

Difyでは「App」という単位でLLMアプリを管理する。チャットボット・テキスト生成・エージェント・ワークフローの4タイプから選んで作成する。チームへの最初の展開にはチャットボットタイプが最もシンプルで使いやすい。

1. 新規チャットアプリを作成する

「Studio → Create App → Chatbot」を選択してアプリ名(例:「社内技術QAボット」)を入力し作成する。オーケストレーション画面が開いたら右側の「Model」セクションで先ほど追加したOllamaモデルを選択する。

Temperature(応答のランダム性・0.0~1.0)はデフォルトの0.7から変更しなくて構わない。技術的な回答精度を重視する場合は0.3程度に下げるとハルシネーションが減る傾向がある。コンテキスト長(Max Tokens)も必要に応じて調整する。

2. システムプロンプトを設定する

「Instructions」欄にシステムプロンプトを入力する。チャットボットの役割・回答スタイル・制約を日本語で明確に記述することが品質向上のカギとなる。

社内技術QAボットであれば次のような内容が効果的だ。

・あなたは社内のLinuxサーバー運用に関する質問に答えるAIアシスタントです
・回答は日本語で行い、コマンドが必要な場合はコードブロック形式で記載してください
・社外秘情報・個人情報への言及は控えてください
・回答が不確かな場合は「確認が必要です」と明示してください

プロンプト設計は試行錯誤が必要な部分だ。DifyはPrompt Logで会話履歴を確認できるため、実際の質問と応答を見ながら継続的に改善できる。

3. チャットアプリを公開してチームに共有する

右上の「Publish」をクリックすると公開URLが発行される。社内ネットワーク内のメンバーがこのURLにアクセスしてチャットを利用できる。Difyのデフォルト設定では認証なしでアクセスできるため、機密性の高い用途ではNginxのBasic認証やIP制限を組み合わせて保護する。

DifyにはAPIキーを発行してREST APIとしてアプリを外部公開する機能もある。「API Access」タブからAPIキーを生成すれば、既存の社内システムから `POST /v1/chat-messages` エンドポイントを呼び出してローカルLLMを組み込める。

DifyのナレッジベースにドキュメントをRAGで登録する方法

Difyに内蔵されているRAG機能を使えば、社内マニュアル・手順書・FAQをナレッジベースとして登録して、チャットボットが参照しながら回答できるようになる。LangChainやChromaDBのコードを書かずにUIだけで完結する点が大きな強みだ。

1. Embeddingモデルを設定する(nomic-embed-textの導入)

RAGにはテキストをベクトルに変換するEmbeddingモデルが必要だ。OllamaのEmbeddingモデルとして `nomic-embed-text` を使う。まずOllama側でpullする。

# Embeddingモデルを追加する $ ollama pull nomic-embed-text pulling manifest pulling 970aa74c0a90... 100% ▕████████████████████▏ 274 MB pulling c71d239df917... 100% ▕████████████████████▏ 11 KB verifying sha256 digest writing manifest success # インストールを確認する $ ollama list | grep nomic nomic-embed-text:latest 0a109f422b47 274 MB 1 minute ago

DifyのSettings → Model Provider → Ollamaで「Add Model」をクリックし、Model Typeを「Text Embedding」、Model Nameを `nomic-embed-text` として追加する。その後「Settings → System Model Settings」でEmbedding Modelに設定すれば準備完了だ。

2. ナレッジベースを作成してドキュメントをアップロードする

「Knowledge」タブから「Create Knowledge」を選択してナレッジベース名を入力する。PDF・TXT・Markdown・Word・CSV・HTMLなど複数形式に対応している。

チャンク設定は最初はデフォルト(500トークン・オーバーラップ50トークン)で問題ない。技術マニュアルのように見出しが明確な文書は、Segment identifierに `#`(Markdownの見出し記号)を指定すると見出し単位でチャンクが分割されて精度が上がることがある。

アップロード後にインデックス作成の進捗バーが100%になれば登録完了だ。処理時間はドキュメントのサイズとサーバーの性能に依存する。100ページを超えるPDFは章単位で分割してからアップロードすると処理が安定する。

3. チャットアプリにナレッジベースを紐付ける

チャットアプリのオーケストレーション画面の「Context」セクションで「Add」をクリックして作成したナレッジベースを選択する。これでユーザーの質問に対してナレッジベースを参照しながら回答するようになる。

Difyはデフォルトで回答の根拠となったドキュメントと該当箇所を引用情報として表示する機能を持つ。「どの文書のどの部分を参照したか」が分かるため、回答精度の確認と信頼性の担保がしやすい。一つのチャットアプリに複数のナレッジベースを紐付けることも可能で、カテゴリ別にナレッジベースを分けて管理できる。

DifyでAIエージェントを作成してツールを組み込む方法

チャットボット・RAGの次の段階として、外部ツールを自律的に呼び出すAIエージェントをDifyで作成できる。ユーザーの指示に基づいて検索・計算・APIコールをエージェントが選択して実行する形だ。コードを書かずにビジュアル設定だけでエージェントを構築できる。

1. エージェントアプリを作成する

「Studio → Create App → Agent」を選択する。推論方式はFunction CallingとReActから選べる。

Ollamaで動かすモデルのFunction Calling対応状況はモデルによって異なる。Llama3.3とMistral・Phi-4の最新バージョンはFunction Callingに対応しており比較的安定して動作する。Gemma 3の小型モデル(2B・4B)では対応が不安定な場合があるため、ReActモードを選ぶ方が確実なことがある。

エージェントのTools設定でDify組み込みのツール(DuckDuckGo検索・Wikipedia・計算機・日時取得等)を追加できる。社内システムとの連携にはOpenAPI(OAS 3.0)スキーマを読み込んでカスタムAPIツールとして登録する方法が使える。例えば社内のチケットシステムのAPIをOpenAPI形式で記述しておけば、「チケット#1234の状態を調べて」という自然言語の指示をエージェントがAPIコールに変換して実行できるようになる。

2. エージェントの動作を確認してチューニングする

エージェントアプリ作成後は左側のデバッグ画面で動作を確認する。ツール呼び出しの過程がステップ単位で可視化されるため、どのツールを選択してどんな結果を得たかを一目で追える。

ローカルLLMのエージェント機能はクラウドLLMと比べてツール選択の精度が下がることがある。システムプロンプトでツールの使用条件を明示すると精度が向上する。複雑な多段ツール呼び出しを行う前に、ツール1つの単純なケースから動作を確認して積み上げていくのが現場での正解だ。

DifyとOllama連携でよくあるトラブルと対処法

連携設定で詰まりやすいポイントをまとめておく。 モデルが認識されない(Error: model not found)
Difyに登録したモデル名がOllamaにpull済みのモデル名と完全に一致していることを確認する。`ollama list` で実際の名前を確認し、量子化タグを含むフルネームを入力する必要がある。`llama3.3` と `llama3.3:70b-instruct-q4_0` は別モデル扱いになるため注意が必要だ。

# pull済みモデルの正確な名前を確認する $ ollama list NAME ID SIZE MODIFIED llama3.3:70b-instruct-q4_0 abc123def456 43 GB 3 days ago nomic-embed-text:latest 789xyz001234 274 MB 1 day ago gemma3:4b def456abc789 2.5 GB 5 hours ago

DifyコンテナからOllamaに接続できない(Connection refused)
DockerコンテナからホストのOllamaに接続するには `http://host-gateway:11434` を使う。`localhost` や `127.0.0.1` はコンテナ自身を指すためOllamaには届かない。`host-gateway` でも繋がらない場合は `ip route | grep default` でホストのデフォルトゲートウェイIPを確認し、そのIPを直接指定する方法を試す。

Difyのコンテナが起動しない
`docker compose logs dify-api-1` でログを確認する。PostgreSQLの起動遅延が原因のことが多く、2~3分待ってから `docker compose restart dify-api-1` で再起動すると解消することがある。80番ポートが他のサービスと競合している場合は `.env` の `NGINX_HTTP_PORT=8080` に変更してから `docker compose up -d` を再実行する。

RAGの検索精度が低い
チャンクサイズを300~400トークンに小さくすると精度が改善することがある。ドキュメントをアップロードする前に余分な空白・ページ番号・ヘッダー・フッターを除去した前処理済みファイルを使うと、ノイズが減って関連性スコアが上がる傾向がある。

Embeddingの処理が途中で止まる
大量のドキュメントを一度にアップロードした場合に発生することがある。100ページを超えるPDFは事前に章ごとに分割してからアップロードすることを推奨する。

まとめ

OllamaとDifyを連携させることで、チャットボット・RAGナレッジベース・AIエージェントをノーコードで構築できる。Dockerでインストールして、OllamaのエンドポイントURLをSettings画面に登録するだけで動き始める。社内ドキュメントをナレッジベースに登録するまでの所要時間は1時間程度だ。

Difyはチャット画面の提供だけでなく、LLMアプリをAPIエンドポイントとして外部に提供する機能も持つ。既存の社内システムにローカルLLMを組み込む際の入口として使いやすい構成だ。機密データを外部に送らずチームでLLMを活用したい企業にとって、OllamaとDifyの組み合わせは現時点でコストパフォーマンスの高い選択肢の一つだ。
やりたいこと 手順・コマンド
OllamaをDockerから受け付ける設定 OLLAMA_HOST=0.0.0.0:11434 をoverride.confに設定してsystemctl restart ollama
Difyをインストールする git clone https://github.com/langgenius/dify.git --depth=1 && cd dify/docker && cp .env.example .env && docker compose up -d
DifyからOllamaに接続する Settings → Model Provider → Ollama → Base URL: http://host-gateway:11434
Embeddingモデルを追加する ollama pull nomic-embed-text
pull済みモデル名を確認する ollama list
Difyコンテナのログを確認する docker compose logs dify-api-1 --tail=50

ローカルLLMとDifyの連携を2日間のハンズオンで体験する

OllamaのセットアップからDifyでRAGチャットボットを動かすまでの全工程を、実機GPU環境で手を動かしながら習得したい方向けに、「ローカルAIマスターセミナー」を開催しています。
少人数(最大8名)ZOOMハンズオン形式で実施しています。

>> ローカルAIマスターセミナーの詳細を確認する
ローカルLLMの構築・運用に関する関連記事もあわせて参考にしてください。

Ubuntu ServerでローカルLLMを構築する方法|Ollamaで機密データを外に出さず業務AIを動かす完全ガイド
社内でChatGPTが使えないときの代替手段|機密データを守るローカルLLMという選択肢
ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイント

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。