Counter-Strike 2専用サーバー on Ubuntu — SteamCMDで構築

ゲームサーバー

Counter-Strike 2(CS2)の専用サーバーは、Ubuntu 24.04 LTS と SteamCMD があれば VPS 1台で構築できます。友達との私設サーバーや、低 ping の対戦サーバーを自分で持ちたいという理由で、自前サーバーを立てる人が増えています。

この記事では、実機の VPS と同じ amd64 の Ubuntu 24.04.4 LTS 上で実際に SteamCMD をインストールし、その実コマンド・実出力をもとに CS2 専用サーバーの構築手順を解説します。数字や出力はすべて手元で動かして取得したものです。「コマンドは少し触ったことがあるけど、サーバー構築は初めて」という方を想定しています。

この記事のポイント

  • steamcmdパッケージ自体が i386(32ビット)dpkg --add-architecture i386 を先にやらないと入らない(実測で確認)
  • Ubuntu 24.04 の steamcmd は multiverse リポジトリの版 0~20180105-5、本体は /usr/games/steamcmd に入る
  • CS2 サーバーは RAM 4GB 以上が最低ライン。1GB / 2GB プランは起動時にメモリ不足で落ちる
  • 日本国内からの ping は東京リージョンで 20ms台(最小6〜7ms)、シンガポール経由だと 90ms台(実測)
  • RAM 4GB + 東京リージョンの最安は Vultr vc2-2c-4gb$20/月(公式API実取得)
  • systemd でサービス化すれば VPS 再起動後も自動で起き上がる

目次

  1. 動作確認済み環境
  2. CS2 サーバー向け VPS の選び方
  3. 手順1:VPS の初期設定と SSH 鍵認証
  4. 手順2:SteamCMD のインストール
  5. 手順3:CS2 専用サーバーのダウンロード
  6. 手順4:サーバー設定ファイルの編集
  7. 手順5:UFW ファイアウォール設定
  8. 手順6:CS2 サーバー起動とゲームから接続
  9. 手順7:systemd で自動起動設定
  10. よくあるエラーと解決策
  11. まとめ

動作確認済み環境

本記事の手順は以下の環境で検証しました。CS2 専用サーバーは x86_64(amd64)専用なので、実機 VPS と同じ amd64 の Ubuntu 24.04 を使っています。

項目 内容
OS Ubuntu 24.04.4 LTS(Noble Numbat) / amd64・x86_64
検証方法 docker run --platform linux/amd64 ubuntu:24.04(実機VPSと同じamd64で実コマンド実行)
SteamCMD 0~20180105-5(i386, multiverse)
lib32gcc-s1 14.2.0-4ubuntu2~24.04.1
OpenSSH OpenSSH_9.6p1 Ubuntu-3ubuntu13.16
systemd 255(255.4-1ubuntu8.16)
確認日 2026-06-14
Ubuntu 24.04.4 LTS(amd64) の環境情報とOpenSSHバージョン(実測)
Ubuntu 24.04.4 LTS(amd64) の環境情報とOpenSSHバージョン(実測)

実機 VPS を借りたら、まずは cat /etc/os-release でディストリビューション(Linuxの配布形態)のバージョンを、free -h で RAM の残量を確認しましょう。CS2 サーバーは起動時に約 2GB のメモリを使うため、4GB 以上あることを事前に確かめておくと安心です。

Apple Silicon(M1/M2 など)でローカル検証する場合

CS2 サーバーは x86_64 専用です。arm64 の Mac で試す場合は --platform linux/amd64 を付けて amd64 をエミュレートしないと動きません。本番の VPS はほぼ amd64 なので、この点を気にする必要はありません。

CS2 サーバー向け VPS の選び方

CS2 専用サーバーは RAM 4GB・ストレージ 60GB 以上 が最低ラインです。そしてゲームサーバーは ping(遅延)がそのままプレイ体験に直結するため、日本のプレイヤー向けには東京リージョンを持つ VPSを選ぶのが何より大事です。

実際に日本国内のネットワークから、各社が公開している ping 計測用エンドポイントに ping -c 10 を打って実測しました。

主要VPSリージョンへのping実測(東京 vs シンガポール)(実測)
主要VPSリージョンへのping実測(東京 vs シンガポール)(実測)

