Open Chat
本研究はJSPS科研費(課題番号23K02737)の助成を受けて実施しております。【切実なお願いです🙇】研究成果報告にはユーザーからの評価が必要です。チャットボットご使用の際は、アンケートへ(1分程度)のご協力をお願いいたします🍀

【やってみたシリーズ】校内のネットワーク内で、Difyを使ってAIチャットボットを使うことができるのか!

ローカルでDifyを稼働させ、おげんまるなどのチャットボットを使うことができるのか検証しました。

ローカルネットワーク内でのDifyの設定手順

まず、Difyをローカル環境で使えるようにするために、PCやMacにインストールします。
通常行うソフト等のインストール方法とは違うので、ネットワークやLinux環境などの知識が必要ですが、この記事や参考サイトを活用することで十分構築可能です。まずは、自宅や許可されたローカル環境でチャレンジしてみてください。

1. はじめに:ローカルネットワークでDifyを使えるようにしよう!

Difyは、革新的なAIアプリケーション開発プラットフォームであり、ローカルネットワーク内で使用することで、インターネット接続の有無にかかわらず、より迅速かつ安全にAI機能を活用できます。本記事では、Difyをローカルネットワーク内で設定し、他のデバイスからアクセスするための手順を、なるべくわかりやすく解説します。ローカルネットワーク内での利用は、データ処理やプライバシー保護の観点からも非常に有効です。このガイドに従うことで、Difyの強力な機能をローカル環境で引き出すことができるようになります。

2. 基本を理解する:ネットワークの基礎

Difyをローカルネットワーク内で使用するためには、いくつかの基本的なネットワークの概念を理解しておくことが重要です。ここでは、IPアドレス、ポート、そしてファイアウォールの役割について解説します。

2.1 IPアドレスとは?

IPアドレスは、インターネットやローカルネットワークに接続されたすべてのデバイスに割り当てられる一意の番号であり、ネットワーク上の「住所」のようなものです 。これにより、ネットワーク上のデバイス同士が互いを認識し、情報をやり取りすることができます 。IPアドレスには、インターネット上で公開されるグローバルIPアドレスと、家庭やオフィスなどのローカルネットワーク内で使用されるプライベートIPアドレスがあります 。ローカルネットワーク内でDifyを使用する場合、主にプライベートIPアドレスが重要になります。IPv4という形式のIPアドレスは、通常、0から255までの4つの数字がドットで区切られた形で表記されます(例:192.168.1.100)。

2.2 ポートとは?

ポートは、コンピュータ上の特定のアプリケーションやサービスがネットワーク通信に使用する「仮想的な出入り口」のようなものです 。IPアドレスが建物の住所だとすれば、ポート番号は建物内の特定の部屋番号に例えることができます 。Difyのウェブインターフェース(フロントエンド)は通常ポート3000を使用し、バックエンドのAPIサーバーはポート5001を使用します。これらのポート番号によって、ネットワークのトラフィックがDifyのどの機能に送られるべきかが識別されます 。

2.3 ファイアウォールとは?

ファイアウォールは、コンピュータやネットワークを不正なアクセスや悪意のある攻撃から保護するための「セキュリティガード」のような役割を果たします 。ファイアウォールは、ネットワークを通過するデータ(トラフィック)を監視し、あらかじめ設定されたルールに基づいて、許可された通信のみを通し、危険な通信を遮断します 。ローカルネットワーク内の別のデバイスからDifyにアクセスするためには、Difyが使用するポート(3000と5001)への接続をファイアウォールに許可するように設定する必要があります 。

2. Difyのローカル環境でのインストール

Difyのローカル環境を構築するための最新の手順を以下にまとめます。この手順は、Windows 11環境を前提としていますが、他のOSでも概ね同様の手順で進められます。以下は、本当にざっくりと説明していますので、下記の他サイトを参考にそれぞれのOSに応じたインストール方法を利用してください。

1. 必要なソフトウェアのインストール

以下のソフトウェアを順にインストールします。

  • Git: ソースコードのバージョン管理に使用します。
    • Git公式サイトからダウンロードし、インストールしてください。
  • WSL2(Windows Subsystem for Linux 2): Windows上でLinux環境を構築するために使用します。
    • PowerShellを管理者として実行し、以下のコマンドを入力してWSLとUbuntuをインストールします。 wsl --install -d Ubuntu-22.04
      • インストール後、初回起動時にユーザー名とパスワードの設定を求められます。
  • Python: Difyの一部の機能で必要となります。
    • Python公式サイトから最新バージョンをダウンロードし、インストール時に「Add python.exe to PATH」にチェックを入れてください。
  • Node.js: フロントエンドサービスの構築や依存関係の管理に使用します。
    • Node.js公式サイトから適切なバージョンをダウンロードし、インストールしてください。
  • Docker Desktop: コンテナ化されたアプリケーションを実行するために使用します。
    • Docker公式サイトからダウンロードし、インストールしてください。
    • インストール後、設定画面で「Use the WSL 2 based engine」にチェックを入れ、WSL2との統合を有効にしてください。

