以下啟動了一個運行默認版本並公開默認UDP端口的基岩專用服務器:
docker run -d -it -e EULA=TRUE -p 19132:19132/udp -v mc-bedrock-data:/data itzg/minecraft-bedrock-server
注意:如果您計劃在更長的時間內運行服務器,則強烈建議使用諸如Docker Compose或Kubernetes之類的管理層來允許增量重新配置和圖像升級。
將VERSION
變量設置為默認的“最新”,則可以通過重新啟動容器來升級基岩服務器。在每個初創公司,如果需要,容器會檢查最新版本和升級。
可以通過將VERSION
設置為“預覽”來請求最新的預覽版。
對於Minecraft Java版,您需要使用此圖像:
ITZG/Minecraft-Server
EULA
(無默認):必須設置為TRUE
才能接受Minecraft最終用戶許可協議VERSION
(默認是LATEST
):可以將其設置為特定的服務器版本,也可以使用以下特殊值:LATEST
:確定最新(非瀏覽)版本,可用於自動升級容器啟動PREVIEW
:確定最新的預覽版本,並將自動升級PREVIEW
設置為“ true”UID
(默認來自/data
所有者):可以將其設置為特定的用戶ID來運行基礎服務器進程GID
(默認來自/data
所有者):可以將其設置為特定的組ID來運行基礎服務器進程TZ
(無默認值):可以將其設置為像America/New_York
這樣的特定時區。這將為Docker容器及其日誌設置時區。另外,如果要將時間與主機同步,則可以將/etc/localtime
文件從主機安裝到諸如/etc/localtime:/etc/localtime:ro
。PACKAGE_BACKUP_KEEP
( 2
):保留多少個包備份以下環境變量將在server.properties
中設置等效屬性。通常,每個屬性都是由upper_snake_case等效配置的。
SERVER_NAME
GAMEMODE
FORCE_GAMEMODE
DIFFICULTY
ALLOW_CHEATS
MAX_PLAYERS
ONLINE_MODE
WHITE_LIST
ALLOW_LIST
SERVER_PORT
SERVER_PORT_V6
ENABLE_LAN_VISIBILITY
VIEW_DISTANCE
TICK_DISTANCE
PLAYER_IDLE_TIMEOUT
MAX_THREADS
LEVEL_NAME
LEVEL_SEED
LEVEL_TYPE
DEFAULT_PLAYER_PERMISSION_LEVEL
TEXTUREPACK_REQUIRED
CONTENT_LOG_FILE_ENABLED
CONTENT_LOG_LEVEL
CONTENT_LOG_CONSOLE_OUTPUT_ENABLED
COMPRESSION_THRESHOLD
COMPRESSION_ALGORITHM
SERVER_AUTHORITATIVE_MOVEMENT
PLAYER_POSITION_ACCEPTANCE_THRESHOLD
PLAYER_MOVEMENT_SCORE_THRESHOLD
PLAYER_MOVEMENT_ACTION_DIRECTION_THRESHOLD
PLAYER_MOVEMENT_DISTANCE_THRESHOLD
PLAYER_MOVEMENT_DURATION_THRESHOLD_IN_MS
CORRECT_PLAYER_MOVEMENT
SERVER_AUTHORITATIVE_BLOCK_BREAKING
SERVER_AUTHORITATIVE_BLOCK_BREAKING_PICK_RANGE_SCALAR
CHAT_RESTRICTION
DISABLE_PLAYER_INTERACTION
CLIENT_SIDE_CHUNK_GENERATION_ENABLED
BLOCK_NETWORK_IDS_ARE_HASHES
DISABLE_PERSONA
DISABLE_CUSTOM_SKINS
SERVER_BUILD_RADIUS_RATIO
ALLOW_OUTBOUND_SCRIPT_DEBUGGING
ALLOW_INBOUND_SCRIPT_DEBUGGING
FORCE_INBOUND_DEBUG_PORT
SCRIPT_DEBUGGER_AUTO_ATTACH
SCRIPT_DEBUGGER_AUTO_ATTACH_CONNECT_ADDRESS
SCRIPT_WATCHDOG_ENABLE
SCRIPT_WATCHDOG_ENABLE_EXCEPTION_HANDLING
SCRIPT_WATCHDOG_ENABLE_SHUTDOWN
SCRIPT_WATCHDOG_HANG_EXCEPTION
SCRIPT_WATCHDOG_HANG_THRESHOLD
SCRIPT_WATCHDOG_SPIKE_THRESHOLD
SCRIPT_WATCHDOG_SLOW_THRESHOLD
SCRIPT_WATCHDOG_MEMORY_WARNING
SCRIPT_WATCHDOG_MEMORY_LIMIT
OP_PERMISSION_LEVEL
EMIT_SERVER_TELEMETRY
MSA_GAMERTAGS_ONLY
ITEM_TRANSACTION_LOGGING_ENABLED
例如,要配置平坦的創意服務器而不是默認使用:
docker run -d -it --name bds-flat-creative
-e EULA=TRUE -e LEVEL_TYPE=flat -e GAMEMODE=creative
-p 19132:19132/udp itzg/minecraft-bedrock-server
SERVER_PORT
設置。默認情況下,IPv6端口不會公開。請注意,公開端口時必須附加/udp
,例如-p 19132:19132/udp
,並且必須在主機計算機上啟用IPv4和IPv6。 /data
:擴展下載的服務器的位置並運行。還包含配置屬性文件server.properties
您可以創建一個named volume
,並將其用作:
docker volume create mc-volume
docker run -d -it --name mc-server -e EULA=TRUE -p 19132:19132/udp -v mc-volume:/data itzg/minecraft-bedrock-server
如果您使用命名卷,並希望基岩進程作為非根系用戶運行,則需要預先創建該卷並將其chown
到所需的用戶。
例如,如果您希望BedRock服務器使用用戶ID 1000和組ID 1000運行,則使用:
docker run --rm -v bedrock:/data alpine chown 1000:1000 /data
如果使用docker run
,則只需在-v
參數中引用該卷“基石”。如果使用撰寫文件,請使用此類聲明將捲聲明為外部:
volumes :
bedrock :
external :
name : bedrock
在LAN上運行容器時,您可以在“朋友”選項卡的“ LAN遊戲”部分中找到並連接到專用服務器,例如:
基岩專用服務器需要使用XUID定義權限。有各種各樣的工具可以在線查找這些工具,並且當玩家加入時,它們也將打印到日誌中。有3個級別的權限和3個配置每個組的選項:
OPS
用於定義服務器上的操作員。 -e OPS= " 1234567890,0987654321 "
MEMBERS
用於定義服務器上的成員。 -e MEMBERS= " 1234567890,0987654321 "
VISITORS
用於定義服務器上的訪問者。 -e VISITORS= " 1234567890,0987654321 "
有兩種處理白名單的方法:
首先是將ALLOW_LIST
環境變量設置為true,並在允許列表中映射。JSON文件(以前稱為“ Whitelist.json”),該文件已定制為容器。
另一個是將ALLOW_LIST_USERS
環境變量設置為逗號分隔的遊戲者標籤用戶名及其相應的XUID。每個用戶名都應遵循其XUID,並由結腸隔開。服務器將使用這些詳細信息與玩家匹配。
有多種工具可以在線查看XUID,並且當玩家加入服務器時,它們也將被打印到日誌上。
-e ALLOW_LIST_USERS= " player1:1234567890,player2:0987654321 "
也稱為行為或資源包,為了將mod添加到服務器中,您可以按照以下步驟進行操作(一個玩家睡覺)和Bedrocktweaks測試
C:UsersUSERAppDataLocalPackagesMicrosoft.MinecraftUWP_*LocalStategamescom.mojang
。如果要在不使用客戶端的情況下安裝它們,則應該能夠將mod直接解壓縮到服務器的捲中。 .mcaddon和.mcpack實際上均已更名為.zip文件。
worlds/$level-name/world_behavior_packs.json
,您需要為每個mod添加一個條目,例如上一個清單上的每個mod。逗號和雙引號[]。您還可以創建一個
worlds/$level-name/world_resource_packs.json
但我已經看到將資源和行為包都放在同一JSON中效果很好
[
{
"pack_id" : "5f51f7b7-85dc-44da-a3ef-a48d8414e4d5",
"version" : [ 3, 0, 0 ]
}
]
如果您想強制所有客戶端的資源包,則在
server.properties
中有一個選項texturepack-required=false
true
可以通過進入設置>存儲>緩存數據,然後選擇包裝並單擊垃圾桶來刪除資源包。
有關更多信息,Foxynotail進行了一個視頻,該視頻在Windows上運行的服務器上進行了解釋。
有關管理基岩專用服務器的更多信息,請查看此Reddit帖子。
該圖像與一個名為send-command
腳本捆綁在一起,該腳本將向基岩服務器控制台發送基岩命令和參數。命令的輸出僅在容器日誌中可見。
例如:
docker exec CONTAINER_NAME_OR_ID send-command gamerule dofiretick false
另外,啟用了stdin和tty(例如使用-it
),使用以下名稱或ID附加到容器的控制台上:
docker attach CONTAINER_NAME_OR_ID
隨附時,您可以執行任何服務器端命令,例如將您的播放器運算為管理:
gamerule dofiretick false
完成後,使用CTRL-P,Ctrl-Q脫離服務器控制台
示例目錄包含一個示例Docker組成的文件,該文件聲明:
/data
上附加到服務的捲 services :
bds :
image : itzg/minecraft-bedrock-server
environment :
EULA : " TRUE "
ports :
- " 19132:19132/udp "
volumes :
- ./data:/data
stdin_open : true
tty : true
啟動服務器並在後台運行:
docker compose up -d
您可以隨時使用:
docker compose logs -f
示例目錄包含一個示例kubernetes清單文件,該文件聲明:
POD部署包括一些通過環境變量配置服務器屬性的示例:
env :
- name : EULA
value : " TRUE "
- name : GAMEMODE
value : survival
- name : DIFFICULTY
value : normal
該文件在大多數簇上都可以部署,但已在Docker for Desktop和Google Kubernetes引擎上得到確認:
kubectl apply -f examples/kubernetes.yml
您可以使用以下方式遵循部署日誌
kubectl logs -f deployment/bds
@thetinkerdad提供了一個出色的教程,介紹瞭如何在單個端口上託管多個實例(19132),以便可以發現:https://www.youtube.com/watch?v=ds0_eszjbfs
在嘗試構建此Docker映像時,請確保所有
.sh
文件具有LF
非CLRF
的行末尾序列,否則構建將失敗。