profile picture

Minecraft Bedrock Edition のサーバーを立てる

January 07, 2023 - game minecraft bedrock edition gcp rathole

概要

Minecraft Bedrock Edition のサーバーを立てます。

GCP

GCP のファイアウォール、リバースプロキシ、DNS を設定します。

ファイアウォールの設定

VPC ファイアウォールのルールを作成します。

  1. サイドメニューから VPC ネットワークファイアウォール 選択します。

  2. ファイアウォール ルールを作成 を選択します。

  3. 項目に次の値を入力し 作成 ボタンを選択します。

    項目名入力値備考
    名前minecraft任意の値
    説明minecraft のルール任意の値
    ターゲットタグminecraft任意の値
    送信元 IPV4 範囲0.0.0.0/0
    プロトコルとポート > 指定したプロトコルとポート > UDP19132UDP チェックボックスにチェックを入れる

リバースプロキシの設定

Compute Engine で rathole を起動してリバースプロキシを立ち上げます。

Compute Engine のインスタンスは Google Cloud の無料プログラム を参考に設定します。

  1. サイドメニューから Compute EngineVM インスタンス 選択します。

  2. インスタンスを作成 を選択します。

  3. 項目に次の値を入力し 作成 ボタンを選択します。

    項目名入力値備考
    名前instance-1任意の値
    リージョンオレゴン: us-west1
    マシン構成 > シリーズE2
    マシン構成 > マシンタイプe2-micro
    ブートディスク > OSUbuntu
    ブートディスク > バージョンUbuntu 18.04 LTS
    ブートディスク > ブートディスクの種類標準永続ディスク
    ブートディスク > サイズ (GB)30
    ファイアウォール > HTTP トラフィックを許可する許可チェックボックスにチェックを入れる
    ファイアウォール > HTTPS トラフィックを許可する許可チェックボックスにチェックを入れる
    詳細オプション > ネットワーキング > ネットワーク タグminecraftファイアウォールのターゲットタグを入力する
  1. 作成したインスタンスの SSH を選択し SSH 接続します。

  2. インスタンスのポートを開放します。2333 は rathole 、 19132 は minecraft のポート番号です。

    sudo ufw allow 2333
    sudo ufw allow 19132
    sudo ufw reload
    
  3. rathole の設定ファイル server.toml を作成します。詳細は readme を参照してください。

    # 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"
    
  4. rathole を起動します。

    sudo docker run -it --rm -p 2333:2333 -p 19132:19132/udp -v "/home/st-little/server.toml:/app/server.toml" rapiz1/rathole:latest --server /app/server.toml
    

予算の設定

  1. サイドメニューから お支払い を選択します。

  2. お支払いのサイドメニューから 請求先アカウント を選択します。

  3. お支払いのサイドメニューから 予算とアラート を選択します。

  4. 予算を作成 を選択します。

  5. 項目に次の値を入力し 終了 ボタンを選択します。

    項目名入力値備考
    範囲 > 名前minecraft任意の値
    金額 > 目標金額1000予算の上限金額

DNS の設定

Cloud DNS を使用してドメインを設定します。

  1. サイドメニューから ネットワーキングCloud DNS を選択します。

  2. ゾーンを作成 を選択します。

  3. 項目に次の値を入力し 作成 ボタンを選択します。

    項目名入力値備考
    ゾーンのタイプ公開
    ゾーン名mc-zone任意の値
    DNS 名DNS 名の接尾辞
    説明Minecraft DNS任意の値
  4. 作成したゾーンを選択し ゾーンの詳細 を表示します。

  5. レコードセットの追加 を選択します。

  6. 項目に次の値を入力し 作成 ボタンを選択します。

    項目名入力値備考
    DNS 名DNS ゾーンのサブドメイン
    リソース レコードのタイプA
    IPv4 アドレスVM インスタンスの外部 IPリバースプロキシの設定 で作成した Compute Engine のインスタンス

Minecraft BedrockEdition のサーバー

Minecraft BedrockEdition のサーバーを立ち上げます。

準備

Minecraft に必要なフォルダ、ファイルを作成します。

  1. フォルダを作成します。

    フォルダ名備考
    volumeワールドデータ用のフォルダ
  2. rathole の設定ファイル client.toml を作成します。詳細は readme を参照してください。

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

コンテナ

サーバーのコンテナを作成、起動します。

  1. コンテナの定義を作成します。 WHITE_LIST_USERS にログインできるプレイヤーを記述します。

    version: '3.7'
    
    services:
      # https://github.com/itzg/docker-minecraft-bedrock-server
      mc:
        image: itzg/minecraft-bedrock-server
        container_name: minecraft-bedrock-server
        environment:
          EULA: "TRUE"
          VERSION: LATEST
          SERVER_NAME: "mc-be"
          GAMEMODE: "survival"
          DIFFICULTY: "normal"
          ALLOW_CHEATS: "false"
          MAX_PLAYERS: 5
          WHITE_LIST: "true"
          WHITE_LIST_USERS: ""
          VIEW_DISTANCE: 8
          DEFAULT_PLAYER_PERMISSION_LEVEL: "member"
          OPS: ""
        stdin_open: true
        tty: true
        volumes:
          - /mc-be/volume:/data
        networks:
          - internal
    
      # https://github.com/rapiz1/rathole
      port_forwarding:
        depends_on:
          - mc
        image: rapiz1/rathole
        restart: unless-stopped
        command: ["--client", "/app/client.toml"]
        tty: true
        volumes:
          - /mc-be/client.toml:/app/client.toml
        networks:
          - internal
    
    networks:
      internal:
    
  2. コンテナを起動します。

    docker-compose up