2. Difyのダウンロードとセットアップ

Difyのクローン: Ubuntuターミナルを起動し、以下のコマンドを実行してDifyのリポジトリをクローンします。

git clone https://github.com/langgenius/dify.git

ディレクトリの移動: クローンしたディレクトリに移動します。

cd dify/docker

環境変数ファイルの作成: サンプルの環境変数ファイルをコピーして、.envファイルを作成します。

cp .env.example .env

Difyの起動: 以下のコマンドを実行して、Difyをバックグラウンドで起動します。

 docker compose up -d

3. Difyへのアクセス

ブラウザを開き、以下のURLにアクセスしてDifyのセットアップを完了します。

http://localhost/install

3.ローカルネットワーク上で Dify を共有して使う

Difyがインストールできたらローカルネットワーク上で、共有したり公開したチャットボットたちが使えるようにしていきます。

Mac/Windows のローカルIPアドレスの確認

Mac:ターミナルで行ってください

ifconfig | grep "inet " | grep -v 127.0.0.1

Windows:コマンドプロンプト等で行ってください

ipconfig

=> IPv4 アドレスを確認


他の端末からのアクセス

ブラウザで:

http://<起動PCのローカルIP>:8000

例:

http://192.168.1.100:8000

Windows ファイアウォールの解除

netsh advfirewall firewall add rule name="Allow Dify" dir=in action=allow protocol=TCP localport=8000

Difyで公開したチャットボットを使う方法

1. 発行されたチャットボットのURL

例: http://localhost/chat/meiWMEdCKLzMBDm7

2. ローカルネットワーク内での使用

  1. localhost の部分を、Difyを動作させているPCのIPアドレスに置き換え:
    • 例: http://192.168.1.100/chat/meiWMEdCKLzMBDm7
  2. 同じローカルWi-Fiに接続していれば利用可能

3. もっと広く公開したい場合(ここは、使わないと思いますが参考までに)

  • ngrokを使用して一時的に公開:
ngrok http 8000

発行されたURLを共有

  • Cloudflare Tunnel や自前のサーバーで公開も可能

これで、ローカルネットワークの設定がすみました、あとはDifyでAPI経由でLLMの選択をして、チャットボットをつくり公開すれば完了です。

4.ローカルDify(API使用時)の個人情報漏洩リスクについて

では、Defy(Dify)をローカルで構築し、API経由でLLM(大規模言語モデル)を利用する場合の個人情報漏洩リスクについて、一般的なクラウド型生成AI(例:ChatGPTやBardなど)と比較してみましょう。

比較項目Dify(ローカル構築+API利用)一般のクラウド型生成AI
通信経路ローカルネットワーク内で完結(または信頼されたAPIのみ通信)入力内容がインターネット経由でクラウドサーバーに送信される
入力情報の外部送信API先以外には基本的に送られない(ローカル構築の制御次第)入力内容はプロバイダ(例:OpenAI, Googleなど)に送信・保存される可能性がある
個人情報の管理ローカル環境や自前のDBで管理でき、アクセス制御も可能クラウド事業者に依存し、情報の保存や学習利用については制御しづらい
モデルへの学習反映API利用のみであれば学習に使われない(明示的な設定がない限り)プライバシーポリシーによってはユーザー入力がモデル学習に使われる場合がある
セキュリティ対策自組織のセキュリティポリシーに従って構築・運用可能プラットフォーム事業者のセキュリティに依存

■ Difyをローカルで構築し、API経由でLLMを使う場合

  • 入力された情報は基本的に自組織のサーバー内で処理されます。
  • LLMとやり取りする際も、自分で選んだAPI(例:OpenAI API、Claude APIなど)にのみ送信されます。
  • Difyの設定や構成次第で、ログ保存・セッション管理・ユーザー情報の取り扱いなども完全に自分で制御できます。
  • 特に、自前でLLM(例:LLaMA、Mistralなど)をホスティングしている場合は、個人情報が外部に出るリスクは極めて低くなります。

■ 一般の生成AIを使う場合(例:ChatGPT、Geminiなど)

  • 入力されたデータはクラウド経由でプロバイダのサーバーに送信されます。
  • 多くのサービスでは、入力された内容がモデル改善やトレーニングに使われる可能性があります(※オプトアウト可能な場合もあり)。
  • 利用規約やプライバシーポリシーに従う必要があり、個別に制御することは難しいです。
  • 情報漏洩対策が整っているとはいえ、外部のクラウドサーバーに個人情報を送信するという点で、リスクはゼロではありません。

どちらが安全か?

シナリオ推奨される方式
機密性の高い個人情報を扱う場合(例:医療、教育、福祉現場など)Difyのローカル構築+信頼できるAPIまたはローカルLLM
簡易な対話や非機密な用途一般のクラウド型生成AIでも問題なし
個人や小規模な開発で素早く試したい場合クラウド型の方が手軽

