ブラウザから受け付けたHTTPアクセス転送してサーバー内部のStable Diffusion Web UIに接続する方法

サーバー内でhttp://localhost:8080で起動しているStable Diffusion Web UIがあります。外部からhttp://mydomein.comへのアクセスをapache httpdで受け付け、Stable Diffusion Web UIに転送します。これによりStable Diffusion Web UIをインターネットを介してアクセスできます。

その設定方法をご紹介します。DNS設定はお名前.comのサービスを使用します。

1. ドメインの登録:

お名前.comなどのドメイン登録サービスでmydomain.comを購入します。

2. DNSレコードの設定:

お名前.comの管理パネルにログインし、以下の手順でDNSレコードを設定します。

a. Aレコードの追加:

新しいAレコードを追加し、ホスト名を空白または@に設定し、値にサーバーのパブリックIPアドレスを指定します。

b. CNAMEレコードの追加(オプション):

wwwなどのサブドメインを使用する場合、新しいCNAMEレコードを追加し、ホスト名をwwwなどのサブドメインに設定し、値にドメイン名を指定します。

3. Apache HTTPサーバーの設定:

Apacheの設定を変更して、外部からの接続を受け付け、Stable Diffusion Web UIに転送するようにします。

a. Apacheの設定ファイル(一般的にはhttpd.conf)を編集します。
b. VirtualHostディレクティブを使用して、ドメイン名に基づく仮想ホストを設定します。以下は例です:
<VirtualHost *:80>
  ServerName mydomain.com
  ServerAlias www.mydomain.com
  ProxyPass / http://localhost:8080/
  ProxyPassReverse / http://localhost:8080/
</VirtualHost>

上記の設定では、外部からのアクセスをポート80(デフォルトのHTTPポート)で受け付け、ProxyPassとProxyPassReverseディレクティブにより、アクセスをポート8080のWebシステムに転送します。

この設定により、外部からhttp://mydomain.comにアクセスすると、Apacheはリクエストをポート8080のWebシステムに転送し、Webシステムが正常に動作するはずです。

これはクライアントからの要求を別のサーバーに転送する仕組みです。これは、クライアントが直接アクセスできない内部のサーバーを公開する場合や、負荷分散を行う場合などにも使用されます。


4. リダイレクトで転送したい場合

上記の方法はリバースプロキシを使ってアクセス転送を実現しました。この方法の他にリダイレクトで転送する方法もあります。

リダイレクトは、クライアントの要求を新しいURLに自動的に転送する仕組みです。これは、特定のURLにアクセスした場合に別のURLにリダイレクトする場合などに使用されます。例えば、http://mydomain.comからhttp://mydomain.com/newにリダイレクトする場合、RewriteRuleを使用して次のような設定を行います:

RewriteEngine On
RewriteRule ^/$ /new [R=301,L]

リダイレクトとリバースプロキシの選択は、具体的な要件によります。もし、クライアントの要求を単純に別のURLにリダイレクトするだけであれば、RewriteRuleによるリダイレクトが適しています。しかし、内部のWebシステムを公開したり、負荷分散を行ったりする必要がある場合は、リバースプロキシの使用が推奨されます。

要件や目的に合わせて、リダイレクトかリバースプロキシかを選択してください。

BRA6リリース!!

先日BRA5が凄いらしいと記事にしましたが、
somegazo.hatenadiary.jp


2023年7月7日にBRA6がリリースされました!!
Beautiful Realistic Asians - v6.0 | Stable Diffusion Checkpoint | Civitai


これまたとんでもない品質の画像が生成できるようです。さっそく使ってみましたが、BRA5と比較すると日本人らしくなったように感じます。より実写のようになったかは、まだ少ししか使っていないせいか言われてみればより実写っぽくなっているかな程度でそんなに変わっていない感じがします。


そして、デフォルトで「NSFW」になるようです。
「NSFW」とは「Not safe for work」の略で仕事場でも見れるくらい過激な表現を避けたもののことのようです。過激なものを見続けると感覚がおかしくなってくるので、エンジニアとしはありがたいことだと感じています。

ちなみに「NSFW」は私は画像生成し始めて初めて知りました。

Stable Diffusion web UI 環境構築について

