ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

从零搭建Minecraft离线服务器:Linux部署与运维实战

从零搭建Minecraft离线服务器:Linux部署与运维实战 当你看到“我开了一个mc服务器有人一起玩吗happydog.ltd 1.21.11 离线可进”这条消息时大多数玩家的反应是“版本号对不对、延迟高不高、能不能直接进”。但如果换个视角这句话其实是三条技术信息的浓缩服务端版本、服务器域名、登录模式。想把这样一台服务器真正跑稳定背后涉及Linux环境配置、Java运行环境、Minecraft服务端部署、域名解析、防火墙放行、服务进程守护和备份策略。这篇文章就把这套流程拆开讲清楚。我的判断很明确如果只是为了三五个人联机花钱买官方领域服务器Realms或者租现成的面板服省心得多但如果你希望拥有完全可控的服务器、想自定义规则、想顺手学一点服务器运维那么自己开一台MC服务器是性价比非常高的入门项目。尤其是“离线可进”这个配置看起来只是改一个开关实际上牵扯到身份验证、安全边界和玩家管理这些恰恰是很多开服新手最容易踩坑的地方。下面以标题中的 happydog.ltd、1.21.11、离线可进为线索写一份能照着落地的MC服务器开服指南。版本号我会按 1.21.11 来处理如果你实际使用的是 1.21.x 的其他版本流程完全相同只需要把服务端文件换成对应版本即可。1. 为什么值得自己开一台MC服务器很多玩家第一次动“自己开服”的念头是因为官方领域服务器不够自由。Realms 的优势是零维护、容易连接但世界大小和玩家数量都有限制而且不能装插件、不能随意改服务器配置。第三方大型服务器虽然内容丰富但规则多、环境陌生也未必能和自己熟悉的朋友一起安静地玩。自己开服解决的是“掌控权”问题。你可以决定地图种子、游戏难度、最大玩家数、白名单甚至可以后续加上插件或模组。更重要的是开服过程本身就是一场完整的服务器运维训练你需要在服务器上安装Java环境下载并启动服务端修改网络配置想办法让朋友通过域名访问处理崩溃日志定时备份世界数据。这些工作放在商业项目里可能叫“Linux运维”“Java应用部署”“网络安全加固”“域名解析配置”。放在MC开服场景里它们变成了一个个看得见摸得着的目标朋友能进、不会崩、存档不丢。对一个技术新人来说这种即时反馈比看教程强得多。所以如果你正在犹豫要不要自己开服不妨先想清楚目的。只是“找个人一起玩”那就别折腾用现成方案目的是“学习和长期运营”这篇文章就是为你准备的。2. 开服前必须搞清楚的三个概念版本、离线、域名在动手之前建议先建立三个基本概念否则后面每一步都可能走偏。第一个是客户端版本与服务端版本必须匹配。玩家看到的“1.21.11”是游戏客户端版本服务端也必须是同一个版本否则会出现“无效会话”或“版本不匹配”的提示。标题里的“1.21.11”说明这个服务器面向的是同一版本的客户端。自己开服时下载服务端文件前一定要先确认版本号。第二个是“离线可进”的含义。Minecraft 服务端有一个关键配置叫online-mode。当它是true时服务器会向Mojang会话服务器验证玩家身份只有正版账号能进入玩家名称也不会被随意抢注。当它是false时服务器跳过身份验证任何玩家都可以用任意用户名进入这就是大家常说的“离线模式”。标题里的“离线可进”本质就是把online-mode设置为false。需要特别强调的是“离线可进”不代表服务器本身离线而是指玩家不需要正版账号验证也能进服。这种模式方便熟人联机但也有明显安全隐患后面我会专门讲如何加固。第三个是域名的作用。happydog.ltd是服务器域名玩家不需要记一串难看的IP地址。要实现这一点需要把域名解析到服务器公网IP并在服务器防火墙里放行对应的游戏端口。域名解析和游戏本身没有直接关系但它让服务器更容易被记住、更方便分享。对比项正版模式online-modetrue离线模式online-modefalse是否验证正版身份是否玩家进入门槛必须有正版账号任意用户名即可进入服务器安全风险较低较高容易被恶意玩家利用典型使用场景公开服务器、社区服务器熟人联机、内网测试、路由环境配置方式server.properties 中设置server.properties 中设置理解这三件事之后下面就可以正式进入环境搭建。3. 服务器准备云主机、Linux、SSH连接自己开MC服务器不建议用Windows家用电脑长期跑。原因很直接Windows系统本身占用资源更多而且如果家里网络没有公网IP朋友从外面连不上还需要额外配置内网穿透。更稳妥的做法是买一台云服务器装一个精简的Linux发行版比如Ubuntu Server 22.04 LTS或Debian 12。服务器配置量力而行。纯Java版原版服务器4核4GB内存起步比较舒服能支持几个人到十几个人同时在线。如果要跑大型模组包或插件服8GB甚至16GB会更稳。硬盘建议用SSDMC世界区块加载对磁盘随机读写有一定要求。第一次操作时先用1核2GB的最低配练手也不是不行但玩家一多就会明显卡顿。拿到云服务器后第一步是更新系统、创建专用用户。不要直接用root跑MC服务端这样一旦服务端被利用风险会放大。更合理的做法是单独建一个普通用户只给它运行MC服务所需的目录权限。# 以 root 或 sudo 用户执行 sudo apt update sudo apt upgrade -y sudo useradd -m -s /bin/bash mc然后建议配置SSH密钥登录避免使用弱密码。这一步虽然和MC没有直接关系但你的服务器一旦暴露在公网就会不断被扫描工具尝试登录。SSH安全是做任何公网服务的前提。后续所有操作用mc用户登录或通过sudo切换到专用用户即可。4. 部署MC服务端Java、服务端Jar与首次启动Minecraft Java版服务端依赖Java运行环境。不同版本的MC对Java版本要求可能不同以1.21.x为例通常需要Java 21或更高版本。为了稳妥先执行java -version看看当前环境如果没有安装再按系统仓库安装合适的OpenJDK。下面以Debian/Ubuntu为例安装OpenJDK 21的无头版本。这里要说明不同版本的Linux软件仓库里的包名可能不同如果提示找不到包可以先执行apt search openjdk-21确认。# 安装 Java 运行环境 sudo apt install openjdk-21-jre-headless -y # 验证是否安装成功 java -version接下来创建MC服务端目录并把服务端Jar文件放进去。服务端文件从哪里下载官方服务端一般可以通过官方启动器获取到下载地址也可以使用Paper、Purpur等社区服务端替代。不同服务端的功能差异较大但基础配置逻辑是一样的。这里不写死某个具体下载链接因为你实际拿到的版本号可能与示例不同直接使用官方或可信渠道提供的jar包即可。假设你已经把服务端文件命名为minecraft_server.jar放在/opt/mc目录下。如果没有这个文件下面的命令可以作为从远程地址下载的参考模板。# 创建并切换到 MC 专用目录 sudo mkdir -p /opt/mc sudo chown -R mc:mc /opt/mc # 以 mc 用户下载服务端文件 sudo -u mc bash -c cd /opt/mc wget -O minecraft_server.jar https://example.com/path/to/minecraft_server_1.21.11.jar下载完成后第一次启动服务端时它会因为EULA许可协议没有接受而拒绝运行。你需要先确认同意Mojang的最终用户许可协议再启动服务端。这一步在很多教程里会被忽略但第一次启动失败十有八九和它有关。# 同意最终用户许可协议默认已经写入 echo eulatrue | sudo tee /opt/mc/eula.txt # 首次启动生成服务器配置文件并加载世界 sudo -u mc bash -c cd /opt/mc java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui首次启动会生成 world 文件夹、server.properties、logs等文件。看到类似“Done”的日志输出说明服务端已经正常启动。不过现在先别急着让玩家进来还需要关闭服务端修改几个关键配置。按Ctrl C可以停止服务端进程。5. server.properties配置离线可进就是这么来的Minecraft服务端的大部分行为都集中在server.properties文件里。第一次启动后这个文件会自动生成在服务端目录下。修改时务必在服务端停止状态下进行避免配置被下次停止时覆盖。这时要找到并重点关注几个配置项online-mode、server-port、motd、difficulty、max-players和white-list。online-modefalse就是“离线可进”的核心开关。如果保持默认的true玩家就必须用正版账号才能进入。server-port默认是25565如果没有特殊需求不要改保持默认端口可以让玩家在添加服务器时省略端口号。motd是服务器列表里显示的那句话可以改成自己的宣传语。white-list如果你是熟人联机建议直接设置成true这样即使服务器处于离线模式也只有白名单里的玩家能进。以下是一份常见配置示例# 文件路径/opt/mc/server.properties # 离线模式false 表示不验证正版账号 online-modefalse server-port25565 motdWelcome to happydog.ltd difficultynormal max-players20 white-listtrue view-distance10改完保存后重新启动服务端。注意如果white-list为true但还没有添加任何白名单玩家所有玩家都会被拒绝。所以要在服务端控制台里执行白名单添加命令。如果你之前没有开过白名单可以先在控制台执行whitelist on然后逐个添加玩家名。whitelist add Alice whitelist add Bob添加完成后可以执行whitelist list查看当前白名单列表。这里还有一个容易被忽略的细节离线模式下玩家用户名是唯一的身份标识别人如果用同样的名字进入会和你产生UUID冲突轻则踢出重则串档。所以在熟人环境下白名单必须做而且要告诉朋友不要随意改游戏名。6. 用systemd守护MC服务端崩溃后自动重启很多新手开服时直接在终端里前台运行java -jar一关SSH窗口服务器就断了或者服务端崩了自己不知道朋友想上也上不去。正确做法是把MC服务端配置成Linux的systemd服务让它开机自启、崩溃后自动重启。在/etc/systemd/system/目录下新建一个服务文件比如mc-server.service。文件内容可以参考下面这段。注意把User、WorkingDirectory和ExecStart替换成你实际的环境。# 文件路径/etc/systemd/system/mc-server.service [Unit] DescriptionMinecraft Server Afternetwork.target [Service] Usermc WorkingDirectory/opt/mc ExecStart/usr/bin/java -Xmx2048M -Xms1024M -jar minecraft_server.jar nogui Restarton-failure [Install] WantedBymulti-user.target这里的-Xmx2048M表示JVM最大堆内存为2GB-Xms1024M表示启动时初始分配1GB。如果服务器只有4GB内存可以给到3GB如果只有2GB建议控制在1.5GB以内留一部分给系统。具体数值要根据玩家数量和模组情况调整不要照抄。保存文件后先执行systemctl daemon-reload让systemd重新加载配置再启动服务并设置开机自启。sudo systemctl daemon-reload sudo systemctl start mc-server sudo systemctl enable mc-server # 查看服务运行状态 sudo systemctl status mc-server # 查看实时日志 sudo journalctl -u mc-server -f用systemd管理服务后服务器崩溃会自动拉起不用每次都手动敲命令。这是从“玩MC”到“运维MC”的重要一步。后面无论是排查启动失败还是查看玩家进入日志都能用journalctl快速定位。7. 绑定域名与防火墙开放从IP到happydog.ltd服务器服务端已经在本机跑起来了但朋友从外网访问还需要解决两个问题公网IP能不能访问到25565端口域名能不能解析到这台服务器的IP。先处理防火墙。如果你用的是云服务器除了操作系统自身的防火墙云平台控制台里通常还有一层“安全组”。两个地方都要放行TCP 25565端口。以Ubuntu自带的ufw为例执行以下命令sudo ufw allow 25565/tcp sudo ufw enableufw enable会开启防火墙如果之前配置了SSH端口一定要先把22端口放行否则防火墙开启后可能导致SSH连接断开。这一步在线上环境操作时要特别小心。云平台安全组则在网页控制台里添加入方向规则协议TCP端口25565来源按需选择0.0.0.0/0即可因为要让所有朋友都能连接。防火墙放行后再解析域名。在DNS服务商的控制台里为happydog.ltd添加一条A记录把域名指向云服务器的公网IP。如果你还想让玩家能通过子域名访问也可以添加mc.happydog.ltd之类的A记录。不过标题里的服务器直接把主域名作为地址逻辑上其实是一样的。添加完记录后可以用dig或nslookup验证域名解析是否生效。dig happydog.ltd short如果返回了服务器的公网IP说明DNS解析已经生效。DNS生效时间一般在几分钟到几小时不等不同服务商的策略不同。如果你刚改完记录发现还解析不到旧IP稍等几分钟再查一次即可。验证端口是否可以从外网访问可以使用nc命令或者在自己电脑上直接尝试添加服务器。如果nc不可用可以先安装netcatnc -zv happydog.ltd 25565这条命令会尝试连接目标主机和端口。如果返回连接成功说明域名、公网IP和防火墙链路已经打通。如果连接超时问题大多数出在云平台安全组或操作系统防火墙没放行端口。8. 玩家怎么连添加服务器、离线登录、白名单验证一切配置就绪后玩家只需要在Minecraft客户端里点击“多人游戏”-“添加服务器”在服务器地址栏填写happydog.ltd端口可以不填因为默认就是25565。服务器名称随便写一个自己好识别的就行。“离线可进”的服务器玩家端通常需要使用支持离线登录的启动器。玩家在启动器里可以随便填写一个名字然后点击进入离线模式。这个名字必须和服务器白名单里添加的名字一致否则会被白名单拒绝。如果玩家是正版账号也可以选择离线登录但必须要保证用户名匹配因为离线模式下服务端只认这个名字和对应的离线UUID。判断玩家是否成功进入可以从两个地方观察。一是游戏客户端进入服务器后能看到世界加载界面二是服务器控制台或systemd日志会输出类似Alice joined the game的日志。如果玩家被拒绝了通常原因要么是白名单没添加要么是服务端和客户端版本不一致。# 查看最近日志确认玩家进入 sudo journalctl -u mc-server -n 50如果你发现在日志里玩家反复断开可能是离线模式下玩家名被占用或者服务端TPS过低。离线模式因为少了一次身份验证进入速度会更快但这不表示服务器一定稳定。真正影响稳定性的是CPU、内存和网络质量。9. MC服务器常见问题与排查方法自己开服的过程中问题集中在连接、启动和运行三块。把这几个高频问题整理成了一张表适合遇到问题时直接对照排查。问题现象可能原因排查方式解决方案别人连接超时云安全组未放行25565检查云平台安全组入方向规则添加TCP 25565规则来源设为0.0.0.0/0本地能进外网进不了操作系统防火墙未放行检查ufw status执行 ufw allow 25565/tcp提示“版本不匹配”客户端版本和服务端版本不一致查看服务端日志中的Protocol版本统一客户端和服务端版本提示“白名单拒绝”white-listtrue但玩家未添加控制台 whitelist list执行 whitelist add 玩家名离线模式下玩家进服后被踢同名玩家UUID冲突查看日志中的UUID提示让玩家改名并维护好白名单服务端启动后秒退EULA未同意查看logs/latest.log将eulatrue写入eula.txt内存不足导致卡顿或崩溃JVM堆内存设置过小查看日志中的OutOfMemory调大 -Xmx 参数降低最大玩家数域名解析不生效DNS记录改动未生效dig/nslookup 查询结果等待生效或检查A记录是否写错服务器频繁自动重启服务端崩溃或OOMjournalctl -u mc-server -f查看崩溃原因调整配置遇到问题时不要盲目重启服务器。第一件事永远是看日志。服务端的日志文件在/opt/mc/logs/目录下systemd服务则可以使用journalctl -u mc-server -n 200查看最近200行日志。日志里的错误提示通常比网上“玄学修复”有价值得多。10. 离线MC服务器的安全边界与备份离线模式最大的问题是任何人都可以伪造用户名进入。如果不开白名单别人可以用你朋友的名字进服破坏建筑、偷东西甚至执行管理员命令。就算开了白名单离线模式下用户名仍然无法做到“唯一”的强验证只能作为一种熟人联机里的软约束。因此离线服务器的第一原则是不要把管理员权限随意给普通玩家。Minecraft中的OP权限非常高一旦泄漏服务器基本等于拱手让人。推荐在启动服务端时不要频繁使用op命令即使是管理员也要尽量晚点给权限、给完及时收回。另外不要开启RCON远程控制端口除非你有非常明确的远程管理需求并且通过安全通道访问。RCON端口暴露在公网等于告诉恶意玩家“可以来爆破游戏管理员密码”。备份是长期开服必须养成的习惯。MC的世界存档都在/opt/mc/world文件夹下定时压缩打包这个文件夹即可。可以写一个简单的Shell脚本然后配合cron每天执行。#!/bin/bash # 文件路径/opt/mc/backup.sh backup_dir/backup/mc world_dir/opt/mc/world timestamp$(date %Y%m%d%H%M%S) mkdir -p $backup_dir tar -czf $backup_dir/world-$timestamp.tar.gz -C $world_dir . find $backup_dir -name world-*.tar.gz -mtime 7 -delete给脚本执行权限并添加到crontab中。建议在每天玩家较少的时间点执行比如凌晨4点。sudo chmod x /opt/mc/backup.sh sudo crontab -e0 4 * * * /opt/mc/backup.sh备份脚本会保留7天的存档超过7天的自动删除避免磁盘被撑爆。这个习惯对任何数据型服务都适用MC服务器也不例外。11. 总结与后续学习方向从一条简单的“有人一起玩吗”邀请到一台能稳定运行的MC服务器中间隔着的就是环境部署、配置调整、网络放行、进程守护、白名单管理和备份策略。这篇文章的核心是把“离线可进”这个看似简单的玩法拆解成一台真实服务器需要面对的所有技术问题。如果你照着做接下来可以继续深入的方向很多。比如用Docker把服务端镜像化做到一条命令启动也可以从原版服务端换成Paper开始研究插件开发还可以搭建Velocity群组服把多个子服务器串起来。每一步都会把你往Linux运维、Java应用部署和DevOps的方向推得更远。最后给一个实际建议开服别急着开放公网先在局域网里把“启动、进服、备份、回滚”这几件事跑熟再考虑让朋友从外面连接。服务器一旦暴露在公网安全就不是可选项而是必答题。收藏这篇文章按照步骤操作你也能拥有一个属于自己的MC服务器。
返回列表