1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【全機種対応!】AWS EC2で始めるJava/Bedrock/Switch クロスプレイMinecraftサーバー構築術

Posted at

はじめに

  • 概要: AWS EC2インスタンス上で、Java版、**統合版(Bedrock/Switch/スマホ)**の全てのデバイスからアクセス可能なマルチプレイサーバーの構築手順を解説します。
  • 目的: AWS EC2を利用してどんなデバイスやバージョンを持つ人とも一緒に遊べるサーバー環境を構築します。
  • 前提: AWSアカウントが開設済みであること。

第1章: AWS基盤とクロスプレイ設計

1.1 EC2インスタンス

  • AMI (OS): Amazon Linux 2 (デフォルト)
  • インスタンスタイプ:
    • t3.medium (強く推奨): 4 GiBメモリを確保。
      クロスプレイプラグインとサーバーの安定稼働には、このぐらいのリソースが必要になった。
    • t3.small では実際に確かめたが、サーバが立ち上がらなかった。

1.2 ネットワークとセキュリティグループの設定

  • セキュリティグループの作成: 外部からのアクセスを許可するためのファイアウォールルールです。
  • 必須ポートの開放(全プラットフォーム対応):
    • SSH: Port 22/TCP (サーバー管理用)。
    • Java版: Port 25565/TCP
    • 統合版/Bedrock (Switch/スマホ): Port 19132/UDP
  • アクセス元: まずは0.0.0.0/0 に設定します。
    セキュリティ上好ましい対応ではないので、動作確認後にアクセス元IPを限定できれば、制限をかけましょう。

1.3 EC2インスタンスの起動

  • 設定を確認し、インスタンスを起動。キーペアはSSH接続で使うので安全に保管しておきましょう。

第2章: SSH接続とサーバー環境のセットアップ

2.1 SSH接続の準備 (Tera Term編)

AWS EC2へ接続し、サーバーのセットアップを行うために、SSHクライアントソフト Tera Term を使用します。

1. 秘密鍵(.pemファイル)の権限設定

AWSからダウンロードした秘密鍵ファイル (.pem) は、そのままではセキュリティ設定が厳しいため、権限を変更する必要があります。

  • コマンド:
    chmod 400 your-key-pair.pem
    
  • 解説: このコマンドを PowerShell または Git Bash で実行し、鍵ファイルに読み取り専用 (400) の権限を与えます。これを怠ると、Tera Termを含む多くのSSHクライアントで接続エラーが発生します。

2. Tera Termでの接続手順

  1. 接続ダイアログの表示: Tera Termを起動し、「ホスト(H)」の欄に、EC2インスタンスの パブリックIPアドレス を入力し、「OK」をクリックします。
  2. ユーザー名と認証: 新しいウィンドウで以下の設定を行います。
    • ユーザー名(U): ec2-user (Amazon Linuxのデフォルトユーザー名)
    • 認証方法: 「RSA/DSA/ECDSA/ED25519 の鍵を使う」を選択。
    • 鍵ファイル: 「秘密鍵(K)」の横にあるボタンを押し、権限設定を終えた your-key-pair.pem ファイルを選択します。
  3. 接続完了: 「OK」をクリックすると、ターミナル画面が表示され、EC2インスタンスへの接続が完了します。

2.2 OSの準備とJavaのインストール

  1. Javaのインストール: SSH接続後、Minecraftで推奨される Java 21 (Amazon Corretto) をインストール。
  2. PaperMCの配置: ~/minecraft ディレクトリに、高速でプラグイン互換性の高いPaperMCの paper.jar をダウンロード。

2.3 全機種対応プラグインの導入

  • 導入手順: ~/minecraft/plugins ディレクトリを作成し、以下の3つのJARファイルを配置します。
    1. Geyser-Spigot: 統合版クライアントからの接続をJava版プロトコルに変換するメインの橋渡し役。
    2. Floodgate: 統合版ユーザーの認証(Javaアカウントなしでのログイン)を可能にするプラグイン。
    3. ViaVersion: クライアントとサーバーのバージョン差異を吸収し、幅広いバージョンからの接続を可能にします。

第3章: サーバーの起動と接続確認

3.1 サーバーの永続稼働設定 (Systemdによるサービス化)

Linuxの標準機能であるSystemdを使ってサーバーをサービスとして登録することで、SSH接続を切断した後もサーバーを安定して稼働させます。

  1. 起動スクリプトの作成: サーバー起動コマンドを start_server.sh に記述し、実行権限を与えます。
    # /home/ec2-user/minecraft/start_server.sh を作成し、以下を記述
    #!/bin/bash
    cd /home/ec2-user/minecraft
    /usr/lib/jvm/java-21-amazon-corretto.x86_64/bin/java -Xms2048M -Xmx3072M -jar paper.jar nogui
    chmod +x /home/ec2-user/minecraft/start_server.sh
    
  2. Systemdサービスファイルの作成: /etc/systemd/system/minecraft.service を作成し、上記「2. Systemd サービスファイルの作成」の [Unit]から[Install]までの内容を記述します。
  3. サービスの有効化と起動:
    sudo systemctl daemon-reload
    sudo systemctl enable minecraft.service
    sudo systemctl start minecraft.service
    
    これでサーバーがバックグラウンドで起動し、接続を切っても動作し続けます。

3.2 接続確認(全プラットフォーム)

プラットフォーム 接続情報
Java版 (PC) IPアドレスとポート 25565 を使用。
統合版 (スマホ/タブレット) IPアドレスとポート 19132 を使用。
Nintendo Switch IPアドレスとポート 19132 を使用。

まとめ

  • t3.medium インスタンスと、25565/TCP + 19132/UDP のポート開放が、全てのプラットフォーム対応のサーバー基盤となります。
  • PaperMCと Geyser/Floodgate/ViaVersion の組み合わせが、全機種からのマルチプレイを実現します。
  • 実際はこの基盤に、LINE Botによる自動起動を導入し、使いやすくしています。
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?