SSD Nodes Learn 🎉 VPS $5.50/月〜
ガイド Matt Connor著者 Matt Connor ・更新日 2026-08-09

ゲームサーバー用VPSの選び方と必要スペック

ゲームサーバー用VPSは、プレイ用VPSとは必要条件が異なります。高速なCPU 1コア、十分なRAM、ポート、systemd、自動再起動、バックアップ、接続先の地域による遅延を解説します。

ゲーム用VPSには、どの用途を想定していますか?

ゲームサーバー用のVPSは、自分のマシンから接続する専用サーバーを運用する用途では有効です。一方、この表現が指すことのあるもう1つの用途、つまりリモートデスクトップ経由でVPS自体上でゲームをプレイする用途には適していません。この2つの用途では、必要なハードウェアが正反対です。専用サーバーには高速なCPUコア1つと、ワールドを保持できる十分なRAMが必要です。ゲームをプレイするにはGPU(graphics processing unit)が必要ですが、標準的なVPSプランにはGPUがありません。

以下では、前者の用途だけを扱います。後者についても2分ほど確認する価値があります。この用途に合わないサーバーを購入する人が多いためです。

VPS でゲームをプレイできない理由

標準的な VPS では、仮想 CPU コアは提供されますが、グラフィックスカードはありません。物理ホストからハードウェアがパススルーされることもないため、ゲームが利用できるハードウェアレンダラーは存在しません。実際に割り当てられたデバイスは、次のように確認できます。

sudo apt install -y pciutils
lspci | grep -iE "vga|3d"

表示されるのは、Cirrus Logic や virtio GPU デバイスのような仮想ディスプレイアダプターです。これはプロバイダーの Web コンソールに画面を表示するためのもので、背後に 3D アクセラレーションはありません。その上にデスクトップと VNC サーバーをインストールすると、glxinfo -B はレンダラーとして llvmpipe を報告します。これは CPU 上で動作する Mesa のソフトウェアレンダラーです。CPU で描画する最新の 3D ゲームは、毎秒数フレームしか実行できません。そのため、何もサーバーの外へ送信される前からプレイできない状態になります。Windows インスタンスでも、別の形で同じ問題が発生します。多くのゲームは、作成できるディスプレイアダプターがないため Direct3D デバイスを作成できなかったというエラーを表示して、起動時に終了します。

2 つ目の問題は、画面を手元へ戻すまでの通信です。リモートサーバーでプレイする場合、各フレームは動画にエンコードされ、インターネット経由で送信され、手元の画面でデコードされます。これにより、ゲーム自体の入力遅延に加えて、エンコードとデコードの時間が発生します。また、RDP と VNC はデスクトップ操作向けに設計されており、毎秒 60 フレームの動きを処理するものではありません。クラウドゲーミングサービスは、実 GPU と専用のストリーミングプロトコルによってこの問題を解決しています。通常の VPS には、そのどちらもありません。ゲームをプレイしたい場合は、GPU 時間を借りてください。ゲームをホストしたい場合は、続きを読んでください。

専用ゲームサーバーに実際に必要なもの

ゲームサーバーはシミュレーションループです。ワールドをメモリ上に保持し、1 秒あたり一定回数更新します。その後、接続中の各プレイヤーに対して、見えている範囲のワールド情報を送信します。

この構造によって、必要なハードウェアが決まります。ループの大部分は 1 スレッドで処理されるため、コア数よりもコア速度が重要です。ワールドはメモリ上にあるため、通常は RAM が最初に上限へ達します。ディスクはプレイ中の負荷が低く、ロード時と保存時に忙しくなります。ネットワーク経路によって ping が決まり、プランのティアを変更しても ping は変わりません。

シングルコア性能はコア数を上回ります

多くのゲームサーバーは、1 本のメインスレッドでゲーム世界を進行させます。Minecraft の tick ループと Source engine のサーバーフレームもこの方式です。各 tick には期限があります。Minecraft Java は 1 秒あたり 20 tick で動作するため、各 tick に割り当てられる時間は 50 ミリ秒です。処理がこの時間内に収まらないと、サーバーは次のメッセージを正確に出力します。

[12:04:51] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 2547ms or 50 ticks behind

