stable diffusion web uiをインストールします(WSL)

本記事では、Stable Diffusion Web UIのDocker版をWSL2を使用してインストールする手順を解説します。すでにWSL2とUbuntuがインストールされており、ユーザー設定が済んでいる状態を前提とします。

WSLのインストールの詳細な手順については、下記の記事をご参照ください。

docker及びdocker composeがないと始まらないのでインストールします。どちらも公式サイトを参考にインストールしますので安心です。まずはdocker(Docker CE)からインストールします。ubuntu自体にインストールするので、Windows版のdocker Desktopは必要ありません。

Ubuntu 用 Docker CE の入手 — Docker-docs-ja 19.03 ドキュメント

以下のページは一番わかりやすかったです。ただし、この記事は上のURLを参考にしています。

Ubuntu
Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multip...

まず始めに、システムのパッケージリストを最新の状態に更新します。これは新しくパッケージをインストールする前に行う重要な手順です。

sudo apt-get update

次に、HTTPSを通じてリポジトリからパッケージを取得できるようにするために必要なパッケージをインストールします。ここでインストールするパッケージには以下のような役割があります。

  • apt-transport-https: HTTPS経由でパッケージを取得するために必要
  • ca-certificates: サーバーの証明書を検証するために必要
  • curl: ウェブからデータをダウンロードするためのツール
  • software-properties-common: ソフトウェアのプロパティを追加・管理するためのツール

以下のコマンドを実行してこれらをインストールします。

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

次に、Docker公式のGPG鍵を追加します。これはDockerパッケージの信頼性を保証するための手順です。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

そして、安定版のDockerリポジトリをシステムのリポジトリリストに追加します。これにより、システムはDockerパッケージをこのリポジトリから取得できるようになります。

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

リポジトリを追加したので、再度システムのパッケージリストを更新します。これにより、先ほど追加したDockerのリポジトリのパッケージ情報がシステムに反映されます。

sudo apt-get update

最後に、Docker CE(Community Edition、コミュニティ版)をインストールします。これでDockerのセットアップは完了です。

sudo apt-get install docker-ce

以上で、UbuntuシステムにDockerをインストールする手順の説明を完了します。インストール後は、「docker --version」コマンドを実行してDockerが正しくインストールされていることを確認することが推奨されます。

続いてDocker composeもインストールします。こちらのインストールは公式サイトとそこにあるリンク(github)を参考にします。WSLでのインストールはコマンドを変更します。

Docker Compose のインストール — Docker-docs-ja 1.12.RC2 ドキュメント
Releases · docker/compose
Define and run multi-container applications with Docker - docker/compose

Docker Composeのインストールについて説明します。Docker Composeは、複数のDockerコンテナを管理するためのツールで、YAMLファイルに定義した設定に基づいてコンテナを作成・管理できます。

まず最初に、curlを使用してDocker Composeの安定版をダウンロードします。ここでは、公式GitHubリポジトリからバージョン2.19.1のDocker Composeをダウンロードしています。このURLのバージョン部分は、リリースページで最新のバージョンを確認し、適宜書き換えてください。ダウンロードしたファイルは/usr/local/binディレクトリに保存されます。

sudo curl -L "https://github.com/docker/compose/releases/download/v2.19.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

次に、ダウンロードしたDocker Composeのバイナリファイルに実行権限を付与します。これにより、Docker Composeのコマンドを実行可能にします。

sudo chmod +x /usr/local/bin/docker-compose

そして、シンボリックリンクを作成します。シンボリックリンクは、あるファイルへの参照を作るもので、この場合は/usr/bin/docker-composeという名前で/usr/local/bin/docker-composeを参照するリンクを作成します。ですので、docker-composeコマンドをどのディレクトリからでも実行できるようになります。

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

最後に、インストールが正しく行われたか確認するため、Docker Composeのバージョンを表示します。

docker-compose --version
以下の場合もあります
docker compose version

以上で、WSL上でDocker Composeをインストールする手順の説明は終わりです。この手順により、WSL環境でもDocker Composeを利用して複数のDockerコンテナを簡単に管理することが可能になります。

なお、Docker Composeのバージョンは定期的に最新状態をチェックし、新しいバージョンがリリースされていた場合は、同様の手順で更新作業を行うことをお勧めします。これは新しい機能の追加やセキュリティパッチの適用など、システムを最新の状態に保つために重要です。

ここまででstable diffusion web uiをdockerを使用してインストールする準備ができました。githubのページを参考に進めます。

GitHub - AbdBarho/stable-diffusion-webui-docker: Easy Docker setup for Stable Diffusion with user-friendly UI
Easy Docker setup for Stable Diffusion with user-friendly UI - AbdBarho/stable-diffusion-webui-docker

まず、Stable Diffusion Web UIが含まれるプロジェクトのリポジトリをクローンします。以下のコマンドは一例であり、具体的なリポジトリのURLはプロジェクトによって異なります。以下の”repository_url”を実際のURLに置き換えてください。

git clone repository_url
今回は下記になります。
git clone https://github.com/AbdBarho/stable-diffusion-webui-docker.git

次に、Docker Composeを使用してアプリケーションをビルド・実行します。Docker Composeは、複数のDockerコンテナのビルド、起動、停止などを一括で行うことができるツールです。Docker ComposeはYAML形式の設定ファイル(通常はdocker-compose.yml)に基づいて動作します。

