【VPN Azure】「Stable Diffusion Web UI(AUTOMATIC1111版)」を外出先から利用する方法

# 目次
[1. はじめに](#1-はじめに)
[2. webuiを同一ネットワーク上の端末からの操作可能な状態にする](#2-webuiを同一ネットワーク上の端末からの操作可能な状態にする)
[3. 外出先からアクセス可能な状態にする（VPN Azureの導入）](#3-外出先からアクセス可能な状態にするvpn-azureの導入)
[4. 外部端末にVPNクライアントを導入する](#4-外部端末にvpnクライアントを導入する)
[5. 外出先からwebuiのbatファイルを起動可能にする](#5-外出先からwebuiのbatファイルを起動可能にする)
[6. おわりに](#6-おわりに)

# 1. はじめに
webuiはデフォルトでローカル端末上でしか操作できませんが、webui起動時にshareもしくはlistenを引数に与えることで外部端末のブラウザから操作できます。
###### 
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Command-Line-Arguments-and-Settings

shareはインターネット経由で利用できる公開URLを発行し、listenはネットワーク上の端末からのアクセスを可能にする引数です。外出先からの操作の場合、shareを使った方が簡単ですがこれには以下の欠点があります。

・発行されるURLのドメインが毎回ランダムなため、webuiを立ち上げる度にURLをコピーまたはメモしてブラウザに入力する必要がある
・操作側のブラウザでbatch countを3以上にし生成すると、ボタン操作を受け付けなくなる（ページを更新すると解決する）

listenはこれらの欠点がないですが、端末間を同一ネットワークにする必要があります。そこで今回VPN接続を用いた外出先からのアクセス方法を紹介します。


# 2. webuiを同一ネットワーク上の端末からの操作可能な状態にする
冒頭で記載した通り、listenを引数に与えれば外部端末から操作できます。webui.batが入っているフォルダに以下のようなbatファイルを作成します。

```bat:webui-user-listen.bat
@echo off
set COMMANDLINE_ARGS=--listen
call webui.bat
```
次に、ネットワーク上の端末からアクセスできるようにポート開放を行います。以下の記事を参考にファイアウォールの設定を行ってください。

###### 
https://zenn.dev/garyuten/articles/229c126405de37



##### 確認作業
webui-user-listen.batを起動し、外部端末のブラウザにローカル端末のIPアドレス(192.168.xxx.xxx)とポート番号(7860)を入力するとwebuiにアクセスできます。

スマホからアクセスした例（ブラウザに192.168.10.123:7680と入力）
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128480/39d07369-55d2-9e13-6060-53034e0f90df.jpeg width=40%>


# 3. 外出先からアクセス可能な状態にする（VPN Azureの導入）
VPN Azureはマンション等の集合住宅に住んでいて、回線を共有している場合でも自宅の端末をVPNサーバー化できる仕組みです。

###### a). SoftEther VPN Serverのインストール
以下のサイトにアクセスします。
######
https://www.softether-download.com/ja.aspx

「SoftEther VPN(Freeware)」「SoftEther VPN Server」「Windows」「Intel(x86 and x64)」を選択
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128480/a6558436-a8f0-3e43-b1c1-fd3aece8f396.png width=50%>
最新のrtm版をダウンロード
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128480/41698c9f-cce7-79ba-2fac-0cd8a5e1ee38.png width=100%>
ダウンロードしたインストーラーを起動します。インストールするソフトウェアの選択でSoftEther VPN Serverを選択した後、デフォルトの状態で進めていけばインストール完了です。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128480/2ab6b64e-decf-110b-ba94-c192ef926e80.png width=60%>

###### b). VPN Azureの設定（以下のサイトを参考に設定してください）
https://www.gadgets-today.net/?p=7142

これでサーバー側(自宅PC)の設定は以上です。


# 4. 外部端末にVPNクライアントを導入する
Open SSTP Clientをインストール
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128480/a74e01c1-c9a7-4630-c1e5-de53c2131ac5.jpeg width=60%>
アプリを開き、SoftEtherで設定したVPN Azureのホスト名、ユーザー名、パスワードを入力し、接続ボタンを押して以下のようになったら成功です。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128480/37442f93-31c6-90bb-42aa-e205df22924e.jpeg width=40%>

これで[ネットワーク上でアクセスしていた時と同様の方法](#確認作業)で外出先からwebuiを操作できるようになりました。

【2023/03/05追記】
VPN接続が頻繫に切れる場合はSETTING→ReconnectionのEnable Reconnectionをオンにしてください。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128480/52f80b1f-c5e2-45d4-f2be-787b7dc792c9.jpeg width=40%>


# 5. 外出先からwebuiのbatファイルを起動可能にする
webuiを常時立ち上げっぱなしにして問題ないならこの設定は必要ありません。chromeリモートデスクトップを用いると簡単にリモートアクセスできます。
###### 
https://dekiru.net/article/21959/

スマホからアクセスするとこんな感じです
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128480/ab81cc83-ec02-fb10-fc36-25a105a7f53c.jpeg width=40%>

batファイルを起動するショートカットをデスクトップかタスクバーに作成すると便利です。ショートカットのリンク先は以下のようにします。
```
C:\Windows\System32\cmd.exe /c C:\"webuiが入っているフォルダのパス"\webui-user-listen.bat
```

# 6. おわりに
VPN接続を用いた外出先からのwebuiアクセス方法について解説しました。VPNを利用するとファイルサーバから生成したイラストのフォルダにもアクセスできるので非常に便利です。記事の内容に疑問点等がありましたらコメントしてくださると助かります。