この行は、1 つのスレッドが時間切れになったことを示します。コアを追加しても、そのスレッドに使える時間は増えません。高速な vCPU が 2 つあるプランは、低速な vCPU が 8 つあるプランで低下する tick rate を維持できます。8 つのうち、重要な処理を実行しているのは 1 つだけだからです。

契約する前に、シングルスレッド性能を測定してください。

sudo apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 run

events per second 行を確認します。この数値は単独では意味を持たず、比較して初めて意味を持ちます。そのため、候補となる 2 つのプランで実行し、結果を横に並べて比較してください。VPS のベンチマークを完全に実行する方法では、ディスクとネットワークも同じ方法で測定します。

追加のコアにも用途はあります。追加のコアで 2 つ目のゲームサーバー、データベース、夜間バックアップ、チャンクの事前生成を実行すれば、tick スレッドから処理時間を奪わずに済みます。サーバーソフトウェアも処理の分散に対応してきました。人気の Minecraft サーバーフォークである Paper は、一部の処理をメインの tick スレッドから移します。そのため、選ぶべき構成は、低速なコアを多数備えたものではなく、高速なコアを少数備えたものです。

プランのページには表示されない数値が 1 つあります。それによって、料金を支払った高速なコアを本当に自分が使えているかどうかが決まります。

vmstat 1 5

st 列は、仮想 CPU が実行可能な状態だった時間のうち、物理ホストがそのコアを別の利用者に割り当てていた割合です。st が数パーセントを超える状態で継続する場合、ホストのリソースは過剰販売されています。top ではサーバーの CPU がアイドル状態に見えていても、プレイヤーにはそれがカクつきとして現れます。そのアイドル時間は、実際には自由に使える時間ではないためです。

ゲームサーバーにはどの程度の RAM が必要ですか?

ChartCommon starting RAM per game server (published guidance, not a measurement)
The data behind this chart
[
  {
    "label": "Minecraft Java, vanilla",
    "players": 10,
    "ram_gb": 2
  },
  {
    "label": "Minecraft Java, large modpack",
    "players": 10,
    "ram_gb": 8
  },
  {
    "label": "Valheim",
    "players": 10,
    "ram_gb": 4
  },
  {
    "label": "Palworld",
    "players": 32,
    "ram_gb": 16
  }
]

これらは、2026年8月時点でゲームおよび modpack のドキュメントに記載されている初期割り当てです。1台のサーバーで測定した値ではなく、目安です。Vanilla Minecraft Java は、約 10 人のプレイヤーであれば、2 GB のヒープで安定して動作します。同じ人数でも、大規模な modpack では 8 GB が必要です。mod によってエンティティや生成構造物が追加され、それらがすべてこのヒープに保持されるためです。Valheim の公式最小要件は 2 GB ですが、小規模なワールドを運用する管理者からは、プロセスが 3 GB 近くで落ち着くとの報告があります。そのため、まずは 4 GB を割り当てるのが妥当です。Palworld は例外で、32 人の最大プレイヤー数に対して 16 GB を必要とします。これは Pocketpair が推奨している値です。

RAM の使用量は接続数に比例しません。読み込まれているワールドの範囲に比例します。各プレイヤーの周囲にあるリージョンが読み込まれるため、2人のプレイヤーが同じ場所にいる場合は、マップの反対側をそれぞれ探索している場合より使用量が大幅に少なくなります。そのため、「プレイヤー1人あたりの RAM」は大まかな目安にすぎず、実際の要因は「アクティブなエリアあたりの RAM」です。少人数でも探索を好むグループは、人数を2倍にして見積もったプランでも容量を使い切ることがあります。

Java サーバーには、さらに2つのルールがあります。JVM がヒープのサイズ変更で一時停止しないよう、最小ヒープと最大ヒープを同じ値に設定します。

java -Xms4G -Xmx4G -jar server.jar nogui

そのうえで、余裕を残してください。JVM は、指定したヒープ以外にも、スレッドスタックやネイティブバッファーのためにメモリを使用します。また、カーネルはワールドファイルを高速に読み込むためにページキャッシュを必要とします。6 GB のサーバーでは、4 GB のヒープが妥当であり、6 GB のヒープは適切ではありません。

