🦍
Minecraft Proxy Server を Docker で構築する(Velocity + Geyser)
コンテナ型仮想環境で、Java版マインクラフト用プロキシサーバー『Velocity』を構築し、さらに統合版とのクロスプレイを実現する 拡張プラグインを導入する方法について説明します。
🛠️ 事前準備
デバイスやソフトウェアは以下を用いる。
- 💻 サーバ機(Ubuntu Server、Docker)
- 🌐 Docker Hub
- 💿 itzg/minecraft-server … Minecraft Server on Docker (Java Edition)
- 🌐 Git Hub
- 🔌 Geyser … 統合版クライアントとJava版サーバーの通信を中継する
- 🔌 Flooggate … 統合版プレイヤーの認証からJava版の接続を許可する
- 🔌 ViaVersion … 上位バージョンのクライアントからの接続を許可する
- 🔌 ViaBackwards … 下位バージョンのクライアントからの接続を許可する
1. Docker のインストール
以下の記事より Docker のインストールを済ませておく。
2. データ格納用ディレクトリの用意
データを永続的に管理するためのディレクトリを用意する。
🖥️ terminal
# データ格納用ディレクトリの作成(存在しない場合)
mkdir -v /media/shared/minecraft
# カレント・ディレクトリの変更
cd /media/shared/minecraft
🎭 作業手順
1. Docker リポジトリのセットアップ
Compose ファイル を編集する。(詳細は公式ドキュメントを参照)
🖥️ terminal
# Compose ファイルの作成
vi ./compose.yaml
📄 compose.yaml
services:
velocity:
container_name: mc_velocity
image: itzg/bungeecord
tty: true
stdin_open: true
environment:
TYPE: VELOCITY
VELOCITY_VERSION: latest
MEMORY: 512m
PLUGINS: |
https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/velocity
https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/velocity
https://github.com/ViaVersion/ViaVersion/releases/latest/download/ViaVersion-5.0.2.jar
https://github.com/ViaVersion/ViaBackwards/releases/latest/download/ViaBackwards-5.0.2.jar
ports:
- "25577:25577/tcp"
- "25577:25577/udp"
volumes:
- ./velocity:/server
restart: always
2. Docker コンテナの初回起動と停止
Compose を使ってアプリケーションを起動し、必要なファイル群が生成されたら一旦停止する。
🖥️ terminal
# コンテナの構築と起動(バックグラウンド実行)
docker compose up -d
# コンテナの停止
docker compose down
3. 設定ファイルの編集
各サービスの設定をサーバー環境に合わせて編集する。
⚙️ Config (velocity.toml)
🖥️ terminal
vi ./velocity/velocity.toml
📄 velocity.toml
# 中継サーバーのアドレス(初期設定のまま)
# 〜 5行目
bind = "0.0.0.0:25577"
# 最大プレイ人数
# 〜 13行目
show-max-players = 5
# プレイヤーの鍵認証を行う(初期設定のまま)
# 〜 19行目
force-key-authentication = true
# フォワーディングモード
# 〜 37行目
player-info-forwarding-mode = "modern" # Velocity 推奨の転送方式
# 接続先サーバーの設定( サーバーの呼称 = <IPアドレス>:<port番号> )
# Docker で構築した場合は <Dockerサービス名>:<port番号> を設定する
# 〜 75-77行目
lobby = "paper:30066"
factions = "vanilla:25565"
minigames = "fabric:30067"
🔌 Geyser
🖥️ terminal
vi ./velocity/plugins/Geyser-Velocity/config.yml
📄 config.yml
# 統合版プレイヤーの接続先ポートをJAVA版に合わせる
# 〜 23行目
clone-remote-port: true
# 統合版プレイヤーの場合でもJAVA版の認証を許可する
# 〜 56行目
auth-type: floodgate
🔌 Floodgate
🖥️ terminal
vi ./velocity/plugins/floodgate/config.yml
📄 config.yml
# Floodgateを介してデータを送信する(統合版アカウントの接続を許可)
# 〜 19行目
send-floodgate-data: true
4. 設定内容の反映
プロセスを再起動して設定内容を反映する。
🖥️ terminal
# コンテナの再構築と起動(バックグラウンド実行)
docker compose up -d --build
⛳️ 動作確認
1. Minecraft Server の動作確認
リンク先の記事 ⛳️ 動作確認 を参考にして、中継サーバーから接続できることを確認する。
サーバー名 | サーバーアドレス(host:port) |
---|---|
任意の名前 | ホスト名またはIPアドレス:25577 |
Discussion