基岩版¶
快速开始¶
以下命令启动一个运行默认版本的Bedrock专用服务器,并暴露默认的UDP端口:
docker run -d -it -e EULA=TRUE -p 19132:19132/udp -v mc-bedrock-data:/data itzg/minecraft-bedrock-server
注意:如果你计划长时间运行服务器,强烈建议使用Docker Compose或Kubernetes等管理层,以便进行增量重新配置和镜像升级。
升级到最新的Bedrock服务器版本¶
当VERSION变量设置为"LATEST"(默认值)时,可以通过重启容器来升级Bedrock服务器。每次启动时,容器都会检查最新版本并进行升级(如果需要)。
可以通过将VERSION设置为"PREVIEW"来请求最新的预览版本。
环境变量¶
容器特定¶
EULA(无默认值):必须设置为TRUE以接受Minecraft最终用户许可协议VERSION(默认值为LATEST):可以设置为特定服务器版本,或使用以下特殊值:LATEST:确定最新(非预览)版本,并可在容器启动时自动升级PREVIEW:确定最新预览版本,并会自动升级- 否则可以提供任何特定服务器版本。如果是预览版本,还需将
PREVIEW设置为"true" UID(默认值从/data所有者派生):可以设置为特定用户ID以运行Bedrock服务器进程GID(默认值从/data所有者派生):可以设置为特定组ID以运行Bedrock服务器进程TZ(无默认值):可以设置为特定时区,如America/New_York。这将设置Docker容器的时区及其日志。此外,如果你想与主机同步时间,可以将主机的/etc/localtime文件挂载到容器中,如/etc/localtime:/etc/localtime:ro。PACKAGE_BACKUP_KEEP(2):保留多少个包备份
服务器属性¶
以下环境变量将设置server.properties中的等效属性,每个属性在此处描述。
通常,每个属性通过其UPPER_SNAKE_CASE等效项进行配置。
SERVER_NAMEGAMEMODEFORCE_GAMEMODEDIFFICULTYALLOW_CHEATSMAX_PLAYERSONLINE_MODEWHITE_LISTALLOW_LISTSERVER_PORTSERVER_PORT_V6ENABLE_LAN_VISIBILITYVIEW_DISTANCETICK_DISTANCEPLAYER_IDLE_TIMEOUTMAX_THREADSLEVEL_NAMELEVEL_SEEDLEVEL_TYPEDEFAULT_PLAYER_PERMISSION_LEVELTEXTUREPACK_REQUIREDCONTENT_LOG_FILE_ENABLEDCONTENT_LOG_LEVELCONTENT_LOG_CONSOLE_OUTPUT_ENABLEDCOMPRESSION_THRESHOLDCOMPRESSION_ALGORITHMSERVER_AUTHORITATIVE_MOVEMENTPLAYER_POSITION_ACCEPTANCE_THRESHOLDPLAYER_MOVEMENT_SCORE_THRESHOLDPLAYER_MOVEMENT_ACTION_DIRECTION_THRESHOLDPLAYER_MOVEMENT_DISTANCE_THRESHOLDPLAYER_MOVEMENT_DURATION_THRESHOLD_IN_MSCORRECT_PLAYER_MOVEMENTSERVER_AUTHORITATIVE_BLOCK_BREAKINGSERVER_AUTHORITATIVE_BLOCK_BREAKING_PICK_RANGE_SCALARCHAT_RESTRICTIONDISABLE_PLAYER_INTERACTIONCLIENT_SIDE_CHUNK_GENERATION_ENABLEDBLOCK_NETWORK_IDS_ARE_HASHESDISABLE_PERSONADISABLE_CUSTOM_SKINSSERVER_BUILD_RADIUS_RATIOALLOW_OUTBOUND_SCRIPT_DEBUGGINGALLOW_INBOUND_SCRIPT_DEBUGGINGFORCE_INBOUND_DEBUG_PORTSCRIPT_DEBUGGER_AUTO_ATTACHSCRIPT_DEBUGGER_AUTO_ATTACH_CONNECT_ADDRESSSCRIPT_WATCHDOG_ENABLESCRIPT_WATCHDOG_ENABLE_EXCEPTION_HANDLINGSCRIPT_WATCHDOG_ENABLE_SHUTDOWNSCRIPT_WATCHDOG_HANG_EXCEPTIONSCRIPT_WATCHDOG_HANG_THRESHOLDSCRIPT_WATCHDOG_SPIKE_THRESHOLDSCRIPT_WATCHDOG_SLOW_THRESHOLDSCRIPT_WATCHDOG_MEMORY_WARNINGSCRIPT_WATCHDOG_MEMORY_LIMITOP_PERMISSION_LEVELEMIT_SERVER_TELEMETRYMSA_GAMERTAGS_ONLYITEM_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
暴露的端口¶
- UDP 19132 : 由
SERVER_PORT设置的基岩服务器的 IPv4 端口。默认情况下不暴露 IPv6 端口。 注意 在暴露端口时,必须附加/udp,例如-p 19132:19132/udp,并且必须在主机上启用 IPv4 和 IPv6。
卷¶
/data: 下载的服务器扩展和运行的位置。还包含配置属性文件server.properties。
你可以创建一个 命名卷 并像这样使用它:
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
如果你使用命名卷并且希望 bedrock 进程以非 root 用户运行,那么你需要预先创建卷并将它 chown 到所需的用户。
例如,如果你想让 bedrock 服务器以用户 ID 1000 和组 ID 1000 运行,那么可以使用以下命令创建并 chown 名为 "bedrock" 的卷:
如果使用 docker run,只需在 -v 参数中引用该卷 "bedrock"。如果使用 compose 文件,则将卷声明为外部卷,使用以下类型的声明:
连接¶
在局域网中运行容器时,你可以在 "朋友" 标签的 "局域网游戏" 部分找到并连接到专用服务器,例如:

