見出し画像

Stable Diffusion WebUIをDifyで動かす。

Difyのローカル環境を構築して、何種類かお試ししたので、今度は、
Stable Diffusion WebUIをDifyで動かしてみようと思う。
頑張った結果の忘備録みたいなものだけど、役に立ててもらえたらうれしい。

結論から言うと、資料の通りにやってもStable Diffusion WebUIが動かなかったんだよね。

↓資料をChatGPTに翻訳してもらったやつ。

で、設定しても動かない……。

エラーの内容は、
Failed to get models, [Errno 111] Connection refused
これもChatGPTさんに聞いたら

通常、「Connection refused(接続拒否)」を意味します。これは、サーバーがリクエストを受け付けていないか、アクセスしようとしているポートが開いていない場合に発生することがあります。

ということで、原因追及しようかなと。
どれかでも動けばめっけもんだしねw
ということで、

まず、

環境その1:ローカル環境

資料そのままのやり方で、ダウンロードしたローカル環境。
とりあえず、もともとローカル実装してたやつを使うことにした。

頑張っていろいろやってみたけどダメ。
まず、

cd stable-diffusion-webui
./webui.bat --api --listen

で動かした環境を、ブラウザで起動しても、indexエラーが出て、使うことすらできない。

それでもDifyだったら行くかなーとか思ってやってみたけど、ダメでした。

環境その2:Docker使用のローカル環境

上がダメなら、同じDocker使えばどうにかなるんじゃね?っていう安易な発想から、DockerにStable Diffusion WebUIを導入。
環境構築は、こちらの記事を参照したよ

これが動けばいいんだけど…他となるとPCにLinux突っ込むとかしか思い浮かばないけど、Linux使えない(私が)

で、初期状態で登録して動かそうにも上と同じで、エラーがでてしまう。
で記事をさがしてたらこれ↓見つけた。

いやー、いろいろ試すの大変だったけど、結果から言うと、アドレスがlocalhostじゃだめだったって話だった。
英語を翻訳したのを解読するの難しいわ……。

なので、IPアドレスを確認するよ。

コマンドプロンプト(パワーシェルも可能)に

arp -a

って入力し、同じネットワーク上のPCやデバイスのIPアドレスとMACアドレスを表示する。

こんな感じで、出力されてくるので、これのたぶんDocker側のアドレスが「172.20.32.1」の方がDocker側なのかな、たぶん……
で、一番上の「172.20.36.69」がStable Diffusion WebUIのアドレスだったので、これを、「http://localhost:7860/」の、localhostのところと変更。
「http://172.20.36.69:7860/」で接続したら、Stable Diffusion WebUIが起動した。

ただこれ動的なIPになってるので、Dockerを再起動したりでIPアドレス変わったら、いちいち変更しないとダメなんだよね、たぶん。

まぁとりあえず起動まで行きついたってことで。
ここまでやれてれば、あとは、固定方法探すなり、毎回起動時に変更するなり(orz)すればいいし、覚書として。

環境その1:ローカル環境

さて、環境その2で原因が分かったので、では、もう一度チャレンジ。

cd stable-diffusion-webui
./webui.bat --api --listen

で動かしたところ、「Running on local URL: http://0.0.0.0:7860」っていう記載を発見。

でも、これで動かしても、エラーが出てしまう。
でChatGPTに聞いたら、

http://0.0.0.0:7860 と表示されている場合、これはすべてのネットワークインターフェースでポート7860をリッスンしていることを示しています。しかし、実際にブラウザでアクセスするには、具体的なIPアドレスや localhost をURLに使用する必要があります。通常、ローカルマシンからアクセスする場合は以下のURLを使用します:

http://localhost:7860

ってことだったので、「http://localhost:7860」で立ち上げたら、うまくStable Diffusion WebUIが立ち上がった!!

でも、「http://localhost:7860」だとDefyでは、エラー111になった。

ということで、localhostのIPアドレス探します。

Windowsの場合

  1. コマンドプロンプトを開きます(cmd を検索して実行)。

  2. ipconfig コマンドを入力して実行します。

  3. 出力結果の中で、使用しているネットワークアダプタを見つけます(通常「Ethernet adapter」や「Wireless LAN adapter Wi-Fi」と表示されます)。

  4. IPv4 Address がそのアダプタのローカルIPアドレスです。

macOSの場合

  1. ターミナルを開きます(Spotlight検索で「Terminal」と入力して起動)。

  2. ifconfig コマンドを入力して実行します。

  3. 出力結果の中から、使用しているネットワークインターフェースを探します(通常は en0en1)。

  4. inet の後に記載されているのがローカルIPアドレスです。

Linuxの場合

  1. ターミナルを開きます。

  2. ifconfig コマンドを入力して実行します(インストールされていない場合は sudo apt install net-tools でインストール可能)。

  3. 使用しているネットワークインターフェースの inet アドレスを探します。

で、出たのがこれ。(Windows環境です。)

なので、「http://localhost:7860」を「http://192.168.0.8:7860」に変更。
すると、

通った!!

しかし、

ってことで画像生成ができない……。
Docker環境ならこれでできたのに……。
まだまだ原因の究明は続くのかorz

因みに、DockerでもChatflowにするとなぜか画像が出てこないという……

エージェントだと出てくるのに……

まぁ、この辺りはノードの組み方とかもあるのかもしれないので、一概に言えないんだけど。

さらに、Stability Matrixも追加したよ!!もうとことんまでしっかり動くようにするために頑張る


この記事が気に入ったらサポートをしてみませんか?