Minecraft Java Edition のサーバーを構築する
Published on 2023/01/03 , Last updated 2024/02/08Tags
概要
Minecraft Server on Docker (Java Edition) を使用して Minecraft Java Edition のサーバーを構築します。
前提条件
- Docker, Docker Compose が使用できる必要があります。
サーバーの構築
Minecraft Java Edition のサーバーを構築します。
-
サーバーに必要なフォルダを作成します。フォルダ構成の詳細は 公式ドキュメント を参照してください。
フォルダ名 備考 volume ワールドデータ用のフォルダ config サーバー設定用のフォルダ mods mod を入れるフォルダ plugings pluging を入れるフォルダ backups ワールドデータのバックアップ用のフォルダ -
公式ドキュメント を参考に
docker-compose.yaml
を作成します。services
>mc
>environment
でシード値、ゲームモードなどを設定することができます。詳細は 公式ドキュメント を参照してください。- バックアップが不要の場合は
services
>backups
を削除してください。
version: "3.7" services: # https://docker-minecraft-server.readthedocs.io/en/latest/#using-docker-compose mc: image: itzg/minecraft-server tty: true stdin_open: true ports: - 25565:25565 # https://docker-minecraft-server.readthedocs.io/en/latest/variables/#server environment: EULA: "TRUE" MODE: "survival" DIFFICULTY: "normal" GUI: "FALSE" volumes: - /mc-je/volume:/data - /mc-je/config:/data/config - /mc-je/mods:/data/mods - /mc-je/plugings:/data/plugings # https://github.com/itzg/docker-mc-backup backups: image: itzg/mc-backup environment: BACKUP_INTERVAL: "24h" PAUSE_IF_NO_PLAYERS: "true" PRUNE_BACKUPS_DAYS: 7 # instead of network_mode below, could declare RCON_HOST # RCON_HOST: mc volumes: # mount the same volume used by server, but read-only - /mc-je/volume:/data:ro # use a host attached directory so that it in turn can be backed up # to external/cloud storage - /mc-je/backups:/backups # share network namespace with server to simplify rcon access network_mode: "service:mc"
ホワイトリストの設定
許可したプレイヤーだけがログインできるようにホワイトリストを設定します。詳細は 公式ドキュメント を参照してください。
-
whitelist.json
を作成します。プレイヤーの uuid、name を json 形式で記述します。
[ { "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "name": "xxxxxx" } ]
-
docker-compose.yaml
を修正してホワイトリストを有効にします。- services > mc > environment
- ENABLE_WHITELIST: "TRUE"
- services > mc > volumes
- - /mc-je/whitelist.json:/data/whitelist.json
修正後の
docker-compose.yaml
mc: image: itzg/minecraft-server tty: true stdin_open: true ports: - 25565:25565 environment: EULA: "TRUE" MODE: "survival" DIFFICULTY: "normal" GUI: "FALSE" ENABLE_WHITELIST: "TRUE" volumes: - /mc-je/volume:/data - /mc-je/config:/data/config - /mc-je/mods:/data/mods - /mc-je/plugings:/data/plugings - /mc-je/whitelist.json:/data/whitelist.json
- services > mc > environment
サーバーの起動/停止
-
コンテナを起動します。
docker-compose up -d
-
コンテナを停止します。
docker-compose down
-
コンテナを削除します。
docker-compose rm
サーバーの公開
Tunnel を構築して自宅サーバーを公開する方法 を参考にしてください。
次のように nginx を Minecraft Java Edition に読み替えてください。
# server.toml
[server]
bind_addr = "0.0.0.0:2333"
[server.services.mc-je]
token = "mc-je-token"
type = "tcp"
bind_addr = "0.0.0.0:25565"
# client.toml
[client]
remote_addr = "myserver:2333"
[client.services.mc-je]
token = "mc-je-token"
type = "tcp"
local_addr = "mc:25565"
# docker-compose.yaml > services > tunnel
tunnel:
depends_on:
- mc
image: rapiz1/rathole
restart: unless-stopped
command: ["--client", "/app/client.toml"]
tty: true
volumes:
- /mc-je/client.toml:/app/client.toml