※本吉研究室では、日本のサーバー(Xserver)にてDifyを構築して利用できるようにしています。ローカルでの運用よりもリスクは高まりま一般の生成AIより格段にリスク低減できるよう配慮しています。なお、活用時には、個人や地域が特定できない入力の方法で活用していただけるようにお願いしています。

5.LM Studio x Dify の連携

Difyをローカルで使うことで、チャットボットのログはPCに残ることになるので、個人情報漏洩のリスクは格段に減ることがわかりました。しかしAPI経由で使用している場合、運用元のプロバイダである大手企業と通信していて完全にデータが守られているとは言えません、DifyはLLM(生成AI)をAPI経由で使うのが一般的ですが、LMスタジオで無料LLMをダウンロードしてから、擬似ローカルサーバーとして起動し、Difyと連携させれば、完全にローカルで使うことができます。

1. LM Studio を起動

  1. https://lmstudio.ai からダウンロード
  2. LM Studio を起動
  3. 使用するローカルLLM (Mistral, Gemma, など) をダウンロード & 起動
  4. Server tab で、API server を http://localhost:1234 で動作させる

2. Dify 側の設定

  1. Dify の Web UI (ローカルIPでログイン)
  2. モデルを作成 > LLM Provider で「OpenAI Compatible API」を選択
  3. 設定値:
    • API Base URL: http://<LM Studio 動作機のIP>:1234/v1
    • API Key: lm-studio
    • Model Name: LM Studio で動作中のモデルID (e.g., mistral, gemma, etc)

3. 確認 & 試作

  • Dify のチャットボットで、現在のローカルLLM が答えるか確認
  • ローカルネットワーク内なら通信可能

4. LM Studio の主な設定値

項目設定値
API Base URLhttp://<LM Studio PC IP>:1234/v1
API Keylm-studio
Model Namemistral, gemma など

これで、Dify をローカルネットワークで共有して使えるようになり、お気に入りの LLM を Dify に統合して自由にチャットボットを実装できます。

6. 完全ローカルのDifyを実際に動かしてみた

以上の設定方法から、自宅や研究室内のネット環境を使い、DifyとLMスタジオ(ローカルLLM)を連携させ完全ローカルな環境を構築しました。

7. 【やってみた】まとめ

完全ローカルの環境でDify +LLMでチャットボットを公開してどのように稼働するのか【やってみた】結果、以下のようなことがわかりました。

  • 完全なローカル環境でも、簡単なプロンプトのチャットボットは、ストレスなくローカル上で動かすことができた。
  • 完全なローカル環境では、プロンプトが長くなったり、複雑になると生成できなくなることがわかった。これは、低スペックのMacBook AIr M1だったことがその後の調べでわかりました。(簡単にいえばメモリ不足)
  • 画像にはありませんが、ローカルのDifyでAPIのLLMを使った場合、どのチャットボットでもストレスフリーで動かすことができた。

つまり、完全ローカル(ローカルDify +ローカル生成AI)は、メモリやCPUが相当高いスペックのPC(Mac)であれば、ローカルネットワーク内でサーバーとして活用できそうであることがわかりました。また、ローカル環境でもAPIを使えばストレスなく使えることもわかりました。

個人情報のリスクレベルは、前述したとおり以下のようになります。(①が最高レベル)
①ローカルDify +ローカルLLM
②ローカルDify +AP I経由のLLM
③XserverDify +API経由のLLM
④ChatGPTやGeminiなどの一般的な生成AI
です。
個人的な感じとしては、④から③のリスクの低減幅はとても大きく③の安全性が高いです。また③が信頼おける外部サーバーであれば②との差はさほど大きくはないと考えます。リスク面とトレードオフになりますが校外で管理することで職員の手間が軽減されることになります。
①に関しては、今(2025/3)現在、職場の規模にもよりますがかなり高スペックのPC(Mac)を準備する必要がある(150万以上はすると思います)ので、教育組織として使うには②が最も適していると考えます。
ただし、学校という組織内のローカル環境に擬似サーバー(PC or Mac)を設置するには、IPアドレスの取得に関しての許可が必要になると思います。学校のネットワーク構成に応じて管理先が違う(ネットワークを管理している事業者等または、都道府県の教育委員会等)ので、実施可能か検討して導入するようにしてください。また導入後の管理(各アプリのアップデートやメンテナンス)についてもある程度の知識と技術が必要とされますので人材の育成も必須となります。
それが大変というのであれば、③となります。信頼できるところ(このサイト)が運営しているチャットボットを活用するのがいいかと思います(手前味噌)。

コメント

/* ここにCSSコードを追加 例: .example { color: red; } CSS の知識に磨きをかけるためにご覧ください。 http://www.w3schools.com/css/css_syntax.asp コメント終わり */
タイトルとURLをコピーしました