メモリ不足による2種類の障害は、見た目がまったく異なります。両方のメッセージを覚えておいてください。ヒープが小さすぎる場合は Java 内部で例外が発生し、サーバーは通常そのまま動作を続けます。

java.lang.OutOfMemoryError: Java heap space

サーバー全体の容量を超えるヒープを設定すると、プロセス全体が外部から強制終了されます。コンソールに表示されるのは Killed だけで、根拠はカーネルログに残ります。

sudo dmesg -T | grep -i "out of memory"

swap を追加しても、強制終了の問題が解決するわけではありません。ワールドを swap から読み戻す必要がある tick ループは、すべての期限に間に合わなくなります。その結果、サーバーがクラッシュする代わりに、プレイヤーから見るとフリーズした状態になります。

バージョンに関する注意点です。2026年8月時点では、Minecraft Java 1.20.5 以降には Java 21 が必要です。古いランタイムでは起動後に unsupported class file version エラーが発生します。これはコンパイラーのメッセージのように見えるため、初めて遭遇すると原因が分かりにくいエラーです。

sudo apt install -y openjdk-21-jre-headless
java -version

ゲームサーバーではディスク速度が重要ですか?

プレイ中は予想ほど影響しませんが、2 つの場面では大きく影響します。起動時にワールドをメモリへ読み込み、自動保存時にディスクへ書き戻すため、ディスク速度は起動の遅さと、保存処理中の一時停止として現れます。それ以外の時間は、ほとんどの読み取りが RAM から処理されます。

この説明だけでは、ディスクの重要性を十分に表せない要因が 2 つあります。プレイヤーが移動している間に探索で新しいチャンクやゾーンをディスクから読み込む場合、その読み取りは tick の予算内で実行されます。広いワールドの自動保存では一度に大量のデータを書き込むため、遅いボリュームでは書き込みによってループが長時間ブロックされ、上記の「Can't keep up」警告が出力されます。どちらもスループットよりレイテンシーの問題です。そのため、ここでは見かけ上の 1 秒あたりのメガバイト数よりも、VPS における NVMe と SATA SSD の差が重要になります。確認すべきなのは、1 回の小さな処理にかかる時間です。

ボリュームは、増加を見込んだサイズにします。誰かが新しい場所へ移動するたびにワールドは大きくなり、バックアップによって必要な容量はその分だけ増えます。du -sh world を週 1 回、1 か月間実行すれば、実際の増加率を把握できます。

ティックレート、ping、および両者の違い

ティックレートは、サーバーが 1 秒あたりにワールドを再計算する回数です。Minecraft Java は 20 で動作します。Source engine のサーバーは通常 64 で動作します。Minecraft では、ティックレートはゲーム設計の一部であるため、より高い値を購入することはできません。そのため、目標は 20 を超えることではなく、20 を維持することです。

ping は、プレイヤーとサーバー間の往復時間です。この 2 つは異なる症状を引き起こすため、費用をかける前に切り分けてください。サーバーがティック処理を取りこぼすと、全員が同じタイミングでラバーバンディングし、サーバーログにもそのことが明確に記録されます。1 人のプレイヤーだけネットワーク経路が長い場合は、そのプレイヤーだけが遅延し、他のプレイヤーは問題なくプレイできます。後者は、より高性能な CPU に交換しても解決しません。

遅延は料金プランではなく、場所で決まります

光ファイバー内の光は、1 ミリ秒あたり約 200 km 進みます。往復では距離を 2 回進むため、プレイヤーとサーバーの距離が 100 km 増えるごとに、最低でもおよそ 1 ms かかります。これを下回るプロバイダーはなく、プランをアップグレードしても変わりません。

ChartRound trip floor by distance, fibre physics only
The data behind this chart
[
  {
    "label": "Toronto to New York",
    "distance_km": 550,
    "rtt_floor_ms": 5.5
  },
  {
    "label": "Dallas to Chicago",
    "distance_km": 1290,
    "rtt_floor_ms": 12.9
  },
  {
    "label": "Dallas to Los Angeles",
    "distance_km": 1990,
    "rtt_floor_ms": 19.9
  },
  {
    "label": "New York to London",
    "distance_km": 5570,
    "rtt_floor_ms": 55.7
  },
  {
    "label": "Los Angeles to Sydney",
    "distance_km": 12070,
    "rtt_floor_ms": 120.7
  }
]

