RunPodでStable Diffusion WebUI Forge構築|NVで高速起動・低コスト運用

本記事では、RunPod上にStable Diffusion WebUI Forge(以下、Forge)を構築し、低コストで快適に画像生成を行うための最適な運用方法を解説します。ポイントは維持費の安いネットワークボリューム(Network Volume)にForge本体とモデル類を配置し、「ハーフコストNV運用」に切り替えることです。これにより、毎回の再ダウンロードや環境再構築の手間をなくし、コストと時間を大幅に削減できます。
一度GPUクラウド上に環境を作ってしまえば、iPhoneやAndroid、ローカル生成に不向きなノートPCからでもForgeを快適に利用できます。出先でもRTX 4090
やRTX 5090
クラスの環境にアクセスできるのは大きなメリットです。
前提として、RunPodのアカウント作成が完了している必要があります。未登録の方は先に以下の解説をご覧ください。
ネットワークボリューム(Network Volume)とは
ネットワークボリューム(以下、NV)は、Podに紐づく通常のボリュームディスクと異なり、同一リージョン内で複数のPodから共有できるストレージです。これにより、同じリージョン内ならGPUマシンを切り替えても、即座に同じ環境を再現できます。⚠️リージョンをまたいだ共有・デプロイはできません。
NVはPod停止時(削除扱い)でも維持コストが通常ボリュームの約半額と安価です。本記事ではForge環境をNV側に構築し、Podの起動・停止を繰り返す運用でも環境がそのまま使える構成にします。
容量と料金の目安
たとえばIllustriousなどのSDXL系モデルでの画像生成が中心なら、使い方にもよりますが50GB
程度で十分運用可能です。執筆時点の概算は以下のとおり。
1GBあたり $0.07 × 50GB = $3.50/月(約500円/月)
通常ボリュームと比べ、維持費は体感で約半額に抑えられます。Flux.1など大容量モデルを多用する場合は、80GB
以上を目安にしてください。容量は後から増やせますが減らせません。不足してきたら段階的に増設する方針が安全です。
ネットワークボリュームの作成手順
メニューの「Storage」より、以下の流れでNVを作成します。

- リージョン選定:居住地に近いリージョンほど低レイテンシ。ただし人気リージョンは混雑で空きがない場合も。
- ボリューム名:テンプレート名と関連づけると誤運用を防止できます。
- 容量設定:SDXL中心なら50GB前後、Flux系多用なら80GB以上を推奨。
- 料金確認:画面下部に月額目安が表示されます。
- 作成:「Create Network Volume」をクリックで完了。
注意:NVはリージョン固定。NVとPodは必ず同じリージョンで運用します。
WebUI Forgeテンプレートのについて
RunPod公式の「Stable Diffusion WebUI Forge」テンプレートは、開発が止まっておりバージョンが古いため、Flux.1などの最新モデルに非対応です。そこで、DCAIが公開している軽量テンプレート「Forge Minimal DCAI」を使い、速く・シンプルにForge環境を立ち上げます。以降でAPIキーとSecretの設定を行いながら進めます。
RunPodのAPIについて
RunPod APIは、RunPodのGPUリソースを外部から操作するためのインターフェースです。本記事で使用する「Forge Minimal DCAI」の自動シャットダウン機能に必要です。
APIキーの発行手順

- RunPodの「Settings」→「API Keys」を開く
- 「+ Create API Key」→ わかりやすい名前を入力
- 「API Key Options」は
Restricted
を選択 api.runpod.io/graphql
をRead / Write
、api.runpod.ai
はNone
- 「Create」で発行。表示される
rpa_xxxx...
を必ず一時保存(この時しか参照できません)
RunPodのSecretについて
Environment Variablesに機密情報(APIキーやパスワード)を直書きするのはNGです。RunPodのSecret機能に登録し、テンプレートから参照する形で安全に扱いましょう。
Secretの作成手順