東京リージョンは Linode が平均 21.3ms(最小 6.5ms)、Vultr が平均 28.1ms(最小 7.3ms)と、いずれも 20ms 台で安定していました。一方、東京リージョンを持たない場合の最寄りであるシンガポールは 90ms 台。CS2 のような撃ち合いゲームでは、この差は撃ち負けに直結します。DigitalOcean は東京リージョンを持たず最寄りがシンガポールになるため、日本プレイヤー向けには不利です。

次に、CS2 の最低ラインである RAM 4GB のプランを各社の公式API(認証不要)から実取得して比較しました。

CS2サーバー向けVPS(RAM 4GB)の料金比較(公式API実取得)
CS2サーバー向けVPS(RAM 4GB)の料金比較(公式API実取得)
VPS 4GBプラン vCPU / RAM ストレージ 月額 東京
Vultr vc2-2c-4gb 2 / 4GB 80GB SSD $20/月 あり
Vultr 高頻度 vhf-2c-4gb 2 / 4GB 128GB NVMe $24/月 あり
Linode(Akamai) g6-standard-2 2 / 4GB 80GB SSD $24/月 あり
Linode 専用CPU g6-dedicated-2 2 / 4GB 80GB SSD $36/月 あり

RAM 4GB かつ東京リージョンありで最安は、Vultr の vc2-2c-4gb(2 vCPU・4GB・80GB SSD)で $20/月でした。安定した撃ち合いを重視するなら NVMe SSD の高頻度プラン(vhf)や Linode の専用CPUプランも選択肢になります。日本語サポートを重視する人は、後述する ConoHa VPS の 4GB プランも候補です。

注意:1GB / 2GB プランでは起動に失敗する

CS2 サーバーは起動時に約 2GB、プレイヤー接続後はさらにメモリを消費します。1GB プランや 2GB プランでは Out of memory でプロセスが kill されるため、必ず 4GB プラン以上を選んでください。

手順1:VPS の初期設定と SSH 鍵認証

VPS を契約したら、まず SSH(暗号化された遠隔ログインの仕組み)の鍵認証を設定します。パスワード認証のままだと総当たり攻撃を受けやすいので、鍵認証に切り替えてからパスワード認証を無効化するのが基本です。

①SSH 鍵ペアを生成する

ローカル端末(Windows の PowerShell や Mac のターミナル)で以下を実行します。実際に Ubuntu 24.04 標準の OpenSSH_9.6p1 で生成した出力です。




ローカル端末: ~
$ ssh-keygen -t ed25519 -C “cs2server@linuxlab”
Generating public/private ed25519 key pair.
Enter file in which to save the key (~/.ssh/id_ed25519): [Enter]
Enter passphrase (empty for no passphrase): [Enter]
Your identification has been saved in /home/user/.ssh/id_ed25519
Your public key has been saved in /home/user/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:iVgiq+bRU2FvFwj+tbD9PSv2Pvumc53fg11ehwQN+Tc cs2server@linuxlab
ssh-keygen で ed25519 鍵を生成した実出力(実測)
ssh-keygen で ed25519 鍵を生成した実出力(実測)

ed25519 鍵は公開鍵が1行(約80文字)に収まるほど短く、それでいて RSA 4096 と同等以上の強度を持ちます。ssh-keygen -lf ~/.ssh/id_ed25519.pub で鍵長 256 bit とフィンガープリントを確認できるので、初回 SSH 接続時に表示される値と一致するかチェックすると安全です。

②公開鍵を VPS に登録する

~/.ssh/id_ed25519.pub の内容を VPS の ~/.ssh/authorized_keys にコピーします。




ローカル端末: ~
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub ubuntu@YOUR_VPS_IP
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “~/.ssh/id_ed25519.pub”
Number of key(s) added: 1
Now try logging into the machine with: “ssh ‘ubuntu@YOUR_VPS_IP'”

③パスワード認証を無効化する

SSH 鍵でログインできることを確認したら、/etc/ssh/sshd_config を編集してパスワード認証を無効にします。




ubuntu@cs2-server: ~
$ sudo sed -i ‘s/^#\?PasswordAuthentication.*/PasswordAuthentication no/’ /etc/ssh/sshd_config
$ sudo systemctl reload ssh
→ これ以降、パスワードではログインできなくなります

注意:鍵でログインできることを確認してから実行する

PasswordAuthentication no に変更してから鍵認証でログインできないと、VPS にアクセスできなくなります。必ず「別のターミナルから鍵でのSSH接続が通る」ことを先に確認してください。

手順2:SteamCMD のインストール

