<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dify | じじぃの引出し</title>
	<atom:link href="https://www.kazuban.com/blog/tag/dify/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.kazuban.com/blog</link>
	<description>なにかしら、皆さんの参考になれば幸いです！</description>
	<lastBuildDate>Thu, 22 May 2025 01:03:00 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.kazuban.com/blog/wp-content/uploads/2020/05/cropped-ICON-1-32x32.png</url>
	<title>Dify | じじぃの引出し</title>
	<link>https://www.kazuban.com/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>AIに教えてもらいながら、どうにかUbuntu上の Docker EngineでDifyをサーバー化できた。</title>
		<link>https://www.kazuban.com/blog/ubuntu-dockerengine-dify/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Mon, 05 May 2025 01:17:22 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux (CentOS、Rocky、Ubuntu)]]></category>
		<category><![CDATA[AIとのやり取り]]></category>
		<category><![CDATA[Dify]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[ubuntu24]]></category>
		<category><![CDATA[wsl]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=11029</guid>

					<description><![CDATA[前回までで、「Docker Engine」の設定は完了しています。今回は、「Docker」で「Dify」を起動させサーバー化が目的です。実現するにあたって、かなりAIに助けてもらったので、そのやり取りも紹介しています。  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="https://www.kazuban.com/blog/wsl-ubuntu-dockerengine/">前回までで、「Docker Engine」の設定は完了しています。</a><br>今回は、「Docker」で「Dify」を起動させサーバー化が目的です。<br>実現するにあたって、かなりAIに助けてもらったので、そのやり取りも紹介しています。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Difyをクローン化</a><ol><li><a href="#toc2" tabindex="0">gitの確認</a></li><li><a href="#toc3" tabindex="0">Gitでdifyをクローン化する</a></li></ol></li><li><a href="#toc4" tabindex="0">Difyコンテナ起動</a><ol><li><a href="#toc5" tabindex="0">docker compose upでエラー発生！AIに聞いてみる。</a></li></ol></li><li><a href="#toc6" tabindex="0">Dify起動</a><ol><li><a href="#toc7" tabindex="0">初期画面</a></li><li><a href="#toc8" tabindex="0">Difyの動作と試用</a></li></ol></li><li><a href="#toc9" tabindex="0">Difyを自動起動</a></li><li><a href="#toc10" tabindex="0">Difyをサーバー化して、他のPCからもアクセスさせる</a><ol><li><a href="#toc11" tabindex="0">DifyPCのIPアドレス調査</a></li><li><a href="#toc12" tabindex="0">Windowsのアドレスからは、アクセスできない。</a></li><li><a href="#toc13" tabindex="0">docker ps コマンドで実行中のコンテナーを提出</a></li><li><a href="#toc14" tabindex="0">ファイヤーウォールとポートフォワーディング設定</a><ol><li><a href="#toc15" tabindex="0">１．ファイアウォール開放 (ポート 80):</a></li><li><a href="#toc16" tabindex="0">2．ポートフォワーディング設定 (ポート 80):</a></li><li><a href="#toc17" tabindex="0">アクセスできた～</a></li></ol></li></ol></li><li><a href="#toc18" tabindex="0">DifyにLLMを設定して、カスタムチャット環境を構築</a><ol><li><a href="#toc19" tabindex="0">DifyにLLMの設定方法</a><ol><li><a href="#toc20" tabindex="0">オンラインLLMの登録</a></li><li><a href="#toc21" tabindex="0">LM Studio モデルの登録</a></li><li><a href="#toc22" tabindex="0">Ollama　モデルの登録</a></li></ol></li></ol></li><li><a href="#toc23" tabindex="0">あとがき</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Difyをクローン化</span></h2>



<h3 class="wp-block-heading"><span id="toc2">gitの確認</span></h3>



<p>difyをクローン化するのに、「git」を利用するので、「git」のインストール状況を確認します。<br>windows ターミナルを開き、wsl を起動し、「git -v」で状況を確認します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-6c280a658549c20db340281f1ee6bbdb"><code>PS C:\Users\hogehoge2&gt; wsl

$ git -v
git version 2.43.0
インストールされていない場合には、インストール
$ sudo apt update
$ sudo apt install git</code></pre>



<h3 class="wp-block-heading"><span id="toc3">Gitでdifyをクローン化する</span></h3>



<p>「git clone ・・」でクローン化を実行すると、カレントディレクト下「dify」ディレクトリへソースコードがクローン化されます。<br>windowsターミナルで、「wsl」を実行し、ubuntu環境へ入ると、デフォルトでは、winndowsユーザーのディレクトリへセットされた状態で起動します。<br>好みの問題だと思いますが、この場所へ「dify」環境を作成してもいいと思いますが、筆者はubuntuのユーザーホームディレクトリ下に作成しようと思います。<br>wsl、ubuntuプロンプトで、「cd」を実行すると、ユーザーのホームディレクトリへ移動します。<br>その場所で「git clone・・」すると、そのディレクトリ直下に「dify」さらにその下に「docker」ディレクトリが作成されています。<br>「ls」コマンドで確認できます。<br>「dify/docker」ディレクトリへ「cd」コマンドで移動しておきます。<br>「pwd」コマンドで、現在のディレクトリが確認できます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-ad68e176018c4225a713c543c2c82523"><code>hogehoge2@hoge-PC:/mnt/c/Users/hogehoge2$
$ cd
$ git clone https://github.com/langgenius/dify.git
Cloning into 'dify'...
remote: Enumerating objects: 153846, done.
remote: Counting objects: 100% (536/536), done.
remote: Compressing objects: 100% (359/359), done.
remote: Total 153846 (delta 396), reused 178 (delta 177), pack-reused 153310 (from 3)
Receiving objects: 100% (153846/153846), 87.73 MiB | 5.07 MiB/s, done.
Resolving deltas: 100% (111131/111131), done.
$ ls
dify
$ cd dify/docker/
$ pwd
/home/hogehoge2/dify/docker</code></pre>



<h2 class="wp-block-heading"><span id="toc4">Difyコンテナ起動</span></h2>



<p>「git clone」を実行したディレクトリに、「dify/docker」ディレクトリが作成されています。<br>その中に「.env.example」のサンプル環境変数ファイルが作成されています。<br>通常ファイルは「ls」コマンドで確認できますが。「.」で始まるファイルは表示されません。<br>その場合「ls -la」コマンドを実行すると、表示されます。<br>コピーは「cp &lt;オリジナルファイル名&gt;　&lt;複写ファイル名&gt;」で複写できます。<br>「.env.example」ファイルを、正式な環境変数「.env」としてコピーし、「docker compose」コマンドで、コンテナを起動させます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-69212d483fca0e2e7f0922dbf0b0ff47"><code>$ pwd
/home/hogehoge2/dify/docker
$ cp .env.example .env
$ docker compose up -d
&#91;+] Running 80/80    
✔ web Pulled             149.7s
✔ sandbox Pulled         221.1s
 ✔ ssrf_proxy Pulled      88.2s
 ✔ db Pulled             224.4s
 ✔ worker Pulled         402.2s
 ✔ plugin_daemon Pulled  404.6s
 ✔ nginx Pulled           36.4s
 ✔ weaviate Pulled       225.1s
 ✔ redis Pulled          221.2s
 ✔ api Pulled            402.2s
&#91;+] Running 12/12
 ✔ Network docker_default             Created    0.1s
 ✔ Network docker_ssrf_proxy_network  Created    0.0s
 ✔ Container docker-web-1             Started    3.7s
 ✔ Container docker-ssrf_proxy-1      Started    4.0s
 ✔ Container docker-sandbox-1         Started    3.7s
 ✔ Container docker-redis-1           Started    3.7s
 ✔ Container docker-weaviate-1        Started    3.7s
 ✔ Container docker-db-1              Healthy    10.7s
 ✔ Container docker-worker-1          Started    9.3s
 ✔ Container docker-plugin_daemon-1   Started    9.3s
 ✔ Container docker-api-1             Started    9.5s
 ✔ Container docker-nginx-1           Started    10.0s
</code></pre>



<h3 class="wp-block-heading"><span id="toc5">docker compose upでエラー発生！AIに聞いてみる。</span></h3>



<p>上記は正常な例ですが、古いPCをテストマシンとして利用した時、「docker compose up」で下記エラーがでた事がありました。</p>



<blockquote class="wp-block-quote has-vivid-red-color has-watery-red-background-color has-text-color has-background has-link-color wp-elements-663148c1df4e9167eb9abd3e83e97fcc is-layout-flow wp-block-quote-is-layout-flow">
<p>dependency failed to start: container docker-db-1 is unhealthy</p>
</blockquote>



<p>この時もgeminiに聞いてみたところ、「docker logs docker-db-1」でログを確認してくれとの事なので、ログを直接貼り付けると、</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-3 sbs-line sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon" style="--cocoon-custom-background-color:#fff7cc"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/Robot-icon.png" alt="Ai" class="speech-icon-image"/></figure><div class="speech-name">Ai</div></div><div class="speech-balloon has-background has-watery-yellow-background-color">
<p>ログを見る限り、データベースの初期化自体は正常に完了しています (<code>PostgreSQL init process complete; ready for start up.</code>)。 その後の起動プロセスも進んでいますが、<strong><code>2025-04-29 00:02:07.998 UTC [557] FATAL: the database system is starting up</code></strong> という致命的なエラーが出力されています。</p>



<p>このエラーは、PostgreSQLサーバーが起動してリカバリなどの内部処理を行っている最中に、外部からの接続要求（この場合はおそらくDockerのヘルスチェックや、依存するDifyコンテナからの初期接続試行）があった場合に発生することがあります。</p>



<p>つまり、データベースサーバー自体は最終的に <code>database system is ready to accept connections</code> の状態になりますが、Dockerのヘルスチェックがサーバーの準備が完全に整う前に接続を試み、上記の <code>FATAL</code> エラーを受け取ってしまい、それが原因でコンテナが <code>unhealthy</code> と判定されている可能性が高いです。<br><br><strong>解決策:</strong></p>



<p>Dockerのヘルスチェック設定を調整し、データベースが完全に起動して接続可能になるまで、チェックを待つように設定を変更するのが最も有効な対策です。</p>



<p><strong>データベースサービス (db または postgresql) の <code>healthcheck</code> 設定を見つける:</strong> <br><code>services</code> のセクションにある、データベースコンテナに対応するサービス定義（通常は <code>db</code> という名前）を探します。その中に <code>healthcheck</code> というブロックがあるはずです。<br><br><strong>YAML</strong><br><code>services: </code><br><br><code>db: # ... その他の設定 ...</code><br><code>  healthcheck: # ここに設定があります </code><br>　　・<br><code>    test: ["CMD-EXEC", "pg_isready -U &lt;db_user&gt; -d &lt;db_name&gt;"] # 例 </code><br><code>    interval: 10s </code><br><code>    timeout: 5s </code><br><code>    retries: 5 </code><br><code>    start_period: 30s # &lt;-- この値を調整します</code></p>



<p><strong><code>docker-compose.yml</code> を開く:</strong> Difyを起動するために使用している <code>docker-compose.yml</code> ファイルをテキストエディタで開きます。</p>
</div></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-5 sbs-flat sbp-r sbis-cb cf block-box not-nested-style cocoon-block-balloon" style="--cocoon-custom-background-color:#dddddd"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/themes/cocoon-master/images/ojisan.png" alt="じじぃ" class="speech-icon-image"/></figure><div class="speech-name">じじぃ</div></div><div class="speech-balloon has-background has-light-grey-background-color">
<p>docker-compose.yamlを確認した所、「<code>start_period:</code>」の設定がありません。</p>
</div></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-3 sbs-line sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon" style="--cocoon-custom-background-color:#fff7cc"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/Robot-icon.png" alt="Ai" class="speech-icon-image"/></figure><div class="speech-name">Ai</div></div><div class="speech-balloon has-background has-watery-yellow-background-color">
<p><code>start_period</code> が指定されていない場合、コンテナが起動を開始すると同時にヘルスチェックが始まります。今回のデータベースのログで見たように、起動直後の一時的な準備期間中に接続を試みると <code>FATAL: the database system is starting up</code> のようなエラーが発生することがあります。</p>



<p><code>interval: 1s</code> と非常に短い間隔でチェックが実行されるため、データベースが完全に準備できる前に多くのチェックが走ってしまい、すぐにリトライ回数（<code>retries: 60</code>）を使い果たして <code>unhealthy</code> と判定されてしまう可能性が高いです。</p>



<p><strong>解決策:</strong></p>



<p><code>start_period</code> を追加し、必要に応じて <code>interval</code> も調整しましょう。</p>



<ol class="wp-block-list">
<li><strong><code>healthcheck</code> 設定に <code>start_period</code> を追加する:</strong> データベースが起動して準備ができるまでの猶予期間として、<code>start_period</code> を設定します。<br>例えば <code>30s</code> または <code>60s</code> (30秒または60秒) を指定します。 <br><strong>YAML</strong><br><code>services: </code><br><code>db: # ... その他の設定 ... </code><br><br><code>  healthcheck: </code><br><code>    test: [ 'CMD', 'pg_isready', '-h', 'db', '-U', '${PGUSER:-postgres}', '-d', '${POSTGRES_DB:-dify}' ] </code><br><code>    interval: 5s # 例: 毎秒ではなく5秒ごとにチェックに緩和 </code><br><code>    timeout: 3s </code><br><code>    retries: 10 # 例: リトライ回数を調整 (intervalを長くすればretriesは少なくても良い) </code><br><code>    start_period: 60s # &lt;- この行を追加 (例: 60秒待つ)</code> <br><br><strong>ポイント:</strong> <code>start_period</code> の間は、ヘルスチェックが失敗してもコンテナは <code>starting</code> 状態のままとなり、<code>unhealthy</code> とは判定されません。<code>start_period</code> が経過した後に初めて、ヘルスチェックの失敗が <code>unhealthy</code> の判定に使われます。</li>



<li><strong><code>interval</code> も少し長めにすることをお勧めします:</strong> <code>interval: 1s</code> は開発時などに素早く確認したい場合には便利ですが、本番に近い環境や安定性を重視する場合は <code>5s</code> や <code>10s</code> に設定することが一般的です。これにより、データベースへの不要な負荷も軽減されます。</li>



<li><strong><code>docker-compose.yml</code> を保存する。</strong></li>



<li><strong>Docker Compose を再起動する:</strong> 変更を反映させるために、コンテナを再作成して起動します。</li>
</ol>
</div></div>



<p>アドバイス通りに、編集して再度「docker compose up -d」を実行すると、正常になりました。<br>いやぁ～、AIさまさま、ですね～<br>おそらく、ネット検索では、解決できなかったと思います。<br>ただし、古いPCだったのが、一番の原因かもしれません。<br>５年ほど前のPCでは、このエラーはでなかったので、レアなケースかもしれませんが、AIの利用例として紹介しました。</p>



<h2 class="wp-block-heading"><span id="toc6">Dify起動</span></h2>



<h3 class="wp-block-heading"><span id="toc7">初期画面</span></h3>



<p>「docker compose up」が正常に終了すると、Webブラウザで「http://localhost/install」へアクセスすると「dify」の初期設定が開きます</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="800" height="755" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-localhost-800x755.png" alt="" class="wp-image-11052" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-localhost-800x755.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-localhost-500x472.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-localhost-300x283.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-localhost-768x725.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-localhost.png 1200w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<h3 class="wp-block-heading"><span id="toc8">Difyの動作と試用</span></h3>



<p>とりあえず、起動しました。<br>以前このサイトでも説明していますが、<a href="https://www.kazuban.com/blog/dify-lmstudio/#toc1">簡単なチャットボットを作成</a>し試してみます。<br>LLMモデルはオンラインの「gemini」を登録し、動作を確認できました。<br>オンラインであれば、「LM Studio」や「Ollama」など、ローカルLLMを利用するアプリは必要ないので、すぐに確認できます。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="800" height="571" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-fist-try-800x571.png" alt="" class="wp-image-11056" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-fist-try-800x571.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-fist-try-500x357.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-fist-try-300x214.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-fist-try-768x548.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/dify-fist-try.png 1577w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<h2 class="wp-block-heading"><span id="toc9">Difyを自動起動</span></h2>



<p><span class="marker-under">Difyを動作させるには、Dockerが起動していなくてはいけません。</span><br>それには、WSL上で、ubuntuも起動している必要があります。<br>手動でやる場合、</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>・windowsターミナル起動<br>・wslコマンドで、ubuntuターミナル起動<br>・ubuntuターミナルでカレントディレクトリを、Difyのクローンディレクトリに移動<br>・「docker compose up -d」 コマンド実行</p>
</blockquote>



<p>このような手順が必要ですが、問題なのは、<span class="marker-under-red">ターミナルを閉じるとdockerも終了してしまう</span>ことです<br>Difyを使うには、dockerが起動していなくてはいけません。<br>windowsアプリの「docker desktop」であれば、標準で自動起動設定だったと思いますし、起動後もシステムトレイのアイコンで起動が確認できます。右ボタンで状態確認や終了も簡単です。<br>ubuntu経由の場合には、GUIでの確認ができないので、ここが面倒なところですね～。<br>自動起動方法をいろいろ調べると、windowsバッチファイルを作成し、スタートアップフォルダに登録する事で、windows起動時に、自動起動できそうです。<br>ただ、<br>「コマンドプロンプト　⇒　ubuntuターミナル　⇒　docker」<br>のタスクが必要で、<span class="marker-under-red">ターミナルは開いた状態にしておく</span>必要があります。<br>このようなバッチファイルを作りたいですが、どんなコードにすればいいのか・・？<br>うまいコードを考え付かなかったので、difyの試しもかねて起動しているチャットボットで設定しているgeminiに考えてもらいました。</p>



<pre class="wp-block-code has-black-color has-watery-yellow-background-color has-text-color has-background has-link-color wp-elements-28b6e40086f38030cefb644c1904cdfc"><code>@echo off
title Starting Dify via WSL

echo Starting WSL and navigating to ~/dify/docker...
echo Running 'docker compose up -d'...
echo WSL window will remain open after commands.

REM WSLを起動し、bashシェル内でコマンドを実行します。
REM cd ~          : ホームディレクトリに移動 (念のため)
REM cd ./dify/docker : dify/docker ディレクトリに移動
REM docker compose up -d : docker compose をバックグラウンドで起動
REM exec bash     : 上記コマンド実行後、インタラクティブなbashシェルを開始して終了させない
wsl.exe -e bash -c "cd ~/dify/docker &amp;&amp; docker compose up -d &amp;&amp; echo '--- Dify containers started (or attempted to start) ---' &amp;&amp; exec bash"

echo WSL window launched. This batch window can be closed if desired.
REM pause REM Optionally uncomment this line to keep the batch window open until a key is pressed</code></pre>



<p>すごいです。<br>ほとんど実際の起動には影響がない「REM」や「echo」文がほとんどですが、<br>「REM」文を使っての説明文や、「echo」での実行中のメッセージにも手抜きがないですね！<br>このコードをコピーしてエディターで、「start_dify.bat」というファイルで保存しました。<br>バッチファイルの単独実行では問題ありませんでした。<br>後はこのファイルのショートカットを、スタートアップフォルダへコピーするだけです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>・上記の作成したバッチファイルを、適当は場所へ保存します<br>　私は、ユーザーフォルダ「C:\Users\「ユーザー」」へ保存しました。<br>・次に、このファイルのショートカットを作成します。<br>・このショートカットを「スタートアップフォルダ」へ保存します。<br>　スタートアップフォルダは、エクスプローラーのアドレスバーへ「shell:startup」と入力すると開くことができます。</p>
</blockquote>



<div class="wp-block-media-text is-stacked-on-mobile is-vertically-aligned-top"><figure class="wp-block-media-text__media"><img decoding="async" width="622" height="989" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/startup-folder.png" alt="" class="wp-image-11070 size-full" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/04/startup-folder.png 622w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/startup-folder-500x795.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/startup-folder-300x477.png 300w" sizes="(max-width: 622px) 100vw, 622px" /></figure><div class="wp-block-media-text__content">
<p>特に必須ではないですが、ターミナルは起動状態にさせるので邪魔になる場合、作成したショートカットファイルを、マウス右ボタンで「プロパティ」を開きます。<br>「プロパティ」の「ショートカット」タブの<span class="marker-under">「実行時の大きさ」を「最小化」</span>に設定すると、起動時にタスクバーに最小化状態で起動できます。</p>
</div></div>



<p>これで、再起動すると、自動起動したターミナルはタスクバーへ最小化状態ですが、環境によっては起動途中の場合があるので、すぐに使用したい場合には、一度開いてDockerの状態を確認したほうがいいと思います。<br>正常に起動できると、Webブラウザのアドレスバーに「http://localhost/install」でdifyが起動できます。<br>場合によっては、「http://localhost/signin」にリダイレクトされる場合もあります</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="732" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/localhost-signin-800x732.png" alt="" class="wp-image-11073" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/04/localhost-signin-800x732.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/localhost-signin-500x458.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/localhost-signin-300x275.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/localhost-signin-768x703.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/localhost-signin.png 875w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>この画面が開くと、ローカルPCでは、Difyを利用する事ができますが、<span class="marker-under">今回はサーバーとして利用したい</span>ので、<span class="marker-under-red">LAN上の別のPCからのアクセスも必要</span>です。</p>



<h2 class="wp-block-heading"><span id="toc10">Difyをサーバー化して、他のPCからもアクセスさせる</span></h2>



<p>同じLAN上であっても、「localhost」では、他のPCではアクセスできません。<br><a href="https://www.kazuban.com/blog/wsl-ubuntu-dockerengine/#toc15">前回後半で少し話題にしました</a>が、「windowsホスト」「WSL(ubuntu)」「Docker」と複雑な通信環境なので面倒です。</p>



<h3 class="wp-block-heading"><span id="toc11">DifyPCのIPアドレス調査</span></h3>



<p>IPアドレスは、windowsターミナルでは「ipconfig」コマンド<br>WSLターミナルでは、「ip addr」で確認できます。<br>この情報を、Aiに添付して聞いてみました。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-3 sbs-line sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon" style="--cocoon-custom-background-color:#fff7cc"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/Robot-icon.png" alt="Ai" class="speech-icon-image"/></figure><div class="speech-name">Ai</div></div><div class="speech-balloon has-background has-watery-yellow-background-color">
<p>詳細な情報ありがとうございます！ipconfig と ip a の結果から状況がより明確になりました。<br>原因の特定<br>・Windows ホスト:<br>　あなたの Windows PC の Wi-Fi アダプターには 192.168.0.94 という IP アドレスが割り当てられています。<br>　これはご自宅などの LAN 内の IP アドレスです。<br>・WSL (Ubuntu):<br>　Windows Subsystem for Linux (WSL) 環境内の Ubuntu には、eth0 インターフェースに 172.31.226.6 という IP アドレスが割り当てられています。<br>　これは WSL が使用する仮想ネットワーク内の IP アドレスです。</p>
</div></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-3 sbs-line sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon" style="--cocoon-custom-background-color:#fff7cc"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/Robot-icon.png" alt="Ai" class="speech-icon-image"/></figure><div class="speech-name">Ai</div></div><div class="speech-balloon has-background has-watery-yellow-background-color">
<p>WSL2 環境で Docker コンテナを動かしている場合、Windows ホストからそのコンテナ内のサービスにアクセスするには、通常以下のいずれかのアドレスを使用します。<br>１．localhost: <br>　Windows ホストのブラウザで http://localhost/chat/&#8230;と入力する。<br>　WSL2 は localhost 経由でのポートフォワーディングをサポートしています。 <br>　（これが最も一般的な方法です）<br>２．WSL の IP アドレス: http://172.31.226.6/chat/&#8230;<br>　(今回アクセスできている方法)<br><br>・http://192.168.0.94/chat/&#8230; でアクセスできないのは、WSL2 と Docker のネットワークアーキテクチャ上、自然なことです。<br>サービスが Windows ホストの物理的な IP アドレスに直接公開されているわけではないためです。<br>・もし、LAN 内の他の PC (例: 192.168.0.100) からもこの Dify 環境にアクセスしたい場合は、追加の設定が必要になる可能性があります:<br><br>１．Windows ファイアウォールの設定: Windows のファイアウォールで、外部からのポート 80 (または Dify が使用しているポート) への着信接続を許可する必要があります。<br>２．ポートフォワーディング (状況による): WSL2 のネットワーク設定によっては、Windows ホストの 192.168.0.94 のポート 80 へのアクセスを、WSL の 172.31.226.6 のポート 80 へ転送する設定が必要になる場合があります。<br>これは 「netsh interface portproxy」 コマンドなどで設定できますが、まずは localhost や WSL の IP でアクセスできることを確認するのが先決です。<br><br>要約:<br>・Windows ホストからアクセスする場合: http://localhost/chat/… または http://172.31.226.6/chat/… を使用してください。<br>・http://192.168.0.94/chat/&#8230; でアクセスできないのは仕様であり、問題ではありません。<br></p>
</div></div>



<h3 class="wp-block-heading"><span id="toc12">Windowsのアドレスからは、アクセスできない。</span></h3>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-5 sbs-flat sbp-r sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/themes/cocoon-master/images/ojisan.png" alt="じじぃ" class="speech-icon-image"/></figure><div class="speech-name">じじぃ</div></div><div class="speech-balloon">
<p>http://localhost や http://172.31.226.6 からはアクセスできています。<br>今回は、LAN上の別のPCからhttp://192.168.0.94 にアクセスしたいため、自分PCで試したら、アクセスできませんでした</p>
</div></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-3 sbs-line sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon" style="--cocoon-custom-background-color:#fff7cc"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/Robot-icon.png" alt="Ai" class="speech-icon-image"/></figure><div class="speech-name">Ai</div></div><div class="speech-balloon has-background has-watery-yellow-background-color">
<p>なるほど、LAN上の他のPCからアクセスできるようにしたい、ということですね。承知いたしました。</p>



<p>ご自身のPC (<code>192.168.0.94</code>) から <code>http://192.168.0.94/chat/...</code> にアクセスできなかったのは、まさにその設定がまだされていないためです。Windowsホストのネットワーク(<code>192.168.0.x</code>) と WSL内部のネットワーク (<code>172.31.x.x</code>) は分離されており、外部（LANを含む）から直接WSL内のサービスにアクセスするには、「ポートフォワーディング（ポート転送）」という設定が必要になります。</p>



<p><strong>設定手順</strong></p>



<p>以下の手順を<strong>管理者権限</strong>で実行してください。</p>



<ol class="wp-block-list">
<li><strong>Difyが使用しているポートを確認 (重要):</strong>
<ul class="wp-block-list">
<li>まず、DifyがWSL内でどのポート番号で待ち受けているか確認します。HTTPなので通常は <strong>80番</strong> ですが、Dockerの設定によっては異なるポート（例: 3000番など）がホスト(WSL)に公開されている場合があります。</li>



<li>Docker Composeを使っている場合は <code>docker-compose.yml</code> ファイルの <code>ports:</code> セクションを確認してください。例えば <code>ports: - "80:80"</code> や <code>ports: - "3000:80"</code> のようになっています。左側の数字がWSL側で公開されているポート番号です。</li>



<li><code>docker ps</code> コマンドを実行しても確認できます。<code>PORTS</code> 列に <code>0.0.0.0:80-&gt;80/tcp</code> や <code>0.0.0.0:3000-&gt;80/tcp</code> のように表示されます。<code>0.0.0.0:</code> の後の数字がWSL側で公開されているポート番号です。</li>



<li><strong>以降の説明では、Difyがポート <code>80</code> を使用していると仮定します。もし異なるポート（例: 3000）だった場合は、コマンド内の <code>80</code> をその番号に読み替えてください。</strong></li>
</ul>
</li>



<li><strong>Windows ファイアウォールでポートを開放:</strong>
<ul class="wp-block-list">
<li>LAN内の他のPCからのアクセスを許可するために、WindowsのファイアウォールでDifyが使用するポート（ここでは80番）を開ける必要があります。</li>



<li><strong>管理者としてPowerShellを開き</strong>、以下のコマンドを実行します。<br><code>powershell New-NetFirewallRule -DisplayName "Allow Dify Access from LAN" -Direction Inbound -LocalPort 80 -Protocol TCP -Action Allow</code><br><em>(もしコマンドプロンプトを使いたい場合は、管理者として開き <code>netsh advfirewall firewall add rule name="Allow Dify Access from LAN" dir=in action=allow protocol=TCP localport=80</code> を実行)</em></li>
</ul>
</li>



<li><strong>ポートフォワーディングの設定:</strong>
<ul class="wp-block-list">
<li>Windowsホスト (<code>192.168.0.94</code>) のポート80に来た通信を、WSL (<code>172.31.226.6</code>) のポート80に転送するように設定します。</li>



<li><strong>管理者としてPowerShell（またはコマンドプロンプト）を開き</strong>、以下のコマンドを実行します。 <code>powershell netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=172.31.226.6</code>
<ul class="wp-block-list">
<li><code>listenport=80</code>: Windows側で外部からの接続を待ち受けるポート番号。</li>



<li><code>listenaddress=0.0.0.0</code>: Windowsの全てのIPアドレス（<code>192.168.0.94</code> を含む）で待ち受ける設定。特定のIP (<code>192.168.0.94</code>) だけを指定することも可能です。</li>



<li><code>connectport=80</code>: 転送先のWSL内でDifyが待ち受けているポート番号。</li>



<li><code>connectaddress=172.31.226.6</code>: 転送先のWSLのIPアドレス。</li>
</ul>
</li>
</ul>
</li>



<li><strong>動作確認:</strong>
<ul class="wp-block-list">
<li>設定後、まずご自身のPCのブラウザから <code>http://192.168.0.94/chat/84aj9r6azPSYjXt8</code> にアクセスできるか試してください。 (ポートが80以外の場合は <code>http://192.168.0.94:ポート番号/chat/...</code> のように指定)</li>



<li>アクセスできれば、LAN内の他のPCからも同じアドレス (<code>http://192.168.0.94/chat/...</code>) でアクセスできるはずです。</li>
</ul>
</li>
</ol>



<p><strong>注意点:</strong></p>



<ul class="wp-block-list">
<li><strong>WSLのIPアドレスの変動:</strong> WSLを再起動すると、WSLのIPアドレス (<code>172.31.226.6</code>) が変わる可能性があります。もしアクセスできなくなった場合は、<code>ip a</code> コマンドでWSLの新しいIPアドレスを確認し、手順3のポートフォワーディング設定を一度削除して再作成する必要があります。
<ul class="wp-block-list">
<li>削除コマンド: <code>netsh interface portproxy delete v4tov4 listenport=80 listenaddress=0.0.0.0</code></li>



<li>再作成コマンド: (新しい <code>connectaddress</code> を指定して再度実行)</li>
</ul>
</li>



<li><strong>管理者権限:</strong> ファイアウォールとポートフォワーディングの設定には管理者権限が必要です。</li>



<li><strong>ポート番号:</strong> Difyが使用しているポート番号を正確に確認し、コマンド内の <code>80</code> を適宜修正してください。</li>
</ul>



<p>この手順で、LAN内の他のPCからアクセスできるようになるはずです。試してみてください。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc13"><em>docker ps コマンドで実行中のコンテナーを提出</em></span></h3>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-5 sbs-flat sbp-r sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/themes/cocoon-master/images/ojisan.png" alt="じじぃ" class="speech-icon-image"/></figure><div class="speech-name">じじぃ</div></div><div class="speech-balloon">
<p>docker ps では下記になっています。<br>$ docker ps<br>・・<br>・<br>・</p>
</div></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-3 sbs-line sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon" style="--cocoon-custom-background-color:#fff7cc"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/Robot-icon.png" alt="Ai" class="speech-icon-image"/></figure><div class="speech-name">Ai</div></div><div class="speech-balloon has-background has-watery-yellow-background-color">
<p><code>docker ps</code> の出力結果、ありがとうございます。</p>



<p>コンテナ <code>docker-nginx-1</code> の <code>PORTS</code> 列にご注目ください。</p>



<pre class="wp-block-code"><code>PORTS
0.0.0.0:80-&gt;80/tcp, &#91;::]:80-&gt;80/tcp, 0.0.0.0:443-&gt;443/tcp, &#91;::]:443-&gt;443/tcp</code></pre>



<p>これは、以下のことを意味しています。</p>



<ul class="wp-block-list">
<li><code>0.0.0.0:80-&gt;80/tcp</code>: WSLホスト（<code>172.31.226.6</code> など）の <strong>ポート 80</strong> (HTTP) へのTCP接続を、<code>docker-nginx-1</code> コンテナ内部のポート 80 に転送する。</li>



<li><code>[::]:80-&gt;80/tcp</code>: 上記のIPv6版。</li>



<li><code>0.0.0.0:443-&gt;443/tcp</code>: WSLホストの <strong>ポート 443</strong> (HTTPS) へのTCP接続を、<code>docker-nginx-1</code> コンテナ内部のポート 443 に転送する。</li>



<li><code>[::]:443-&gt;443/tcp</code>: 上記のIPv6版。</li>
</ul>



<p><code>docker-web-1</code> コンテナ自体は内部的にポート 3000 を使っていますが、外部（WSLホスト）からのアクセスは <code>docker-nginx-1</code> コンテナがポート 80 (HTTP) と 443 (HTTPS) で受け付けています。Nginx がリバースプロキシとして動作し、リクエストを <code>docker-web-1</code> や <code>docker-api-1</code> などに振り分けている構成です。</p>



<p><strong>結論</strong></p>



<p>あなたが LAN 上の他の PC からアクセスしたい <strong>HTTP</strong> のポート番号は <strong>80</strong> です。</p>



<p>したがって、先ほどのポートフォワーディング設定のコマンドは、ポート番号 <code>80</code> を使って実行してください。</p>



<ol class="wp-block-list">
<li><strong>ファイアウォール開放 (ポート 80):</strong> <code>New-NetFirewallRule -DisplayName "Allow Dify Access from LAN (HTTP)" -Direction Inbound -LocalPort 80 -Protocol TCP -Action Allow</code></li>



<li><strong>ポートフォワーディング設定 (ポート 80):</strong><br><code>powershell netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=172.31.226.6</code></li>
</ol>



<p>これで、 <code>http://192.168.0.94</code> (ポート80は省略可能) でアクセスできるはずです。</p>



<p>もし将来的にHTTPS (<code>https://192.168.0.94</code>) でアクセスしたい場合は、同様にポート <code>443</code> 用のファイアウォールルールとポートフォワーディング設定を追加する必要があります。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc14">ファイヤーウォールとポートフォワーディング設定</span></h3>



<p><span class="marker-under-red">ファイアウォールを開放</span>し、<span class="marker-under-red">ポートフォワーディング設定をしろ</span>、のアドバイスです。<br>教わったコードを実行してみます。</p>



<h4 class="wp-block-heading"><span id="toc15">１．ファイアウォール開放 (ポート 80):</span></h4>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-2a1baa688c4d7f0081410424df4fffa6"><code>PowerShell
PS C:\Users\hoge2&gt;　New-NetFirewallRule -DisplayName "Allow Dify Access from LAN (HTTP)" -Direction Inbound -LocalPort 80 -Protocol TCP -Action Allow</code></pre>



<p>コントロールパネル→システムとセキュリティ→windows Defender ファイアウォール→詳細設定<br>受信の規則で<br>コマンドで指定したAllow Dify Access from LAN(HTTP)が設定されているのが、確認できます。<br>コマンドではなく、この画面で、GUI設定する事もできます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="638" src="https://www.kazuban.com/blog/wp-content/uploads/2025/05/defender-800x638.png" alt="" class="wp-image-11155" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/05/defender-800x638.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/05/defender-500x399.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/05/defender-300x239.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/05/defender-768x612.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/05/defender.png 1200w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<h4 class="wp-block-heading"><span id="toc16">2．ポートフォワーディング設定 (ポート 80):</span></h4>



<p>管理者権限のPowerShell の、「netsh」コマンドで設定します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-407ff20f71ed0d5d65d19b8abe74f839"><code>PowerShell（管理者）
PS C:\Users\hoge2&gt; netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=172.31.226.6</code></pre>



<p>「netsh interface portproxy show v4tov4」で確認できます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-3b28731fc08b3c287046ad304f896c2a"><code>PS C:\Users\hoge2&gt; netsh interface portproxy show v4tov4
ipv4 をリッスンする:         ipv4 に接続する:
Address         Port        Address         Port
--------------- ----------  --------------- ----------
0.0.0.0         80          172.31.226.6    80</code></pre>



<h4 class="wp-block-heading"><span id="toc17">アクセスできた～</span></h4>



<p>これで無事に「http://192.168.0.94/instal」でアクセスできました。<br>LAN上の別のPCからも、アクセス確認できました。<br>おそらく、ネット検索では、ここまで的確なアドバイスを見つけるのは至難の業だと思います。<br>ちょっと前までは、言語生成AIをうまく使うには、プロンプトが重要だと言われていましたが、最近の言語生成AIはかなり言語の理解力が向上していると感じます。<br>上記のじじぃの質問でもわかりますが、ほとんど「プロンプト」など意識していません。<br>とにかくわからない事やPCからの出力を、自分の言葉で質問しているだけです。<br>それでもかなり的確な回答をくれます。<br>たまには、間違った回答もありますが、それでエラーが発生した場合、<span class="marker-under">そのエラーやログをそのまま突っ込めば</span>、新たな回答をくれます。<br>すごい時代になりました。</p>



<h2 class="wp-block-heading"><span id="toc18">DifyにLLMを設定して、カスタムチャット環境を構築</span></h2>



<p>やっとDifyサーバーが起動できました。</p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="407" height="690" src="https://www.kazuban.com/blog/wp-content/uploads/2025/05/select-llm.png" alt="" class="wp-image-11167 size-full" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/05/select-llm.png 407w, https://www.kazuban.com/blog/wp-content/uploads/2025/05/select-llm-300x509.png 300w" sizes="(max-width: 407px) 100vw, 407px" /></figure><div class="wp-block-media-text__content">
<p>次に、このDifyにLLMモデルを設定することで、チャットボットをはじめカスタムLLMアプリを開発する事ができるようになります。<br>左図の例では、<br>一番上の「Gemini」はオンラインで公開されているLLMです。<br>二番目は、「LM Studio」でダウンロードしたローカルLLMです。<br>三番目は、「Ollama」で読み込んでいるローカルLLMです。<br>このように、「Dify」ではオンライン、ローカルあまり意識せず、使用するLLMを自由にカスタマイズできます。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc19">DifyにLLMの設定方法</span></h3>



<p>ネット上でも、多くの情報があると思いますが、このサイトでも以前の記事で紹介しています。</p>



<h4 class="wp-block-heading"><span id="toc20"><a href="https://www.kazuban.com/blog/dify-lmstudio/#toc3">オンラインLLMの登録</a></span></h4>



<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">

<a href="https://www.kazuban.com/blog/dify-lmstudio/#toc3" title="ローカルでDifyとLM_Studio を連携させ、ローカルでチャットボットを作る。" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_LMStudio-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_LMStudio-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_LMStudio-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_LMStudio-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">ローカルでDifyとLM_Studio を連携させ、ローカルでチャットボットを作る。</div><div class="blogcard-snippet internal-blogcard-snippet">LM StudioとDifyをローカルで連携させたのでレポートします。記事を書いている時に、Dify設定にLM Studioのプラグインを発見したので、そちらの設定も追加してます。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.03.23</div></div></div></div></a>
</div></figure>



<h4 class="wp-block-heading"><span id="toc21"><a href="https://www.kazuban.com/blog/dify-lmstudio/#toc6">LM Studio モデルの登録</a></span></h4>



<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">

<a href="https://www.kazuban.com/blog/dify-lmstudio/#toc6" title="ローカルでDifyとLM_Studio を連携させ、ローカルでチャットボットを作る。" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_LMStudio-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_LMStudio-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_LMStudio-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_LMStudio-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">ローカルでDifyとLM_Studio を連携させ、ローカルでチャットボットを作る。</div><div class="blogcard-snippet internal-blogcard-snippet">LM StudioとDifyをローカルで連携させたのでレポートします。記事を書いている時に、Dify設定にLM Studioのプラグインを発見したので、そちらの設定も追加してます。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.03.23</div></div></div></div></a>
</div></figure>



<h4 class="wp-block-heading"><span id="toc22"><a href="https://www.kazuban.com/blog/dify-ollama/#toc6">Ollama　モデルの登録</a></span></h4>



<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">

<a href="https://www.kazuban.com/blog/dify-ollama/#toc6" title="DifyとOllamaを連携させ、ローカルチャットボット環境を作る" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_Ollama-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_Ollama-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_Ollama-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dify_Ollama-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">DifyとOllamaを連携させ、ローカルチャットボット環境を作る</div><div class="blogcard-snippet internal-blogcard-snippet">前回はLM StudioとDifyの連携でしたが、今回は、Ollamaと連携させてみました。どちらもそれぞれ特徴があるので、使い分けてもいいと思います。私的には、スタンドアローンで使うならLM Studio。Difyとの連携であればOllama かな？と思っています。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.03.30</div></div></div></div></a>
</div></figure>



<h2 class="wp-block-heading"><span id="toc23">あとがき</span></h2>



<p>Windowsアプリ「Docker Desktop」を使わず、「Ubuntu」にインストールした「Docker Engine」で「Dify」をサーバー化する方法を紹介しました。<br>「Docker Desktop」はWindows環境向けのツールであり、構築の手間は比較的少ないですが、Ubuntuサーバー上で動作させる際は、仮想化環境の設定やネットワーク通信の複雑さが生じるため、トラブルシューティングがやや難しくなります。<br>今回は、AIのアシストにより、Difyサーバーを構築することができました。<br>設定プロセスだけでなく、AIを活用した実践例として、このやり取りもご参考にしていただければ幸いです。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>DifyとOllamaを連携させ、ローカルチャットボット環境を作る</title>
		<link>https://www.kazuban.com/blog/dify-ollama/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Sat, 29 Mar 2025 23:22:16 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Dify]]></category>
		<category><![CDATA[Ollama]]></category>
		<category><![CDATA[チャットボット]]></category>
		<category><![CDATA[ローカルLLM]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=10632</guid>

					<description><![CDATA[前回は、DifyとLM Studioを連携させて、ローカル環境を作成しました。ただし、LM Studioは、完全にオープンライセンスではないようで、企業で使用する場合には、確認が必要です。Ollamaのほうが、自由に使え [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>前回は、<strong>Dify</strong>と<strong>LM Studio</strong>を連携させて、ローカル環境を作成しました。<br>ただし、LM Studioは、完全にオープンライセンスではないようで、企業で使用する場合には、確認が必要です。<br>Ollamaのほうが、自由に使えそうです。<br>ただし、いろいろなLLMを試してみたり、チャットが主な目的な場合には、LM Studioのほうが、GUIでの操作ができるので、初心者はLM Studioが取りつきやすいと思います。<br>特に、使用ＰＣスペックでの動作推測やモデルの詳細などは、分かりやすいです。<br>Difyと連携させて利用する場合では、繋がってしまえば、あまり違いはないかもしれません。<br>いろんなモデルをLM Studioでの試してみて、気に入ったモデルをOllama経由でDify連携の使い方もありかな、と思います。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">インストール</a></li><li><a href="#toc2" tabindex="0">モデルをダウンロードして起動</a></li><li><a href="#toc3" tabindex="0">Difyとの連携</a></li><li><a href="#toc4" tabindex="0">Windows 環境変数の編集</a><ol><li><a href="#toc5" tabindex="0">Ollama用、環境変数の追加</a></li><li><a href="#toc6" tabindex="0">Dify にもモデルを登録する</a></li></ol></li><li><a href="#toc7" tabindex="0">あとがき</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">インストール</span></h2>



<p>OllamaをWindowsにインストールするには、<a href="https://ollama.com/download/windows">下記サイトから</a>インストール実行ファイル「OllamaSetup.exe」をダウンロード・実行でインストールできます。</p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="745" height="621" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/download01.png" alt="" class="wp-image-10804 size-full" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/download01.png 745w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/download01-500x417.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/download01-300x250.png 300w" sizes="(max-width: 745px) 100vw, 745px" /></figure><div class="wp-block-media-text__content">
<p>インストール完了後、何事もなく終了ますが、スタートメニューには登録され、タスクバーの「隠れているインジケータ」にアイコンがあれば起動しています。<br>コマンドプロンプトなどを開いて、「ollama ーーhelp」コマンドで確認してみます。</p>



<p></p>
</div></div>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-86dcacdbec62004d37fbd6dca50367b5"><code>PS C:\Users\hoge&gt; <strong>ollama --help</strong>
Large language model runner

Usage:
  ollama &#91;flags]
  ollama &#91;command]

Available Commands:
  serve       Start ollama
  create      Create a model from a Modelfile
  show        Show information for a model
  run         Run a model
  stop        Stop a running model
  pull        Pull a model from a registry
  push        Push a model to a registry
  list        List models
  ps          List running models
  cp          Copy a model
  rm          Remove a model
  help        Help about any command

Flags:
  -h, --help      help for ollama
  -v, --version   Show version information

Use "ollama &#91;command] --help" for more information about a command.
PS C:\Users\hoge&gt;</code></pre>



<p>エラーが出なければ、無事に動作しています。<br>「ollama ーーversion」でバージョンを確認できます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-bc0fb3908fbf723d66701c0558b774e8"><code>PS C:\Users\hoge&gt; <strong>ollama --version</strong>
ollama version is 0.6.2</code></pre>



<h2 class="wp-block-heading"><span id="toc2">モデルをダウンロードして起動</span></h2>



<p>LLMを利用するにいは、公開されているモデルを下記から確認、ダウンロードできます。<br><a href="https://ollama.com/search">https://ollama.com/search</a><br>一覧から、利用したいモデル名をクリックすると、さらに「1b」「4b」など、モデルサイズで数種類でてきます。<br>一般的に小さい方が、性能は低い傾向にありますが、レスポンスはよくなります。<br>自分の環境で、レスポンスと相談して、大きいモデルがいいと思います。<br>LM Studio の場合、<a href="https://www.kazuban.com/blog/lm-studio-first-try/#toc5">自分のＰＣスペックとの相性をある程度アイコンで表示</a>してくれますが、Ollamaでは、とりあえず試してみて・・になるのかな～？<br>LM Studioで体験しておくと、自分の環境でも大丈夫なモデルサイズは察しがつきます。</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="600" data-id="10814" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama-models-800x600.png" alt="" class="wp-image-10814" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama-models-800x600.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama-models-500x375.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama-models-300x225.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama-models-768x576.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama-models.png 1024w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="601" data-id="10810" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama-models01-800x601.png" alt="" class="wp-image-10810" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama-models01-800x601.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama-models01-500x375.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama-models01-300x225.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama-models01-768x577.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama-models01.png 1024w" sizes="(max-width: 800px) 100vw, 800px" /></figure>
</figure>



<p>ターミナルで「<strong>ollama run </strong>[<em>モデル名</em>]」でダウンロード後実行できます。<br>モデル名は、ダウンロードサイトのコピーアイコン<img loading="lazy" decoding="async" width="24" height="25" class="wp-image-10792" style="width: 24px;" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/copy_icon.png" alt="">を利用するとモデル名をクリップボードへコピーできるので便利です。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-a170e2946e94ec5938c3f995bac076db"><code>PS C:\Users\hoge&gt; <strong>ollama run gemma3:4b</strong>
pulling manifest
pulling aeda25e63ebd... 100% ▕███████████▏ 3.3 GB
pulling e0a42594d802... 100% ▕███████████▏  358 B
pulling dd084c7d92a3... 100% ▕███████████▏ 8.4 KB
pulling 3116c5225075... 100% ▕███████████▏   77 B
pulling b6ae5839783f... 100% ▕███████████▏  489 B
verifying sha256 digest
writing manifest
success
&gt;&gt;&gt; 始めまして
はじめまして！こちらこそ、ご挨拶ありがとうございます。

何か私にできることはありますか？ 例えば、

*   何か質問に答える
*   文章を作成する
*   アイデアを出し合う
*   ただおしゃべりする

など、どんなことでも構いません。😊

&gt;&gt;&gt; Send a message (/? for help)</code></pre>



<p>「&gt;&gt;&gt; <span class="cocoon-custom-text-1">Send a message (/? for help)</span>」のプロンプトがでると、会話ができます。<br><span class="marker-under-red">会話の終了は<strong>「/bye」</strong></span>です。</p>



<h2 class="wp-block-heading"><span id="toc3">Difyとの連携</span></h2>



<p>前回、<a href="https://www.kazuban.com/blog/dify-lmstudio/#toc8">「LM Studio」との連携で、LM Studioプラグインの設定方法</a>と、ほとんど同じです。</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="https://www.kazuban.com/blog/wp-content/uploads/2025/03/model-provider01.png"><img loading="lazy" decoding="async" width="800" height="518" data-id="10821" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/model-provider01-800x518.png" alt="" class="wp-image-10821" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/model-provider01-800x518.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/model-provider01-500x324.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/model-provider01-300x194.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/model-provider01-768x497.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/model-provider01.png 1024w" sizes="(max-width: 800px) 100vw, 800px" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://www.kazuban.com/blog/wp-content/uploads/2025/03/model-provider02.png"><img loading="lazy" decoding="async" width="800" height="518" data-id="10820" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/model-provider02-800x518.png" alt="" class="wp-image-10820" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/model-provider02-800x518.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/model-provider02-500x324.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/model-provider02-300x194.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/model-provider02-768x497.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/model-provider02.png 1024w" sizes="(max-width: 800px) 100vw, 800px" /></a></figure>
</figure>



<p>「設定」の「モデルプロバイダー」から「Ollama」プラグインをインストールします。<br>インストールが完了したら、再度「設定」の「モデルプロバイダー」「Ollamaモデル」に「モデルを追加」で<a href="#toc2">上記でダウンロードした</a>モデルと「URL（ＩPアドレス）」を設定します。<br>ダウンローズ済みモデルは、ターミナルから「ollama list」コマンドで確認できます</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-4560adfa84aede7277cd41712e345324"><code>PS C:\Users\hoge&gt; <strong>ollama list</strong>
NAME           ID              SIZE      MODIFIED
llama3.2:1b    baf6a787fdff    1.3 GB    8 minutes ago
gemma3:4b      c0494fe00251    3.3 GB    26 minutes ago
PS C:\Users\hoge&gt; <strong>ollama run llama3.2:1b</strong>
&gt;&gt;&gt; /bye
PS C:\Users\hoge&gt;
</code></pre>



<p>また、「Base URL」は「ollama」が動作している、PCの「IPアドレス」に「<span class="marker-under-red">:11434</span>」のポート番号を付加して設定します。<br>ただし、URLが<span class="marker-under">LAN上の他のPCのIP（localhost以外の場合）でエラーが発生</span>してしまう場合、下記の「環境変数の編集」を試してみてください。<br>正常に「保存」が終了すると、<a href="https://www.kazuban.com/blog/dify-lmstudio/#toc7">前回記事の「LM Studio」の場合と同様に</a>、Difyで利用するモデルとして選択できるようになります。</p>



<h2 class="wp-block-heading"><span id="toc4">Windows 環境変数の編集</span></h2>



<p>「Ollama」の環境変数について、geminiに聞いて、下記回答をもらいました。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Ollamaの環境変数についてですね。Ollamaは、ローカルで大規模言語モデル（LLM）を実行するためのツールであり、いくつかの環境変数を使用してその動作をカスタマイズできます。主な環境変数は以下の通りです。</p>



<ul class="wp-block-list">
<li><strong>OLLAMA_HOST</strong>:
<ul class="wp-block-list">
<li>Ollamaがリッスンするホストアドレスを指定します。デフォルトは<code>127.0.0.1</code>であり、ローカルマシンからの接続のみを受け付けます。ネットワーク上の他のマシンからOllamaにアクセスできるようにするには、この変数を<code>0.0.0.0</code>に設定します。</li>
</ul>
</li>



<li><strong>OLLAMA_MODELS</strong>:
<ul class="wp-block-list">
<li>モデルの重みを保存するディレクトリのパスを指定します。デフォルトでは、Ollamaは特定のデフォルトディレクトリにモデルを保存しますが、この変数を使用して別の場所を指定できます。これにより、モデルファイルを別のドライブやディレクトリに保存することができます。</li>
</ul>
</li>



<li><strong>OLLAMA_ORIGINS</strong>:
<ul class="wp-block-list">
<li>クロスオリジンリクエストを許可するオリジンを指定します。OLLAMA APIをWebアプリケーションから利用する場合に設定します。</li>
</ul>
</li>



<li><strong>OLLAMA_DEBUG</strong>:
<ul class="wp-block-list">
<li>デバッグモードを有効にします。Ollamaのデバッグ情報を表示する場合に設定します。</li>
</ul>
</li>
</ul>



<p>これらの環境変数を設定することで、Ollamaの動作を柔軟に制御できます。環境変数の設定方法は、オペレーティングシステムによって異なります。</p>



<ul class="wp-block-list">
<li><strong>Windows</strong>:
<ul class="wp-block-list">
<li>「システム環境変数の編集」から設定します。</li>
</ul>
</li>



<li><strong>macOS / Linux</strong>:
<ul class="wp-block-list">
<li>ターミナルから<code>export</code>コマンドを使用して一時的に設定するか、<code>.bashrc</code>や<code>.zshrc</code>などのファイルに記述して永続的に設定します。また、サービスとしてOllamaを実行している場合は、systemdの設定ファイルに環境変数を記述します。</li>
</ul>
</li>
</ul>



<p>より詳細な情報や具体的な設定方法については、Ollamaの公式ドキュメントや関連するオンラインリソースを参照することをおすすめします。</p>
</blockquote>



<p>他のサイトをみると、環境変数を設定しないでも、正常に動作しているような記事も見かけましたし、「<strong>OLLAMA_HOST</strong>」だけ設定している記事もありました。<br>筆者の場合も、「<strong>OLLAMA_HOST</strong>」だけで正常に動作ましたが、「<strong>OLLAMA_ORIGINS</strong>」も設定しました。<br>また、「<strong>OLLAMA_MODELS</strong>」を設定すると、デフォルト（Cドライブ）以外にモデルを保存できます</p>



<h3 class="wp-block-heading"><span id="toc5">Ollama用、環境変数の追加</span></h3>



<p>環境変数を行う前には、「ollama」は終了しておきましょう。<br>タスクバー右の「^」ボタン「隠れているインジケーター」から、Ollamaアイコン右クリック「Quit Ollama」でも終了できます。<br>Windows検索バーに「<strong>環境変数</strong>」と入力すると「<span class="marker-under-red"><strong>システム環境変数の編集</strong></span>」が見つかるので、「環境変数」ボタンをクリックして上段の「<strong>ユーザー環境変数</strong>」の「<strong>新規</strong>」で環境変数を追加します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="479" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/environment_-variables-800x479.png" alt="" class="wp-image-10831" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/environment_-variables-800x479.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/environment_-variables-500x299.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/environment_-variables-300x180.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/environment_-variables-768x460.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/environment_-variables-1536x920.png 1536w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/environment_-variables.png 1622w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>OLLAMA_HOST : 0.0.0.0<br>OLLAMA_ORIGINS : *<br>OLLAMA_MODELS : D:\Ollama_Models</p>
</blockquote>



<p>ただし、「OLLAMA_MODELS」の設定は、注意が必要です。<br>環境変数追加前に、ダウンロードしたモデルは、自働的には移動してはくれません。<br><span class="marker-under">再度、ダウンロード</span>するか、デフォルトでは<br>「<strong>C:\Users\</strong>[ユーザー]<strong>\.ollama\models</strong>」の下に登録されているので、環境変数変更前に指定フォルダへコピーしておくと、反映されると思いますが、試してはいません。<br>環境変数変更後でも、Ollamaを起動する前に、設定したフォルダへ移動してもいいかもしれません。<br>環境変数の編集が適応されているかは、下記で確認できます。<br><span class="marker-under"><strong>コマンドプロンプト</strong>と<strong>PowerShell</strong>で指令が違うので注意してください。</span></p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-c7c40c73e4e678be78649e5675edb001"><code>★コマンドプロンプト
C:\Users\hoge&gt;echo %OLLAMA_HOST%
0.0.0.0

C:\Users\hoge&gt;echo %OLLAMA_MODELS%
D:\Ollama_Models

C:\Users\hoge&gt;echo %OLLAMA_ORIGINS%
*

★PowerShell
PS C:\Users\hoge&gt; $env:OLLAMA_HOST
0.0.0.0

PS C:\Users\hoge&gt; $env:OLLAMA_MODELS
D:\Ollama_Models

PS C:\Users\hoge&gt; $env:OLLAMA_ORIGINS
*</code></pre>



<h3 class="wp-block-heading"><span id="toc6">Dify にもモデルを登録する</span></h3>



<p>モデルフォルダを変更した場合には、「<strong>ollama list</strong>」コマンドで確認できます。<br>正常に変更されていれば、<span class="marker-under-red">再度「Olama」を起動</span>して、「Dify」の「Ollama」モデルのプラグイン設定で追加できるようになります。<br><a href="https://www.kazuban.com/blog/dify-lmstudio/#toc8">追加方法は、LM Studio 編を参考にしてください。</a></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="333" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama_plugin_add-800x333.png" alt="" class="wp-image-10853" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama_plugin_add-800x333.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama_plugin_add-500x208.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama_plugin_add-300x125.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama_plugin_add-768x320.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama_plugin_add.png 1009w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>追加したモデルは、Difyで作成するアプリから、ollamaを利用できるようになります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="486" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama_model_select-800x486.png" alt="" class="wp-image-10854" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama_model_select-800x486.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama_model_select-500x304.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama_model_select-300x182.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama_model_select-768x466.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/ollama_model_select.png 1248w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<h2 class="wp-block-heading"><span id="toc7">あとがき</span></h2>



<p>これで、完全ローカルで、DifyからOllamaも利用できるようになりました。<br>筆者の環境では、「Windows環境変数の編集」が必要だったので、少し戸惑いましたが、どうにか利用できるようになりました。<br>LM Studioがいいのか？Ollamaがいいのか？は、自分の環境や使い勝手で使い分けてください。<br>選択肢があるというのは、いいことだと思います。<br>さぁ、いよいよ、Difyの勉強を始められる環境は出来上がりましたが・・・・<br>ちょっと、Docker Desktop の環境なのが気になっています。<br>WSLでUbuntu24.04を起動させた環境か、現在稼働中のLinuxマシンか・・・<br>いずれにしても、linux環境で立ち上げてみたくなってきました。<br></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ローカルでDifyとLM_Studio を連携させ、ローカルでチャットボットを作る。</title>
		<link>https://www.kazuban.com/blog/dify-lmstudio/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Sat, 22 Mar 2025 23:40:15 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Dify]]></category>
		<category><![CDATA[LM-Studio]]></category>
		<category><![CDATA[チャットボット]]></category>
		<category><![CDATA[ローカルLLM]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=10639</guid>

					<description><![CDATA[以前の記事で、LM Studioを利用して、ローカル環境でLLMを利用する方法を紹介しました。また前回、生成Aiアプリを比較的簡単に開発できる、Difyをローカルで起動させてみました。今回はこのDifyとLM Studi [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="https://www.kazuban.com/blog/lm-studio-first-try/">以前の記事で、LM Studioを利用して、ローカル環境でLLMを利用する方法</a><br>を紹介しました。<br><a href="https://www.kazuban.com/blog/dify-install/">また前回、生成Aiアプリを比較的簡単に開発できる、Difyをローカルで起動</a><br>させてみました。<br>今回はこのDifyとLM Studioを連携させ、完全ローカル環境で生成Aiアプリを開発する環境設定を作ってみます。<br>筆者はDifyは超初心者なので、Difyでのアプリ開発に興味あるかたはネットをチェックしてみてください。<br>ここでは、DifyとローカルLLMと連携する方法を紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Difyで簡単なチャットボット作る</a></li><li><a href="#toc2" tabindex="0">モデルを登録する</a><ol><li><a href="#toc3" tabindex="0">オンラインLLM gemini の登録</a></li><li><a href="#toc4" tabindex="0">ローカルLLM LM Studio の登録</a><ol><li><a href="#toc5" tabindex="0">LM Studio をサーバーモードにする</a></li><li><a href="#toc6" tabindex="0">DifyでLM Studio のモデルを利用する</a></li></ol></li><li><a href="#toc7" tabindex="0">LM Studio サーバーのモデル使用</a></li><li><a href="#toc8" tabindex="0">LM Studio のモデルプロバイダーが追加されてる・・・</a></li></ol></li><li><a href="#toc9" tabindex="0">あとがき</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Difyで簡単なチャットボット作る</span></h2>



<p>まずは、Difyで一番簡単なチャットボットを作成する流れを説明します。<br><a href="https://www.kazuban.com/blog/dify-install/">前回までで</a>、Difyをインストールして「<a href="http://localhost/install">http://localhost/install</a>」でアカウント作成を行いました。<br>ログインすると、「最初から作成」でアプリが作成できるようになります。</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="577" data-id="10697" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist01-800x577.png" alt="" class="wp-image-10697" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist01-800x577.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist01-500x360.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist01-300x216.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist01-768x554.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist01.png 860w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="609" data-id="10698" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist02-800x609.png" alt="" class="wp-image-10698" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist02-800x609.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist02-500x381.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist02-300x228.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist02-768x585.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist02.png 860w" sizes="(max-width: 800px) 100vw, 800px" /></figure>
</figure>



<p>とりあえずチャットボットを選択し、「アプリのアイコンと名前」と「説明」は任意で入力します<br>「作成する」で、次の画面へ進みます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="461" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist03-800x461.png" alt="" class="wp-image-10656" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist03-800x461.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist03-500x288.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist03-300x173.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist03-768x443.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist03-1536x885.png 1536w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist03-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify_fist03.png 1780w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>ここで、右上の設定から、使用したいモデルを選択する事で、このモデルと会話するチャットアプリが作れますが、<span class="marker-under">事前に使用するLLMモデルの登録が必要</span>です。<br>ここでは、事前にオンラインのgeminiモデルを登録しておいたので、geminiの複数モデルが選択できるようになっています。<br>違うモデルで何種類か作成し公開すれば、簡単に違うモデルと会話できるアプリが作成できます。<br>ただしこれは、<span class="marker-under-red">ローカルではなくオンライン環境</span>になります。<br>ここで、LM_Studioで動作させてさせている、ローカルLLMを登録すれば、ローカルLLMと会話できるようになります。</p>



<h2 class="wp-block-heading"><span id="toc2">モデルを登録する</span></h2>



<p>Difyはとても機能が多く非常に興味的なアプリなので、筆者ももう少し取り組んでみたいと思っていますが、まずはローカル環境でいろいろ試せる環境を作ります。</p>



<h3 class="wp-block-heading"><span id="toc3">オンラインLLM gemini の登録</span></h3>



<p>まずは、ローカルではないですが、Googleのgeminiを利用してみます。<br>利用するには、geminiプラグインのインストールが必要です。<br>プラグインは、<span class="inline-button-blue">右上のユーザー名</span>から出てくるプルダウンで「設定」を選択すると、<br>左サイドに「設定」の項目が表示されます。<br>その下段のモデルプロバイダーで登録します</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large" style="margin-top:var(--wp--preset--spacing--50);margin-right:0;margin-bottom:var(--wp--preset--spacing--50);margin-left:0"><a href="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin01.png"><img loading="lazy" decoding="async" width="800" height="720" data-id="10662" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin01-800x720.png" alt="" class="wp-image-10662" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin01-800x720.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin01-500x450.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin01-300x270.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin01-768x692.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin01.png 1346w" sizes="(max-width: 800px) 100vw, 800px" /></a></figure>



<figure class="wp-block-image size-large" style="margin-top:var(--wp--preset--spacing--80);margin-right:0;margin-bottom:var(--wp--preset--spacing--80);margin-left:0"><img loading="lazy" decoding="async" width="800" height="469" data-id="10664" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin02-800x469.png" alt="" class="wp-image-10664" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin02-800x469.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin02-500x293.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin02-300x176.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin02-768x450.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin02.png 861w" sizes="(max-width: 800px) 100vw, 800px" /></figure>
</figure>



<p>インストールしたいモデル（今回は、Gemini）を探してインストールします。<br>インストールは私の環境では結構時間がかかりました。<br>インストール中でも画面にあまり変化がないので<span class="marker-under-blue">完了したタイミングを見逃しがち</span>ですが、<br>右上のプラグインアイコンがこの状態は、<img loading="lazy" decoding="async" width="120" height="42" class="wp-image-10708" style="width: 120px;" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/plugin-install01.png" alt=""><span class="marker-under">インストール中</span>です<br>完了すると<img loading="lazy" decoding="async" width="140" height="46" class="wp-image-10709" style="width: 140px;" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/plugin-install02.png" alt=""><span class="marker-under-red">このアイコンになります</span>ので、待ちます。<br>次に、インストール後Geminiを使用するには、API-KEYのセットアップが必要です。</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-5 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large" style="margin-right:var(--wp--preset--spacing--20);margin-left:var(--wp--preset--spacing--20)"><img loading="lazy" decoding="async" width="800" height="469" data-id="10664" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin02-800x469.png" alt="" class="wp-image-10664" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin02-800x469.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin02-500x293.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin02-300x176.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin02-768x450.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin02.png 861w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<figure class="wp-block-image size-large" style="margin-top:var(--wp--preset--spacing--30);margin-right:0;margin-bottom:var(--wp--preset--spacing--30);margin-left:0"><img loading="lazy" decoding="async" width="800" height="395" data-id="10680" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin03-1-800x395.png" alt="" class="wp-image-10680" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin03-1-800x395.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin03-1-500x247.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin03-1-300x148.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin03-1-768x379.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin03-1.png 1163w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<figure class="wp-block-image size-large" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--40)"><img loading="lazy" decoding="async" width="800" height="369" data-id="10681" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin04-800x369.png" alt="" class="wp-image-10681" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin04-800x369.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin04-500x230.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin04-300x138.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin04-768x354.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin04.png 970w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<figure class="wp-block-image size-large" style="margin-top:0;margin-right:var(--wp--preset--spacing--30);margin-bottom:0;margin-left:var(--wp--preset--spacing--30)"><img loading="lazy" decoding="async" width="800" height="421" data-id="10682" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin05-800x421.png" alt="" class="wp-image-10682" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin05-800x421.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin05-500x263.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin05-300x158.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin05-768x405.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin05.png 1027w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<figure class="wp-block-image size-large" style="margin-top:var(--wp--preset--spacing--20);margin-right:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20);margin-left:var(--wp--preset--spacing--20)"><img loading="lazy" decoding="async" width="800" height="379" data-id="10683" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin06-800x379.png" alt="" class="wp-image-10683" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin06-800x379.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin06-500x237.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin06-300x142.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin06-768x364.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin06.png 1146w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="404" data-id="10684" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin07-800x404.png" alt="" class="wp-image-10684" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin07-800x404.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin07-500x252.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin07-300x151.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin07-768x388.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin07.png 1084w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<figure class="wp-block-image size-large" style="margin-top:var(--wp--preset--spacing--60);margin-right:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--60);margin-left:var(--wp--preset--spacing--30)"><img loading="lazy" decoding="async" width="800" height="254" data-id="10685" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin08-800x254.png" alt="" class="wp-image-10685" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin08-800x254.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin08-500x159.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin08-300x95.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin08-768x244.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin08.png 1159w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<figure class="wp-block-image size-large" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--40)"><img loading="lazy" decoding="async" width="730" height="337" data-id="10673" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin09.png" alt="" class="wp-image-10673" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin09.png 730w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin09-500x231.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin09-300x138.png 300w" sizes="(max-width: 730px) 100vw, 730px" /></figure>



<figure class="wp-block-image size-large" style="margin-top:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--30)"><img loading="lazy" decoding="async" width="728" height="388" data-id="10686" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin10.png" alt="" class="wp-image-10686" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin10.png 728w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin10-500x266.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin10-300x160.png 300w" sizes="(max-width: 728px) 100vw, 728px" /></figure>



<figure class="wp-block-image size-large" style="margin-top:var(--wp--preset--spacing--60);margin-bottom:var(--wp--preset--spacing--60)"><img loading="lazy" decoding="async" width="728" height="333" data-id="10675" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin11.png" alt="" class="wp-image-10675" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin11.png 728w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin11-500x229.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini_plugin11-300x137.png 300w" sizes="(max-width: 728px) 100vw, 728px" /></figure>
</figure>



<p>APIキーが正常に設定されると、「右上のユーザ」⇒「設定」⇒「モデルプロバイダー」で設定済みのモデルとして表示されます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="122" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini-ApiKEY-800x122.png" alt="" class="wp-image-10704" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini-ApiKEY-800x122.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini-ApiKEY-500x76.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini-ApiKEY-300x46.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini-ApiKEY-768x117.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/gemini-ApiKEY.png 934w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>ただし、私の環境では、<span class="marker-under">正常に設定できた</span>とメッセージがでたのに、<span class="marker-under">ここに表示されていない事</span>がありました、その場合、<span class="marker-under-red">もう一度モデルプロバイダー一覧から再度インストール</span>すると表示されました。<br>この場合、インストール時間は殆どかかりません。<br>これで、上の例のように、使用モデルとして選択できるようになります。</p>



<h3 class="wp-block-heading"><span id="toc4">ローカルLLM LM Studio の登録</span></h3>



<p>Geminiはオンラインクラウド上のLLMですが、いよいよローカルLLMと連携させます。</p>



<h4 class="wp-block-heading"><span id="toc5">LM Studio をサーバーモードにする</span></h4>



<p>DifyとLM Studioを連携するには、まず、LM Studioをサーバーモードで動作させます。<br>まず左サイドバーのDeveloperアイコン<img loading="lazy" decoding="async" width="35" height="34" class="wp-image-10712" style="width: 35px;" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/developer-icon.png" alt="">で、開発者モードに入り、</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="496" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server01-800x496.png" alt="" class="wp-image-10713" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server01-800x496.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server01-500x310.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server01-300x186.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server01-768x477.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server01.png 1054w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>その横の<span class="inline-button-green">スイッチ</span>で「Static Running」状態に設定すれば、サーバーモードで動作しています。<br>次に、Difyに提供する、モデルを「Select a model load」で<span class="marker-under-red">ダウンロード済みのモデル</span>から選択します。<br>２個のモデルをロードしてみました。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="396" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server02-800x396.png" alt="" class="wp-image-10718" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server02-800x396.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server02-500x247.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server02-300x148.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server02-768x380.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server02.png 1456w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>この状態であれば、Difyでロードしたモデルを使用できるようになります。<br>ただし、LM Studioをクローズすると、モデルも使用できなくなってしまいます。<br>右下の<span class="inline-button-black">歯車マーク</span>で設定画面に入り</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="506" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server03-800x506.png" alt="" class="wp-image-10721" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server03-800x506.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server03-500x317.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server03-300x190.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server03-768x486.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server03-1536x972.png 1536w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server03.png 1943w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>「Enable Local LLM Service」にチェックすれば、クローズしてもサーバー状態を維持します。</p>



<h4 class="wp-block-heading"><span id="toc6">DifyでLM Studio のモデルを利用する</span></h4>



<p class="has-watery-red-background-color has-background"><em>この記事を書いている時に自分でも再作業をしていたら、<a href="#toc8">「LM Studio」用のプラグインが公開されている</a>のに気が付きました。<br>これから説明する「OpneAI-API-compatible」よりも、わかりやすそうです。<br>たぶん公開は最近だと思うので、不具合がないとも言えませんが、もし、こだわりがなければ、「LM Studio」プラグインの方が簡単だと思います</em></p>



<p>ここでは、書き始めていた「OpneAI-API-compatible」の説明を行います。<br>geminiの時と同様に、「モデルプロバイダー」の「設定」で対応しているプラグインをインストールします。<br>LM Studioが利用するには<span class="marker-under-red">「OpneAI-API-compatible」</span>をインストールします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="636" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server05-800x636.png" alt="" class="wp-image-10725" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server05-800x636.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server05-500x398.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server05-300x239.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server05-768x611.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server05.png 1184w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>インストールが完了したら、「モデルを追加」で、モデル名と<br>LM Studio サーバーの「URL」＋<span class="marker-under-red">「/V1」</span>を設定します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="1289" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server06-800x1289.png" alt="" class="wp-image-10727" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server06-800x1289.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server06-500x805.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server06-300x483.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server06-768x1237.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server06.png 933w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>モデル名とLM Studio のURL は、「LM Studio」の画面から、<img loading="lazy" decoding="async" width="30" height="31" class="wp-image-10792" style="width: 30px;" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/copy_icon.png" alt="">「コピー」アイコンで、クリップボードへコピーすれば、ペーストできます。<br>ただし、「API endpoint URL」は<span class="marker-under-red">「URL」の後ろに「/V1」が必要</span>です。<br>「/V1」がなくても、正常に保存できる場合がありますが、実際に<span class="marker-under">チャットする時にエラーになりますので忘れないでください。</span><br>「LM Studio」に何種類がモデルがロードされている場合、ここでも複数設定しておくと、Dify側で複数のモデルを使分ける事ができます</p>



<h3 class="wp-block-heading"><span id="toc7">LM Studio サーバーのモデル使用</span></h3>



<p>ここまで完了すると、Dify側でのモデル選択で利用できるようになっています。<br><a href="#toc1">上記の「gemini」モデル一覧の下</a>に、追加されているので、ここで選択する事でつかえるようになります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="719" height="920" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server09.png" alt="" class="wp-image-10732" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server09.png 719w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server09-500x640.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM_Studio_Server09-300x384.png 300w" sizes="(max-width: 719px) 100vw, 719px" /></figure>



<h3 class="wp-block-heading"><span id="toc8">LM Studio のモデルプロバイダーが追加されてる・・・</span></h3>



<p>この記事を書いていて、Difyを触っていて気が付いたのですが、「モデルプロバイダー」一覧に「LM Studio」が入っていました。<br></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="466" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM-Studio-Model-Providers-800x466.png" alt="" class="wp-image-10734" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM-Studio-Model-Providers-800x466.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM-Studio-Model-Providers-500x292.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM-Studio-Model-Providers-300x175.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM-Studio-Model-Providers-768x448.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM-Studio-Model-Providers.png 981w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>筆者が見落としていただけなのか？ちょっと前にはなかったと思います。<br>そういう理由で、「OpneAI-API-compatible」を利用したのですが、「LM Studio」のほうが、名前からして分かりやすいですね。<br>試しに、インストールしてみたところ、問題なく使用できました。<br>ただ、「OpneAI-API-compatible」では、「API endpoint URL」で、「LM Studioサーバー」の「URL」とその後ろに「/V1」が必要でしたが、こちらは<span class="marker-under-red">「Base URL」の設定項目で「URL」のみ</span>でOKです。<br>この設定も、わかりやすいです。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="787" height="1002" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM-Studio-Model-Providers-setting.png" alt="" class="wp-image-10735" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM-Studio-Model-Providers-setting.png 787w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM-Studio-Model-Providers-setting-500x637.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM-Studio-Model-Providers-setting-300x382.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/LM-Studio-Model-Providers-setting-768x978.png 768w" sizes="(max-width: 787px) 100vw, 787px" /></figure>



<h2 class="wp-block-heading"><span id="toc9">あとがき</span></h2>



<p>ついに、ローカル上で、ローカル上のLLMモデルを利用した、チャットアプリ開発環境が完成しました。<br>企業で使うには、ライセンスの確認も必要ですし、動作させるPCのスペックは大きくなると思いますが、個人や少人数で使う場合、簡単に試しながら、気軽にDifyの学習ができるようになります。</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>話題のDifyをインストールしてみた。失敗談あり。</title>
		<link>https://www.kazuban.com/blog/dify-install/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Sat, 15 Mar 2025 08:14:52 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Dify]]></category>
		<category><![CDATA[チャットボット]]></category>
		<category><![CDATA[ローカル]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=10515</guid>

					<description><![CDATA[LM Studio は、簡単にローカルで複数のLLMを試す事ができる便利なアプリです以前、このサイトでも記事にしました。 Difyは、チャットボットなど、AIアプリを比較的簡単に作成する事ができるアプリですが、LM St [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>LM Studio は、簡単にローカルで複数のLLMを試す事ができる便利なアプリです<br>以前、このサイトでも記事にしました。</p>



<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">

<a href="https://www.kazuban.com/blog/lm-studio-first-try/" title="LM Studio、ChatGPTのような大規模言語モデル（LLM）をローカルで簡単に動かせる時代が来た" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="90" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2025/01/CreatAmuse4-1.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/01/CreatAmuse4-1.png 2048w, https://www.kazuban.com/blog/wp-content/uploads/2025/01/CreatAmuse4-1-500x500.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/01/CreatAmuse4-1-800x800.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/01/CreatAmuse4-1-300x300.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/01/CreatAmuse4-1-768x768.png 768w" sizes="(max-width: 90px) 100vw, 90px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">LM Studio、ChatGPTのような大規模言語モデル（LLM）をローカルで簡単に動かせる時代が来た</div><div class="blogcard-snippet internal-blogcard-snippet">LM Studio を体験してみました。簡単に、ローカルPCでAiとチャットできます。機密性の情報を扱う場合には、ローカルなので安全性は高まります文章を要約したり、レポート作成してもらったり、正確な回答が必要でない場合には、使えそうです。プログラムなど正確性が必要な場合には、オンラインのほうがよさそうです。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.01.01</div></div></div></div></a>
</div></figure>



<p><br>Difyは、チャットボットなど、AIアプリを比較的簡単に作成する事ができるアプリですが、LM Studioと連携する事で、ローカルでのチャットボットが作れそうです。<br>今回は、まずDifyを起動させてみました。<br>Difyの詳しい使用方法は、ネット上に沢山情報があるので、検索してみてください。<br>筆者もこれから触ってみて、記事にできそうであれば、レポートしたいと思います<br>Difyの立ち上げはそれほど難しくはないですが、ちょっと余計な事して、思うように動作せず、かなり悩んでしまったので、覚書かねて、レポートします。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Difyをローカルで立ち上げる</a><ol><li><a href="#toc2" tabindex="0">WSL2インストール</a><ol><li><a href="#toc3" tabindex="0">Linux 用 Windows サブシステム 機能の有効化</a></li><li><a href="#toc4" tabindex="0">WSL更新</a></li></ol></li><li><a href="#toc5" tabindex="0">Git のインストール</a></li><li><a href="#toc6" tabindex="0">Docker Desktopインストール</a><ol><li><a href="#toc7" tabindex="0">インストール</a></li><li><a href="#toc8" tabindex="0">セットアップ</a></li></ol></li><li><a href="#toc9" tabindex="0">Difyのインストール</a><ol><li><a href="#toc10" tabindex="0">GitアプリでGithubで公開されている、difyのコードをクローン化する </a></li></ol></li></ol></li><li><a href="#toc11" tabindex="0">Difyが動き出した</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Difyをローカルで立ち上げる</span></h2>



<p>Difyは、クラウド上にも、Webアプリサービスが提供されており、サブスクで利用することもできます<a href="https://cloud.dify.ai/signin">https://cloud.dify.ai/signin</a><br>ただ、オープンソースも公開されており、個人PCでクローン化すれば、無料で制限なく使用できますが、通常のwindowsインストールとは、ちょっと違う作業が必要です。</p>



<ul class="wp-block-list">
<li>「WSL2」環境の構築</li>



<li>「Git」のインストール</li>



<li>「Docker　Desktop」のインストール</li>



<li>「Docker」で「Dify」をクローン化して利用可能にする</li>
</ul>



<p>もともとは、Linux環境で開発されたソフトウェアなので、通常のWindowsアプリをインストールするよりも、コマンド作業も出てくるので、戸惑う事もありますが、一ステップずつやっていけば、意外と簡単です。</p>



<h3 class="wp-block-heading"><span id="toc2">WSL2インストール</span></h3>



<h4 class="wp-block-heading"><span id="toc3">Linux 用 Windows サブシステム 機能の有効化</span></h4>



<p>「Docker」は「<strong>W</strong><em>indows</em> <strong>S</strong><em>ubsystem for</em> <strong>L</strong><em>inux</em>」上で動作するので、WSLの環境が必要です。<br>最近のPCであれな、デフォルトで有効になっているのかもしれませんが、古い場合事前の設定が必要です。<br>WSLの環境ができていなくても、機能が有効になっていれば「Docker Desktop」のインストーラがやってくれますが、警告メッセージや更新作業などの要求がでる場合があるので、事前にWSL環境を作っておいたほうがいいと思います。</p>



<p>WSLの環境ですが、古いマシンの場合、場合よっては、BIOSでの仮想マシン有効設定が必要な場合もあるようです。<br>古いマシンを利用する場合には、事前に調査しておいたほうがいいと思います。<br>BIOS的に、仮想マシンが有効であれば、</p>



<p class="has-watery-red-background-color has-background">コントロールパネル　⇒　プログラム　⇒<br>　　　　⇒　「プログラム機能：windowsの機能の有効化または無効化」</p>



<p>で、「Linux用Windiwsサブシステム」と「仮想マシンプラットフォーム」にチェックをいれます、</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="688" height="738" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/wsl-install01.png" alt="" class="wp-image-10532" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/wsl-install01.png 688w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/wsl-install01-500x536.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/wsl-install01-300x322.png 300w" sizes="(max-width: 688px) 100vw, 688px" /></figure>



<p>「OK」ボタンを押すと、自動的に必要なファイルを検索し、構築してくれます。<br>作業が終了したら、WIndowsを再起動します。</p>



<h4 class="wp-block-heading"><span id="toc4">WSL更新</span></h4>



<p>再起動後は、「コマンドプロンプト」でアップデートしておきます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-1474aabfc6a6a54d94f92d3da70f8e9c"><code>C:\Users\hogehoge&gt;wsl --update
更新プログラムを確認しています。
Linux 用 Windows サブシステムをバージョンに更新しています: 2.4.12。</code></pre>



<h3 class="wp-block-heading"><span id="toc5">Git のインストール</span></h3>



<p>「Git」は、Windowsのインストーラが用意されているので、比較的簡単にインストールできます。<br><a href="https://git-scm.com/downloads/win">こちらにアクセス</a>し、「Click here to download 」でダウンロードして実行します。<br>いろいろ選択するダイアログが出てきますが、私はダウンロード先を「Dドライブ」に変更しただけで、すべてデフォルトでインストールしました。</p>



<h3 class="wp-block-heading"><span id="toc6">Docker Desktopインストール</span></h3>



<p>「Docker」は、複数の開発環境を、パッケージにしてアプリを実行できるアプリです。<br>環境ごとに、ハードウェアを用意する必要がないので、特に開発側ではよく使われているようです。<br>Difyを動かすには、「Dify」環境を「Docker」内でパッケージ化して、動作させます。<br>「Docker Desktop」は、Windowsインストーラも用意されているので、比較的簡単にインストールできます。<br>ただし、完全無料ではありません。<br>下記を超える規模の企業で利用する場合、利用回数制限やサブスク型有料になります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>個人・従業員250人未満かつ年間収益1,000万ドル以下の企業</p>
</blockquote>



<p>実際の動作環境は、裏で「Docker Engine」が働いているようで、こちらだけであれば、オープンソースで公開されています。<br>ただし、こちらは、Linuxでのコマンド操作が必要になりそうです。<br>ちょっと興味もありますが、まずは「Docker Desktop」で進めます</p>



<h4 class="wp-block-heading"><span id="toc7">インストール</span></h4>



<p><a href="https://www.docker.com/get-started/">こちらに、アクセスし</a>、「Download Docker Desktop」から「Download for Windows-AMD64」をダウンロードし実行ます。<br>Windowsの警告などのメッセージがでる事もありすが、許可すると確認の画面が出てきます<br>「OK」でインストールが始まります。</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-6 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="https://www.kazuban.com/blog/wp-content/uploads/2025/02/01Configration.png"><img loading="lazy" decoding="async" width="800" height="554" data-id="10442" src="https://www.kazuban.com/blog/wp-content/uploads/2025/02/01Configration-800x554.png" alt="" class="wp-image-10442" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/02/01Configration-800x554.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/01Configration-500x346.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/01Configration-300x208.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/01Configration-768x532.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/01Configration.png 884w" sizes="(max-width: 800px) 100vw, 800px" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://www.kazuban.com/blog/wp-content/uploads/2025/02/02インストールスター路.png"><img loading="lazy" decoding="async" width="800" height="554" data-id="10443" src="https://www.kazuban.com/blog/wp-content/uploads/2025/02/02インストールスター路-800x554.png" alt="" class="wp-image-10443" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/02/02インストールスター路-800x554.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/02インストールスター路-500x346.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/02インストールスター路-300x208.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/02インストールスター路-768x532.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/02インストールスター路.png 884w" sizes="(max-width: 800px) 100vw, 800px" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://www.kazuban.com/blog/wp-content/uploads/2025/02/03インストール終了.png"><img loading="lazy" decoding="async" width="800" height="554" data-id="10444" src="https://www.kazuban.com/blog/wp-content/uploads/2025/02/03インストール終了-800x554.png" alt="" class="wp-image-10444" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/02/03インストール終了-800x554.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/03インストール終了-500x346.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/03インストール終了-300x208.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/03インストール終了-768x532.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/03インストール終了.png 884w" sizes="(max-width: 800px) 100vw, 800px" /></a></figure>
</figure>



<p>終了すると、再起動要求がない場合には不要かもしれませんが、念のため再起動しておきましょう。<br>Windowsが再起動すると、上記の「Configuration」⇒「Add shortcut desktop」にチェックを入れておいた場合、デスクトップに「Docker」のショートカットが作られていると思います。<br>もし作られていない場合、PCの環境が管理者権限を必要としているかもしれません。<br>通常は、ショートカットのアイコンで起動できますが、作られていない場合、タスクメニューからでも起動できます。<br>ただし、ショートカットが作られなかった場合、管理者権限で実行しないと、正常に起動しない場合もあります。<br>管理者権限での起動の場合、下記の説明と違ってくるかもしれませんので、ご了承ください。</p>



<h4 class="wp-block-heading"><span id="toc8">セットアップ</span></h4>



<p>最初の起動では、タコやクジラのイラストの画面が立ち上げります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="501" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot01-800x501.png" alt="" class="wp-image-10552" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot01-800x501.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot01-500x313.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot01-300x188.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot01-768x481.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot01.png 1196w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>これは、<a href="#toc7">上記でも少し説明した、</a>ライセンスに関しての注意事項です。<br>個人使用や指定規模未満の企業であれば「Accept」で次へ進みます。</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-7 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large is-style-bottom-margin-6em has-bottom-margin"><a href="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot02.png"><img loading="lazy" decoding="async" width="844" height="684" data-id="10553" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot02.png" alt="" class="wp-image-10553"/></a></figure>



<figure class="wp-block-image size-large is-style-bottom-margin-1em has-bottom-margin"><a href="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot03.png"><img loading="lazy" decoding="async" width="779" height="829" data-id="10554" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot03.png" alt="" class="wp-image-10554"/></a></figure>



<figure class="wp-block-image size-large is-style-bottom-margin-7em has-bottom-margin" style="margin-top:0;margin-right:0;margin-bottom:0;margin-left:0"><a href="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot04.png"><img loading="lazy" decoding="async" width="800" height="412" data-id="10555" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot04-800x412.png" alt="" class="wp-image-10555" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot04-800x412.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot04-500x258.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot04-300x155.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot04-768x396.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot04-1536x791.png 1536w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/Dockerboot04.png 1902w" sizes="(max-width: 800px) 100vw, 800px" /></a></figure>
</figure>



<p>「Welcom_to_Docker」と「Welcom Survey」は「Skip」でも大丈夫です。<br>無事に次に進むと、「Containers」の説明などへのリンクが表示されます。<br>これで、「Docker Desktop」のインストールは完了しています。<br>次にいよいよ、「Dify」をクローン化して使えるようにしていきます。<br>クローン化は、ターミナルでコマンドを入力して実行しますが、「コマンドプロンプト」や「PowerShell」を開いてもいいし、最後の画面右下の「&gt;_Terminal」も利用できます。</p>



<h3 class="wp-block-heading"><span id="toc9">Difyのインストール</span></h3>



<p>「Docker」を使って「Dify」を起動させるには、次の操作を行います</p>



<ul class="wp-block-list">
<li>GitHub に公開されている dify プロジェクトのソースコードをダウンロードし、複製する。</li>



<li>Docker Composeというツールを使って複製されたアプリの構築と起動する。</li>
</ul>



<h4 class="wp-block-heading"><span id="toc10">GitアプリでGithubで公開されている、difyのコードをクローン化する </span></h4>



<p>「PowerShell」などのターミナルを開き、次のコマンドを実行します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-995fcdb6ae5d4bcb80000aac1e1e8bff"><code>git clone https://github.com/langgenius/dify.git</code></pre>



<p>このコマンドを実行すると、カレントディレクトリに、「dify」、さらにその下に「docker」ディレクトリが作成され、「docker」内に、difyがクローン化されます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><span class="marker-red">★ここで、失敗談</span><br><br>カレントディレクトリと言う考えが良くなかったようで、カレントに入るのであれば、カレントを変更すれば、Dドライブなどにもインストールできるな！<br>と、勝手に思ってしまいました。<br>通常のアプリのインストールでも、なるべくCドライブへは入れないようにしています。<br>試しに、クローン化前に、ターミナルから「ch」コマンドでカレントディレクトリを変更し、やってみたところ正常にクローン化され、その後の「Docker Compose」も「Dify」も正常に動作しているように見えました。<br>しかし、Difyを触っていて、LLMの「APIキー」の認証がうまくいきませんでした。<br>「Dify」の動作自体は正常だったので、「APIキー」の認証方法が悪いのか？と結構悩みましたが、デフォルトの設定がWindowsでログインしているユーザーのホームディレクトリを想定しるとすれば、「APIキー」がうまく書き込めない可能性も考えられます。<br>設定用のYAMLファイルや、環境変数を編集する事で、正常にできそうではありますが、慣れないうちは、ログインユーザーフォルダでの作業がよさそうです。</p>
</blockquote>



<p>それでは、ターミナルを開いた状態で、クローン化していきます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-2fb373169b3abd0b99c967511f59e862"><code>PS C:\Users\hoge&gt; git clone https://github.com/langgenius/dify.git
Cloning into 'dify'...
remote: Enumerating objects: 146709, done.
remote: Counting objects: 100% (800/800), done.
remote: Compressing objects: 100% (440/440), done.
Receiving objects:  5% (7336/146709), 3.07 MiB | 6.10 MiB/s, done.
Receiving objects:  6% (8803/146709), 3.07 MiB | 6.10 MiB/s, done.
            ・ 
            ・ </code></pre>



<p>これで、「C:\Users\hoge」直下に「dify」、さらにその下に「docker」ディレクトリが作成され、その中に必要なファイル群が作成されてます。<br>作成されたファイル群には、環境ファイルのサンプルも入っているので、そのファイルをコピーし、必要あれば、編集して、アプリのパッケージ（コンテナ）を生成します。<br>まずディレクトリを「dify\docker」に移動し、その中に作成されている、サンプル環境変数を正式な環境変数としてコピーし、「docker compose」コマンドで、コンテナを起動させます。</p>



<pre class="wp-block-code"><code>環境ファイルサンプル「.env.example」を、「.env」の名前でコピーし
「docker compose」コマンドで、コンテナを操作します

PS C:\Users\hoge&gt;cd dify\docker
PS C:\Users\hoge\dify\docker&gt; copy .env.example .env
PS C:\Users\hoge\dify\docker&gt; docker compose up -d</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="685" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/DockerCompose02-800x685.png" alt="" class="wp-image-10577" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/DockerCompose02-800x685.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/DockerCompose02-500x428.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/DockerCompose02-300x257.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/DockerCompose02-768x657.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/DockerCompose02.png 1074w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>ちなみに、AIに「docker compose up」は何者なのか？聞いてみました。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><code>docker compose up -d</code> コマンドは、Docker Compose ファイルに従って、コンテナをデバッグモードで起動・実行するコマンドです。<br><strong>解説:</strong><br><code>docker-compose</code>: Docker Compose を使うためのツール。複数のコンテナとそれらの依存関係を管理するためのファイル（docker-compose.yml）を読み込み、その定義に基づいてコンテナを操作します。<br><code>up</code>: Docker Compose ファイルに従ってコンテナを起動するコマンドです。<br><code>-d</code>: デバッグモードで実行することを意味します。このオプションを使えば、コンテナがバックグラウンドで動作し、ターミナルからは出力されなくなります。<br><strong><code>docker compose up -d</code> を実行すると:</strong><br><code>docker-compose.yml</code> ファイルを読み込みます。<br>定義されている各サービス (アプリケーション) のためのコンテナを起動します。<br>サービス間の依存関係を自動的に解決し、必要な順序でコンテナを立ち上げます。<br>バックグラウンドでコンテナが動作を開始します。<br><strong>使用例:</strong><br><code>docker-compose.yml</code> ファイル内に複数のアプリケーションが定義されており、それらが互いに連携して動作する場合に便利です。例えば、ウェブサーバーとデータベースの連携などを設定する際に役立ちます。</p>
</blockquote>



<p>らしいです。<br>さて、正常に完了すると、Webブラウザで下記アドレスにアクセスすると、Difyが起動します。</p>



<pre class="wp-block-code"><code>http:&#47;&#47;localhost/install</code></pre>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="800" height="657" src="https://www.kazuban.com/blog/wp-content/uploads/2025/03/localhost_install01-800x657.png" alt="" class="wp-image-10580" style="width:840px;height:auto" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/03/localhost_install01-800x657.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/localhost_install01-500x410.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/localhost_install01-300x246.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/localhost_install01-768x630.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/localhost_install01-1536x1261.png 1536w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/localhost_install01.png 1585w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<h2 class="wp-block-heading"><span id="toc11">Difyが動き出した</span></h2>



<p>やっと動き出しました。<br>いらん事しなけりゃ、簡単でしたが、結構悩んでしまいました。<br>Difyは、まだ触り始めですが、チャットだけでなく、AIを利用したいろいろなアプリを自分で作成きそうです。<br>次は、DifyとLM Studioを連携させて、ローカルLLMでのチャットボットを作ろうと思います。<br>ローカルであれば、セキュリティ的なリスクもかなり少なりますし、オンラインLLMを使用する場合の制限や課金も抑える事ができると思います。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
