profile picture

Minecraft Bedrock Edition のサーバーを構築する

January 07, 2023 - game minecraft bedrock edition

概要

Minecraft Bedrock Edition のサーバーを構築します。

前提条件

サーバーの構築

  1. サーバーに必要なフォルダを作成します。

    フォルダ名備考
    volumeワールドデータ用のフォルダ
  2. 公式ドキュメント を参考に docker-compose.yaml を作成します。

    • services > mc > environment でシード値、ゲームモードなどを設定することができます。詳細は 公式ドキュメント を参照してください。
    version: "3.7"
    
    services:
      # https://github.com/itzg/docker-minecraft-bedrock-server
      mc:
        image: itzg/minecraft-bedrock-server
        tty: true
        stdin_open: true
        ports:
          - "19132:19132/udp"
        # https://github.com/itzg/docker-minecraft-bedrock-server?tab=readme-ov-file#environment-variables
        environment:
          EULA: "TRUE"
          GAMEMODE: "survival"
          DIFFICULTY: "normal"
        volumes:
          - /mc-be/volume:/data
    

ホワイトリストの設定

許可したプレイヤーだけがログインできるようにホワイトリストを設定します。詳細は 公式ドキュメント を参照してください。

  1. allowlist.json を作成します。

    プレイヤーの uuid、name を json 形式で記述します。

    [
      {
        "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "name": "xxxxxx"
      }
    ]
    
  2. docker-compose.yaml を修正してホワイトリストを有効にします。

    • services > mc > environment
      • ALLOW_LIST: "TRUE"
    • services > mc > volumes
      • - /mc-be/allowlist.json:/data/allowlist.json

    修正後の docker-compose.yaml

    mc:
      image: itzg/minecraft-bedrock-server
      tty: true
      stdin_open: true
      ports:
        - "19132:19132/udp"
      environment:
        EULA: "TRUE"
        GAMEMODE: "survival"
        DIFFICULTY: "normal"
        ALLOW_LIST: "TRUE"
      volumes:
        - /mc-be/volume:/data
        - /mc-be/allowlist.json:/data/allowlist.json
    

サーバーの起動/停止

サーバーの公開

Tunnel を構築して自宅サーバーを公開する方法 を参考にしてください。
次のように nginx を Minecraft Bedrock Edition に読み替えてください。

# server.toml
[server]
bind_addr = "0.0.0.0:2333"

[server.services.mc-be]
token = "mc-be-token"
type = "udp"
bind_addr = "0.0.0.0:19132"
# client.toml
[client]
remote_addr = "myserver:2333"

[client.services.mc-be]
token = "mc-be-token"
type = "udp"
local_addr = "mc:19132"
# docker-compose.yaml > services > tunnel
tunnel:
  depends_on:
    - mc
  image: rapiz1/rathole
  restart: unless-stopped
  command: ["--client", "/app/client.toml"]
  tty: true
  volumes:
    - /mc-be/client.toml:/app/client.toml