「AI用途のVPSは4GB以上がおすすめです」。よく見る書き方です。
その4GBの内訳がどこにも書いてありません。 OSがいくら使うのか、ツールがいくら足されるのか、どこに余裕を見ているのか。根拠が出てこないので、自分の用途に当てはめようがない。
このサイトでは、ここまで4本の記事で全部自分で測ってきました。 その数字を積み上げて、必要なスペックを出します。
先に結論
| やりたいこと | メモリ | ディスク | 根拠 |
|---|---|---|---|
| 静的サイト+小さな業務アプリ | 1〜2GB | 20GB〜 | 実測(アプリ3本で166MB) |
| + n8n で自動化 | 2GB | 50GB〜 | 実測(+402MB、空き1.1GB残) |
| + Dify(起動して置くだけ) | 4GB | 100GB〜 | 実測(Dify単体で2,076MB) |
| Dify を実際に使う | 8GB | 100GB〜 | 推定・未検証 |
| ローカルLLMを動かす | 8GB〜 | 200GB〜 | 未検証 |
上3行は測った数字です。下2行は測っていません。どこまでが実測でどこからが推測か、はっきり分けて書きます。
土台:OSと常駐デーモンで何MB持っていかれるか
まずアプリを何も載せない状態のコストです。ここを知らないと積み上げができません。
このサーバー(さくらのVPS 2Gプラン / Ubuntu 24.04)で、再起動直後・Dockerとnginxと自作アプリ1本が動いている状態が 398MB でした。
内訳のうち、多くの人が見落とすものが2つあります。
1. VPSでは働きようがないデーモンが50〜100MB
最初の記事で測った内訳です。
| プロセス | RSS | 本来の用途 |
|---|---|---|
| fwupd | 44.0MB | 物理デバイスのファームウェア更新 |
| multipathd | 26.7MB | ストレージへの複数I/Oパスの管理 |
| udisksd | 13.4MB | ディスク・リムーバブルメディアの管理 |
| ModemManager | 12.8MB | モバイル通信モデムの管理 |
VPSに物理ファームウェアはありません。モバイル通信のモデムも刺さっていません。常駐3つで約53MB、fwupd が起動していると約97MB。
さらに 43時間の連続測定では、この fwupd が瞬間的に 188MB まで跳ねていました。自作アプリの最大値(87.9MB)の2倍以上です。
プランを上げる前に、まずここを見てください。
2. Docker を入れると 49MB が恒久的に乗る
コンテナを1本も動かしていない状態で、dockerd と containerd が常駐します。
dockerd 49.4MB
containerd 50.6MB
RSSの合計は100MBですが、システム全体の増加として観測できたのは 約49MB でした(RSSは共有ライブラリを重複して数えるため、単純合計は実際の消費と一致しません)。
containerd の存在を忘れないでください。 dockerd とほぼ同じサイズがもう1本います。そして docker stop してもこの2つは消えません。Dockerを入れた時点で、恒久的に49MBです。
ツールごとの実測コスト
n8n:+402MB
実測記事の数字です。
| 段階 | 増分 |
|---|---|
| Dockerデーモン | +38MB |
| n8nコンテナ起動 | +328MB |
| 管理画面を開いてワークフロー1本 | +36MB |
| 合計 | +402MB |
正体は Node.jsのプロセス2本(305.6MB + 117.5MB)でした。アプリケーションが重いのではなく、ランタイムが2本立ち上がる構造です。
2GBプランで、載せてもまだ1.1GB空いていました。
Dify:+2,076MB
実測記事の数字です。桁が変わります。
| 値 | |
|---|---|
| 立ち上がるコンテナ | 16本 |
| 物理メモリ上 | 1,195MB |
| スワップ上 | 881MB |
| 合計 | 2,076MB |
n8nは1本、Difyは16本。api / worker / web / PostgreSQL / Redis / ベクトルDB / プラグイン基盤 …… が一式ついてきます。
そしてこの2,076MBは、ワークフロー0本・ナレッジ0件・アクセス0の、完全にアイドルの状態の数字です。
ここは注意して読んでください。 この測定では、Difyに与えたメモリ枠を1,200MBに絞っていました。そのため881MBがスワップへ押し出されています。枠を広げれば、スワップに落ちていた分が物理メモリに乗るだけで、合計の要求量はおおむね変わらないと考えられます。 ただしこれは推定です。 メモリを増やした環境での実測はこれからやります。
足し算してプランを決める
土台とツールを足すだけです。
n8n だけの場合
土台 約400MB + n8n 402MB = 約800MB
→ 2GBプランで、まだ1.1GB余る(実測どおり)
Dify を入れる場合
土台 約400MB + Dify 2,076MB = 約2,480MB
→ 2GBプランには入らない。4GBが最低ライン
2GBのマシンに2,076MBのものを載せようとすると何が起きるかは、実際にやりました。
- スワップに881MB押し出され
- CPUのI/O待ちが最大91%
- ロードアベレージ5.72
- SSHの接続が切れました
- 通常は数秒で終わるデータベースのマイグレーションに約4分
起動してしまえば静止しますが(load 0.2 / CPUアイドル98%)、そこに至るまでの4分間、サーバーは事実上使えません。
「余裕」をどれくらい見るか
実測から言うと、OSのメンテナンス用に最低300MBは空けておくべきです。
43時間の記録で、メモリのピークを作っていたのは自作アプリではなく unattended-upgrades(Ubuntuの自動更新) でした。平常時400MBのところ、朝6時22分に641MBまで上がっていました。
しかもこの自動更新は、依存パッケージを更新してアプリを勝手に再起動します。 実際、記録の中で自作アプリのRSSが 72.0MB → 43.3MB に落ちた瞬間が残っていました。
空きギリギリで運用していると、深夜の自動更新でOOM Killerが走ります。 ここは削れません。
見落とされがち:先に埋まるのはディスク
メモリの話ばかりされますが、AI用途で先に効くのはディスクです。
| イメージのサイズ | |
|---|---|
| n8n | 2.47GB |
| Dify | 10.6GB |
Difyの dify-api は1本で4.06GB。n8nのイメージ全体より大きい。
さくらのVPS 2Gプランの標準SSDは50GBです。Ubuntuの基本構成で約10GB使うので、Difyを入れると残り約27GB。 ここにローカルLLMのモデルファイル(1つ数GB)を足していくと、メモリより先にディスクが苦しくなります。
私自身、測る前はこの順番を逆に考えていました。
なお、Docker 29系ではイメージの実体が
/var/lib/containerdに置かれます。/var/lib/dockerを見ても分かりません(実測すると5.9MBしかありませんでした)。内訳を見るならdocker system dfを使ってください。
CPUはほとんど要りません
これは意外だと思います。プラン選びでCPUコア数を気にする必要は、ほぼありません。
43時間・2,590サンプルの実測です。
| 指標 | 中央値 | 最悪値 |
|---|---|---|
| CPUアイドル率 | 100% | 57% |
| ロードアベレージ(1分) | 0.02 | 1.21 |
Difyを16コンテナ動かしている定常状態でも、CPUアイドル98% / ロード0.2〜0.4 でした。
CPUが跳ねるのは起動時と、バッチ処理が走る間だけです。しかも43時間の記録では、バッチ処理はCPUを35%使ってもメモリは動きませんでした(データを1件ずつ処理する型なので、全部をメモリに載せない)。
「重い処理=メモリが要る」は、いつも成り立つわけではありません。
さくらのVPSはメモリを上げるとvCPUも一緒に増える構成なので、メモリで選べばCPUは自動的についてきます。 逆にCPU目当てで上位プランを選ぶ理由は、AI用途では薄いと考えています。
スワップは「足りないメモリの代わり」にはならない
Difyの実測で、はっきりしました。
スワップを2GB用意してあったので、2GBのマシンで2,076MBのDifyは起動しました。落ちもしませんでした。 しかしその代償が、I/O待ち91%とSSH切断です。
スワップは「緩衝材」であって「増設メモリ」ではありません。
一方で、緩衝材としては確実に効きます。43時間の記録で、メモリに1.3GB以上の余裕がある状態でもスワップは最大46MB使われていました。 長時間触られていないページが静かに退避されているだけで、逼迫していなくてもLinuxはこれをやります。
そしてさくらのVPSでは、スワップなしのイメージが提供される場合があります。 公式マニュアル「swapfileの追加」に「一部、スワップパーティションを含まないイメージの提供を行っております」と明記されており、追加手順も公式に用意されています。
私が確認した範囲では、運用中の4台すべてがスワップ0でした。契約したら最初に確認してください。
swapon --show # 何も出なければスワップなし
free -h # Swap: の行が 0B なら同じ
さくらのVPSのプラン対応
2026年9月時点の公式価格(税込・月額)と、上の積み上げを重ねたものです。
| プラン | vCPU | SSD | 月額 | この記事の用途で言うと |
|---|---|---|---|---|
| 512MB | 1 | 20GB | ¥685 | 静的サイト専用。ツールは載りません |
| 1GB | 2 | 30GB | ¥972 | 静的サイト+小さなアプリまで |
| 2GB | 3 | 50GB | ¥1,706 | n8nで自動化するならここ(実測で1.1GB余る) |
| 4GB | 4 | 100GB | ¥3,888 | Difyを置くならここが最低ライン |
| 8GB | 6 | 200GB | ¥7,776 | Difyを実用する / ローカルLLM(未検証) |
| 16GB | 8 | 400GB | ¥15,552 | — |
価格・仕様は変わります。申し込む前に公式の最新情報を確認してください。
迷ったら小さく始めてよい理由
さくらのVPSは、あとからプランを上げられます。
公式マニュアルの「スケールアップ」に条件が書かれています。
- IPアドレスは変わりません(「プラン変更後も以前と同じIPアドレスをご利用いただけます」)
- サーバーを停止して行います。その間サイトは落ちます
- ディスク容量が減るプランへは変更できません。つまり下げられません
- 課金は新プラン2か月分から、旧プランの未使用分を日割りで差し引き
IPが変わらないので、DNSもTLS証明書も設定し直す必要がありません。 ここは大きいです。
したがって、判断に迷ったら小さいプランから始めて構いません。 上げるのは簡単で、下げるのは(実質)できない。それが分かっていれば、最初に上位プランを掴む理由はありません。
「とりあえず4GB」より「2GBで測ってから決める」 ほうが、この構造には合っています。
測っていないこと
正直に書きます。この記事で未検証なのは3点です。
- メモリ4GB・8GBでの実測。 Difyがスワップなしで動いたとき、実際に何MBに落ち着くのか
- Difyを実際に使ったときのコスト。 上の2,076MBは完全にアイドルの数字です。ワークフローを組み、ナレッジを入れ、モデルを呼んだらどうなるかは測っていません
- ローカルLLM。 モデルファイルのサイズと推論時のメモリは、まったく測っていません
この3つを「たぶん8GBあれば大丈夫」で埋めるつもりはありません。 測ってから追記します。
まとめ
- 土台(OS+常駐デーモン+Docker)で約400MB。うち50〜100MBはVPSでは働きようがないデーモン
- n8nは+402MB。2GBプランで足りる(実測で1.1GB余る)
- Difyは+2,076MB。2GBには入らない。4GBが最低ライン
- 余裕は最低300MB。自動更新が朝6時に641MBまで上げる
- ディスクのほうが先に埋まる。Difyのイメージだけで10.6GB
- CPUはほとんど要らない。実測でアイドル率の中央値100%、Dify稼働中でも98%
- スワップは緩衝材であって増設メモリではない。ただし無いと危ない
- 迷ったら小さく始めてよい。あとからIPを変えずに上げられる
「何GB必要か」は、土台の実測値にツールの実測値を足すだけで出せます。この記事の数字はすべて自分のサーバーで測ったもので、測っていないものは測っていないと書きました。
次はメモリを増やした環境で同じ手順・同じ間隔で測り直します。 上の未検証3点を、推測ではなく数字で埋めます。
この記事で使った測定記事
- さくらのVPS 2GBで自作システムを3本動かしている — 土台の内訳と、働きようがないデーモン
- 43時間、1分ごとにVPSを測り続けた — ベースライン、自動更新のピーク、CPUとメモリが連動しないこと
- 2GBのVPSにn8nは載るのか — n8nの402MB
- 2GBのVPSにDifyは載るのか — Difyの2,076MB、スワップとI/O待ち