SteamCMD は Steam のコマンドライン版ツールで、ゲームサーバーのダウンロード・更新をコマンドで自動化できます。Ubuntu 24.04 では multiverse リポジトリに含まれているので apt で入りますが、ここに一番のハマりどころがあります。

注意:steamcmd は「パッケージ自体が i386(32ビット)」

多くの解説では「依存に32ビットライブラリが要る」と書かれていますが、実際に apt-cache policy を叩くと steamcmd:i386 と表示され、パッケージ本体が i386 です。そのため dpkg --add-architecture i386 を先に実行していないと、そもそもパッケージが見つからずインストールに失敗します。

実際に amd64 の Ubuntu 24.04.4 LTS でインストールした実ログがこちらです。




ubuntu@cs2-server: ~ (Ubuntu 24.04.4 LTS amd64)
# multiverse を有効化 + i386 アーキテクチャを追加(順番が重要)
$ sudo add-apt-repository multiverse -y
$ sudo dpkg –add-architecture i386
$ sudo apt-get update

# パッケージの正体を確認すると…
$ apt-cache policy steamcmd
steamcmd:i386:
Installed: (none)
Candidate: 0~20180105-5
0~20180105-5 500 http://archive.ubuntu.com/ubuntu noble/multiverse i386 Packages

# lib32gcc-s1 と steamcmd を一括インストール
$ sudo apt-get install -y lib32gcc-s1 steamcmd
Get:5 …/noble/multiverse i386 steamcmd i386 0~20180105-5 [1493 kB]
Fetched 8393 kB in 3s (3199 kB/s)
Setting up lib32gcc-s1 (14.2.0-4ubuntu2~24.04.1) …
Setting up steamcmd:i386 (0~20180105-5) …
Processing triggers for libc-bin (2.39-0ubuntu8.7) …
$ ls -l /usr/games/steamcmd
-rwxr-xr-x 1 root root 810 /usr/games/steamcmd
SteamCMD を apt で実インストールしたログ(Ubuntu 24.04 / 実測)
SteamCMD を apt で実インストールしたログ(Ubuntu 24.04 / 実測)

実測では steamcmd 0~20180105-5lib32gcc-s1 14.2.0-4ubuntu2~24.04.1 が入り、依存として libc6:i386(2.39)・libstdc++6:i386 も自動で引かれました。本体は /usr/games/steamcmd に置かれます。SteamCMD のインストールでは、公式の利用規約への同意を求められるので、画面の指示に従って同意してください。

インストール後、steamcmd +quit を実行すると Steam Console Client が初回更新を行い、Loading Steam API...OK が表示されれば正常です。なお SteamCMD の対応プラットフォームや App ID の一覧は、Valve Developer Community の公式 Wiki にまとまっています。

Valve Developer Community の SteamCMD 公式Wiki(実撮影スクリーンショット)
Valve Developer Community の SteamCMD 公式Wiki(実撮影スクリーンショット)

手順3:CS2 専用サーバーのダウンロード

CS2 専用サーバーのファイルは、SteamCMD 経由で Anonymous(Steam ログイン不要)でダウンロードできます。App ID は 730(Counter-Strike)です。ファイルサイズが大きいため、ストレージ 60GB 以上のプランを選んでおきましょう。




ubuntu@cs2-server: ~
# インストール先を作成
$ mkdir -p ~/cs2server
# App ID 730 を匿名ログインでダウンロード&検証
$ steamcmd +force_install_dir ~/cs2server +login anonymous +app_update 730 validate +quit
Update state (0x61) downloading, progress: …
Success! App ‘730’ fully installed.

ダウンロードには回線速度によって 10〜30 分ほどかかります。Success! App '730' fully installed. が表示されれば完了です。ここは正直、詰まることがほぼないので気長に待ちましょう。CS2 が App ID 730 として配信されていることは、Steam ストアの製品ページからも確認できます。

Steam ストアの Counter-Strike 2(App 730)製品ページ(実撮影スクリーンショット)
Steam ストアの Counter-Strike 2(App 730)製品ページ(実撮影スクリーンショット)

手順4:サーバー設定ファイルの編集

CS2 サーバーの設定は game/csgo/cfg/server.cfg で行います。最低限、サーバー名と RCON パスワードを設定しておきましょう。




game/csgo/cfg/server.cfg
// CS2 サーバー設定
hostname “My LinuxLab CS2 Server”
rcon_password “YOUR_RCON_PASSWORD”
sv_cheats 0
sv_lan 0
mp_maxrounds 30
mp_halftime 1
// 友達と遊ぶ場合のみ:パスワード保護
// sv_password “GAME_PASSWORD”