これは大圏距離から計算した下限です。実際の光ファイバーは直線ではなく、経路上の各ルーターでも少しずつ時間がかかるため、実測値は下限の約 2 倍になることが多いです。Toronto のプレイヤーが、550 km 離れた New York のサーバーへ接続する場合、下限は 5.5 ms で、通常は 10 ms 台になります。Los Angeles から Sydney までの経路の下限は 120.7 ms であり、いくら料金を支払っても短縮できません。

そのため、サーバーはプレイする人の近くに配置してください。グループが海をまたいで分散している場合、誰かは長い経路を使うことになります。通常は、プレイヤーの大半がいるリージョンを選ぶのが公平です。

推測せず、経路を測定してください。

sudo apt install -y mtr-tiny
mtr -rwzc 100 203.0.113.10

まず最後の行を確認します。その行がサーバーを示しており、ゲームの体感を左右するのは、そのサーバーまでのパケット損失と遅延だけです。途中のホップで損失が表示されても、最終ホップが正常なら、ほとんどの場合はそのルーターの ICMP レート制限です。ルーターはプローブパケットへの応答の優先度を下げながら、実際のネットワークトラフィックは通常どおり転送するためです。プレイヤーごとに経路が異なるため、各自がサーバーに向けて実行してください。

往復遅延の下限の計算方法

ガラス中の光は、真空中の速度のおよそ 3 分の 2 で進みます。これは 1 ミリ秒あたり約 200 km に相当します。往復では距離を 2 回進むため、ミリ秒単位の下限は、片道距離をキロメートル単位で 100 で割った値です。New York から London までは 5,570 km あり、5570 を 100 で割ると 55.7 ms になります。ケーブルは海岸線に沿って敷設され、ルーターで処理時間もかかるため、実測値は必ずこれより高くなります。

ゲームに必要なポートだけを開く

ゲームサーバーで開くポートは、1 つか 2 つだけにします。それ以外は開きません。一般的なデフォルト値は次のとおりです。

  • Minecraft Java Edition: TCP 25565
  • Minecraft Bedrock Edition: UDP 19132
  • Valheim: UDP 2456 と UDP 2457
  • Palworld: UDP 8211
  • Counter-Strike 2 などの Source engine ゲーム: UDP 27015

ゲームの公式ドキュメントも確認してください。タイトルによっては、追加のクエリポートを使用します。Valheim が代表例です。2456 はゲームトラフィックを処理し、2457 は Steam のサーバークエリに応答します。これにより、サーバーがブラウザーの一覧に表示されます。Valheim は UDP のみを使用するため、これらの番号を TCP で開いても意味がありません。

ファイアウォールを有効にする前に SSH を許可してください。許可しないと、自分のサーバーから締め出されます。

sudo ufw allow 22/tcp
sudo ufw allow 25565/tcp
sudo ufw enable
sudo ufw status verbose

多くのプロバイダーは、サーバー本体のファイアウォールとは別に、コントロールパネルでネットワークファイアウォールも提供しています。ufw で開いていても、プロバイダー側で閉じていれば接続は拒否されます。外部からは同じ症状に見えるため、設定ファイルを編集する前に両方を確認してください。

別のマシンから TCP ポートを確認するのは簡単です。

sudo apt install -y netcat-openbsd
nc -vz 203.0.113.10 25565

UDP は同じ方法ではテストできません。閉じた UDP ポートは通常応答しないため、プローブに応答がなくても何も確認できません。代わりにサーバー側で確認し、想定したポートにゲームプロセスがバインドされているかを調べます。

sudo ss -lunp | grep 2456

RCON はリモートコンソールプロトコルであり、インターネットに公開しないでください。デフォルトではポート 25575 で、単一のパスワードを平文接続で送信します。127.0.0.1 にバインドし、SSH トンネル経由で接続してください。ゲームサーバーは、権限のない専用ユーザーとして実行してください。これにより、mod のバグがマシンの他の部分に到達することを防げます。新しい VPS で最初の 10 分間に行う作業では、このセクションの前提となるユーザーアカウントの設定と SSH の強化について説明しています。

