![見出し画像](https://assets.st-note.com/production/uploads/images/127606915/rectangle_large_type_2_663f49352c0282e95a903d6e470316d1.png?width=1200)
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 は、サーバーを外部に公開していても拡張機能がインストールできるフラグです。
![](https://assets.st-note.com/img/1705209985227-3c9VBvZNFC.png?width=1200)
ちなみに、フラグ自体には特に副作用はありません。
![](https://assets.st-note.com/img/1705210419603-3p3lLjOjA8.png?width=1200)
--share, --listen, --ngrok, --server-nameのフラグを削除する
安全に動かしたい場合、そもそも公開しないのも選択肢ですね。
まとめ
Stable Diffusion WebUIでは、サーバーを外部に公開している場合、--enable-insecure-extension-access がない限りは拡張機能がインストールできないことが分かりました。
この記事が気に入ったらサポートをしてみませんか?