0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Muse の VM で Minecraft サーバーを立てて、実際に入って遊べた話

0
Posted at

はじめに

AI エージェント Muse の作業環境であるクラウド VM で、「Minecraft のサーバーって立てられるの?」という素朴な検証をしました。自宅の本番サーバー(Docker+VPS+WireGuard で公開運用中)とは無関係の、あくまでフィージビリティ確認です。

結論から言うと、立てられたし、外部から公開もできて、実際にログインして遊べました。ただしメモリは終始綱渡りで、ネットワークまわりではこの VM 特有の制約に何度も引っかかりました。その記録です。

環境

項目 内容
VM 2 vCPU / メモリ合計 約7.9GB(空きは実質 1GB 前後)/ スワップなし
サーバー Paper 1.21.11(build 132)→ 後日 Paper 26.3(build 227)に更新
Java Temurin OpenJDK 21.0.13+9 LTS(1.21.11 時)→ JDK 25.0.5(26.3 は Java 25 必須)
設定 ポート 25565 / 最大5人 / view-distance 6 / simulation-distance 4 / online-mode=true
公開 playit.gg トンネル(VM にインバウンド経路がないため)

まず素朴に立ててみる

メモリの空きが約1GB しかないので、ヒープは控えめに -Xms512M -Xmx768M で起動しました。

  • 起動時間: 56.7秒(ワールド新規生成込み、「Done (56.729s)!」)
  • ss で 25565 が LISTEN していることを確認
  • 自作のステータスピングスクリプトで実プロトコル(ハンドシェイク+ステータス要求)を叩き、正常な JSON 応答を確認
    • version: Paper 1.21.11(protocol 774)、players 0/5、MOTD「VM Trial Server」
  • サーバーの実メモリ使用量: RSS 約1,043MB(ヒープ上限 768MB に非ヒープ分が乗る)
  • 稼働中、ホストの MemAvailable は一時 約341MB まで低下。これは際どい

初回起動ではもう1つ罠がありました。Paper は初回に Mojang 公式のサーバー jar をダウンロードしようとしますが、この VM では Java からの直接 HTTPS 通信が出口側の制約で弾かれるため失敗します。対処として、公式 jar を curl で取得して SHA-1 を検証し、Paperclip のキャッシュ置き場に手で配置しました。以後のバージョン更新でも同じ回避策が必要でした。

「4GB 割り当てたい」への挑戦

初回検証のあと、「メモリ割り当てを 4GB にして、止めると言うまで立て続けてほしい」という(無茶な)追加要件が出ました。空き 1GB の環境で 4GB です。まず土台を調べます。

  • /proc/sys/vm/overcommit_memory は 0(ヒューリスティック)、CommitLimit は約4GB
  • Python の mmap で 3.5GB の匿名予約をテスト → 成功(実ページに触れない予約は通る)
  • 本命の打ち手だったスワップファイル(6GB)は mkswap までは成功したものの、有効化で失敗:
swapon: /home/hatch/swapfile: swapon failed: Operation not permitted

コンテナ内の root にはホスト側カーネルへの swapon 権限がありません。この手は封じられました。

ただ、初回試行の実測で「実使用メモリはヒープ上限によらず約1GB とほぼ一定」だったことと、overcommit がヒューリスティックで予約が通ることから、上限だけ 4GB(-Xmx4G、初期は -Xms512M)に設定して起動する方針にしました。ヒープは G1 が必要に応じて伸ばすので、無人状態では実使用約1GB に収まります。

  • 起動時間: 29.8秒(ワールド既存のため短縮)
  • ステータスピング OK(latency 6.0ms の応答も確認)
  • 実メモリ: RSS 約1,082MB。稼働中のホスト MemAvailable は約240〜460MB と依然タイトで、プレイヤーが増えてヒープが伸びれば OOM キルのリスクは残ります

「上限を盛る」のは一見乱暴ですが、「実使用の実測」と「overcommit の挙動」を押さえた上での判断です。逆に -Xms まで 4GB にしていたら起動直後に死んでいたはずです。

外部公開と「認証サーバーがダウンしています」

公開は、インバウンド経路のない VM の定番として playit.gg のトンネルを使いました。エージェントを常駐させ、claim(ユーザーのアカウント連携)が済めば公開アドレスが割り当てられる構成です。

