<?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>Docker | じじぃの引出し</title>
	<atom:link href="https://www.kazuban.com/blog/tag/docker/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.kazuban.com/blog</link>
	<description>なにかしら、皆さんの参考になれば幸いです！</description>
	<lastBuildDate>Mon, 16 Mar 2026 04:04:27 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.kazuban.com/blog/wp-content/uploads/2020/05/cropped-ICON-1-32x32.png</url>
	<title>Docker | じじぃの引出し</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 class="wp-block-paragraph"><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 class="wp-block-paragraph">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 class="wp-block-paragraph">「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 class="wp-block-paragraph">「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 class="wp-block-paragraph">上記は正常な例ですが、古い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 class="wp-block-paragraph">dependency failed to start: container docker-db-1 is unhealthy</p>
</blockquote>



<p class="wp-block-paragraph">この時も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 class="wp-block-paragraph">ログを見る限り、データベースの初期化自体は正常に完了しています (<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 class="wp-block-paragraph">このエラーは、PostgreSQLサーバーが起動してリカバリなどの内部処理を行っている最中に、外部からの接続要求（この場合はおそらくDockerのヘルスチェックや、依存するDifyコンテナからの初期接続試行）があった場合に発生することがあります。</p>



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



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



<p class="wp-block-paragraph"><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 class="wp-block-paragraph"><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 class="wp-block-paragraph">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 class="wp-block-paragraph"><code>start_period</code> が指定されていない場合、コンテナが起動を開始すると同時にヘルスチェックが始まります。今回のデータベースのログで見たように、起動直後の一時的な準備期間中に接続を試みると <code>FATAL: the database system is starting up</code> のようなエラーが発生することがあります。</p>



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



<p class="wp-block-paragraph"><strong>解決策:</strong></p>



<p class="wp-block-paragraph"><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 class="wp-block-paragraph">アドバイス通りに、編集して再度「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 class="wp-block-paragraph">「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 class="wp-block-paragraph">とりあえず、起動しました。<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 class="wp-block-paragraph"><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 class="wp-block-paragraph">・windowsターミナル起動<br>・wslコマンドで、ubuntuターミナル起動<br>・ubuntuターミナルでカレントディレクトリを、Difyのクローンディレクトリに移動<br>・「docker compose up -d」 コマンド実行</p>
</blockquote>



<p class="wp-block-paragraph">このような手順が必要ですが、問題なのは、<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 class="wp-block-paragraph">すごいです。<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 class="wp-block-paragraph">・上記の作成したバッチファイルを、適当は場所へ保存します<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 class="wp-block-paragraph">特に必須ではないですが、ターミナルは起動状態にさせるので邪魔になる場合、作成したショートカットファイルを、マウス右ボタンで「プロパティ」を開きます。<br>「プロパティ」の「ショートカット」タブの<span class="marker-under">「実行時の大きさ」を「最小化」</span>に設定すると、起動時にタスクバーに最小化状態で起動できます。</p>
</div></div>



<p class="wp-block-paragraph">これで、再起動すると、自動起動したターミナルはタスクバーへ最小化状態ですが、環境によっては起動途中の場合があるので、すぐに使用したい場合には、一度開いて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 class="wp-block-paragraph">この画面が開くと、ローカル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 class="wp-block-paragraph">同じ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 class="wp-block-paragraph">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 class="wp-block-paragraph">詳細な情報ありがとうございます！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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">なるほど、LAN上の他のPCからアクセスできるようにしたい、ということですね。承知いたしました。</p>



<p class="wp-block-paragraph">ご自身の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 class="wp-block-paragraph"><strong>設定手順</strong></p>



<p class="wp-block-paragraph">以下の手順を<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 class="wp-block-paragraph"><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 class="wp-block-paragraph">この手順で、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 class="wp-block-paragraph">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 class="wp-block-paragraph"><code>docker ps</code> の出力結果、ありがとうございます。</p>



<p class="wp-block-paragraph">コンテナ <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 class="wp-block-paragraph">これは、以下のことを意味しています。</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 class="wp-block-paragraph"><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 class="wp-block-paragraph"><strong>結論</strong></p>



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



<p class="wp-block-paragraph">したがって、先ほどのポートフォワーディング設定のコマンドは、ポート番号 <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 class="wp-block-paragraph">これで、 <code>http://192.168.0.94</code> (ポート80は省略可能) でアクセスできるはずです。</p>



<p class="wp-block-paragraph">もし将来的に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 class="wp-block-paragraph"><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 class="wp-block-paragraph">コントロールパネル→システムとセキュリティ→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 class="wp-block-paragraph">管理者権限の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 class="wp-block-paragraph">「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 class="wp-block-paragraph">これで無事に「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 class="wp-block-paragraph">やっと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 class="wp-block-paragraph">次に、この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 class="wp-block-paragraph">ネット上でも、多くの情報があると思いますが、このサイトでも以前の記事で紹介しています。</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 class="wp-block-paragraph">Windowsアプリ「Docker Desktop」を使わず、「Ubuntu」にインストールした「Docker Engine」で「Dify」をサーバー化する方法を紹介しました。<br>「Docker Desktop」はWindows環境向けのツールであり、構築の手間は比較的少ないですが、Ubuntuサーバー上で動作させる際は、仮想化環境の設定やネットワーク通信の複雑さが生じるため、トラブルシューティングがやや難しくなります。<br>今回は、AIのアシストにより、Difyサーバーを構築することができました。<br>設定プロセスだけでなく、AIを活用した実践例として、このやり取りもご参考にしていただければ幸いです。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WSLのUbuntu24.04にDockerEngineをインストール。</title>
		<link>https://www.kazuban.com/blog/wsl-ubuntu-dockerengine/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Tue, 22 Apr 2025 11:59:02 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux (CentOS、Rocky、Ubuntu)]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[ubuntu24]]></category>
		<category><![CDATA[wsl]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=10895</guid>

					<description><![CDATA[以前の記事では、「WSL」を構築し、Windowsアプリの「Docker Desktop」をインストールし、そこに「Dify」をクローン化して起動させました。 この状態では、「WSL」環境には、別途Linuxはインストー [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">以前の記事では、「WSL」を構築し、Windowsアプリの「Docker Desktop」をインストールし、そこに「Dify」をクローン化して起動させました。</p>



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

<a href="https://www.kazuban.com/blog/dify-install/" title="話題のDifyをインストールしてみた。失敗談あり。" 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-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-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2025/03/dify-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をインストールしてみた。失敗談あり。</div><div class="blogcard-snippet internal-blogcard-snippet">話題のDifyをローカルインストールしてみました。普通にやれば何てことない作業ですが、余計な事したので時間がかかってしましました。</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.15</div></div></div></div></a>
</div></figure>



<p class="wp-block-paragraph">この状態では、「WSL」環境には、別途Linuxはインストールされていません。<br>「wsl -l -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-61003bade078a0306dab85c2cdbb4426"><code>PS C:\Users\hoge&gt; wsl -l -v
  NAME              STATE           VERSION
* docker-desktop    Running         2</code></pre>



<p class="wp-block-paragraph">現在は、仮想環境として「Docker Engine」のみが動作し、そのコンテナとして「Dify」が動作しています。<br>この状態でも、「Dify」を利用する場合には問題ありませんが、せかっくの「WSL」なので「ubuntu」環境に「Docker」を構築し、「Dify」コンテナを構築し直そうと思います。<br>また、windowsアプリ「Docker Desktop」は、ライセンス的に完全オープンではありませんし、「Dify」もLinuxとの組み合わせのほうが、貧弱スペックマシンでは、パフォーマンスが向上しそうな気がしています。</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">Docker Desktop と WSLを完全アンインストール</a><ol><li><a href="#toc2" tabindex="0">Docker Desktop のアンインストール</a></li><li><a href="#toc3" tabindex="0">wslを完全に削除する</a></li><li><a href="#toc4" tabindex="0">ハードディスクのチェック</a></li></ol></li><li><a href="#toc5" tabindex="0">WSLにUbintu24.04をインストール</a><ol><li><a href="#toc6" tabindex="0">Windows新しいアカウント作成</a></li><li><a href="#toc7" tabindex="0">Ubuntu24.04インストール</a></li><li><a href="#toc8" tabindex="0">ユーザーとパスワード設定</a></li><li><a href="#toc9" tabindex="0">root パスワード設定</a></li><li><a href="#toc10" tabindex="0">パスワード入力なしで「sudo」を実行する</a></li></ol></li><li><a href="#toc11" tabindex="0">Docker Engine をインストール</a><ol><li><a href="#toc12" tabindex="0">古いバージョンのアンインストール</a></li><li><a href="#toc13" tabindex="0">Docker Engine インストール手順（Ubuntu 編）</a></li><li><a href="#toc14" tabindex="0">コンテナの削除</a></li></ol></li><li><a href="#toc15" tabindex="0">WSL、Ubuntu24.04、Docker Engine、環境完了</a><ol><li><a href="#toc16" tabindex="0">ubuntu、docker の通信状態</a><ol><li><a href="#toc17" tabindex="0">Windowsターミナルで、ipconfig コマンド</a></li><li><a href="#toc18" tabindex="0">wslで、ip a コマンド</a></li></ol></li><li><a href="#toc19" tabindex="0">ネットワーク環境・・複雑ですね</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Docker Desktop と WSLを完全アンインストール</span></h2>



<p class="wp-block-paragraph">再度、クリーンな状態から再インストールしたい場合もあると思います<br>gemini君に教えてもらった、クリーンインストール方法をメモしておきます。</p>



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



<blockquote class="wp-block-quote is-style-default is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">★Docker Desktopのアンインストール<br>1. 「設定」アプリを開く:<br>　Windowsキー + Iキーを押すか、スタートメニューから「設定」を選択します。<br>2. 「アプリ」を開く:<br>　「アプリ」をクリックします。<br>3. 「アプリと機能」を開く:<br>　左側のメニューから「アプリと機能」を選択します。<br>4. Docker Desktopを選択してアンインストール:<br>　アプリの一覧から「Docker Desktop」を見つけて選択し、「アンインストール」をクリックします。<br>　画面の指示に従ってアンインストールを完了させます。</p>



<p class="wp-block-paragraph">★ 関連するファイルの削除 (オプション)<br>Docker Desktopのアンインストール後、残りのファイルを手動で削除することで、より完全にアンインストールすることができます。</p>



<pre class="wp-block-code"><code>1. 以下のフォルダを削除:
　`C:\Program Files\Docker`
　`C:\ProgramData\DockerDesktop`
　`C:\Users\&lt;ユーザー名&gt;\AppData\Local\Docker`
　`C:\Users\&lt;ユーザー名&gt;\AppData\Roaming\Docker`
2. Hyper-Vを無効化 (Docker DesktopでHyper-Vを使用していた場合):
　「コントロールパネル」&gt;「プログラム」&gt;「Windowsの機能の有効化または無効化」を開きます。
　「Hyper-V」のチェックボックスをオフにして、「OK」をクリックします。
　コンピュータを再起動します。
3. WSL 2を無効化 (Docker DesktopでWSL 2を使用していた場合):
　管理者としてPowerShellを開きます。

　`wsl --unregister docker-desktop`と`wsl --unregister docker-desktop-data`コマンドを実行します。
　「コントロールパネル」&gt;「プログラム」&gt;「Windowsの機能の有効化または無効化」を開きます。
　「Linux用Windowsサブシステム」のチェックボックスをオフにして、「OK」をクリックします。
　コンピュータを再起動します。
4. 環境変数の削除 (Docker関連の環境変数を設定していた場合):
　「システム環境変数の編集」を検索して開きます。
　「環境変数」ボタンをクリックします。
　ユーザー環境変数とシステム環境変数から、Dockerに関連する変数を削除します。
★注意点:
　上記のフォルダやファイルは、環境によって異なる場合があります。
　レジストリを編集する場合は、誤った操作をするとシステムに問題が発生する可能性があるため、注意が必要です。
　Docker Toolboxを使用していた場合は、VirtualBoxもアンインストールする必要があります。</code></pre>
</blockquote>



<h3 class="wp-block-heading"><span id="toc3">wslを完全に削除する</span></h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<pre class="wp-block-code"><code>★ WSLディストリビューションのアンインストール<br>　WSLに、既にLinuxディストリビューションがインストールされている場合、<br>　まず、これらを個別にアンインストールします。<br>1. 管理者権限でPowerShellまたはコマンドプロンプトを開きます。<br>2. `wsl --list --verbose` または `wsl -l -v` コマンドを実行し、インストールされているディストリビューションの一覧と名前を確認します。<br>3. `wsl --unregister &lt;ディストリビューション名&gt;` コマンドを実行します。<br>　例：`wsl --unregister Ubuntu-24.04`<br>4. 他のディストリビューションに対しても同様の手順を繰り返します。<br>**補足:**<br>　ディストリビューションをアンインストールすると、そのディストリビューションに関連付けられたすべてのデータが削除されます。<br>　必要なデータがある場合は、事前にバックアップしてください。<br>　Microsoft Storeからインストールしたディストリビューションは、通常のWindowsアプリと同様にアンインストールすることも可能です。</code></pre>



<p class="wp-block-paragraph">★WSL機能の無効化<br>　ディストリビューションをアンインストールした後、WSL機能を完全に無効化することもできます。<br>1. 「コントロールパネル」&gt;「プログラム」&gt;「Windowsの機能の有効化または無効化」を開きます。<br>2. 「Windows Subsystem for Linux」と「仮想マシン プラットフォーム」のチェックボックスをオフにします。<br>3. 「OK」をクリックし、コンピューターを再起動します。<br>**補足:**<br>　WSL機能を無効化すると、すべてのWSL関連機能が利用できなくなります。<br>　Hyper-Vを有効にしている場合は、Hyper-Vも無効にする必要があります。<br>**その他の注意点**<br>　 WSL関連のファイルやフォルダが残っている場合は、手動で削除することも可能です。ただし、システムの重要なファイルを誤って削除しないように注意してください。<br>　レジストリを編集する場合は、誤った操作をするとシステムに問題が発生する可能性があるため、注意が必要です。</p>



<p class="wp-block-paragraph">これらの手順に従うことで、WSLを完全に削除することができます。</p>
</blockquote>



<h3 class="wp-block-heading"><span id="toc4">ハードディスクのチェック</span></h3>



<p class="wp-block-paragraph">古いPCにインストールしていると、ハードディスクの調子が悪いのか？WSLが正常にインストールできない事がありました。<br>Windows付属のチェッカーで回復する可能性がありますので、メモしておきます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<pre class="wp-block-code"><code>★システムファイルチェッカー（SFC）の実行:<br>システムファイルの破損を修復します。<br>管理者権限でコマンドプロンプトを開き、<br>「sfc /scannow」と入力して実行。</code></pre>



<pre class="wp-block-code"><code>★DISMコマンドの実行:<br>SFCで修復できないシステムイメージの破損を修復します。<br>管理者権限でコマンドプロンプトを開き、<br>「DISM /Online /Cleanup-Image /RestoreHealth」と入力して実行。</code></pre>
</blockquote>



<h2 class="wp-block-heading"><span id="toc5">WSLにUbintu24.04をインストール</span></h2>



<p class="wp-block-paragraph">「Docker Desktop」と「WSL」のアンインストール方法を紹介しました。<br>今回は、WSLに「Ubuntu24.04」を構築し、「Docker Engine」環境を構築しますが、まだ「Docker Desktop」の環境は残しておきたいので、Windowsに新しいユーザーアカウントを作成し新しい環境で作業したいと思います。</p>



<h3 class="wp-block-heading"><span id="toc6">Windows新しいアカウント作成</span></h3>



<p class="wp-block-paragraph">新しいユーザーの作成方法は、ネット上に情報がありますので、検索してみてください。<br>新しいユーザーでサインインし、新たに「WSL」環境を構築する場合では、<a href="https://www.kazuban.com/blog/dify-install/#toc2">こちらを参考してしてください。</a><br>新しいユーザーでサインインした初期状態では「wsl -l -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-d9e0fabbc58256b0c43e584ae615cf92"><code>PS C:\Users\hoge2&gt; wsl -l -v
Linux 用 Windows サブシステムにインストールされているディストリビューションはありません。
この問題を解決するには、以下の手順に従ってディストリビューションをインストールしてください:

'wsl.exe --list --online' を使用して利用可能な配布を一覧表示する
および 'wsl.exe --install &lt;Distro&gt;' を使用してインストールしてください。</code></pre>



<h3 class="wp-block-heading"><span id="toc7">Ubuntu24.04インストール</span></h3>



<p class="wp-block-paragraph">いよいよインストールを始めますが、２つの方法<br><span class="marker">「Microsoft Store 経由」</span>と<span class="marker">「wsl コマンド経由」</span>があります。<br>どちらでもいいと思いますが、アンインストールなどアプリの管理は「Microsoft Store 経由」のほうが簡単です</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="685" height="229" src="https://www.kazuban.com/blog/wp-content/uploads/2025/04/ubuntu_uninstall.png" alt="" class="wp-image-10920" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/04/ubuntu_uninstall.png 685w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/ubuntu_uninstall-500x167.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/04/ubuntu_uninstall-300x100.png 300w" sizes="(max-width: 685px) 100vw, 685px" /></figure>



<p class="wp-block-paragraph">インストール自体はどちらも、簡単です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>「Microsoft Store 経由」</strong><br>・Microsoft Store を開き、「Ubuntu 24.04」を検索。<br>・ 「入手」をクリック。<br>・ インストールが完了したら、「起動」をクリックします。</p>
</blockquote>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<pre class="wp-block-code"><code><strong>「wsl コマンド経由」</strong><br>・PowerShell またはコマンドプロンプトを管理者権限で開く。<br>・「wsl --list --online」　でLinux ディストリビューションが一覧表示できる<br>・希望のディストリビューションをインストール<br>・「wsl --install -d Ubuntu-24.04」<br>・インストールが完了後「Ubuntu」起動</code></pre>
</blockquote>



<h3 class="wp-block-heading"><span id="toc8">ユーザーとパスワード設定</span></h3>



<p class="wp-block-paragraph">「ubuntu」の起動は、<strong>「Microsoft Store 経由」</strong>であれば、「スタートメニュー」にアイコンが作成されています。<br><strong>「wsl コマンド経由」</strong>の場合は、<span class="marker-under-red">ターミナルを起動し「wsl」コマンド</span>で起動できます。<br>「ubuntu」の最初の起動では、Unixユーザ名の作成を求められます。<br>特に、<span class="marker-under">WIndowsユーザーと同じ必要はない</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-fc02e0d8562effd42ffe46450ba1b04b"><code>・
Enter new UNIX username: hoge2
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
・</code></pre>



<h3 class="wp-block-heading"><span id="toc9"><a href="https://www.kazuban.com/blog/ubuntu24-04lts-install/#toc4">root パスワード設定</a></span></h3>



<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/ubuntu24-04lts-install/#toc4">こちらでもレポートしましたが、</a>「ubuntu」では管理権限が必要な場合には「sudo」コマンドで行い、「root」ユーザーは極力使わないを基本にしているみたいです。<br>したがってデフォルトでは「root」パスワードは設定されていません。<br>ただ、管理者権限が必要なコマンドやフォルダのアクセスなど、設定やメンテナンスの場合一回一回「sudo」を使うのは面倒です。<br>「root」での作業は、注意が必要ですが、管理者コマンドの連続の場合、筆者は使用しています。<br>その場合、筆者は「root」パスワードを設定しています。<br>「root」パスワードは、「<strong>sudo passwd root</strong>」コマンドで設定できます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-dde0e4ebbde19058c0f2e736a10d5ac3"><code>$ <strong>sudo passwd root</strong>
&#91;sudo] password for hoge2:
New password:
Retype new password:
passwd: password updated successfully</code></pre>



<p class="wp-block-paragraph">設定されました。<br>「root」になりたい時には、「<strong>su</strong>」コマンドを使用します。<br>「root」になると<span class="marker-under">「$」プロンプトが「#」に換わります</span>。<br>元のユーザに戻るには「exit」コマンドを実行します。<br>現在のユーザーは<strong>「whoami」</strong>で確認できます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-68b89d914433fdcecff4aa14f883c22a"><code>$ su
Password:
# whoami
root
# exit
exit
$ whoami
hoge2</code></pre>



<h3 class="wp-block-heading"><span id="toc10"><a href="https://www.kazuban.com/blog/ubuntu24-04lts-install/#toc5">パスワード入力なしで「sudo」を実行する</a></span></h3>



<p class="wp-block-paragraph">通常は「sudo」コマンドを使用しますが、いちいちパスワードを聞かれるので、結構面倒です。<br>パスワードなしで「sudo」を実行できる設定は「<strong>visudo</strong>」コマンドの特殊なエディターで設定します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-6ce0f568d9dd915d1416c311f160bcaa"><code>$ sudo visudo
・
・
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
・
## Same thing without a password
%sudo  ALL=(ALL)       NOPASSWD: ALL
・
・</code></pre>



<p class="wp-block-paragraph">開いた設定ファイルに、<br>「<strong>%sudo ALL=(ALL) NOPASSWD: ALL</strong>」<br>この設定値を追加し上書き保存します。<br>この設定で、「sudo」グループのユーザーは「sudo」が実行でき、パスワードが不要になります。<br>ただし、「sudo」コマンドを実行できるのは、「sudoグループ」登録されているユーザーのみなので、現ユーザーを「suduグループ」に登録します。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-5233c8631e0434e59df2d96b04c678e1"><code>$ sudo usermod -aG sudo $USER
$ newgrp sudo</code></pre>



<p class="wp-block-paragraph">この設定で、現ユーザーは「sudoグループ」に登録され「sudo」コマンドが実行できます。</p>



<h2 class="wp-block-heading"><span id="toc11">Docker Engine をインストール</span></h2>



<p class="wp-block-paragraph">「ubuntu」を操作できるユーザー設定が完了したので、いよいよ「Docker Engine」をインストールしていきます。</p>



<h3 class="wp-block-heading"><span id="toc12">古いバージョンのアンインストール</span></h3>



<p class="wp-block-paragraph">古いバージョンがインストールされている可能性がある場合には、念のため次のコマンドを実行してアンインストールしておきます</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-5e783d0bf34da85fe663e43a0535a4c6"><code>$ sudo apt-get remove docker docker-engine docker.io containerd runc</code></pre>



<p class="wp-block-paragraph">完全に削除するには、次のコマンドでボリュームやイメージデータを削除します</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-54d678a774dd4d386fc6f087086e69af"><code>$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd</code></pre>



<h3 class="wp-block-heading"><span id="toc13">Docker Engine インストール手順（Ubuntu 編）</span></h3>



<p class="wp-block-paragraph">・依存パッケージのインストール</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-a2c47e3f5046f72fdf0a3f50049035f5"><code>$ sudo apt-get update
$ sudo apt-get install -y ca-certificates curl gnupg lsb-release</code></pre>



<p class="wp-block-paragraph">・ディレクトリを作製し、Docker の公式 GPG 鍵を追加</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-2d47be207e0dd8a1d44e7762ef4f8b1c"><code>$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg</code></pre>



<p class="wp-block-paragraph">・Docker リポジトリを追加</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-e87b6a4cc47a4f6b45a88a5e27194977"><code>$ echo \
  "deb &#91;arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null
</code></pre>



<p class="wp-block-paragraph">・パッケージ更新＆インストール</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-68d773d294e1b2fe4dc74661d04f1575"><code>$ sudo apt-get update
$ sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin</code></pre>



<p class="wp-block-paragraph">・Docker の動作確認</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-8c7d37f805187e8429f6bb76d96429b4"><code>$ sudo docker run hello-world

↑ これで「Hello from Docker!」が出れば OK！</code></pre>



<p class="wp-block-paragraph">・dockerコマンド実行は、「sudo」 が必要ですが、実行ユーザーがdockerグループであれば、不要になります。<br>下記コマンドで、douckerグループに参加させます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-042b07a7be729546f3a49ee27f929557"><code>$ sudo usermod -aG docker $USER
$ newgrp docker</code></pre>



<h3 class="wp-block-heading"><span id="toc14">コンテナの削除</span></h3>



<p class="wp-block-paragraph">動作確認で「hello-world」コンテナを作製しましたが、コンテナ削除操作を覚書しておきます。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-d865aecab9cd8fd2a9ad3857cce481a6"><code>★コンテナの一覧を表示
$ docker ps -a

★コンテナ削除
$ docker rm &lt;CONTAINER ID または NAMES&gt;

★hello-world イメージ自体を削除
★動作している場合に、エラーになるので、コンテナ削除後にイメージ削除
　 ※"hello-word"のCONTAINER IDを表示する
　 $ docker ps -a -q --filter ancestor=hello-world
$ docker rm $(docker ps -a -q --filter ancestor=hello-world)
$ docker rmi hello-world

★全てのコンテナと全てのコンテナイメージを削除
  -f オプションを付加すると、強制的に削除されるので注意
$ docker rm -f $(docker ps -a -q)
$ docker rmi -f $(docker images -a -q)

★ボリュームの削除: 全ボリュームを削除します。
$ docker volume rm $(docker volume ls -q)

★ネットワークの削除: ネットワークを削除します。
$ docker network rm $(docker network ls -q)

★キャッシュのクリア: 必要に応じて、Dockerのキャッシュをクリアします。
$ docker system prune -a

★すべての停止中コンテナと未使用イメージのみを一掃
　実行中のコンテナは削除しない
$ docker system prune</code></pre>



<h2 class="wp-block-heading"><span id="toc15">WSL、Ubuntu24.04、Docker Engine、環境完了</span></h2>



<p class="wp-block-paragraph">WSL、ubuntu、docker の環境が出来上がりました。<br>次に、dockerでDifyの環境をセットアップする予定ですが、windowsアプリの「docker Desktop」の場合は、ある程度アプリがやってくれそうですが、今回は「Ubuntu24.04」環境に「Docker」をインストールしたのでネットワーク環境が複雑になりそうな気がしています。</p>



<h3 class="wp-block-heading"><span id="toc16">ubuntu、docker の通信状態</span></h3>



<p class="wp-block-paragraph">windows環境とwsl環境で、通信状態を調べてみます。</p>



<h4 class="wp-block-heading"><span id="toc17">Windowsターミナルで、ipconfig コマンド</span></h4>



<pre class="wp-block-code"><code>PS C:\Users\hogehoge2&gt; ipconfig
Windows IP 構成
・
Wireless LAN adapter Wi-Fi:
   接続固有の DNS サフィックス . . . . .:
   IPv6 アドレス . . . . . . . . . . . .: 240f:110:2717:1:f62b:3484:aafb:ade5
   一時 IPv6 アドレス. . . . . . . . . .: 240f:110:2717:1:b1bf:2b2:5d5d:2a98
   リンクローカル IPv6 アドレス. . . . .: fe81::84c1:d56e:ece:1ad8%15
   IPv4 アドレス . . . . . . . . . . . .: <strong>192.168.0.94</strong>
   サブネット マスク . . . . . . . . . .: <strong>255.255.255.0</strong>
   デフォルト ゲートウェイ . . . . . . .: fe81::fab7:98ff:fe4b:95b8%15
・                                          192.168.0.1
イーサネット アダプター vEthernet (WSL):
   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: fe81::f749:f04d:c08e:932%44
   IPv4 アドレス . . . . . . . . . . . .: <strong>172.31.224.1</strong>
   サブネット マスク . . . . . . . . . .: <strong>255.255.240.0</strong>
   デフォルト ゲートウェイ . . . . . . .:</code></pre>



<p class="wp-block-paragraph">WindowsホストマシンIPアドレス、家庭内LAN：<br> 192.168.0.94/24<br><br>WSL Windows側IPアドレス、WindowsとWSL間の通信するためのゲートウェイ：<br> 172.31.244.1/20</p>



<h4 class="wp-block-heading"><span id="toc18">wslで、ip a コマンド</span></h4>



<pre class="wp-block-code"><code>$ ip a
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2:<strong> eth0:</strong> &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:c8:2e:42 brd ff:ff:ff:ff:ff:ff
    inet <strong>172.31.226.6/20</strong> brd 172.31.239.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe81::215:5dff:fec8:2e42/64 scope link
       valid_lft forever preferred_lft forever
3: <strong>docker0</strong>: &lt;NO-CARRIER,BROADCAST,MULTICAST,UP&gt; mtu 1500 qdisc noqueue state DOWN group default
    link/ether ba:b5:41:49:d7:3c brd ff:ff:ff:ff:ff:ff
    inet <strong>172.17.0.1/16</strong> brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever</code></pre>



<p class="wp-block-paragraph">WSL Docker側IPアドレス、WSL環境はこのアドレスで、Windowsと通信：<br> 172.31.226.6/20<br><br>docker0 のIPアドレス、Dockerがコンテナにネットワーク機能を提供するためにWSL 2のLinux環境内に作成する<strong>ブリッジネットワークインターフェース</strong>です<br>172.17.0.1/16</p>



<h3 class="wp-block-heading"><span id="toc19">ネットワーク環境・・複雑ですね</span></h3>



<p class="wp-block-paragraph">次回、DockerにDifyのコンテナを作成しようと思います。<br>LAN内でも別のPCからのアクセス可能にしたいので、設定状況をレポートします。</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