今のところ seaart.ai が使用できるので必要ないですが、今後使用できなくなったら Stable Diffusion web UI をLinux上に環境構築して画像生成しようと思います。

そのため環境構築について調査しておきます。

インストール

必要なソフトはこんなものでした。モデルやLoRaはStable Diffusion web UIでインターネットから取得できるので、ここでは取得しません、

設定

GPUでなくCPUで実行するための設定

実行

実行してブラウザで「http://127.0.0.1:7860」を開くとWebUIが起動するとのことです。しかしOCIのOracle Linuxインスタンスでは、GUIがなくてブラウザを見ることが出来ません。なので、Webサーバーと連携して使うことになるかな。



次回はOracle LinuxインスタンスにWebサーバーを建てて、そこにアクセスしたらStable Diffusion web UI(http://127.0.0.1:7860)に転送する方法を確認して記事にしよう。

BRAV5のクオリティが凄いらしい

stable diffusion で使えるモデルで BRAV5 というのが非常に高いクオリティのようです。アジア系の美しい女性を画像生成した場合に能力を発揮するとのことで、色々なところで話題になっています。

正式には Beautiful Realistic Asians というモデルの Version 5 のようです。こちらからダウンロード出来ます。
Beautiful Realistic Asians - Brav5 | Stable Diffusion Checkpoint | Civitai

seaart.ai で使用してみましたが、他のモデルも非常に高いクオリティなので BRAV5 だけ何でこんなに話題になっているのか分かりませんでした。まだ能力を引き出せていないだけかもしれないので引き続き使用していきます。

あとがき

なんと BRAV6Beta が使われ始めていました。さらにクオリティが上がったのでしょうか。使用して生成した画像をTwitterに上げている人を複数人確認しました。#Brav6beta で検索すると非常に高いクオリティの画像が出てきます。 私も調査し使用して情報記載します。

stable diffusion / モデル / Lora

stable diffusion はオープンソース

オープンソースなのでサービスに組み込むことが出来る。stable diffusion web ui とか、seaart.ai も stable diffusion を組み込んでいる。stable diffusion のフル機能を使えるかどうかは、そのサービス次第になる。stable diffusion web ui も seaart.ai も今のところ何も不自由に感じないくらいの機能の充実度。

stable diffusion のモデルとは?

設定するとそのモデルに沿った画像が生成される。目的に沿ったモデルを設定するとクオリティを跳ね上げることが出来る。学習モデルの略称なのかな。誰かが作成したモデルが沢山あって公開されているので、それらを使わせてもらうといい。

サービスにモデルが無い場合は、ここからダウンロードすることが出来る。ダウンロードしたモデルをアップロードできるサービスであれば、サービスにモデルが無くても使うことが出来る。
Civitai | Stable Diffusion models, embeddings, LoRAs and more

Lora とは?

よく分からないが使ってみた感じ、指定した人物を強調した画像が生成できる。寄せたい人物がいるときに使用するのかと思う。人物を固定して様々な画像を生成できると便利だと思うけど、Loraでは固定というほどではないかと思いました。人物を固定するなら ControlNet でそのような機能があるようです。そちらについては、調査してまた次回以降記事にしようと思います。

seaart.ai で画像生成

stable diffusion で画像生成が簡単に出来るとのことで調査してみました。

GPUで画像生成することが推奨されていて、CPUでも画像生成できるんだけど個別に設定が必要で画像生成に時間もかかるようです。

Google Colab

私はGPUを持っていないのでGPUが使えるサービスを探しました。すると、まっさきに出てきたのは Google Colab です。クラウド上のインスタンス的な領域を自由に、無料で使用できます。ここでGPUを使用することが出来ます。そこで stable diffusion を使ってみようと環境構築したのですが、うまくいきませんでした。色々調べてみると、最近制限が厳しくなってAIを使った画像生成で使用が出来なくなっているとの情報を見ました。

seaart.ai

次に見つけたのが seaart.ai というサイトで、良さそうです。無料で画像生成することが出来ます。生成時間も短い(10秒くらい)なので、おそらくGPUを使用しているのでしょう。
https://www.seaart.ai/home

どこの誰が作成して公開しているのか分からなかったのですが、ところどころに中国語が出てくるので、中国製なのかなと思います。