サーバーリストに登録した「muse(VM Trial Server)」。アドレスの一部はマスク済み

ところが、サーバーリストの ping は通るのに、参加しようとすると 「認証サーバーがダウンしています」 で切断される問題が出ました。

参加しようとすると表示された「認証サーバーがダウンしています」

原因はネットワークの許可ゲートでした。この VM の直接 TCP 通信はプラットフォーム側の権限で管理されていて、拒否されている間は JVM からの通信(Mojang の認証=authlib の通信も含む)がサンドボックスの拒否応答を受けて失敗していたのです。ユーザーに設定を変更してもらい、認証は通るようになりました。

ただしスコープの制約があって、許可が効くのは「生きているセッションのプロセスツリー内」だけ。systemd 配下で動く JVM は引き続き拒否されたため、最終構成はこうなりました。

  • サーバー本体: セッション内のプロセスとして起動(権限の効く系統で)
  • トンネルと監視: systemd サービス側(トンネルは HTTP CONNECT 経由なのでゲート対象外)

その結果、2026-10-28 23:23 に自分のアカウント(UUID 認証付き)でログイン成功、players 1/5 を確認しました。画面右上に出る「チャットメッセージの安全性の確認ができません」はサードパーティサーバーの通常警告で無害です。

ログイン成功。「satofox01 がゲームに参加しました」の表示と、右上に通常警告

実際に遊んでみた:ボートで移動し続ける負荷テスト

ログインできたので、そのままサバイバルでしばらく遊びました。一番負荷がかかりそうなこととしてやったのが、ボートに乗って水上を移動し続け、新規チャンクをどんどん読み込ませることです。チャンク生成はサーバー側の処理なので、「メモリ綱渡りの VM でこれをやったら落ちるのでは」と思っていました。

ボートで水上を移動中の画面(F3 表示あり)。夜の海をそのまま進み続けた

結果は、クラッシュも大きなラグもなく安定。当時の監視レポートでも、サーバーのメモリ使用は約1.24〜1.32GB(上限 4GB の3割程度)、応答は 9〜35ms で推移していました。ホスト側の空きメモリは 227〜461MB の間を行き来する綱渡りでしたが、危険水準としていた 200MB 切りには届かず、サーバー自体は最後まで「絶好調」の判定でした。

メモリの厳しさはホスト側の都合で、1人で遊ぶ分にはサーバーの処理自体には余裕がある、というのが実際に遊んでみての感触です。

その後の更新

  • クライアントのバージョンに合わせ、Paper を 1.21.11 → 26.3(build 227) に更新。26.3 は Java 25 が必須のため JDK も 25.0.5 に入れ替え(起動 55.3秒、protocol 777 を確認)

クライアントが先に 26.3 になり、まだ 1.21.11 のサーバーへ入ろうとして弾かれた画面(「Outdated server! I'm still on 1.21.11」)。これがサーバー側を更新するきっかけになった

  • 監視は systemd サービス化し、サーバーとトンネルの死活監視・再起動・現行アドレスの記録を任せています
  • 現在この試行サーバーは停止中です。ワールドデータは保存してあり、同じ手順で再開できます

まとめ

  • 2 vCPU・実質空きメモリ 1GB 級の VM でも、Paper サーバーは意外と普通に動く(無人時 RSS 約1GB)
  • 効いてくるのはスペックより ネットワークの制約(Java の直接通信、認証、インバウンドなし)のほう
  • メモリは「実使用の実測」と overcommit の挙動を押さえれば、上限設定には工夫の余地がある。ただし OOM リスクは常につきまとう

普段は自宅サーバーで運用している身として、「AI エージェントの作業 VM」というおよそゲームサーバー向きでない場所でここまで動いたのは、ちょっとした驚きでした。

未検証事項

  • 複数人同時接続時のメモリ・CPU の伸び(実測は1人のみ)
  • 長期間(数日単位)常駐時の安定性

参考資料

  • Paper 公式サイト: https://papermc.io (2026-10-30 確認)
  • playit.gg 公式サイト: https://playit.gg (2026-10-30 確認)
  • 実測値は試行時のサーバーログおよび自作ステータスピングの結果より(2026-10-28 実施)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?