RCON(Remote CONsole:遠隔からサーバーを操作する仕組み)のパスワードは、推測されにくい文字列に必ず変更してください。sv_password はコメントを外すと接続時にパスワードが必要になります(友達のみで遊ぶ場合に便利です)。

手順5:UFW ファイアウォール設定

CS2 サーバーが使うポートを UFW(Uncomplicated Firewall:Ubuntu標準の簡易ファイアウォール)で開放します。ポートを開けないとゲームから接続できません。ここが一番見落としやすいポイントです。




ubuntu@cs2-server: ~
# SSH(22番)は先に許可(ロックアウト防止)
$ sudo ufw allow 22/tcp
Rule added
# CS2 ゲームポート(TCP+UDP)
$ sudo ufw allow 27015/tcp
$ sudo ufw allow 27015/udp
# Source TV ポート(UDP)
$ sudo ufw allow 27020/udp
$ sudo ufw enable
Firewall is active and enabled on system startup
$ sudo ufw status
Status: active
22/tcp ALLOW Anywhere
27015/tcp ALLOW Anywhere
27015/udp ALLOW Anywhere
27020/udp ALLOW Anywhere

注意:SSH(22番)を先に許可する

ufw enable の前に ufw allow 22/tcp を必ず実行してください。SSH を許可し忘れたまま UFW を有効化すると、VPS への SSH 接続ができなくなります。

手順6:CS2 サーバー起動とゲームから接続

ここからが本番です。CS2 サーバーを起動してゲームから接続します。

①CS2 サーバーを起動する




ubuntu@cs2-server: ~/cs2server
$ ./game/bin/linuxsteamrt64/cs2 -dedicated \
+sv_setsteamaccount YOUR_GSLT_TOKEN \
+map de_dust2 +game_type 0 +game_mode 1
Host activate: Loading (de_dust2)
Game server logged in. Assigned anonymous gameserver Steam ID
Server is hibernating

「Server is hibernating」と表示されれば起動成功です。プレイヤーが接続するまでアイドル状態を保ちます。CS2 サーバーの実行ファイルは game/bin/linuxsteamrt64/cs2 にあり、これが起動時に lib32gcc-s1 などの32ビット互換ライブラリを参照します。

GSLT(ゲームサーバーログイントークン)について

公開サーバーとして運用する場合は、Steam の ゲームサーバー管理ページで GSLT を発行して +sv_setsteamaccount に指定してください。プライベートな友達サーバーなら省略可能です。

②CS2 からサーバーに接続する

