これは、BungeeCord や Velocity などの Minecraft プロキシの選択肢を提供する Docker イメージです。 itzg/minecraft-server コンテナと組み合わせて使用することを目的としています。
サーバー イメージ itzg/minecraft-server と一緒に使用する場合、次のようにONLINE_MODE=FALSE
設定することで、bungeecord で必要なオンライン モードを無効にすることができます。
docker run ... -e ONLINE_MODE=FALSE itzg/minecraft-server
以下は、 docker compose up -d
で開始できる例です。
services :
mc :
image : itzg/minecraft-server
environment :
EULA : " TRUE "
ONLINE_MODE : " FALSE "
volumes :
- mc-data:/data
proxy :
image : itzg/mc-proxy
environment :
BUNGEE_JAR_REVISION : " 1 "
CFG_MOTD : Powered by Docker
REPLACE_ENV_VARIABLES : " true "
ports :
- " 25565:25577 "
volumes :
- ./config.yml:/config/config.yml
- proxy-data:/server
volumes :
mc-data :
proxy-data :
このイメージには mc-monitor が含まれており、そのstatus
コマンドを使用してコンテナーの状態を継続的にチェックします。これは、 docker ps
のSTATUS
列から確認できます。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b418af073764 mc "/usr/bin/run-bungeecord.sh" 43 seconds ago Up 41 seconds (healthy) 0.0.0.0:25577->25577/tcp mc
スクリプトに適した方法でコンテナの健全性をクエリすることもできます。
> docker container inspect -f "{{.State.Health.Status}}" mc
healthy
タイプ= バンジーコード
サーバーのタイプ。タイプがCUSTOM
に設定されている場合、環境設定BUNGEE_JAR_URL
が必要です。
可能な値:
BUNGEECORD
WATERFALL
VELOCITY
CUSTOM
メモリ= 512m
JVM に指定する Java メモリ ヒープ サイズ。これを空の文字列に設定すると、JVM はコンテナーで宣言されたメモリ制限からヒープ サイズを計算できるようになります。 -XX:MaxRAMPercentage=
(
は置換) をJVM_XX_OPTS
に追加することを必ず検討してください。JVM のデフォルトは 25% です。
アイコン
これを画像 URL に設定すると、アイコンがダウンロードされ、(必要に応じて) 64x64 PNG に変換され、 /server/server-icon.png
に配置されます。
オーバーライド_アイコン
ICON
が設定されている場合は、/server ディレクトリにある既存の server-icon.png ファイルがオーバーライドされます。
INIT_MEMORY =${MEMORY}
異なる初期ヒープ サイズを使用するように設定できます。
MAX_MEMORY =${MEMORY}
別の最大ヒープ サイズを使用するように設定できます。
JVM_OPTS / JVM_XX_OPTS
JVM に渡すスペース区切りの追加オプション。 JVM_XX_OPTS
Java コマンドラインのJVM_OPTS
の前に追加されます。
ネットワークアドレス_CACHE_TTL =60
成功したネットワーク アドレス ルックアップをキャッシュする秒数。値を低くすると、Minecraft サーバー コンテナが再起動されたり、スケジュールが変更され、新しいコンテナ IP アドレスが再割り当てされる場合に役立ちます。
プラグイン
*.jar URL のカンマ区切りリストをプラグイン フォルダーにダウンロードするために使用されます。
-e PLUGINS=https://www.example.com/plugin1.jar,https://www.example.com/plugin2.jar
SPIGET_PLUGINS
SPIGET_PLUGINS
変数を SpigotMC リソース ID のカンマ区切りリストで設定すると、spiget API を使用して SpigotMC プラグインを自動的にダウンロードできます。 zip ファイルであるリソースは plugins ディレクトリに展開され、単なる jar ファイルであるリソースはそこに移動されます。
注: この変数は、意図的に SPIG E T に「E」を付けて綴られています。
リソース ID は、短縮名とドットの後の URL の数値部分から見つけることができます。たとえば、ID は313です。
https://www.spigotmc.org/resources/bungeetablistplus.313/
===
MODRINTH_PROJECTS
プロジェクトのスラッグ (短縮名) または ID のカンマまたは改行で区切られたリスト。プロジェクト ID は「技術情報」セクションにあります。スラグは、ページ URL の/mod/
に続く部分です。
https://modrinth.com/mod/fabric-api
----------
|
+-- project slug
また、プロジェクト スラグの後にコロン記号とバージョン ID/タイプを使用して、特定のバージョン/タイプを宣言できます。バージョン ID は「メタデータ」セクションで確認できます。有効なバージョンの種類は、 release
、 beta
、 alpha
です。
依存関係の解決は、 MODRINTH_DOWNLOAD_DEPENDENCIES
none
、 optional
、またはrequired
(デフォルト) に設定することで調整できます。
注変数MINECRAFT_VERSION
は、対応する Minecraft のバージョンに設定する必要があります。
ENABLE_RCON
rcon サーバーを有効にします (機能するにはサードパーティのプラグインを使用します)。
BUNGEECORD
、 WATERFALL
、およびCUSTOM
用)VELOCITY
用 TribuFuForks/VelocityRconRCON_PORT
rcon のポートを定義する
RCON_パスワード
rcon のパスワードを定義する
BUNGEE_JOB_ID =lastStableBuild
ダウンロードして実行するアーティファクトの Jenkins ジョブ ID。BUNGEE_JAR_URL のデフォルト値を導出するときに使用されますBUNGEE_JAR_URL
BUNGEE_JAR_REVISION
デフォルトは${BUNGEE_JOB_ID}
の値ですが、任意に増分した値に設定して、ダウンロードした BungeeCord jar ファイルのアップグレードを強制することができます。
BUNGEE_BASE_URL
デフォルトは次のとおりです。
BUNGEECORD
): https://ci.md-5.net/job/BungeeCordWATERFALL
): https://papermc.io/ci/job/Waterfall/ BUNGEE_JAR_URL
のデフォルト値を導出するために使用されます。
BUNGEE_JAR_URL
設定すると、BungeeCord.jar のカスタムの完全修飾 URL を指定できます。ただし、作成ファイルをdocker run
内から他の環境変数を参照することはできません。デフォルトは次のとおりです。
BUNGEECORD
): ${BUNGEE_BASE_URL}/${BUNGEE_JOB_ID}/artifact/bootstrap/target/BungeeCord.jar
これはBUNGEE_JAR_FILE
よりも優先されます。
BUNGEE_JAR_FILE
TYPE=CUSTOM
の場合、コンテナ内にあるカスタム BungeeCord JAR を設定できます。
既存のファイルの有効なパスである必要があります。
WATERFALL_VERSION =最新
TYPE=WATERFALL
の場合、ウォーターフォールの特定のリリース ストリームをダウンロードできます。
WATERFALL_BUILD_ID =最新
TYPE=WATERFALL
の場合、指定されたバージョン内のウォーターフォールの特定のビルドをダウンロードできます。
VELOCITY_VERSION =最新
TYPE=VELOCITY
の場合、ダウンロードして実行する Velocity のバージョンを指定します。
VELOCITY_BUILD_ID =最新
TYPE=VELOCITY
の場合、指定されたバージョン内の Velocity の特定のビルドをダウンロードできます。
HEALTH_HOST =ローカルホスト
コンテナーのヘルスチェックのために接続されるホストを構成できます。
HEALTH_USE_PROXY =false
Bungeecord のproxy_protocol
オプションを使用する場合は「true」に設定します
ENABLE_JMX =false
VisualVM や JMC によるプロファイリングなどでリモート JMX を有効にするには、環境変数ENABLE_JMX=true
を追加し、 JMX_HOST
Docker コンテナを実行している IP/ホストに設定し、TCP ポート 7091 のポート転送を追加します。
/サーバ
BungeeCord が起動される作業ディレクトリ。これは、 config.yml
ロードされるディレクトリです。
/プラグイン
プラグインは、サーバーが起動する前に、このディレクトリからコピーされます。
/config
このディレクトリの内容は/server
ディレクトリに同期されます。ファイル内の変数プレースホルダーは、 REPLACE_ENV_DURING_SYNC
が「false」に設定されていない限り、以下のセクションで説明するように処理されます。
25577
BungeeCord のリスニング ポート。通常は、次のコマンドを使用して、標準の Minecraft サーバー ポート 25565 にポート マップします。
-p 25565:25577
次の表は、イメージ タグでサポートされる Java バージョンと CPU アーキテクチャを示しています。
タグ | ジャワ | アーキテクチャ |
---|---|---|
最新 | 17 | amd64、arm64、armv7 |
java8 | 8 | amd64、arm64、armv7 |
java11 | 11 | amd64、arm64、armv7 |
RCON はデフォルトで有効になっているため、コンテナーを実行して Bungeecord サーバー コンソールにexec
できます。
docker exec -i mc rcon-cli
注: rcon-cli を対話的に使用するには、 -i
必要です。
Bungeecord サーバーの停止など、単純なワンショット コマンドを実行するには、次のようにコマンドを引数としてrcon-cli
に渡します。
docker exec mc rcon-cli en
この場合、 -i
必要ありません。
Bungeecord サーバーに接続して操作するには、コンテナーの起動時に-it
追加します。
docker run -d -it -p 25565:25577 --name mc itzg/mc-proxy
これにより、いつでも接続して対話することができます
docker attach mc
次に Control-p Control-q を押して接続を解除します。
リモート アクセスの場合、 tcp
ソケット ( -H tcp://0.0.0.0:2375
など) を使用し、別のマシンから接続するように Docker デーモンを構成します。
docker -H $HOST:2375 attach mc
家庭/プライベート LAN 上にいない場合は、TLS アクセスを有効にする必要があります。
BungeeCord 構成ガイド
すべてのサーバー コンテンツ (jar、mod、プラグイン、構成など) を zip または tgz ファイルからインストールするには、 GENERIC_PACK
コンテナ パスまたはアーカイブ ファイルの URL に設定します。
複数の汎用パックを一緒に適用する必要がある場合は、代わりにアーカイブ ファイル パスやファイルへの URL のカンマ区切りリストを使用してGENERIC_PACKS
設定します。
繰り返しを避けるために、各エントリにはGENERIC_PACKS_PREFIX
の値が接頭辞として付けられ、 GENERIC_PACKS_SUFFIX
の値が接尾辞として付けられます。どちらもオプションです。たとえば、次の変数
GENERIC_PACKS=configs-v9.0.1,mods-v4.3.6
GENERIC_PACKS_PREFIX=https://cdn.example.org/
GENERIC_PACKS_SUFFIX=.zip
https://cdn.example.org/configs-v9.0.1.zip,https://cdn.example.org/mods-v4.3.6.zip
に展開されます。
実行時にのみ利用可能な構成情報を必要とする MOD やプラグインがある場合があります。たとえば、データベースに接続するようにプラグインを構成する必要がある場合、この情報を Git リポジトリや Docker イメージに含めたくありません。あるいは、コンテナーの起動後に構成ファイルに設定する必要があるサーバー名などの実行時情報があるかもしれません。
そのような場合には、構成内で定義された変数をコンテナーの実行時に定義された環境変数に置き換えるオプションがあります。
環境変数REPLACE_ENV_VARIABLES
をTRUE
に設定すると、起動スクリプトは/server
ボリューム内のすべてのファイルを調べて、定義された環境変数と一致する変数を置き換えます。置換する変数は${YOUR_VARIABLE}
として宣言する必要があります。これはシェル スクリプト言語では一般的です。
REPLACE_ENV_VARIABLE_PREFIX
を使用すると、事前定義された環境変数にのみ一致するプレフィックス (デフォルトはCFG_
) を定義できます。
値にファイルを使用したい場合 (Docker シークレットを使用する場合など)、(実行コマンドで) 変数名にサフィックス_FILE
を追加できます。たとえば、 ${CFG_PASSWORD_FILE}
CFG_PASSWORD_FILE
環境変数で指定されたファイルの内容に置き換えられます。
以下は、 database.yml
内の値を置き換える完全な例です。
---
database :
host : ${CFG_DB_HOST}
name : ${CFG_DB_NAME}
password : ${CFG_DB_PASSWORD}
docker-compose.yml
ファイルは次のようになります。
version : " 3.8 "
# Other docker-compose examples in /examples
services :
proxy :
image : itzg/mc-proxy
ports :
- " 25577:25577 "
volumes :
- " proxy:/server "
environment :
# enable env variable replacement
REPLACE_ENV_VARIABLES : " TRUE "
# define an optional prefix for your env variables you want to replace
ENV_VARIABLE_PREFIX : " CFG_ "
# and here are the actual variables
CFG_DB_HOST : " http://localhost:3306 "
CFG_DB_NAME : " minecraft "
CFG_DB_PASSWORD_FILE : " /run/secrets/db_password "
restart : always
volumes :
proxy :
secrets :
db_password :
file : ./db_password
db_password
の内容:
ug23u3bg39o-ogADSs
JSON パス ベースのパッチを 1 つ以上の既存のファイルに適用するには、変数PATCH_DEFINITIONS
1 つ以上のパッチ定義 json ファイルまたはパッチ セット json ファイルを含むディレクトリのパスに設定します。
パッチ定義のfile
およびvalue
フィールドには、 ${...}
変数プレースホルダーが含まれる場合があります。プレースホルダーで許可される環境変数は、 REPLACE_ENV_VARIABLE_PREFIX
設定することで制限できます。デフォルトは「CFG_」です。
次の例は、 paper.yaml
構成ファイル内のさまざまなフィールドを変更および追加できるパッチセット ファイルを示しています。
{
"patches" : [
{
"file" : " /data/paper.yml " ,
"ops" : [
{
"$set" : {
"path" : " $.verbose " ,
"value" : true
}
},
{
"$set" : {
"path" : " $.settings['velocity-support'].enabled " ,
"value" : " ${CFG_VELOCITY_ENABLED} " ,
"value-type" : " bool "
}
},
{
"$put" : {
"path" : " $.settings " ,
"key" : " my-test-setting " ,
"value" : " testing "
}
}
]
}
]
}
サポートされているファイル形式:
このイメージは非 root ユーザーとして実行できますが、次のようなその uid で書き込み可能な/server
ボリュームが接続されている必要があります。
docker run ... -u $uid -v $(pwd)/data:/server itzg/mc-proxy
latest
イメージ タグは Java 21 に基づいていますが、別の Java バージョンで実行できる代替イメージ タグが利用可能です。
イメージ Java バリアントは、次に示すように使用できます。
itzg/mc-proxy:{variant}
またはリリース バージョン2024.5.0
など) を使用する
itzg/mc-proxy:{release}-{variant}
変異体 | Javaのバージョン | CPUの種類 |
---|---|---|
最新 | 21 | amd64、アーム64 |
ジャワ21 | 21 | amd64、アーム64 |
java17 | 17 | amd64、arm64、armv7 |
java11 | 11 | amd64、arm64、armv7 |
java8 | 8 | amd64、arm64、armv7 |