WindowsでStable Diffusion web UIをローカル実行する

# 概要
WindowsでStable Diffusion web UIをローカル実行できる環境を構築します。
Dockerを利用します。
参考：
[WSL を使用して Windows に Linux をインストールする](https://learn.microsoft.com/ja-jp/windows/wsl/install "WSL を使用して Windows に Linux をインストールする")
[GitHub AbdBarho/stable-diffusion-webui-docker](https://github.com/AbdBarho/stable-diffusion-webui-docker/wiki/Setup "GitHub AbdBarho/stable-diffusion-webui-docker")

## Docker環境のセットアップ
### WSL2(Windows Subsystem for Linux)の導入
管理者として PowerShell を開く

"Linux 用 Windows サブシステム" オプション機能を有効にする
```powershell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
```

"仮想マシン プラットフォーム" オプション機能を有効にする
```powershell
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```

実行例
```powershell
PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.22621.1

イメージのバージョン: 10.0.22621.2134

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。
PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.22621.1

イメージのバージョン: 10.0.22621.2134

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。
PS C:\WINDOWS\system32>
```

PCを再起動します
起動したら、管理者として PowerShell を開く

新しい Linux ディストリビューションをインストールする際にWSL2を既定のバージョンとするように設定する
```powershell
wsl --set-default-version 2
```

実行例
```powershell
PS C:\WINDOWS\system32> wsl --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
この操作を正しく終了しました。
PS C:\WINDOWS\system32>
```

wslをアップデートする
[wsl_update_x64.msi](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi "wsl_update_x64.msi")をダウンロードし、インストールする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/d9286a43-74ba-3372-78d0-fafc9f317150.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/4cbb2c34-6e91-26b9-ea52-db86980a8a5e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/7d902e45-0ad1-36ff-9607-2a45457a3f84.png)

Microsoft Storeを起動し、Ubuntu（Ubuntu 20.04.6 LTS）をインストールする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/eacc8001-aa0e-1b9a-20a4-531b804fa623.png)

Ubuntu（Ubuntu 20.04.6 LTS）を開きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/73f8b52f-2e45-7f3e-a361-0cbd3efda5e0.png)

username（ユーザ名）とpassword（パスワード）を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/5a5f48ee-52e5-9b81-4c20-a44ae47c7c68.png)

## Docker Desktop for Windowsの導入
★注意★
Dockerをインストール済の場合は、必ずアンインストールしてから以下の手順に進んでください。

[Docker Desktop](https://www.docker.com/products/docker-desktop/ "Docker Desktop")をダウンロードし、インストールします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/70aa2a58-c585-aa60-e6c9-7bbeed4a0009.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/9bb2292f-6aba-225e-65b4-9540ab131a91.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/fab68415-c0a7-2288-bca9-8f6e000dd513.png)
次の手順で、強制的にログアウトしますので、事前に他のアプリケーションを終了してください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/039b2f98-eada-0e95-979f-909b80d7f1b4.png)

ログインします

Docker Subscription Service AgreementにAccept（合意）してください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/85a01b00-17f8-d6b0-791f-6dddab1fab66.png)
アカウントを作成しない方はContinue without signing inをクリックしてください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/953161a0-c408-dea7-76a9-b23408f133b1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/d0e414e9-9ddc-bd5e-0b2e-2be9df11833c.png)

管理者として PowerShell を開く

Docker、Docker-composeのバージョンを確認します
```powershell
docker version
docker-compose version
```
実行例
```powershell
PS C:\WINDOWS\system32> docker version
Client:
 Cloud integration: v1.0.35-desktop+001
 Version:           24.0.5
 API version:       1.43
 Go version:        go1.20.6
 Git commit:        ced0996
 Built:             Fri Jul 21 20:36:24 2023
 OS/Arch:           windows/amd64
 Context:           default

Server: Docker Desktop 4.22.0 (117440)
 Engine:
  Version:          24.0.5
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.6
  Git commit:       a61e2b4
  Built:            Fri Jul 21 20:35:45 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
PS C:\WINDOWS\system32> docker-compose version
Docker Compose version v2.20.2-desktop.1
PS C:\WINDOWS\system32>
```
## Gitを導入する

[Docker Desktop](https://git-scm.com/downloads "Docker Desktop")のWindowsから、[64-bit Git for Windows Setup.](https://github.com/git-for-windows/git/releases/download/v2.41.0.windows.3/Git-2.41.0.3-64-bit.exe "64-bit Git for Windows Setup.")をダウンロードし、インストールします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/f4e2284d-044d-7c3a-6a25-2d0799a93173.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/fe5229c9-729b-7b13-3455-b60ebc77ec1e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/0b174bbf-d95e-1386-3ba6-80659c2abaae.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/901e2802-40e4-34d9-ff82-ef05687d5e6b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/13fc2da5-e1bb-8701-a373-f7aff1322e3d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/14111426-c77e-99a2-4522-9d72ae5def5f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/75d559d3-8b1e-af72-e36a-ec1697500627.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/929339ac-094a-cec4-f0f4-b2b54b117efb.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/cdeef98c-43e5-b955-88da-0eaee2d00fd2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/8a333e09-4b6a-64e6-70c1-52d63b6b3fff.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/8d6c22bf-4a45-d43f-bb06-73a1ac6271ed.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/9e0de764-b994-5c90-e43b-f6648c0b7b69.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/f079ab80-15ae-4df7-bf63-64e9ba0866d4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/922bc790-e0ed-9ae2-c30d-0384f22cc879.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/89af028b-8760-ab72-5fe9-37233434ef50.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/967a937b-c1a1-c7e7-fef3-acb851f29091.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/cf9366bf-e062-509b-4047-cfa552a172b4.png)

Git Bash を開く

Gitのバージョンを確認します
```bash
git --version
```
実行例
```bash
tf88i@taggalleria MINGW64 ~
$ git --version
git version 2.41.0.windows.3

tf88i@taggalleria MINGW64 ~
$
```

## Stable Diffusion web UIを導入する
ディレクトリ~/Devを作成する
```bash
mkdir ~/Dev
```

Git Bash を開く

ディレクトリ~/Dev/へ移動
```bash
cd ~/Dev
```

Git リポジトリをクローン
```bash
git clone https://github.com/AbdBarho/stable-diffusion-webui-docker.git
```

リポジトリ(のフォルダ)へ移動
```bash
cd stable-diffusion-webui-docker
```

ビルドします（時間がかかります）
```bash
docker compose --profile download up --build
```

Stable Diffusion WebUI を起動（初回はビルドが必要になるため、起動まで時間がかかります）
```bash
docker compose --profile auto up --build
```

ポップアップが出たら、アクセスをプライベートネットワークのみ許可します
許可したら、Stable Diffusion WebUIが起動している状態になっています
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/c2a83f33-9cf4-32cb-b23d-4f17bc3a7be7.png)

Webブラウザで http://localhost:7860/ を開く
Stable Diffusion WebUIが利用できるようになりました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273559/341c2f2b-c1f5-a4be-a244-016d4658c5c0.png)

## 参考:ファイルの場所
生成した画像の保存先
stable-diffusion-webui-docker/output/

モデルの置き場所
stable-diffusion-webui-docker/data/models/Stable-diffusion

VAEの置き場所
stable-diffusion-webui-docker/data/models/VAE