🦍
Java版 Minecraft Plugin Server を Docker で構築する(Paper)
コンテナ型仮想環境で、Java版マインクラフトのプラグインサーバー『Paper』を構築します。使用するコンテナイメージは Docker 社が運営する公開レジストリの Docker Hub から取得します。
🛠️ 事前準備
デバイスやソフトウェアは以下を用いる。
- 💻 サーバ機(Ubuntu Server、Docker)
- 🌐 Docker Hub
- 💿 itzg/minecraft-server … Minecraft Server on Docker (Java Edition)
- 💿 itzg/mc-backup … Backup itzg/minecraft-server world data
1. Docker のインストール
以下の記事より Docker のインストールを済ませておく。
2. Proxy Server の構築(Velocity + Geyser を利用する場合)
プロキシを介して接続する場合は中継サーバーを構築しておく。
3. データ格納用ディレクトリの用意
データを永続的に管理するためのディレクトリを用意する。
🖥️ terminal
# データ格納用ディレクトリの作成(存在しない場合)
mkdir -v /media/shared/minecraft
# カレント・ディレクトリの変更
cd /media/shared/minecraft
🎭 作業手順
1. Docker リポジトリのセットアップ
Compose ファイル を編集する。(詳細は公式ドキュメントを参照)
🖥️ terminal
# Compose ファイルの作成
vi ./compose.yaml
📄 compose.yaml
services:
paper:
container_name: mc_paper
image: itzg/minecraft-server
tty: true
stdin_open: true
environment:
ENABLE_ROLLING_LOGS: "TRUE"
JVM_OPTS: "-XX:MaxRAMPercentage=75"
TYPE: "PAPER"
EULA: "TRUE"
VERSION: "LATEST" # Default
MOTD: "The World of Paper Server with Crossplay"
MAX_PLAYERS: 5
ENABLE_COMMAND_BLOCK: "TRUE"
SNOOPER_ENABLED: "FALSE"
VIEW_DISTANCE: 12
PVP: "FALSE"
ONLINE_MODE: "FALSE" # Use Proxy Server
ALLOW_FLIGHT: "TRUE"
USE_NATIVE_TRANSPORT: "TRUE"
STOP_SERVER_ANNOUNCE_DELAY: 60
GUI: "FALSE"
PLUGINS: |
https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot
SERVER_PORT: "30066"
ports:
- "30066:30066/tcp"
- "30066:30066/udp"
volumes:
- ./paper:/data
- /etc/timezone:/etc/timezone:ro
restart: unless-stopped
paper-backups:
container_name: mc_paper_bk
image: itzg/mc-backup
environment:
BACKUP_NAME: "paper"
BACKUP_INTERVAL: "12h"
PRUNE_BACKUPS_DAYS: 5
PAUSE_IF_NO_PLAYERS: "true"
PLAYERS_ONLINE_CHECK_INTERVAL: "5m"
INITIAL_DELAY: "2m"
RCON_HOST: paper
depends_on:
- paper
volumes:
- ./paper:/data:ro
- ./backups:/backups
- /etc/timezone:/etc/timezone:ro
restart: unless-stopped
network_mode: "service:paper"
2. Docker コンテナの初回起動と停止
Compose を使ってアプリケーションを起動し、必要なファイル群が生成されたら一旦停止する。
🖥️ terminal
# コンテナの構築と起動(バックグラウンド実行)
docker compose up -d
# コンテナの停止
docker compose down
3. 設定ファイルの編集
各サービスの設定をサーバー環境に合わせて編集する。
👥 OPリスト
任意のプレイヤーに管理者権限を付与する。
🖥️ terminal
# ops.txt を作成(オペレータ権限を付与するユーザーを列挙する)
tee -a ./paper/ops.txt <<EOF >/dev/null
username
EOF
4. Proxy の通信設定(Velocity + Geyser を利用する場合)
プロキシを介して接続する場合は中継サーバーの設定も編集しておく。
⚙️ Config (paper-global.yml)
🖥️ terminal
# プロキシ(Velocity)を利用する
# proxies.velocity.enabled : true
sed -i -e "s/ enabled: false$/ enabled: true/g" ./paper/config/paper-global.yml
# 秘密鍵を設定する
# proxies.velocity.secret : 'IPパケット転送用の秘密鍵の値'
SECRET=`cat ./velocity/forwarding.secret`
sed -i "s/secret: ''/secret : '$SECRET'/" ./paper/config/paper-global.yml
🔌 Floodgate
🖥️ terminal
# キーファイルの配置
mv ./paper/plugins/floodgate/key.pem ./paper/plugins/floodgate/key.pem.org
cp ./velocity/plugins/floodgate/key.pem ./paper/plugins/floodgate/
4. 設定内容の反映
プロセスを再起動して設定内容を反映する。
🖥️ terminal
# コンテナの再構築と起動(バックグラウンド実行)
docker compose up -d --build
⛳️ 動作確認
1. Minecraft Server の動作確認
リンク先の記事 ⛳️ 動作確認 を参考にして、サーバーに接続できることを確認する。
サーバー名 | サーバーアドレス(host:port) |
---|---|
任意の名前 | ホスト名またはIPアドレス:30066 ※プロキシを介して接続する場合は中継サーバーのポートを指定する |
Discussion