systemd でサーバーを実行し、再起動させる

SSH セッションで手動起動したサーバーは、セッションを閉じると停止し、再起動後も停止したままです。systemd を使うと、この両方を解決できます。/etc/systemd/system/minecraft.service を記述します。

[Unit]
Description=Minecraft Java server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xms4G -Xmx4G -jar server.jar nogui
Restart=on-failure
RestartSec=15
TimeoutStopSec=180

[Install]
WantedBy=multi-user.target

Restart=on-failure はクラッシュ後にサーバーを再起動し、正常なシャットダウン後は停止したままにします。これは意図した動作です。Restart=always は、サーバーを意図的に停止するたびに再起動しようとします。TimeoutStopSec=180 は見た目以上に重要です。systemctl stop は SIGTERM を送信します。vanilla Minecraft server はこのシグナルを受け取ると、終了前にワールドを保存します。タイムアウトすると、systemd は代わりに SIGKILL を送信します。大きなワールドの書き込みには、デフォルトの 90 秒を超えることがあります。SIGKILL の時点でディスクに書き込まれていないデータは失われます。

sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo journalctl -u minecraft -f

正常に起動すると、Done (12.345s)! For help, type "help" のような行で終了します。unit の状態が activating と failed の間で切り替わる場合、journalctl -u minecraft -n 50 に原因が記録されています。通常は WorkingDirectory のパスが誤っているか、ヒープサイズがサーバーのメモリ容量を超えています。

systemd には対話型コンソールがないため、あらかじめ運用方法を決めておきます。コマンドには localhost 上の RCON を使用するか、サーバーを tmux セッション内で実行します。これは、ログイン間でも VPS 上で長時間実行する Claude Code セッションを維持するための方法と同じです。

Steam で配布されるゲームでは、この前に SteamCMD が必要です。Ubuntu パッケージは 32 bit バイナリなので、アーキテクチャの行が必要です。この行を省略すると、apt はインストール候補がないと報告します。

sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y steamcmd

一部のゲームサーバーは、長時間稼働するとメモリ使用量が増加します。根本的な修正ではありませんが、静かな時間帯に定期的に再起動する方法が一般的な回避策です。systemd timer から systemctl restart を呼び出す方が cron エントリより確認しやすく、systemctl list-timers で次回の実行時刻を正確に確認できます。

定期的にワールド全体をバックアップする

ゲームサーバー上のデータは、ワールドディレクトリとプレイヤーデータを除けば、すべて置き換え可能です。ゲームの再インストールは数分で完了します。しかし、グループで構築したものを作り直すには数か月かかります。

安全なバックアップは、データへの書き込みが発生していない状態で取得します。サーバーを 1 分間停止すれば、次の状態を確実にできます。

sudo systemctl stop minecraft
sudo tar czf /var/backups/mc-$(date +%F).tgz -C /opt/minecraft world world_nether world_the_end
sudo systemctl start minecraft

夜間に停止できない場合は、代わりに最初にワールドをフラッシュします。Minecraft コンソールでは、save-off で自動保存を停止し、save-all flush で保留中のデータをすべて書き込み、コピーの完了後に save-on で自動保存を再開します。サーバーが書き込み中にワールドをコピーすると、region ファイルが途中までしか書き込まれていない状態で取得される可能性があります。その問題は、復元が必要になった日まで発見できません。

少なくとも 1 つのコピーをサーバー外に保管してください。同じディスク上のバックアップは、そのディスクが故障すると失われます。また、provider snapshot は同じアカウント内に保存されるため、バックアップではなく利便性のための機能です。そのアカウントを失う可能性があるためです。オフサイトストレージへの restic の定期バックアップを利用すれば、保持期間と重複排除を管理できます。そのため、毎晩取得するワールドのコピーでボリュームがいっぱいになることを防げます。

その後、実際に 1 つ復元してください。復元したことのないバックアップは、推測にすぎません。昨夜のアーカイブを予備のディレクトリに展開し、テストサーバーがそのディレクトリを参照するように設定します。そして、ワールドが読み込まれ、建物が元の場所にあることを確認してください。

