Minecraft基岩版开服:安装、白名单与存档检查

这篇教程使用Ubuntu 24.04 LTS、x86_64 和 Minecraft Bedrock Dedicated Server 1.26.61.1 正式版,从空目录开始部署。先用 Windows 上的基岩版客户端完成首次连接,客户端须与服务端版本兼容;Java 版客户端不能直接加入基岩版服务器。

本例按至少 4 GB 内存准备,世界规模、视距和附加包还会增加资源占用。服务器需要提供可访问的公网入口,并允许配置本文用到的 TCP、UDP 端口。NAT 产品还要提前确认可用的外部端口和映射范围。

下载对应版本,保留原始安装包

用具有 sudo 权限的普通账号登录服务器,游戏文件和进程归这个账号管理。先核对系统,再安装工具:

cat /etc/os-release
uname -m
free -h
df -h "$HOME"
sudo apt-get update
sudo apt-get install unzip tmux nano curl ca-certificates libcurl4t64
mkdir "$HOME/minecraft-bedrock-1.26.61.1"

系统应识别为 Ubuntu 24.04、架构为 x86_64。如果目录已经存在,先检查其中是否有旧世界,不要直接覆盖。逐条执行命令,某一步报错时先处理,再继续。

在 Minecraft 官方服务端下载页选择 Ubuntu(Linux)正式版,阅读软件协议后自行决定是否接受。下载页为 https://www.minecraft.net/en-us/download/server/bedrock。本例使用的文件名是 bedrock-server-1.26.61.1.zip,对应官方下载地址:

https://www.minecraft.net/bedrockdedicatedserver/bin-linux/bedrock-server-1.26.61.1.zip

通过 SFTP 将安装包上传到刚创建的目录。不要把 Preview 预览版或其他版本仅改名后代替本例安装包。上传完成后执行:

cd "$HOME/minecraft-bedrock-1.26.61.1"
unzip -t bedrock-server-1.26.61.1.zip
sha256sum bedrock-server-1.26.61.1.zip > bedrock-server-1.26.61.1.zip.sha256
unzip bedrock-server-1.26.61.1.zip
chmod u+x bedrock_server

压缩包检查没有报错再解压。这里保存 SHA-256 是为了以后辨认这份文件,不代表已经核实下载来源;文件仍须从官方入口取得。目录中的 bedrock_server_how_to.html是随包提供的使用说明,应与安装包一起保留。

先配置世界,再配置NetherNet端口

服务端尚未启动时,编辑配置:

nano "$HOME/minecraft-bedrock-1.26.61.1/server.properties"

找到对应项目并修改已有值,避免在文件末尾堆叠重复设置:

server-name=Baole Survival
gamemode=survival
level-name=baole-survival
online-mode=true
allow-list=true
transport=nethernet
server-ip=
server-port=19132
server-udp-ports=49152-49200

在 nano 中按 Ctrl+O、回车保存,再按 Ctrl+X 退出。level-name决定使用的世界目录,本例是 worlds/baole-survival;以后随意修改它,可能会生成一个新世界,看起来就像原存档不见了。

NetherNet 的连接分为两段:server-port=19132用于 TCP 连接握手,server-udp-ports=49152-49200限定游戏通信使用的 UDP 范围。只开放 UDP 19132 的旧写法不适用于这组配置。server-ip留空,让服务监听本机接口;不要把未分配在网卡上的公网地址直接填进去。

本例保留客户端认证和允许列表。不要为了排除连接错误,将 online-mode改为 false。NetherNet 模式也不能通过修改旧的 server-portv6来代替上述端口配置。

把云侧和系统内的规则对应起来

先按安全组操作教程,为这台实例开放TCP 19132和UDP 49152—49200。来源范围按实际玩家网络设置。随后检查系统防火墙:

sudo ufw status

只有确认这台机器使用 UFW,且状态为 active 时,才执行下面两条放行命令:

sudo ufw allow 19132/tcp
sudo ufw allow 49152:49200/udp

