LoginSignup
7
5

More than 1 year has passed since last update.

Minecraftサーバーをクロスプレイで運用するまでにやったこと

Last updated at Posted at 2022-07-18

はじめに

Minecraft をクロスプレイできるまでに調べたこと/やったことをまとめています。
身内でクロスプレイで遊ぶためにMinecraftサーバーを立ち上げて運用しています。
知りたい情報は見出しからジャンプしてください。

クロスプレイできるまでに調べたこと

Minecraftの種別

Minecraftは

  • Java版
  • 統合版(Bedrock Edition)

の2種類が存在する。

PS4/5 , Switch , スマホなどは統合版となる。
PCはJava版、統合版の選択購入となる。
※ MacOSの場合はJava版のみ

クロスプレイとは

異なるハード、種別を跨いでオンライン上で遊ぶこと。

- windows同士だが、それぞれJava版と統合版で種別が異なる
- 統合版だが、PS4とSwitchでハードが異なる
- MacOS(Java版)とSwitch(統合版)

通常では、統合版間でのクロスプレイに対応しており、Java版と統合版のクロスプレイはサポートされていない。

クロスプレイを実現するには?

Java版 と 統合版 が参加できるサーバーを用意(借りる)する。
ローカルで立てて公開するか、課金してクラウドを借りるかの二択になるようだ。
また公開したサーバーはHackしておく必要がある。(後述

クロスプレイに最低限必要なもの

  • Microsoftアカウント もしくは Xbox Liveアカウント

クロスプレイ構築の見積もり

ローカルで立てて公開する

私の採用した手段としては、

  1. Mac Mini上でMinecraftサーバーを起動
  2. Minecraftサーバーにクロスプレイ用の設定を施す
  3. グローバルで公開する

を目指し構築しました。
参考にしている記事は こちら

MinecraftサーバーはDockerで構築できる

Google検索で Minecraft docker-compose で検索し、
実際に運用されている方の記事を参考にしました。

作業見積もり

  1. Mac MiniのOSを最新化する
  2. Docker Desktop for Mac をインストールする
  3. docker-compose.yml 作成
  4. docker-compose up 起動
  5. ダイナミックDNSを取得
  6. ダイナミックDNSの設定を追加
  7. MODを追加
    Minecraftサーバーにクロスプレイ用の設定を施す についてはこちらで実現

クロスプレイ構築の作業

作業一覧

  1. Mac Mini の準備
    1. Mac OSを最新化
    2. Docker Desktop for Mac をインストール
  2. Github にリポジトリ作成
    1. docker-compose.yml作成
  3. 初期セットアップ
    1. リポジトリをクローン
    2. docker-compose up 起動
    3. vi config.yml
    4. localhost で確認
  4. LAN(Local Area Network) で確認
    1. Mac Mini の設定を変更
    2. ルーター/モデムの設定変更
  5. WAN(Wide Area Network) で確認
    1. ダイナミックDNSの取得&設定
    2. ルーター/モデムの設定変更

作業詳細

Mac Mini の準備

Mac Mini(2016) に

  • macOS Monterey 12.4 をクリーンインストール
  • Docker Desktop for Mac を公式よりインストール

Githubにリポジトリ作成

URL: https://github.com/mabubu0203/minecraft_multi

クロスプレイを実現するためには

Minecraft を JavaEdition ✖️ SPIGOT サーバーで起動し、以下のプラグインを導入する

  • Geyser-Spigot
  • floodgate-spigot

BedrockEdition からは Geyser を介して遊ぶこととなる

docker-compose.yml/ports

記載内容 説明
19132:19132/udp BedrockEditionからはGeyserを介する
19133:19133/udp BedrockEdition(IPv6)からはGeyserを介する
25565:25565/tcp JavaEdition用の標準ポート
25575:25575/tcp Rcon用のポート

docker-compose.yml/enviroment

細かい設定等は下記に説明あり
URL: https://github.com/itzg/docker-minecraft-server/blob/master/README.md

特に大事だと思ったものは下記に抜粋

property value 説明
DIFFICULTY easy
HARDCORE false ハードコアを許可するかどうか
MAX_PLAYERS 15 最大接続人数
MODE survival
PVP false ユーザー同士で対戦するを許可するかどうか
property value 説明
ENABLE_WHITELIST TRUE 許可されたユーザーのみアクセスできるようにする
EULA TRUE
MODS_FILE /extras/mods.txt
TYPE SPIGOT
TZ Asia/Tokyo
VERSION 1.19 2022/07時点で最新のものを指定

初期セットアップ

  1. リポジトリをクローン
    $ git clone https://github.com/mabubu0203/minecraft_multi.git
  2. 初回起動
    $ docker-compose -f ./docker/docker-compose.yml up --build --remove-orphans
    エラーがでていないことを確認
    $ docker-compose -f ./docker/docker-compose.yml stop
  3. pluginの設定修正
    vi ./docker/data/plugins/Geyser-Spigot/config.yml
    remote.auth-type: online -> floodgate
  4. 再度起動後、Mac Miniの minecraft(JavaEdition) から接続を確認
    接続先: localhost:25565

LAN(ローカルエリアネットワーク) で確認

  1. Mac Mini のセキリティを変更
    システム環境設定 -> セキリティとプライバシー -> ファイアーウォール
  2. ルーターのポートフォワードの設定を変更
    25565(TCP)
    19132(UDP)
  3. Mac Book Pro(Mac Miniとは別の端末)から繋いで確認
    観点:Java版同士の疎通確認
  4. Switchから繋いで確認
    観点:統合版からの疎通確認
    参考: 【プラグイン紹介】統合版とJava版でクロスプレイが出来るプラグイン【GeyserMC】

WAN(Wide Area Network) で確認

  1. ダイナミックDNSを取得
  2. Mac Mini にダイナミックDNSの設定を施す
  3. 友人に繋いで確認してもらう
    観点:WANの疎通確認

作業していてハマったこと/苦労したこと

docker-compose.yml/enviroment

value値に ture/falseクォートコート(') or ダブルクォート(") で括らない場合怒られる
-> value値は文字列か数値しかだめboolはないんですね、なるほど

TYPE: "PAPER" だとswitchからアクセスできない
-> 原因がわからない。TYPE: "SPIGOT" で動作しているので諦めた

起動ログの時間がおかしい
-> タイムゾーンの設定(TZ: "Asia/Tokyo")で回避した

Geyser-Spigot

./docker/data/plugins/Geyser-Spigot/config.yml
remote.auth-type: online -> floodgate に修正

LANから接続できない

  • MacOSのファイアウォールに妨げられていた
  • ルーターのポートフォワードの設定が足りていなかった

WANから接続できない

運用やってみての気づき

WHITELIST

deploy時は whitelist.json の中身は空なので誰もサーバーに入れない。
whitelist.json にユーザーを手作業で追加した。
ついでに ops.json にも管理者権限をもっていいユーザーを手作業で追加した。
参考: 【Minecraft】ホワイトリストの導入方法

以降はops権限をもったユーザーがコマンドで /whitelist add でユーザーを追加している。
ただし、追加される側は自分のユーザー名を知る必要がある。

裏技で、ホワイトリストに弾かれたログからユーザー名を逆引きすることもできる。

統合版はハードにより強制アップデートされる可能性がある

PS4/5 , Switch , スマホなどはハードの状況により、強制アップデートされることがある。
サーバー側はdocker-composeの記述でバージョンを固定しているので、差異が発生する可能性がある。
Java版は、ユーザー自身で起動するバージョンを複数選択可能である。

Minecraftを遊びたい時間は十人十色

Mac Miniの電源を落とすと公開されているMinecraftは閉じるわけだが、
複数人で遊ばなければいけないというわけでもないので、常時プレイできるように提供したほうが親切設計ではある。

影Mod

M1Macで影Modを導入した事例が少ない。

mods.txtで指定するプラグインについて

jenkinsの lastSuccessfulBuild によって最新のjarをとってくる仕組みになっている。
なので、dockerの起動ログを見に行かないとどのバージョンのプラグインを利用されているかよくわからない。
※ プラグインのバージョンを意識する必要は正直ないので、問題はない

7
5
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
7
5