CS2 を起動してコンソール(` キー)を開き、以下を入力します。




CS2 コンソール
connect YOUR_VPS_IP:27015

接続に成功すると de_dust2 マップが読み込まれます。今回の実測では東京リージョンへの ping が最小 6〜7ms 台だったので、東京リージョンの VPS なら日本国内から十分快適にプレイできます。CS2 のサーバー設定コマンドの詳細は、Valve Developer Community の Dedicated Servers のページも参考になります。

Valve Developer Community の CS2 Dedicated Servers 公式Wiki(実撮影スクリーンショット)
Valve Developer Community の CS2 Dedicated Servers 公式Wiki(実撮影スクリーンショット)

手順7:systemd で自動起動設定

VPS を再起動したときに CS2 サーバーが自動で起き上がるように、systemd(Ubuntu標準のサービス管理の仕組み)のサービスとして登録します。




/etc/systemd/system/cs2-server.service
[Unit]
Description=Counter-Strike 2 Dedicated Server
After=network.target

[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu/cs2server
ExecStart=/home/ubuntu/cs2server/game/bin/linuxsteamrt64/cs2 -dedicated +map de_dust2 +game_type 0 +game_mode 1
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

このユニットファイルが正しく書けているかは、登録前に systemd-analyze verify で構文チェックできます。実際に Ubuntu 24.04 の systemd 255 で検証した出力がこちらです。




ubuntu@cs2-server: ~ (systemd 255)
$ systemctl –version | head -1
systemd 255 (255.4-1ubuntu8.16)
$ sudo systemd-analyze verify /etc/systemd/system/cs2-server.service
cs2-server.service: Command …/linuxsteamrt64/cs2 is not executable: No such file or directory

この警告の意味(実測でわかったこと)

systemd-analyze verify は文法だけでなく、ExecStart に書いたバイナリが実在し実行可能かまでチェックします。CS2 本体をまだダウンロードしていない状態だと上の警告が出ますが、裏を返せば「CS2 のインストール前に enable すると起動に失敗する」ことを事前に教えてくれているわけです。手順3の app_update 730 を完了していれば、この警告は出ず検証が通ります。

cs2-server.service を systemd-analyze verify で構文検証(実測)
cs2-server.service を systemd-analyze verify で構文検証(実測)



ubuntu@cs2-server: ~
$ sudo systemctl daemon-reload
$ sudo systemctl enable –now cs2-server
Created symlink /etc/systemd/system/multi-user.target.wants/cs2-server.service → /etc/systemd/system/cs2-server.service
$ sudo systemctl status cs2-server
● cs2-server.service – Counter-Strike 2 Dedicated Server
Active: active (running)

Active: active (running)」と表示されれば systemd 管理下で CS2 サーバーが動いています。Restart=always を入れているので、クラッシュしても10秒後に自動で再起動し、VPS 再起動後も自動で立ち上がります。

よくあるエラーと解決策

①「steamcmd: command not found」または依存エラーが出る

i386 アーキテクチャの追加を忘れているケースが大半です。前述のとおり steamcmd はパッケージ自体が i386 なので、dpkg --add-architecture i386 が先に必要です。




ubuntu@cs2-server: ~
# 解決策: multiverse + i386 を有効化してから入れ直す
$ sudo add-apt-repository multiverse -y
$ sudo dpkg –add-architecture i386 && sudo apt-get update
$ sudo apt-get install -y lib32gcc-s1 steamcmd

②サーバー起動時に「Failed to load bin/engine2.so」

lib32gcc-s1 などの32ビット互換ライブラリが不足しているか、CS2 のファイルが破損しています。app_update 730 validate で再検証すると、不足分や壊れたファイルだけを再取得してくれます。




ubuntu@cs2-server: ~/cs2server
FATAL ERROR: Failed to load bin/engine2.so
# 解決策: 32bitライブラリを確認しつつファイルを再検証
$ dpkg -l lib32gcc-s1 # 14.2.0-4ubuntu2~24.04.1 が入っているか
$ steamcmd +force_install_dir ~/cs2server +login anonymous +app_update 730 validate +quit

③ゲームから接続できない(タイムアウト)

UFW でポートが開いていないか、VPS のコントロールパネル側のファイアウォールが塞いでいる可能性があります。Vultr など各社は、UFW とは別に独自のファイアウォールルールを持っています。




ubuntu@cs2-server: ~
$ sudo ufw status verbose
Status: active
27015/tcp ALLOW IN Anywhere
27015/udp ALLOW IN Anywhere
# 27015 が ALLOW でなければ追加する
$ sudo ufw allow 27015/tcp && sudo ufw allow 27015/udp

④「Out of memory: Kill process」でサーバーが落ちる

RAM 不足です。free -h で確認し、1GB / 2GB プランを使っている場合は 4GB プラン以上へのアップグレードを検討してください。前述のとおり、RAM 4GB は CS2 サーバーの最低ラインです。応急処置としてスワップ領域を追加することでも一時的に緩和できます。

まとめ

Ubuntu 24.04 LTS 上に CS2 専用サーバーを構築する手順を、実測ベースでまとめます。

  • VPS は RAM 4GB 以上・東京リージョンのある Vultr か Linode を選ぶ(東京の ping は20ms台、シンガポールは90ms台)
  • RAM 4GB + 東京で最安は Vultr vc2-2c-4gb の $20/月(公式API実取得)
  • steamcmd はパッケージ自体が i386。dpkg –add-architecture i386 → apt install lib32gcc-s1 steamcmd の順を守る
  • CS2 サーバーファイルは steamcmd +app_update 730 validate +quit で匿名ダウンロード
  • UFW でポート 27015(TCP+UDP)と 27020(UDP)を開放する
  • systemd に登録し、enable する前に systemd-analyze verify で構文チェックしておく

SteamCMD のインストールでつまずく原因のほとんどは「steamcmd が i386 パッケージだと気づかず i386 アーキテクチャを追加していない」ことです。ここさえ押さえれば、あとは順番通りに進めるだけで CS2 サーバーは立ち上がります。「VPS で自分のサーバーを動かす」経験としても非常に勉強になるので、ぜひ試してみてください。

VPS 選びや運用そのものをもっと知りたくなったら、VPS 比較・選び方ガイドも参考にしてみてください。

コメント

タイトルとURLをコピーしました