- RunPodの「Secret」ページを開く
- 「+ Create Secret」
- Secret Name:
API_AutoStop
- Secret Value:上で発行したAPIキー
- 「Create Secret」で保存
「Forge Minimal DCAI」について
「Forge Minimal DCAI」は、docker.io/dcainet/forge-min:latest
をベースに、最小構成で素早く起動できるよう設計したテンプレートです。Forge本体やvenvはNVに配置するため、初回はセットアップに数分かかりますが、2回目以降は高速に起動します。主な特徴は以下のとおりです。
- 高速起動:不要なソフトを極力排しミニマル構成
- NV運用前提:通常ボリュームでも動作するがNV推奨
- Forge(ポート:7860):Flux.1を含む最新環境で快適に生成
- JupyterLab(ポート:8888):ファイル管理・端末操作に便利
- 自動シャットダウン:一定時間アクセスがなければ自動停止(NV未使用時は停止/NV使用時は削除)
オプションで以下も設定できます。
- Forge自動アップデート:起動前に更新をチェックして適用
- 生成画像自動クリーニング:指定時間より古い生成画像を起動時に削除
- ゴミ箱自動クリーニング:NVのごみ箱を起動時に削除
- バックアップ/リストア:
forge-backup
で設定を保存・復元 - オープン/クローズ運用:Forge/JupyterLabにパスワード認証を設定可能
✅本テンプレートはサポート対象外です。導入・運用は自己責任で行ってください。エラーや不具合が発生した場合は、Stable Diffusion WebUI Forge本体、または各拡張機能の公式ドキュメント/開発元のIssueガイドラインにしたがって対応してください。
DCAIテンプレート「Forge Minimal DCAI」をデプロイする
前回の記事を読んで、Kohya SS GUIのデプロイ経験がある方は、ほぼ同じ手順です。以下の順で設定します。
- Network Volumeの選択:IMG:UI「Deploy a Pod」画面の上部で、作成済みNVを選択
- GPUの選択:NVと同一リージョンのGPU(例:
RTX4090
)を選択 - テンプレート選択:「Change Template」→ 検索で
Forge Minimal DCAI
を選択 - Environment Variables:「Edit Template」で必要なENVを設定
⚠️検索で出てこない場合は🔗「Forge Minimal DCAI」のリンクからNVとGPUを選択してください。
最初に確認すべき項目は以下のとおりです。

