3
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?

AIエージェントにMinecraftの運用を任せたい① EC2 + Docker + Geyserでスマホから入れるサーバーを立てる(統合版/Java版クロスプレイ対応)

3
Posted at

はじめに

こんにちは!

この記事は「2026 Japan AWS Jr. Champions 真夏のQiitaリレー」の14日目の記事となります。

過去の投稿(リンク集)はこちらからご覧ください。

この記事の目的

社内ではデータ基盤まわり(ETL・マスタデータ管理)を担当していますが、この記事は業務とは関係ない、個人で遊ぶためのMinecraftサーバーの話です。
このサーバーをAIエージェントに管理させるところまでを構想していて、本記事はその第1回です。

この記事の結論

  • EC2 + Docker(itzg/minecraft-server + Geyser + Floodgate)で、Java版と統合版(スマホ)のクロスプレイサーバーを建てる
  • つまずいたポイントはセキュリティグループのUDP設定漏れ
  • RCONを仕込んであるので、次回以降 Lambda → Bedrock AgentCore Gateway + Policy と繋いでAIエージェントによる管理に進む

検証条件

  • 検証日:2026年8月12日〜13日 / リージョン:ap-northeast-1
  • EC2 t4g.medium(Ubuntu Server 24.04 LTS / ARM64)+ EBS gp3 10GB
  • itzg/minecraft-server(TYPE: PAPER)+ Geyser + Floodgate
  • クライアント:iPhone の Minecraft 統合版(1.26.40)

構成

スマホ (統合版) ──UDP:19132──┐
PC (Java版) ────TCP:25565──┤
                            ▼
              EC2 t4g.medium (東京)
              └─ Docker
                  └─ Paper + Geyser + Floodgate
コンポーネント 役割
Paper 軽量なJava版サーバー実装
Geyser 統合版の通信をJava版プロトコルに変換するプロキシ
Floodgate 統合版プレイヤーがJava版アカウント無しで参加できるようにする

サーバーはJava版のまま、スマホ(統合版)からも入れる構成です。統合版の公式サーバー(BDS)はARM64ビルドが無い・RCON非対応・プラグイン非対応と制約が多いため、Java版サーバー + Geyser にしました。

構築手順

1. EC2インスタンスを作成

項目 設定
AMI Ubuntu Server 24.04 LTS
アーキテクチャ 64ビット (Arm) ← プルダウンでの変え忘れに注意
インスタンスタイプ t4g.medium
キーペア 新規作成(.pem をダウンロード)
ストレージ gp3 / 10GB

セキュリティグループはルール3本です。

タイプ ポート ソース 用途
ssh 22 マイIP 管理
カスタムTCP 25565 0.0.0.0/0 Java版
カスタムUDP 19132 0.0.0.0/0 統合版(スマホ)

2. SSH接続してDockerを導入

chmod 400 ~/Downloads/minecraft-key.pem
ssh -i ~/Downloads/minecraft-key.pem ubuntu@<パブリックIP>
sudo apt-get update
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker ubuntu
exit

exit で一度抜けて、同じコマンドで入り直します(dockerグループの反映に必要です)。docker --version が通れば導入完了です。

3. docker-compose.yml を作成

mkdir ~/minecraft && cd ~/minecraft
nano docker-compose.yml
services:
  mc:
    image: itzg/minecraft-server
    environment:
      EULA: "true"
      TYPE: "PAPER"
      MEMORY: "2500M"
      ENABLE_RCON: "true"
      RCON_PASSWORD: "openssl rand -base64 24 等で生成した強い文字列"
      PLUGINS: |
        https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot
        https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot
    ports:
      - "25565:25565"
      - "19132:19132/udp"
    volumes:
      - ./data:/data
    restart: unless-stopped

補足を3点。

  • PLUGINS にURLを並べるだけで、起動時にGeyserとFloodgateが自動ダウンロードされます(itzg/minecraft-serverの機能)
  • ENABLE_RCON は次回のAI連携で使います。RCON(Remote Console)はマイクラサーバーが標準で持つ遠隔コマンド実行の仕組みで、ゲーム内で打つ /list/say などのコマンドをネットワーク越しに送れます。パスワードは stop や op を含む全コマンドの実行権限に直結するため、強い文字列を設定してください
  • RCONのポート(25575)は ports: に書きません。次回、VPC内に閉じた形でLambdaからだけアクセスできるようにします

4. 起動

docker compose up -d
docker compose logs -f mc

初回はサーバー本体のダウンロードとワールド生成で5〜10分かかります。以下の2行が出たら起動完了です。

[Geyser] Started Geyser on 0.0.0.0:19132
Done (XX.XXXs)! For help, type "help"

5. スマホから接続

Minecraft(統合版)→ 遊ぶ → サーバータブ → サーバーを追加

  • サーバーアドレス:EC2のパブリックIP
  • ポート:19132

つまずき:InitialConnection-13 で接続できない

サーバー追加はできたのに、接続すると「NetherNet / InitialConnection-13」エラーで弾かれました。

原因はセキュリティグループの UDP 19132 の設定漏れでした。Java版はTCPですが、統合版はUDPで通信します。タイプを「カスタムTCP」で作ってしまっていたり、ルール自体を忘れていたりすると、このエラーになります。

同じエラーが出たら、19132のルールが存在するか、タイプがUDPになっているかを確認してください。

修正後、無事ワールドに入ることができました。

次回:AIエージェントにサーバーを管理させる

ここまで読んでいただきありがとうございます。次回は、AIエージェントにサーバーを管理させることについて記載していきたいと思います。

3
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
3
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?