For the complete documentation index, see llms.txt. This page is also available as Markdown.

38.2 我的世界(Minecraft)服务器

Minecraft 是一款由 Java 语言开发的沙盒游戏,本节介绍在 FreeBSD 上 Minecraft 服务器端的部署。搭建服务器需先安装 Java 运行环境,服务器端与客户端对 Java 版本的要求通常保持一致。

相关文件结构

/
├── etc/
   └── rc.conf # 系统配置文件,包含 minecraft 服务配置
├── usr/
   └── local/
       ├── bin/
          └── minecraft-server # Minecraft 服务器可执行文件
       └── etc/
           └── minecraft-server/ # Minecraft 服务器配置目录
               ├── eula.txt # 用户协议文件
               ├── java-args.txt # Java 参数配置
               └── server.properties # 服务器配置文件
├── var/
   ├── log/
      └── minecraft-server/ # 日志和调试输出目录
   └── db/
       └── minecraft-server/ # 世界文件目录

安装 OpenJDK

需注意,过旧的 JDK 版本不受服务器端支持,本节测试使用 JDK 21 可正常运行。

使用 pkg 安装 OpenJDK 21:

或者使用 Ports 编译安装 OpenJDK 21,可针对服务器硬件优化:

使用 Ports 或官方服务器程序

搭建 Minecraft 服务器有两种方式:

经过测试,Minecraft 官方服务器端是纯 Java 程序,在 FreeBSD 15.0 上安装 OpenJDK 后即可直接运行。Ports 版本则提供了 FreeBSD 特定的集成配置,包括服务管理脚本和默认配置文件。

也可使用 Ports 中提供的 games/minecraft-server

查看配置信息:

运行服务器:

提示需同意许可协议,将 /usr/local/etc/minecraft-server/eula.txt 文件中的 eula=false 修改为 eula=true

再次运行已安装的 Minecraft 服务器程序:

Ctrl + C 中断程序运行。

关闭正版验证

在当前默认配置下,服务器启用了正版验证机制(online-mode=true)。该机制通过与 Mojang 会话服务器和 Microsoft 身份验证服务通信来验证玩家身份,确保:

  • 每个玩家拥有 Mojang/Microsoft 分配的唯一 UUID,与购买的账号绑定

  • 玩家无法使用他人用户名登录

  • 封禁和权限管理基于真实的账号身份

警告

应仅在完全理解风险且已部署额外保护措施的情况下使用 online-mode=false

如需在局域网或测试环境中允许未购买游戏的玩家连接,可编辑 /usr/local/etc/minecraft-server/server.properties 文件,将 online-mode=true 修改为 online-mode=false

随后再次运行已安装的 Minecraft 服务器程序:

FreeBSD 运行 Minecraft

关闭正版验证的安全风险

完全禁用 Mojang/Microsoft 账号验证,将带来以下严重安全风险:

  1. 管理员账号伪造:任何人可输入管理员(OP)的用户名直接登录,获得服务器的全部管理权限、物品和领地。由于 UUID 基于用户名本地生成(OfflinePlayer:用户名),服务器无法区分真实管理员与冒充者。

  2. 封禁完全失效:被封禁的用户只需更换一个用户名即可重新加入,无需购买新账号,封禁机制形同虚设。

  3. 白名单形同虚设:离线模式下白名单仅检查用户名而非账号身份,无法阻止冒充。

  4. 机器人攻击门槛极低:攻击者无需购买任何 Minecraft 账号即可批量生成随机用户名进行自动化攻击。

  5. 玩家数据丢失风险:离线模式下 UUID 绑定用户名而非账号。玩家更换用户名后,其所有物品、建筑、权限等数据将永久丢失。

  6. 违反 Minecraft EULA 的风险:允许未购买游戏的玩家连接可能违反 Mojang 最终用户许可协议。

  7. 皮肤和正版特性不可用:离线模式下所有玩家外观显示为默认 Steve/Alex 皮肤。

如确实需要使用离线模式(例如局域网封闭环境、使用 BungeeCord/Velocity 代理转发),建议采取以下缓解措施:

  • 安装身份验证插件(如 AuthMeReloaded)要求玩家注册密码,防止伪造用户名

  • 配合防火墙限制,仅允许可信 IP 段连接

  • 使用 CoreProtect 等插件记录所有方块操作,便于回溯与回滚

  • 使用 LuckPerms 等权限插件精细控制权限,避免使用通配符 *

  • 定期备份世界数据

最后更新于