RUNPOD_API_KEY
が{{ RUNPOD_SECRET_API_AutoStop }}
になっていること- 初回起動時は
IDLE_ENABLE=false
にして、起動時の自動シャットダウンをオフにします。 - タイムゾーン設定の書き方は🔗List of tz database time zonesのTZ identifierを入力してください。
- クローズド運用にする場合は、以下をRaw Editorで最下部に追加「Update Variables」で更新(✅Runpod Secretも適応してください)。
WEBUI_USERNAME={{ RUNPOD_SECRET_forge_username }}
WEBUI_PASSWORD={{ RUNPOD_SECRET_forge_password }}
JUPYTER_AUTH_ENABLE=true
JUPYTER_PASSWORD={{ RUNPOD_SECRET_Jupyter_password }}
✅ユーザー名やパスワードなどの機微情報は、必ずRunPod Secretを使って参照してください。
その他の機能は、必要に応じてfalse
/true
を切り替えます。主なENVは以下のとおりです。
Key | 説明 | デフォルト |
---|---|---|
TZ | タイムゾーン | UTC |
RUNPOD_API_KEY | 自動シャットダウンに必要なAPIキー | {{ RUNPOD_SECRET_API_AutoStop }} |
IDLE_ENABLE | 自動シャットダウンのON/OFF | true |
IDLE_TIMEOUT_MINUTES | シャットダウンまでの無操作時間(分) | 15 |
JUPYTER_ENABLE | JupyterLabのON/OFF | true |
AUTO_UPDATE_FORGE | 起動時にForgeのアップデートを確認し、あれば適用 | false |
IMAGE_CLEAN_ON_START | 起動時にMAX_AGE_HOURS より古い画像をOutputから自動削除 | false |
MAX_AGE_HOURS | 画像自動削除のしきい値(時間) | 6 |
EMPTY_TRASH_ON_START | 起動時にボリュームのごみ箱を自動削除 | false |
FORGE_USERNAME | Forgeをパスワード認証する際のユーザー名 | {{ RUNPOD_SECRET_forge_username }} |
FORGE_PASSWORD | Forgeをパスワード認証する際のパスワード | {{ RUNPOD_SECRET_forge_password }} |
JUPYTER_AUTH_ENABLE | JupyterLabのパスワード認証ON/OFF | false |
JUPYTER_PASSWORD | JupyterLabのパスワード | {{ RUNPOD_SECRET_Jupyter_password }} |
テンプレートの設定ができたら、「Deploy On-Demand」で起動します。初回はNVに環境を構築するため約15分ほどかかります。ログにStartup time: ... (prepare environment: ...)
と表示されたら起動完了です。
モデルの配置・ダウンロード
モデルの導入方法は主に2通りあります。(1)Forge内の拡張機能を使う方法、(2)JupyterLabのターミナルから直接ダウンロードする方法です。
方法1:Forgeの拡張機能でダウンロード
すでに開発は終了していますが、拡張機能「sd-civitai-browser-plus」を使うのが手軽でオススメです。Forgeの「Extensions」→「Install from URL」から、以下のリポジトリをインストールします。
https://github.com/BlafKing/sd-civitai-browser-plus
あとはお好みのモデルを検索してダウンロードするだけです。使い方はリポジトリを参照してください。拡張機能のインストール方法の詳細は以下の記事で解説しています。
方法2:JupyterLabのターミナルでダウンロード
JupyterLabのターミナルでwget
を用いて直接ダウンロードします。Civitaiのモデルは拡張機能経由が速いですが、Hugging Faceから取得する場合はこちらが便利です。
本テンプレートは主要フォルダーを使いやすい場所にシンボリックリンクしています。モデルは/workspace/forge/models
配下です。⚠️embeddings
は1つ上の階層にあります。
例としてチェックポイントモデルを保存する場合は、/workspace/forge/models/Stable-diffusion
に移動し「Terminal」を開きます。
プロンプトがroot@RUNPOD-ID:/workspace/forge/models/Stable-diffusion#
となっていることを確認してください。
ローカルからのアップロードも可能ですが、数GBの転送は時間がかかります。Hugging FaceやCivitaiから直接ダウンロードするのがオススメです。
今回はwget
を使用します。⚠️ログイン必須のモデル(例:Flux.1[Dev]など)はcurl
でのダウンロードをご検討ください。
以下のモデルをダウンロードする例です。
モデルページの「copy download link」でリンクをコピーし、下記のLINK
とFILE_NAME
を書き換えて実行します。
wget --wait=10 --tries=10 "LINK" -O FILE_NAME.safetensors
今回の例だと以下のようになります。
wget --wait=10 --tries=10 "https://huggingface.co/OnomaAIResearch/Illustrious-XL-v2.0/resolve/main/Illustrious-XL-v2.0.safetensors?download=true" -O illustriousXL_v2.safetensors
上記コマンドを実行するとダウンロードが始まります。Civitaiのモデルは、ページの「Download」を右クリックしてリンクをコピーしてください。
Civitaiでユーザー認証が必要なモデルのダウンロード方法は、Patreo有料支援者限定ですが。以下の記事で解説しています
自動シャットダウン
「Forge Minimal DCAI」は既定で自動シャットダウンがtrue
です。IDLE_TIMEOUT_MINUTES
で指定した時間、外部アクセスがない場合に自動停止します。NVを使っていない場合は停止、NV使用時は削除になります。
注意点:ブラウザでForgeを開きっぱなし(バックグラウンド含む)だと、状況によってアクセスが継続し、シャットダウンが発動しない場合があります。
Outputフォルダーの自動クリーニング
既定ではfalse
です。起動時にMAX_AGE_HOURS
より古い生成画像を自動削除します。NV容量がひっ迫しがちな運用では有効なオプションです。
⚠️有効化時は、Podを停止する前に必要な生成画像をダウンロードして保全してください。また、この操作で削除したデータはmv
コマンドで復元できません。
ごみ箱の自動クリーニング
既定ではfalse
です。EMPTY_TRASH_ON_START=true
で起動時にNVのごみ箱を空にします。
/workspace
で下記のコードを実行すれば見られます。
ls -al /workspace/.Trash-0/{files,info} 2>/dev/null
⚠️この操作で削除したデータはmv
コマンドで復元できません
クローズド運用(パスワード認証)
RunPodのURLは、オープン運用だと誰でもアクセス可能です。公共の場でURLが見られるリスクも考慮し、複数端末や複数拠点から利用する場合は必ずクローズド運用をオススメします。前述のENV(WEBUI_USERNAME
/ WEBUI_PASSWORD
/ JUPYTER_AUTH_ENABLE
/ JUPYTER_PASSWORD
)をRunpod Secretで設定してください。
バックアップ
「Forge Minimal DCAI」は、NV上のForge設定をバックアップできます(⚠️モデル類は対象外)。しばらくNVを使わず、ストレージ課金を止めたい時に便利です。
バックアップ手順
NVを削除する前に、JupyterLabまたはRunPod標準のWeb Terminalでforge-backup
を実行します。/workspace/outputs
にforge_cfg_extlist_YYYYMMDD_HHMMSS.tar
のようなファイルが作成されるので、ローカルにダウンロードして保管してください。
注意:forge-backup
実行後、/workspace/forge
にconfig-backup/
とextensions.txt
が作成されます。これらが残っていると次回起動時に読み込まれ、以降の設定変更が上書きされるため、バックアップ取得後は削除してください。
リストア
バックアップしたアーカイブからForgeの設定と拡張機能を復元します(⚠️モデル類は復元されません)。
リストア手順
- 新しいNVを作成し、「Forge Minimal DCAI」でデプロイ
- JupyterLabを起動し、
/workspace/forge
にバックアップをアップロード(config-backup/
とextensions.txt
) - Podを再起動すると、次回起動時に設定と拡張が自動復元
- ⚠️再起動後は、アップロードしたアーカイブを
forge
から削除(毎回復元が走るのを防ぐため)
RunPodでRTX 5090を使ったForge運用(非公式・実験版)
現時点でRunPod公式テンプレートはRTX 5090に最適化された安定版を提供していません。DCAIが公開する「Forge Minimal 5090 DCAI Experimental」を使うと、xFormers
など一部の最適化は使えないものの、ADetailerやHirex.fixなど主要機能での生成は可能です。RTX 5090の高速推論を試したい方向けの実験的テンプレートです。
- 使える機能:ADetailer、Hirex.fix などの基本的な拡張
- 制限事項:xFormers 等が非対応。互換性は今後変わる可能性あり
- サポート:サポート対象外のため、自己責任でご利用ください
- 対象環境:RunPod(Stable Diffusion WebUI Forge/テンプレート運用)
使い方:基本手順は「Forge Minimal DCAI」と同じです。テンプレート一覧から「Forge Minimal 5090 DCAI Experimental」を選択してデプロイしてください。
⚠️ネットワークボリューム(NV)は必ず新規作成してください。「Forge Minimal DCAI」で使用中のNVを流用すると、依存関係の不整合によりエラーが発生し生成できません。
導入手順(概要)
- RTX 5090対応用に新規NVを同一リージョンで作成
- テンプレートからForge Minimal 5090 DCAI Experimentalを選択
- 必要なENV/Secretを設定してデプロイ
⚠️検索で出てこない場合は🔗「Forge Minimal 5090 DCAI Experimental」のリンクからNVとGPUを選択してください。
✅安定運用を重視する場合は、従来の「Forge Minimal DCAI」+RTX 4090
構成も検討してください。