如果使用 firewalld、nftables 或其他防火墙,应在实际生效的规则中处理。不要为了开服清空整套规则,也不要在没有保留 SSH 管理规则时直接启用防火墙。

公网入口经过 NAT 时需要另外核对映射。TCP 握手端口和 UDP 游戏端口都必须能到达这台服务器。外部端口与内部端口不同时,客户端填写外部 TCP 端口,UDP 配置则需要描述实际的公网映射。

例如:外部 UDP 50000—50048 映射到内部 UDP 49152—49200,公网地址为示例地址 203.0.113.10,对应设置是:

server-udp-ports=203.0.113.10:50000-50048:49152-49200

这行用于替换前面的 server-udp-ports,不是同时保留两种方案。公网地址和端口必须换成实际分配值,两边的端口数量要相同;内外端口没有变化时,两段范围填写相同值。系统防火墙对应内部端口。映射操作参照NAT 端口映射教程,不能只在配置文件里写一个公网地址,就认为映射已经建立。

启动服务端,添加允许加入的玩家

创建一个 tmux 会话,再启动服务端:

tmux new -s mc-bedrock

进入会话后执行:

cd "$HOME/minecraft-bedrock-1.26.61.1"
LD_LIBRARY_PATH=. ./bedrock_server

记录启动日志显示的完整版本,确认世界加载完成,没有立即退出。接下来在游戏服务端控制台输入以下命令,不是在另一个 Linux 命令行窗口输入:

allowlist add "Your GamerTag"
allowlist list
serveridentity save

将 Your GamerTag替换为玩家实际的 Xbox Gamertag,含空格的名字保留英文双引号。允许列表会保存到 allowlist.json。如停服后手工编辑过该文件,启动后可以使用 allowlist reload重新加载。

serveridentity save保存当前服务器身份,避免每次重启都生成一个新的身份让玩家重新确认。生成的 keys目录应随存档一起备份,其中的私钥不要公开、贴进工单或放到可下载的网站目录。

分开检查握手和真正进服

保留游戏控制台,再开一个 SSH 窗口检查 TCP 监听和本机信令接口:

sudo ss -lntp 'sport = :19132'
curl --fail --show-error --max-time 5 http://127.0.0.1:19132/v1/join

接口返回包含服务器名称、版本等信息的 JSON,说明本机信令入口可以响应;这还没有验证外部安全组、UDP 通信和玩家认证。

在 Windows 基岩版客户端进入服务器列表,选择添加服务器,填写实际公网地址和 TCP 入口端口。普通直连示例使用 19132,NAT 产品使用分配的外部 TCP 端口。第一次出现服务器信任提示时,先确认目标确实是自己搭建的服务器。

玩家发起连接时,可以在 SSH 窗口执行 sudo ss -lnup,结合进程和端口范围观察 UDP 端点。UDP 端点可能在连接过程中建立,不要仅凭启动后暂时没有某条 UDP 记录,就认定服务器没有启动。

首次验收要实际进入世界、移动、放置一个方块并保持一段时间。出现 Door、InitialConnection 或明确的版本、白名单错误时,保留完整提示和对应时刻的服务端日志,再检查出错的阶段。

正常关闭一次,检查存档有没有留下

记下刚放置方块的位置和角色状态,在游戏服务端控制台输入:

stop

等到保存结束、进程退出并返回 Linux 提示符,再用之前的启动命令重新运行。客户端重新加入同一个世界,确认方块、位置和物品等状态仍在。这个检查通过,才说明本次存档能跨正常重启保留。

停服后备份整个服务端工作目录最容易避免漏项。至少保留实际存在的 worlds、server.properties、allowlist.json、permissions.json、keys,以及使用到的行为包、资源包目录,并保留原来的目录结构。

需要暂时离开 SSH 时,按 Ctrl+B,松开后按 D 分离 tmux;以后执行 tmux attach -t mc-bedrock返回控制台。tmux 可以让进程继续运行,但没有替你配置整台服务器重启后的自动开服。