【無料】Minecraft統合版サーバーをOracle Cloudで作成する
- はじめに
- 内容の難しさ
- コンパートメントの作成
- インスタンスの作成
- 固定IPを取得
- インスタンスのIPを固定
- インスタンスのポート開放
- インスタンスへのSSH接続
- インスタンスの設定
- Minecraftをインストール
- 起動設定
- Nintendo Switch から接続する
- 未成年アカウントで外部サーバーに接続する場合
- Minecraft設定
- バックアップについて
- Minecraftバージョンアップについて
- Minecraft のバックアップについて
はじめに
- Oracle Cloudは無料利用枠(Always Free)として他のCloudサービスと比べても比較的性能の良い仮想サーバーを提供しています
- 無料利用枠の中で、CPUがAMDの仮想サーバーを利用してMinecraft統合版のサーバを構築します
- CPUをArmにすることで4CPU、メモリ24GBという環境も無料で作成可能ですが、MinecraftがArmをサポートしていないため、通常の使用方法では動作しません
- 一応、方法はあるようなので参考の記事は示しておきます(私は試してみましたがダメでした)
- 【成功】マインクラフト統合版サーバ(Bedrock Dedicated Server)をOCIのArmプロセッサで動かしてみる-ピピローグ
- Official Minecraft Bedrock Dedicated Server on Raspberry Pi*
- 本手順はOracle Cloudのユーザー登録は完了していることを前提としていますので、ユーザー登録が行われていない方は「Oracle Cloud Free Tier Signup」辺りから作成してください
- 本記事執筆時の情報で記載していますので、実践する際には実際の画面やバージョン等を確認しながら行ってください
内容の難しさ
- なるべくわかるように書きますが、CloudサービスやLinuxの基礎操作ができないと作成するのは難しいです
- 便利設定などはコード書いたりするのでこの辺りも慣れていないと難しいと思われます
コンパートメントの作成
前置き
- コンパートメントとはリソースをグループ分けするようなものらしいです
- コンパートメントの管理
- 作成せずrootに配置しても動作は可能ですが、今後Oracle Cloudを別の用途で使用する場合に備えて作成しておきます
手順
- コンパートメントページを表示
- コンパートメントの作成ボタン押下
- 必要な情報を入力
- 名前: わかりやすい任意の名前(本記事では
minecraft_server
としました) - 説明: わかりやすい任意の説明(本記事では
minecraft server
としました) - 親コンパートメント: root
- タグ: 必要であれば設定
- 名前: わかりやすい任意の名前(本記事では
インスタンスの作成
前置き
手順
- インスタンスページを表示
- インスタンスの作成ボタン押下
- 必要情報を入力(その1)
- 名前: わかりやすい任意の名前(本記事では
minecraft_server_instance_test
としました) - コンパートメントに作成: ↑で作成したコンパートメントを選択
- 配置、セキュリティ: デフォルト
- 名前: わかりやすい任意の名前(本記事では
- イメージとシェイプ
- イメージ: Ubuntu22のMinimal(本記事では
Canonical Ubuntu 22.04 Minimal
としました) - シェイプ: VM.Standard.E2.1.Micro
- 「Always Free対象」となっていることを確認
- 「はじめに」に書いたが、AmpereにもAlways Free対象がありスペックは格段にこちらが高いが、ArmCPUで動作させるのは難しいです
- イメージ: Ubuntu22のMinimal(本記事では
- 必要な情報を入力(その2)
- プライマリVNIC IPアドレス、セカンダリVNICオプション
- デフォルトでOK
- SSHキーの追加
- キー・ペアを自動で生成を選択
- 使いたいキーがあるならば適当にしてください
- ※秘密キーの保存、公開キーの保存を忘れずに
- 忘れた場合には作成時に警告してくれます
- キー・ペアを自動で生成を選択
- ブート・ボリューム
- デフォルト
- 作成ボタン押下
- 「実行中」になればOK
固定IPを取得
- IPが変わるとクライアント側で接続先を変更する必要があり、面倒なので固定します
- ネットワーキング→IP管理→予約済パブリックIP
- 「パブリックIPアドレスの予約」を押下して必要情報を入力
- 予約済みパブリックIPアドレス名: わかりやすい任意の名前(本記事では
minecraft_server_test_ip
としました) - Create in Compartment: ↑で作成したコンパートメントを選択
- 予約済みパブリックIPアドレス名: わかりやすい任意の名前(本記事では
- パブリックIPアドレスの予約押下
- 一覧に作成した名前で表示されていればOK
※このIPにクライアントから接続することになります
インスタンスのIPを固定
- ↑で取得した固定IPをインスタンスに設定します
- インスタンス画面を表示し、 下の方にある アタッチされたVNICを押下、選択。
- 下の方にあるのですごくわかりにくいので注意
- 下の方にある「IPv4 アドレス」を押下し、
︙
から「編集」を押下 - パブリックIPの割り当てを解除 → 更新
- 再度、
︙
から「編集」を押下 - 「予約済みパブリックIP」が選択できるようになっているので、取得した予約済みIPアドレスを選択 → 更新
- インスタンスに戻って、プライマリVNICのパブリックIPv4アドレスが取得した予約済みIPアドレスになっていればOK
インスタンスのポート開放
- クライアントからサーバにアクセスできるようにポートを開放します
- インスタンス画面を表示
- プライマリVNIC内のサブネットを押下
- イングレス・ルールの追加を押下
- 必要な情報を入力
- 一覧に作成されたルールが表示されていればOK
インスタンスへのSSH接続
Host minecraft_test HostName 192.0.2.0/24 User ubuntu Port 22 IdentityFile ~/.ssh/ssh-key-2023-10-28.key
- インスタンスへ接続
- ターミナルを開く
- Windowsの場合は
Windowsキー + R
→cmd
入力
- Windowsの場合は
ssh ${↑のconfigで指定したHost}
とコマンドを入力- 例:
ssh minecraft_test
- 例:
- はじめて接続する場合にはfingerprint確認しろと出るので
yes
と入力 - 以下のように接続できればOK
- ターミナルを開く
インスタンスの設定
sudo apt update sudo apt upgrade -y
上記のようなメッセージが表示された場合は「15」入力し、一旦抜けてから sudo shutdown -r now
と実行し、サーバーを再起動。
※カーネルのバージョンが変わるので、再起動しろよっというメッセージです。(意訳) ※再起動すると当然ssh接続は切れるので、再度sshで接続してから次に進みましょう
sudo apt install vim zip unzip ufw cron -y
sudo timedatectl sudo timedatectl set-timezone Asia/Tokyo
sudo ufw status verbose sudo ufw default deny sudo ufw allow 22/tcp sudo ufw allow 19132/udp sudo ufw allow 19133/udp sudo ufw enable sudo ufw status verbose
Minecraftをインストール
- 現在のバージョンのURLを確認
- 以下にアクセスし、最新のバージョン、URLを取得取得
- www.minecraft.net
- 上記のキャプチャの場合だと、「1.20.41.02」、「
https://minecraft.azureedge.net/bin-linux/bedrock-server-1.20.41.02.zip
」 - ※もっと良いバージョン確認の方法があったら教えて欲しい
- 以下にアクセスし、最新のバージョン、URLを取得取得
- モジュールを取得
wget https://minecraft.azureedge.net/bin-linux/bedrock-server-1.20.41.02.zip
- URLは上記で取得したURLを使用する
- モジュールを解凍
unzip bedrock-server-1.20.41.02.zip -d ./minecraft
- minecraft というフォルダ内に解凍します
- 以下のようになっていればOK
- 試し起動
- minecraftフォルダに移動
cd minecraft
- 起動
LD_LIBRARY_PATH=. ./bedrock_server
- minecraftフォルダに移動
- 試し接続
- ログを確認
- サーバー側に以下のようにログが出ていればOK
- お試し起動終了
- サーバー側で
CTRL + C
で終了
- サーバー側で
起動設定
- 現在の方法でも普通に遊べますが、サーバー側で起動が必要ですし、ssh接続が切れたらMinecraftは止まってしまう
- よって、サーバー起動時に自動で起動するように設定を行う
- systemdの設定ファイルを作成、編集
sudo vim /etc/systemd/system/minecraft.service
- 以下のように記載
- 一通りオプションは調査していますが、気になる人は自分で調べてください
[Unit] Description=Minecraft Bedrock Server After=network.target local-fs.target [Service] Type=simple User=ubuntu Group=ubuntu WorkingDirectory=/home/ubuntu/minecraft Environment=LD_LIBRARY_PATH=. ExecStart=/home/ubuntu/minecraft/bedrock_server Restart=always [Install] WantedBy=multi-user.target
- systemdに設定
sudo systemctl daemon-reload sudo systemctl enable minecraft sudo systemctl start minecraft
- サーバーを再起動して、Minecraftが起動するかを確認
sudo shutdown -r now
- サーバー再起動後に、クライアント(AndroidとかのMinecraftアプリケーション)から接続できたらOK
Nintendo Switch から接続する
はじめに
- 基本的にXbox One、Nintendo Switch、PS4/PS5 などは任意の外部サーバーに接続することはできません
- そのため、本体側の設定を変更する必要があります
- なお、色々なblog等でこの設定が紹介されていますが、これは↓を使用しています。この人は無償で提供してくれていますので、GitHubアカウントを持っている方は★、そうでない方は寄付等で感謝を示しましょう!!
手順
※英語ですが、本家の動画ですので一番わかりやすい。 ※どうしても日本語が良い、テキストでほしい場合には switch minecraft 外部サーバー - Google 検索 とかで調べると、色々出てきますが、情報古かったり間違っていたりするのでおススメはしません
未成年アカウントで外部サーバーに接続する場合
はじめに
- 未成年は外部サーバーにアクセスすることができないように制限されています
- MinecraftはMicrosoftアカウントでログインする必要があり、Microsoftアカウントの年齢で制限されます
- Microsoftではゲーム系の設定はXboxで管理するらしいので、Xbox.com 側で設定することになります。
手順
※概要だけ記載します。画面や設定内容は時期によってかなり変わるようなので参考程度にしてください
- MicrosoftアカウントでFamily設定をし、親アカウントで子アカウントとFamilyになります
- Xboxにマイクロソフトアカウントでログイン
- Xboxプロフィールを表示
- ※広告除去ツールを入れているとエラーになるので注意(少なくてもAdblock Plusだとエラー)
- プライバシー設定
- 子のアカウントを選択し「Xbox Series X|S、Xbox One、Windows 10 デバイス オンライン セーフティ」
- 「マルチプレイヤー ゲームへの参加」を許可
- 【未確認】プライバシーの「Xbox Live 以外のユーザーが音声やテキストで通信できるようにする」も許可する必要があったかもしれない
- 接続できればOK
- 参考
Minecraft設定
最低限の設定を記載しておく
server.properties
- Minecraftのサーバー側の設定
allow-list=true
にして下記のallowlist.json
を有効にしておく
allowlist.json
- サーバーにアクセスすることができるユーザー一覧
permissions.json
- Minecraft内の権限の設定
- 身内でやるなら
operator
が良いと思う
バックアップについて
- Worldsフォルダがあれば復旧可能
- 復旧経験あり
- 加えて、上記の設定ファイル3種をバックアップしておけば良い
Minecraftバージョンアップについて
はじめに
- Minecraftはサーバー側とクライアント側のバージョンが一致していないとプレイすることができない
- Switch等だと自動でバージョンアップが行われるため、サーバー側も常に最新バージョンにアップデートする必要がある
- が、統合版の最新バージョンを知るためのAPI等を見つけることができなかったので、クライアント側でバージョン差異でエラーになった際に手動でバージョンアップをすることを想定している
- バージョンアップは最新のバージョンを取得、解凍した後に、Worldsと設定ファイルを上書きすればOK
スクリプト
以下のリポジトリのREADME参照 github.com
Minecraft のバックアップについて
はじめに
- バックアップはworldsフォルダのみを取得する
- 本来は設定ファイルも取得した方が良いが、大した設定していないので無視している
- 容量削減のため1週間以上古いバックアップは削除している
- 動作しているサーバーに直接バックアップしているため
- 本来はCloud Storageにバックアップするのが良い
スクリプト
以下のリポジトリのREADME参照 github.com