トラブルシューティング
Forge(ポート7860)にアクセスできない
RunPodの「Connect」からHTTPポートに接続してください。テンプレートのHTTP portsに7860
が含まれているか、PodログにStartup time
やRunning on
の表示があるか確認しましょう。ブラウザのキャッシュ問題を避けるため、シークレットウィンドウでの再アクセスも有効です。
初回起動が長い/固まって見える
初回はNV上にForge本体やvenvを構築するため約15分ほど時間がかかります。ログのprepare environment
やStartup time
の表示を目安に進行状況を確認してください。2回目以降は高速に起動します。
自動シャットダウンが動かない/すぐ落ちる
動かない場合は、IDLE_ENABLE=true
、IDLE_TIMEOUT_MINUTES
が適切か見直してください。また、ブラウザでForgeを開きっぱなし(裏タブ含む)の場合は落ちない場合もあります。逆にすぐ落ちる場合はタイムアウトが短すぎる可能性があります。必要に応じて値を延長し、監視対象ポート(Forge/JupyterLab)に定期的なアクセスがあるか確認しましょう。
NV容量不足/書き込み失敗(No space left on device)
不要な生成物はOutputを整理し、使っていないモデルや重複ファイルは削除してください。必要に応じてIMAGE_CLEAN_ON_START=true
とMAX_AGE_HOURS
を設定して自動クリーンアップを有効化すると便利です。なお、JupyterLabのごみ箱は削除後もNV内の隠しフォルダーに残るため、必要に応じてEMPTY_TRASH_ON_START=true
を設定して空にしましょう。これでも容量が恒常的に不足する場合は、NVの容量を増設してください。
拡張機能/モデルのダウンロードに失敗する
Civitai側のレート制限やURL変更の可能性があります。「sd-civitai-browser-plus」のAPI付き(CivitaiAPI)での導入を試すか、時間をおいて再試行してください。Hugging Faceで403
が出る場合はログイン必須(トークン要)のモデルです。認証つきのダウンロード方法に切り替えてください。
認証が効かない/ログインできない
WEBUI_USERNAME
/WEBUI_PASSWORD
、JUPYTER_AUTH_ENABLE
/JUPYTER_PASSWORD
の設定値とSecret名を確認し、スペルミスがないか点検。設定変更後はPodを再起動して反映させてください。
JupyterLab(ポート8888)に接続できない
JUPYTER_ENABLE=true
になっているか、HTTP portsに8888
が含まれているか確認。RunPodの「Connect」で対象ポートを選んでアクセスしてください。認証を有効化している場合はパスワードのSecret設定も再確認しましょう。
バックアップ/リストアが毎回走ってしまう
/workspace/outputs
にリストア用のアーカイブが残っている、または/workspace/forge
にconfig-backup/
やextensions.txt
が残存している可能性があります。復旧後はこれらを削除して常時リストアを防止してください。
pip-constraints.txtを削除してしまった
pip-constraints.txt
は、torch
/torchvision
/torchaudio
のバージョンを固定して環境の再現性を担保するためのファイルです。誤って削除した場合は、Jupyter labで/workspace/forge
に行きで下記のコードを実行。
echo -e 'torch==2.3.1\ntorchvision==0.18.1\ntorchaudio==2.3.1' > /workspace/forge/pip-constraints.txt
まとめ
いかがでしたか。本記事のポイントは、Network VolumeにForge本体とモデルを置き、Forge Minimal DCAIテンプレートとSecretを組み合わせて安全かつ高速に運用することです。モデル導入は拡張機能またはwget
/curl
で適材適所に選び、自動シャットダウンとOutputクリーニングでムダな課金と容量を抑制します。さらにバックアップ/リストアで設定を保全しておけば、いつでも同じ環境を素早く再現できます。なお、体感的なスピードはローカルには及ばず、ピークタイム等ではGPU側の計算が速く終わっていても通信速度がボトルネックになる場合があります。
今回の執筆を通じて、NV運用とミニマル構成の相性の良さを改めて実感しました。必要なときだけ強力なGPUを呼び出し、不要なときは維持費を最小限にできる「オンデマンド生成」の体験は、ローカルGPUがない環境でも十分に実用的だと言えるでしょう。
最後までお読みいただきありがとうございます。
もし少しでも参考になったら、ぜひ「いいね」で応援してください!