以下のコマンドは、”download”というプロファイルを指定してDocker Composeを実行します。プロファイルとは、特定のサービスをまとめたもので、この例では”download”というプロファイルに属するサービスがビルド・起動されます。この”download”という名称は具体的な設定により異なるため、具体的なプロファイル名はdocker-compose.ymlを参照してください。

また、gitコマンドで作成されたディレクトリに移動してコマンドを実行します。

cd (git clone)で作成されたディレクトリ
docker compose --profile download up --build

また、どのプロファイルを選択すれば良いかわからない場合、”auto”というプロファイルを選択することが無難かもしれません。以下のコマンドは、”auto”というプロファイルを指定してDocker Composeを実行します。

docker compose --profile auto up --build

以上の手順により、Stable Diffusion Web UIをDockerを使用してインストール・起動することができます。なお、具体的なプロファイル名や設定はプロジェクトやdocker-compose.ymlの内容により異なるため、適宜読み替えてください。

次にwslでコマンドを入力し、IPアドレスを確認します。私の場合IPアドレスは172.22.135.150でした。さらにファイヤーウォールを確認すると無効になっていたので次のURLでアクセスします。

http://172.22.135.150:7860/

次のようなエラーが発生した場合の対処法。

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get “http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.config-hash%22%3Atrue%2C%22com.docker.compose.project%3Dwebui-docker%22%3Atrue%7D%7D”: dial unix /var/run/docker.sock: connect: permission denied

エラーメッセージから察するに、dockerデーモンへの接続が許可されていないようです。Dockerはデフォルトでrootユーザーのみが操作できますが、特定のユーザーをdockerグループに追加することで、rootユーザー以外でもDockerを操作できるようになります。

まず、現在のユーザー(”USER_NAME”を自分のユーザー名に置き換えてください)をdockerグループに追加します。

sudo gpasswd -a USER_NAME docker

次に、追加されたことを確認します。このコマンドを実行すると、ユーザーの所属グループが表示され、そこに”docker”が含まれていれば成功です。

id USER_NAME

ただし、この設定は新しいセッションから有効となるため、一度ログアウトして再ログインする必要があります。

exit

再ログイン後、再度DockerまたはDocker Composeのコマンドを実行してみてください。以前のエラーが解消されているはずです。なお、セキュリティ上の理由から、必要なユーザーのみをdockerグループに追加することをお勧めします。

docker composeでエラーが発生した場合。

#0 6.095 07/04 11:11:57 [ERROR] CUID#7 – Download aborted. URI=https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp310-cp310-linux_x86_64.whl
#0 6.095 Exception: [AbstractCommand.cc:351] errorCode=19 URI=https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp310-cp310-linux_x86_64.whl
#0 6.095 -> [AbstractCommand.cc:789] errorCode=19 CUID#7 – Name resolution for download.pytorch.org failed:Timeout while contacting DNS servers
#0 6.095
#0 6.095 07/04 11:11:57 [NOTICE] Download GID#e9d479fda44b0442 not complete: /cache/torch-2.0.1-cp310-cp310-linux_x86_64.whl
#0 6.095
#0 6.095 Download Results:
#0 6.095 gid |stat|avg speed |path/URI
#0 6.095 ======+====+===========+=======================================================
#0 6.095 e9d479|ERR | 0B/s|/cache/torch-2.0.1-cp310-cp310-linux_x86_64.whl
#0 6.095
#0 6.095 Status Legend:
#0 6.095 (ERR):error occurred.
#0 6.098
#0 6.098 aria2 will resume download if the transfer is restarted.
#0 6.098 If there are any errors, then see the log file. See ‘-l’ option in help/man page for details.
——
failed to solve: process “/bin/sh -c aria2c -x 5 –dir /cache –out torch-2.0.1-cp310-cp310-linux_x86_64.whl -c https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp310-cp310-linux_x86_64.whl && pip install /cache/torch-2.0.1-cp310-cp310-linux_x86_64.whl torchvision –index-url https://download.pytorch.org/whl/cu118” did not complete successfully: exit code: 19

このエラーメッセージは、PyTorchのwhlファイルのダウンロード中に問題が発生したことを示しています。具体的には、DNSの名前解決に失敗しています。以下に対処法をいくつか挙げます。

  1. 一時的なネットワーク接続の問題: このエラーは一時的なネットワークの問題が原因である可能性があります。その場合、ネットワーク接続を確認し、再度コマンドを実行してみてください。
  2. DNSサーバの問題: DNSサーバーがダウンしている、または過負荷状態にある可能性もあります。別のDNSサーバーを使用してみると良いでしょう。Googleの公開DNS(8.8.8.8 または 8.8.4.4)を使用するという選択肢もあります。
  3. Proxyの設定: あなたのネットワークがプロキシを使用している場合、プロキシの設定を確認する必要があります。Dockerのプロキシ設定を見直し、必要に応じて調整してみてください。
  4. PyTorch公式のダウンロードリンクの問題: また、PyTorch公式のダウンロードリンクに問題がある可能性も考えられます。ブラウザで同じURLにアクセスしてみて、リンクが有効であることを確認してください。

上記のエラーが出たので、ファイルを編集することでダウンロードがうまくいきました。

sudo vi /etc/resolv.conf

次を記述します。

nameserver 8.8.8.8
タイトルとURLをコピーしました