自宅のポートを開放せずとも、Minecraftクロスプレイサーバーを公開できます。
Docker、Paper、GeyserMC、Floodgateを使用します。
NgrokとかCloudflareTunnelではダメなの?
NgrokはUDPに対応してないため、統合版向けのサーバーを公開することができません。(Javaのみだったら可能)
また、Cloudflareは、PCに専用のソフトを入れる必要があり、スマホからの参加にも対応できません。
Minecraftサーバー公開までの流れ
⓪ Dockerを導入する (この記事では割愛。docker compose
が使用できればOK)
① Paperサーバーを建てる
② localtonetの登録
③ ポートを開放
Paperサーバーを建てる
データを保存する用のディレクトリを用意します。
その中に、docker-compose.yml
というファイルを新規作成、編集します。
【】の部分は各々で設定してください。
services:
mc:
image: itzg/minecraft-server
container_name: 【コンテナの名前】
environment:
VERSION: "【最新バージョン】"
EULA: "true"
TYPE: PAPER
ENFORCE_SECURE_PROFILE: "false"
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/tcp"
- "【上と同じポート】:19132/udp"
volumes:
- type: bind
source: "【データ保存用のディレクトリの絶対パス】"
target: "/data"
PLUGINSの項目で、GeyserMCとFloodgateの最新バージョンを指定しています。
また、ホスト側のポートは他サービスと被らないように設定してください。localtonetのポート開放で使います。
コンテナの起動&ログの確認
コンテナをバックグラウンドで起動します。
docker compose up -d
ここで最初の起動処理が入ります。
数分待ってログを確認します。
docker compose logs
最後の方にDone! ~
というログがあったら、最初の起動処理が完了しています。
これを確認したら一度コンテナを停止します。
docker compose down
Geyserの設定
plugins/Geyser-Spigot/config.yml
を編集します。
真ん中ぐらいにある、auth-type
の項目をonline
からfloodgate
に書き換えて保存します。
# Authentication type. Can be offline, online, or floodgate (see https://github.com/GeyserMC/Geyser/wiki/Floodgate).
# For plugin versions, it's recommended to keep the `address` field to "auto" so Floodgate support is automatically configured.
# If Floodgate is installed and `address:` is set to "auto", then "auth-type: floodgate" will automatically be used.
auth-type: floodgate
保存が完了したら、もう一度起動してPaperサーバーは起動完了です。
localtonetの登録
以下リンクから必要事項を入力して登録してください。
GithubやGoogleで登録も可能です。
Dashboardが表示されたら、左のメニューからMyTokenをクリック。
Token名を入力したら、Tokenを作成します。
localtonetのダウンロード&起動
ここではraspberryPiでの場合を載せています。公式ドキュメントで丁寧に解説されているので参考にしてください。
❶ ダウンロードする
wget https://localtonet.com/download/localtonet-linux-arm64.zip
❷ zipファイルを解凍する
unzip localtonet-linux-arm64.zip
❸ 実行ファイルに権限を付与する
chmod 777 ./localtonet
❹ 起動
./localtonet authtoken 【ここに先ほど作成したToken】
※この起動したターミナルは消さないでください。
DashboardのMytokenからCLIENT IS ONLINE
の項目がONになっていたら成功です。
ポートを開放
Dashboardの左メニューから、MyTunnel > TCP - UDP
をクリック。
ここで、プロコトルをUDP - TCP
、PortはPaper起動で指定したホスト側のポートを入力します。
作成できたら、Actionから再生ボタンを押してポートを開放します。
SERVER DOMAIN
とSERVER PORT
が表示されます。
Java | Bedrock | |
---|---|---|
サーバーアドレス |
SERVER DOMAIN :SERVER PORT
|
SERVER DOMAIN |
ポート番号 | - | SERVER PORT |
で公開完了です。
localtonetの注意点
・無料プランだと30分でトンネルが自動で終了する仕様になっています。(2025年春頃に仕様変更)
→ 起動するたびにポート番号が変わるので注意してください。
・また、無料プランでは1GBまでの帯域幅制限があります。
→ 5人程度が数時間プレイして1GBです。参考にしてください。
・localtonetはIPv6に対応していますが、Minecraftサーバーは対応していないので、IPv6環境から参加しようとするとアクセスできません。
→ 設定からサーバーの直IPを確認できるので、IPv4の直IPを公開してください。
サーバーのコマンドを実行(おまけ)
docker exec -i 【コンテナ名またはID】 rcon-cli
でサーバー側のコマンドを実行できます。
最初のOP権限付与はここで行います。
> op 【Minecraftのユーザー名】
参考