权限¶
基岩专用服务器需要使用 XUID 定义权限。有多种工具可以在线查找这些信息,当玩家加入时也会打印到日志中。有 3 个权限级别和 3 个选项来配置每个组:
OPS用于定义服务器上的操作员。MEMBERS用于定义服务器上的成员。VISITORS用于定义服务器上的访客。
白名单¶
有两种处理白名单的方法:
第一种是将 ALLOW_LIST 环境变量设置为 true,并映射一个自定义的 allowlist.json 文件(以前称为 "whitelist.json")到容器中。
另一种是将 ALLOW_LIST_USERS 环境变量设置为逗号分隔的玩家标签用户名及其对应的 XUID。每个用户名后面应跟随其 XUID,用冒号分隔。服务器将使用这些详细信息来匹配玩家。
有多种工具可以在线查找 XUID,当玩家加入服务器时也会打印到日志中。
模组和附加组件¶
也称为行为或资源包,为了向服务器添加模组,你可以按照以下步骤操作,这些步骤已通过 OPS (One Player Sleep) 和 bedrocktweaks 测试:
- 首先在客户端安装 mcpack 或 mcaddon,以便更容易将文件复制到服务器,对于 Windows 10,文件应位于
C:\Users\USER\AppData\Local\Packages\Microsoft.MinecraftUWP_*\LocalState\games\com.mojang。 - 将模组的文件夹从 behavior_packs 或 resource_packs 复制到服务器的卷中。
如果你想在不使用客户端的情况下安装它们,你应该能够直接将模组解压到服务器的卷中,.mcaddon 应放入 behavior_packs,.mcpack 应放入 resource_packs。.mcaddon 和 .mcpack 实际上是重命名的 .zip 文件。
-
最后在服务器的卷中创建
worlds/$level-name/world_behavior_packs.json,你需要为每个模组添加一个条目,类似于之前的 manifest.json,我们现在只需要 uuid 称为 pack_id 和版本,用逗号替换点,并用 [ ] 替换双引号。你也可以创建一个
worlds/$level-name/world_resource_packs.json,但我发现将资源和行为包放在同一个 json 中也可以正常工作。 -
重启服务器,模组现在应该已启用!连接时,你会收到一个提示,询问你是否要 "下载并加入" 或仅 "加入",如果你希望实际看到添加到服务器的新资源包,你需要选择 "下载并加入"。 此提示仅适用于资源包,因为它们改变了 Minecraft 的外观,而行为包改变了 Minecraft 的功能,不需要在客户端下载或安装。
如果你想强制所有客户端使用资源包,可以在
server.properties中将texturepack-required=false选项更改为true。 资源包可以通过进入设置 > 存储 > 缓存数据,然后选择包并点击垃圾桶图标来删除。
更多信息可以参考 FoxyNoTail 的视频,该视频解释了在 Windows 上运行的服务器上的相同内容。
更多信息¶
有关管理基岩专用服务器的一般信息,请查看这个Reddit帖子。
执行服务器命令¶
此镜像附带了一个名为send-command的脚本,该脚本会将基岩命令和参数发送到基岩服务器控制台。命令的输出只能在容器日志中查看。
例如:
或者,在启用stdin和tty的情况下(例如使用-it),通过名称或ID附加到容器的控制台:
附加后,您可以执行任何服务器端命令,例如将您的玩家设为管理员:
完成后,使用Ctrl-p, Ctrl-q从服务器控制台分离。
使用Docker Compose部署¶
examples目录包含一个示例Docker compose文件,该文件声明:
- 一个运行基岩服务器容器并暴露UDP端口19132的服务。在示例中命名为“bds”,是“Bedrock Dedicated Server”的缩写,但您可以为服务命名任何名称。
- 一个附加到服务并在容器路径/data上的卷。
services:
bds:
image: itzg/minecraft-bedrock-server
environment:
EULA: "TRUE"
ports:
- "19132:19132/udp"
volumes:
- ./data:/data
stdin_open: true
tty: true
使用以下命令启动服务器并在后台运行:
您可以随时使用以下命令查看日志:
使用Kubernetes部署¶
examples目录包含一个示例Kubernetes清单文件,该文件声明: - 一个持久卷声明(使用默认存储类) - 一个使用声明的PVC的Pod部署 - 一个类型为LoadBalancer的服务
Pod部署包括通过环境变量配置服务器属性的示例:
该文件可以在大多数集群上直接部署,但已在Docker for Desktop和Google Kubernetes Engine上确认:
您可以使用以下命令查看部署的日志:
社区解决方案¶
- kaiede/minecraft-bedrock-backup image by @Kaiede
- ghcr.io/edward3h/mc-webhook by @edward3h
- Minecraft Bedrock Server Bridge by @macchie
- Admincraft by @joanroig
教程¶
@TheTinkerDad提供了一个关于如何在单个端口(19132)上托管多个实例以便于发现的优秀教程:https://www.youtube.com/watch?v=ds0_ESzjbfs