契約する前に確認してください

年額ではなく1か月分を購入し、実際のプレイヤーを使って1晩テストします。シングルスレッドの sysbench ベンチマークを実行し、その後、全プレイヤーにサーバーに向けて mtr を実行してもらいます。VPS の完全なベンチマーク手順では、これらのツールの使い方と、悪い結果がどのように見えるかを説明しています。また、VPS の実際の月額費用を読めば、プランページで最も大きく表示されたリソースではなく、サーバーの性能を制限するリソースに料金を支払っているか確認できます。

この続きにあたる記事が2本あります。VPS で Minecraft サーバーを構築するでは、上記の内容を、最初に選ぶ人が多いゲームを例に、手順として説明しています。ゲームをしない時間にもサーバーを有効活用したい場合は、VPS で実行できるその他の用途一覧も参考になります。

FAQ

VPS でゲーミング PC を購入せずにゲームをプレイできますか?

いいえ。標準的な VPS には GPU がなく、プロバイダーのコンソール用の仮想ディスプレイアダプターしかありません。そのため、デスクトップをインストールすると glxinfo -B はソフトウェアレンダラー llvmpipe を報告し、3D ゲームは数フレーム毎秒でしか動作しません。GPU を接続しても、リモートプレイでは各フレームの往復に動画のエンコードとデコードが加わり、RDP と VNC はその用途向けに設計されていません。VPS は、グループが接続する専用サーバーをホスティングするために使います。プレイすることが目的なら、GPU 時間をレンタルするか、クラウドゲーミングサービスを利用してください。

ゲームサーバーには CPU コアがいくつ必要ですか?

多くのゲームでは、低速な 8 コアより高速な 2 コアの方が適しています。ワールドのシミュレーションは 1 本のメインスレッドで実行され、追加のコアでは、そのスレッドが 50 ms の期限内に処理を終えることを助けられないためです。候補のプランを sysbench cpu --cpu-max-prime=20000 --threads=1 run で比較し、events per second の値を確認してください。同じマシンで 2 台目のサーバーやデータベースも実行する場合は、追加のコアに費用をかける価値があります。これらの処理をティック用スレッドの時間を奪わずに実行できるためです。

Minecraft サーバーにはどの程度の RAM が必要ですか?

プレイヤーが約 10 人の vanilla ワールドでは、ヒープに約 2 GB が必要です。同じ人数で大規模な modpack を使用する場合は、8 GB が必要です。-Xms-Xmx は同じ値に設定し、オペレーティングシステム用にマシンの 1 GB から 2 GB を空けてください。JVM はヒープ外でもメモリを使用し、カーネルにはページキャッシュが必要なためです。マシンの容量を超えるヒープを設定すると、カーネルによってプロセスが kill されます。dmesg では Java エラーではなく、out of memory の行として表示されます。

サーバーに CPU と RAM の余裕があるのに、プレイヤーにラグが発生するのはなぜですか?

この状況では、2 つの原因が考えられます。サーバーログで Can't keep up! Is the server overloaded? を確認してください。これは、他のコアがアイドル状態でも、1 本のメインスレッドが 50 ms のティック予算を超えたことを示します。その行がない場合は、ネットワーク経路に問題があります。各プレイヤーに、サーバーアドレスを対象として mtr -rwzc 100 203.0.113.10 を実行してもらい、最後の行を確認してください。vmstat 1st 列も確認します。数パーセントを超える steal time は、ホストが過剰収容されていることを示します。そのため、表示されているアイドル CPU は実際には利用できません。

ゲームサーバー用に開放する必要があるポートはどれですか?

ゲーム自体のポートと SSH だけです。Minecraft Java は TCP 25565、Minecraft Bedrock は UDP 19132、Valheim は UDP 2456 と 2457、Palworld は UDP 8211 を使用します。ufw enable を実行する前に SSH のルールを追加してください。追加しないと、マシンにアクセスできなくなります。多くのプロバイダーでは、コントロールパネル側でも別のファイアウォールが動作しているため、両方でポートを開放する必要があります。RCON のポート 25575 はインターネットに公開しないでください。パスワードが平文で送信されるためです。