ローカルGPUがなくてもComfyUIを動かしたいなら、ConoHaのGPUサーバー(NVIDIA L4・VRAM 24GB)+ Docker+ NVIDIA Container Toolkitの組み合わせが手軽です。L4の最小構成(4vCPU・メモリ16GB)は60.5円/時(公式・2026年10月11日時点)で、使った時間だけ払えます。
「ローカルGPUのVRAMが足りずSDXLが動かない」「FLUXを試したいが手持ちのRTX 4060では厳しい」「電気代を気にせずレンダリングしたい」――そんな悩みはありませんか?
本記事を読むと、GPU付きVPSでComfyUIをDocker化して動かす手順、Docker Compose設定、SSHトンネル経由のセキュアなアクセス方法、そして各VPSプランのコスト比較まで一気通貫で理解できます。
なぜVPS+Dockerで動かす?
ローカルインストールは依存関係が複雑になりがち。Dockerなら「環境隔離・再現性・破棄容易性」の3つを同時に手に入れられ、設定(docker-compose.yml)を持っていけば、別のマシンでもdocker compose upで同じ構成を作り直せます(モデルなどのデータは別に運びます)。さらにGPU付きVPSなら時間課金で気軽に試せるのが大きな魅力です。
どのGPU付きVPSを選ぶべき?
| サービス | GPU | VRAM | 料金 |
|---|---|---|---|
| ConoHa GPUサーバー L4(4vCPU・メモリ16GB) | NVIDIA L4 | 24GB | 60.5円/時 |
| ConoHa GPUサーバー L4(20vCPU・メモリ128GB) | NVIDIA L4 | 24GB | 154.0円/時 |
| さくら 高火力 VRT(VM型) | NVIDIA V100 | 32GB | 481円/時 |
| さくら 高火力 VRT(VM型) | NVIDIA H100 | 80GB | 990円/時 |
料金は各社公式の税込・2026年10月11日時点。ConoHaのGPUサーバーは利用に審査が必要な場合があります。ConoHaのH100は2026年4月1日で提供を終えました。さくらのV100(高火力 VRT)は2026年12月31日で新規作成の受付を終えます。さくらには、コンテナを実行した時間だけ秒単位で払う「高火力 DOK」(V100で57.6円/時)もありますが、VMにSSHで入ってDockerを動かすこの記事の形とは使い方が違います。
いちばん安いのはConoHaのL4(4vCPU・メモリ16GB)の60.5円/時で、24時間動かすと1,452円(60.5円×24時間)です。FLUX系が動くかは、VRAMだけでなくモデルの版と精度で変わります。当サイトの検証機(RTX 4070 Ti SUPER・VRAM 16GB)では、FLUX.2 [klein] 4Bが1024×1024で動きました(VRAM 16GBでローカル画像生成モデル4本を比べた記事)。L4の24GBなら、16GBに収まらないモデルも選択肢に入ります。
Docker+NVIDIA Container Toolkitの構築手順は?
UbuntuサーバーでDocker EngineとNVIDIA Container Toolkitを入れ、NVIDIA公式の確認コマンドsudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smiでコンテナからGPUが見えれば準備完了です。ConoHaのGPUサーバーには、アプリケーションテンプレートにNVIDIA Container Toolkitもあります(公式の仕様)。
SSH接続後にnvidia-smiでGPU・ドライバを確認。VRAM容量がモデル要件を満たしているかチェック。
Docker公式の手順でDockerのaptリポジトリを登録してから、sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginで導入します(docker composeを使うにはdocker-compose-pluginが要ります)。
NVIDIA公式の導入ガイドのとおりにリポジトリを登録してsudo apt-get install nvidia-container-toolkitで入れたら、sudo nvidia-ctk runtime configure --runtime=dockerでDockerの設定(/etc/docker/daemon.json)を書き換え、sudo systemctl restart dockerで再起動します。
sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smiでコンテナ内のGPU認識を確認(NVIDIA公式のサンプル)。
ComfyUIのdocker-compose.ymlはどう書く?
ここでは例として、AI-Dockが公開しているghcr.io/ai-dock/comfyui:latest-cudaを使います。modelsとoutputをホストにマウントしておけば、マウント先がイメージの保存先と合っている限り、コンテナを作り直してもデータが残ります。
このイメージのGitHubリポジトリの最終更新は2024年11月4日です。READMEでは、ComfyUIを自動で更新する参照先(COMFYUI_REF)の既定は最新のリリースと説明されています。マウント先のパスはイメージごとに違うので、使うイメージの説明で確かめてください。
services:
comfyui:
image: ghcr.io/ai-dock/comfyui:latest-cuda
ports:
- "127.0.0.1:8188:8188"
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
volumes:
- ./models:/opt/ComfyUI/models
- ./output:/opt/ComfyUI/output
- ./custom_nodes:/opt/ComfyUI/custom_nodes
restart: unless-stopped
portsを"8188:8188"とだけ書くと、Dockerはホストのすべてのアドレスに8188番を公開し、UFWの規則も通りません(Docker公式)。次の節のSSHトンネルで使うなら、上の例のように127.0.0.1に限って公開します。Docker公式は、28.0.0より前の版では同じネットワークの機器から127.0.0.1に公開したポートへ届く場合があると注意しているので、新しい版を使ってください。
SSHトンネルで安全にアクセスする方法は?
ComfyUIのポート8188を全世界に公開するのは危険です。SSHポートフォワーディングでローカルPCにトンネルを張り、ブラウザでhttp://localhost:8188からアクセスするのが安全な構成です。
# ローカルマシンから実行
ssh -L 8188:localhost:8188 user@vps-ip-address
# ブラウザで以下にアクセス
http://localhost:8188
composeで8188番を127.0.0.1に限って公開していれば、公開先はVPS自身だけになり(Docker公式)、手元のPCからはSSHトンネル越しに使えます。Dockerが公開したポートはUFWの規則を通らないので、UFWだけに頼らず公開する範囲をcompose側で絞ってください。SSH自体の守り(鍵認証・fail2banなど)も忘れずに。
カスタムノード・LoRAを追加するには?
LoRAはホスト側の./models/lorasに、カスタムノードは./custom_nodesに置きます。カスタムノードは置いただけでは読み込まれず、ComfyUIの再起動が必要です(公式の手順は「ComfyUIを再起動してブラウザを更新」)。依存パッケージが要るノードは、コンテナの中でrequirements.txtを入れてから再起動します。
まとめ:ConoHaのGPUサーバーならVRAM 24GBが60.5円/時から
- VRAM 24GBのL4は、ConoHaの4vCPU構成が60.5円/時(2026年10月11日時点)
- Docker+NVIDIA Container ToolkitでGPUパススルー
- イメージは例としてai-dock/comfyui:latest-cuda(マウント先は使うイメージの説明で確認)
- アクセスはSSHトンネルで安全に
- 時間課金で使った分だけ支払い
FAQ
ローカルRTX 4090とどちらがお得?▼
GPU認識されない時の対処は?▼
sudo nvidia-ctk runtime configure --runtime=dockerでDockerを設定し、sudo systemctl restart dockerで再起動したかを確かめてから、sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smiで再確認してください(NVIDIA公式の手順)。画像生成中にVPSを止めても大丈夫?▼
docker compose downでグレースフルに停止してください。マウント先がイメージの保存先と合っていれば、modelsとoutputはコンテナを作り直しても残ります。

コメント