top of page

小さなVPSをゲームサーバーの艦隊に

執筆者の写真: Marcel Dütscher
Marcel Dütscher
7月5日
読了時間: 2分

ぼくたちのオンラインの世界は、ポータルも、公式ワールドも、プレイヤーが作った世界も、すべて借りているLinuxサーバー(VPS)1台で動いています。データセンターも、5桁のクラウド料金もありません。この記事では、サーバーをどう構成したのか、そして途中で学んだことを紹介します。


まず守りをかためる。ゲームをサーバーに載せる前に、基本のセキュリティを最優先にしました。必要なポートだけを開くファイアウォール(ufw)、自動ログイン攻撃を防ぐfail2ban、そして鍵だけで入れるSSHです。リバースプロキシにはDocker版のCaddyが動いていて、TLS証明書を自動で取得し、リクエストを正しいコンテナに振り分けます。


世界ごとに専用のコンテナ。ゲーム本体はDockerイメージとして動き、世界ごとに専用のコンテナが、決まった上限つきで用意されます。1つの世界につきRAM 768 MBとCPU 2コア、同時にアクティブにできる世界は最大10個です。こうすれば、ひとつの世界がサーバー全体を落としてしまうことはありません。


こちらに電話してくれる監視。Netdataが、「ディスクがいっぱいになりそう」から「ポータルが応答しない」まで、140を超えるアラームでサーバーを見張っています。何かが引っかかると、スマホにプッシュ通知(ntfy経由)が届きます。だから、プレイヤーより先に問題に気づけます。


いちばん意外だった発見:アイドル時に測ってみると、使われているメモリのおよそ半分は、ゲームではまったくなく、Dockerと監視そのものに使われていました。ゲームを支えるインフラのほうが、待機中はゲームより重いのです。推測ではなく測らなければいけない、という良い教訓です。


数か月運用してみての結論です。きちんと守りをかためた小さなサーバーで、インディーのマルチプレイゲームは十分に動きます。上限を決めて、目を配っていればの話ですが。

最新記事

すべて表示
新しいバージョンが2026.7.19で、0.9.2ではない理由 🗓️

今日アップデートする人は、バージョン0.9.1から2026.7.19にジャンプします。打ち間違いに見えますが、意図した決定です。バージョンの付け方を、「セマンティック」から日付ベースのバージョン(年.月.カウンター)に変えました。その理由をお話しします。 古い方式は、だれも聞かない質問に答えていました。 セマンティックバージョニング(0.9.1、1.2.3…)は、ソフトウェアライブラリの世界から来

 
 
おそうじ完了:GitHubのキャッシュをようやくちゃんと使えるようになりました 🧹

前回の技術記事では、ビルドとチェックのパイプラインに本当は何がかかっているのかを測りました。わかったのは、お金ではなく、待ち時間と保存容量だということでした。その記事は「おそうじの作業は計画してあるけれど、まだ終わっていない」で締めくくっていました。ところが、思ったより早く進みました。今日のお昼の時点で、メインブランチに入っています。数字をご紹介します。 まず結果から。 リポジトリのキャッシュ使用

 
 
月に1000回のビルド実行、そのどれにもお金はかかっていません ⚙️

まず訂正です。この記事の最初のバージョンでは、GitHubのビルド時間を使い切ってしまい、そのせいでProアカウントにアップグレードせざるをえなかった、と書いていました。それは間違いでした。ドキュメントを一目見ればわかったことです。公開リポジトリでは、GitHubのビルド時間は無料です。アーティファクトもキャッシュもです。うちのリポジトリは5月末から公開されているので、1分もお金を払ったことはあり

 
 

コメント


この投稿へのコメントは利用できなくなりました。詳細はサイト所有者にお問い合わせください。
bottom of page