Minecraft Java开服:安装与首次联机
这篇教程用于新建一个原版 Minecraft Java 服务器:系统为Ubuntu 24.04 LTS、x86_64,游戏固定为Java Edition 26.3,运行环境使用Java 25。客户端也要选择 26.3;基岩版、模组服和插件服不直接套用这套组合。
先通过SSH登录服务器。以下操作使用有 sudo 权限的普通系统账号,游戏目录由这个账号管理。逐段执行命令,遇到错误先处理,不要把后面的步骤一次性粘贴进去。
先把Java版本装对
本例给 Java 堆内存的上限是 2 GB,服务器还要为系统和其他进程留出空间。玩家数量、视距和世界规模都会影响资源占用,不能仅按内存大小承诺能带多少人。先检查实际系统,再安装微软提供的 OpenJDK:
cat /etc/os-release
uname -m
free -h
df -h "$HOME"
sudo apt-get update
sudo apt-get install wget ca-certificates tmux nano
mkdir -p "$HOME/downloads"
wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O "$HOME/downloads/packages-microsoft-prod-24.04.deb"
sudo dpkg -i "$HOME/downloads/packages-microsoft-prod-24.04.deb"
sudo apt-get update
sudo apt-get install msopenjdk-25
/usr/lib/jvm/msopenjdk-25-amd64/bin/java -version
系统应为 Ubuntu 24.04、架构为 x86_64,最后一条命令应显示 Java 25。后面的启动命令直接使用这个 Java 路径,避免机器上的 Java 8、17 或 21 被误调用。
准备独立目录,第一次启动只检查协议
打开这个固定版本的官方发布页:https://www.minecraft.net/en-us/article/minecraft-java-edition-26-3。在页面底部的“Get the Release”中下载“Minecraft server jar”,然后用 SFTP 上传到下面建立的目录,文件名保存为 server-26.3.jar。核对页面版本是正式版 26.3,不能把其他版本的文件改个名字当作 26.3 使用。
mkdir "$HOME/minecraft-java-26.3"
cd "$HOME/minecraft-java-26.3"
如果提示目录已经存在,先检查是否有旧世界,换用新的空目录,不要覆盖原文件。上传完成后,记录文件摘要并尝试启动:
cd "$HOME/minecraft-java-26.3"
sha256sum server-26.3.jar > server-26.3.jar.sha256
/usr/lib/jvm/msopenjdk-25-amd64/bin/java -Xms1G -Xmx2G -jar server-26.3.jar nogui
保存摘要便于以后核对是否为同一个文件,摘要本身不证明下载来源可信。首次启动会生成 eula.txt并退出。阅读其中指向的许可条款,只有你确认接受时,才编辑文件,把 eula=false改成 eula=true:
nano eula.txt
接着打开配置文件,修改已有的同名项目,不要在文件末尾重复添加:
nano server.properties
server-port=25565
server-ip=
online-mode=true
white-list=true
level-name=world
在 nano 中按 Ctrl+O、回车保存,再按 Ctrl+X 退出。server-ip先留空,让服务端监听本机接口;云服务器的公网 IP 可能通过地址映射提供,不能不核实就填进绑定地址。玩家连接使用 server-port,不是查询服务的 query.port。
启动服务端,把自己的账号加入白名单
先创建终端会话,避免关闭 SSH 窗口时把游戏进程一并结束:
tmux new -s mc-java
在新会话里启动游戏:
cd "$HOME/minecraft-java-26.3"
/usr/lib/jvm/msopenjdk-25-amd64/bin/java -Xms1G -Xmx2G -jar server-26.3.jar nogui
等初始化完成,再在游戏服务端控制台输入下面两条命令。YourJavaName替换为你的 Java 版玩家名,这不是 Linux 命令:
whitelist add YourJavaName
whitelist list
26.3 默认开启白名单,本例也明确保留此设置。online-mode=true要求客户端正常完成正版账号验证,不要为了绕过登录报错就关闭认证。
放行TCP端口,再从游戏里连接
在产品对应的安全组中放行实际游戏端口 TCP 25565。只给自己和朋友使用时,可以限制为已知来源地址。另开一个 SSH 窗口,检查系统防火墙与监听状态:
sudo ufw status
# 仅当上面显示 active 且确实使用 UFW 管理规则时执行:
sudo ufw allow 25565/tcp
sudo ss -lntp 'sport = :25565'
UFW 没有启用时,不要在未保留 SSH 管理规则的情况下临时启用它。若使用其他防火墙,检查其实际规则。最后一条命令应能看到 Java 进程监听对应端口。
在本地启动 Java Edition 26.3,进入多人游戏,填写服务器公网 IP 和实际端口。如果购买的是 NAT 产品,客户端填写对外分配的端口,映射规则参考NAT 端口映射教程。公网端口与服务器内部端口可能不同。
用一次保存重启确认开服完成
进入世界后,到出生点保护范围以外放置一个方块,记住位置。然后在游戏服务端控制台执行:
save-all flush
stop
等保存完成且进程退出,再用前面的同一条 Java 命令启动,重新进服,确认方块和玩家进度仍在。能看到启动日志、能进服、重启后数据保留,是三个分别需要检查的结果。
暂时离开终端时,按 Ctrl+B,松开后按 D。之后用 tmux attach -t mc-java回到控制台。tmux 不提供服务器重启后的自动开服;需要开机启动时,应另行配置并验证系统服务。
若出现 UnsupportedClassVersionError,检查实际调用的 Java 路径;出现 Address already in use,检查是否已有另一个服务占用端口。连接超时先看监听和网络入口,升级版本前正常关服并备份整个游戏目录,不要用唯一一份旧世界直接试新 JAR。