見出し画像

Stable Diffusion WebUIで拡張機能がインストールできないときは..

Stable Diffusion WebUIで、次のエラーで拡張機能がインストールできない場合があります。

AssertionError: extension access disabled because of command line flags

原因と対策を解説します。公式のIssueも参考にしてください。


原因

--share, --listen, --ngrok, --server-nameのいずれかのフラグが有効である

--share が有効な場合、Stable Diffusion WebUIは外部からアクセス可能になります。外部の人間が悪意を持って拡張機能のインストールができないような仕様になっています。

ソースコードを解説します。まず check_access() 処理があり、これが拡張機能のインストールや適用・再実行時に呼び出されています。

def check_access():
    assert not shared.cmd_opts.disable_extension_access, "extension access disabled because of command line flags"

check_access() 処理の中では、コマンドライン引数から判定した結果を読み込んでいます。disable_extension_access を見てみると、前述のフラグがある場合にアクセスを無効化していることが分かります。

cmd_opts.webui_is_non_local = any([cmd_opts.share, cmd_opts.listen, cmd_opts.ngrok, cmd_opts.server_name])
cmd_opts.disable_extension_access = cmd_opts.webui_is_non_local and not cmd_opts.enable_insecure_extension_access

対策

--enable-insecure-extension-access フラグを付与する

--enable-insecure-extension-access は、サーバーを外部に公開していても拡張機能がインストールできるフラグです。

--server-name 0.0.0.0, --enable-insecure-extension-accessの状態で、拡張機能がインストール可能

ちなみに、フラグ自体には特に副作用はありません。


enable_insecure_extension_accessは、他の個所では参照されていない

--share, --listen, --ngrok, --server-nameのフラグを削除する

安全に動かしたい場合、そもそも公開しないのも選択肢ですね。

まとめ

Stable Diffusion WebUIでは、サーバーを外部に公開している場合、--enable-insecure-extension-access がない限りは拡張機能がインストールできないことが分かりました。

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