这次我们来看一个“一辈子”的MC服务器需求:标题是“我们要开一个一辈子的MC服务器!【我的世界MC 生存服务器 26.1.2 永久不删档】”。这类需求在朋友联机、小型社区服里非常常见——不是开一个两天就删的测试服,而是想长期保留同一个生存档,让玩家随时能回来继续玩。这篇文章不讨论怎么建建筑,而是从技术角度拆解:如何搭建一个可以长期运行的《我的世界》生存服务器,并做到崩溃自动重启、数据自动备份、远程管理、端口稳定、版本可控。
先提醒一点:标题里的“26.1.2”不是官方 Minecraft 版本号,更像是整合包版本或存档标记。实际开服时,要确认服务端核心支持的版本和你客户端的版本完全一致,否则会看到“客户端版本不匹配”的报错。本文会围绕通用开服流程展开,所有命令都给出可替换路径,你可以直接套用到自己的服务器上。
如果你正准备开一个“永久不删档”的 MC 生存服,建议先收藏这篇文章。全文会覆盖:核心能力速览、适用场景、环境准备、服务端部署、长期运行守护、功能测试、远程管理、资源占用、常见问题排查和最佳实践。文章的核心目标只有一个:让服务器能稳定跑下去,让存档活得更久。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 项目类型 | 我的世界生存服务器搭建与长期运维 |
| 版本标识 | 标题中的 26.1.2 需按实际服务端核心确认,本文使用通用部署示例 |
| 主要功能 | 长期生存存档、玩家管理、权限控制、自动备份、崩溃重启 |
| 推荐核心 | Paper / Purpur / Fabric / Forge,按插件或模组需求选择 |
| 推荐硬件 | 4 核 CPU 起步,内存建议 4G 以上,磁盘建议 SSD |
| 启动方式 | 命令行启动、systemd 守护、Windows 计划任务、面板启动 |
| 管理方式 | 游戏内命令、控制台、RCON 远程命令、面板 Web 管理 |
| 是否支持 API | 支持 RCON,部分面板可提供 HTTP API,需按实际面板文档确认 |
| 是否支持批量任务 | 可通过脚本批量备份、批量执行命令、定时重启 |
| 适合场景 | 朋友联机、小型社区服、长期生存服、整合包存档服 |
从表格可以看出,“永久不删档”并不是一个单一开关,而是由版本固定、自动重启、定期备份、权限控制四件事共同保证的。下面逐个展开。
2. 适用场景与使用边界
这种服务器适合哪些人?最典型的是三种:第一,几个朋友想长期在同一个地图里生存,不想频繁换档;第二,小型社区服需要一个稳定入口,让成员随时能进;第三,玩家自己攒了一个整合包,想搭一个服务器给朋友玩,同时保留自己的本地存档。
不适合什么场景?如果你的目标是几千人同时在线的大型服务器,那单机单服这套方案就不够用了,需要分布式部署、子服、代理端、数据库集群,复杂度会高很多。如果你只是想自己单机玩,也不需要专门开服务器,直接开个局域网世界就行。
还有一条使用边界必须强调:搭建 MC 服务器要遵守《我的世界》的用户协议和服务端 EULA。插件、模组、整合包要使用合法授权的资源,不要从来源不明的渠道下载带后门的“服务端整合包”。如果使用正版账号验证,可以开启online-mode=true;如果只是局域网内测试,可以暂时关闭,但公网长期运营建议保持正版验证,这样既能保护玩家账号,也符合游戏条款。
另外,如果服务器里会保存玩家聊天记录、IP 信息、皮肤数据,要注意隐私合规,不要随意公开玩家数据。涉及未成年人玩家时,更要做好聊天内容审核和管理员值守。
3. 环境准备与前置条件
开服之前,先检查你的机器环境。Windows、Linux 都可以跑,但长期稳定性上更推荐 Linux 云服务器或家里的 Linux 小主机。Windows 也能用,只是重启后需要自动启动配置,后面会单独说。
首先是 Java。Minecraft 服务端在不同时期对 Java 版本要求不一样,旧版本通常需要 Java 8,1.17 左右需要 Java 16 或 17,更近的版本可能要求 Java 21。不要凭记忆猜,直接看服务端核心的文档或启动时报错。先执行java -version看看当前版本:
java -version如果没有装 Java,Ubuntu/Debian 可以使用 OpenJDK:
sudo apt update sudo apt install openjdk-17-jre-headless注意:安装的版本号请以你选择的 MC 服务端核心要求为准。装错版本启动时会直接报UnsupportedClassVersionError。
磁盘空间也要留足。一个长期生存服的世界会持续增长,探索范围越大,区块文件越多。建议系统盘外再单独挂载一块数据盘,专门存服务器目录和备份。在 Linux 上用df -h检查磁盘占用:
df -h网络方面,如果是在云服务器上开服,需要确认安全组已经放行 TCP 端口。MC Java 版默认端口是25565。如果在家用宽带开服,还需要在路由器上做端口映射,并确认运营商没有封禁该端口。端口映射这块各家路由器界面不同,但原理一致:将外网端口的 TCP 流量转发到内网服务器 IP 的25565端口。
4. 部署启动与长期运行
4.1 获取服务端核心
开服第一步是选择服务端核心。常见选择有:
- Vanilla 原版服务端:官方下载,稳定但功能少。
- Paper:插件生态好,性能优化强,适合生存服。
- Purpur:基于 Paper,提供更多配置项。
- Fabric / Forge:需要模组时使用,比如整合包服务器。
选择标准很简单:你打算装插件就选 Paper 系,打算装模组就选 Fabric 或 Forge,只想玩原版就选 Vanilla。不要下载来路不明的“整合包服务端”,尤其是要求你关闭杀毒软件并右键管理员运行的那种,风险很高。
下载完成后,把服务端 jar 文件放到一个独立目录。目录路径最好没有中文和空格,避免命令解析问题。以 Linux 为例:
mkdir -p /opt/mc-server cd /opt/mc-server # 假设你下载的文件名为 paper.jar,放在当前目录 ls -lh4.2 首次启动与配置文件
首次启动前,先创建运行用户。不建议直接用 root 跑 MC 服务器,万一服务端被攻击或插件有漏洞,权限隔离能降低风险:
sudo useradd -r -m -d /home/mc mc sudo chown -R mc:mc /opt/mc-server然后用mc用户启动:
cd /opt/mc-server sudo -u mc java -Xms2G -Xmx4G -jar paper.jar nogui第一次启动会在目录里生成eula.txt和server.properties。程序会提示你阅读并同意 EULA。打开eula.txt:
nano /opt/mc-server/eula.txt把eula=false改为eula=true。这一步是法律合规要求,不是可以跳过的“破解步骤”。
接下来编辑server.properties,这是整个服务器的核心配置文件。常用参数如下:
| 配置项 | 作用 |
|---|---|
server-port=25565 | 服务器监听端口 |
level-name=world | 主世界存档名,不要随便改 |
max-players=20 | 最大在线人数 |
view-distance=6 | 客户端能加载的区块范围,值越小越省资源 |
online-mode=true | 正版验证开关,公网长期服建议开启 |
white-list=false | 是否开启白名单 |
motd=A Lifelong MC Server | 服务器列表显示信息 |
spawn-protection=0 | 出生点保护范围,生存服建议设为 0,避免无法破坏出生点 |
hardcore=false | 是否硬核模式 |
改完后保存,再次启动服务端。这次会开始生成世界。观察日志,直到出现Done字样:
sudo -u mc java -Xms2G -Xmx4G -jar paper.jar nogui看到Done后,服务器已经跑起来了。按Ctrl+C停止,接下来配置长期运行方式。
4.3 在 Linux 上使用 systemd 守护进程
如果直接在前台运行,关掉终端服务器就停了。所以要用 systemd 把服务变成后台守护进程,并设置崩溃自动重启。
创建服务文件:
sudo nano /etc/systemd/system/minecraft.service内容如下:
[Unit] Description=Minecraft Server After=network.target [Service] WorkingDirectory=/opt/mc-server ExecStart=/usr/bin/java -Xms2G -Xmx4G -jar paper.jar nogui Restart=on-failure RestartSec=10 User=mc Group=mc [Install] WantedBy=multi-user.target注意ExecStart里的 Java 路径要换成你机器上实际的路径,可以用which java查询:
which java如果启动命令里需要额外的 JVM 参数,比如 GC 调优参数,也可以直接加在ExecStart里。保存后执行:
sudo systemctl daemon-reload sudo systemctl enable minecraft sudo systemctl start minecraft查看运行状态和日志:
sudo systemctl status minecraft sudo journalctl -u minecraft -fRestart=on-failure会保证即使服务器崩溃退出,systemd 也会在 10 秒后重新拉起来。这就是“永久在线”的第一个关键保障。
4.4 Windows 开机自启
如果你用的是 Windows 机器,也可以做到开机自动启动。写一个start.bat:
@echo off cd /d C:\mc-server java -Xms2G -Xmx4G -jar paper.jar nogui然后用任务计划程序,配合schtasks命令注册开机启动:
schtasks /Create /SC ONSTART /TN "MinecraftServer" /TR "C:\mc-server\start.bat" /RU SYSTEM /RL HIGHEST这个命令会把开机启动任务注册到系统账户。要注意给start.bat所在目录设置正确的读写权限,否则存档无法正常保存。
4.5 端口映射与防火墙
Linux 上先确认防火墙放行了25565端口。如果启用了ufw:
sudo ufw allow 25565/tcp sudo ufw status云服务器还要到控制台安全组里放行同样的端口。家用宽带则在路由器管理页面设置端口映射,将外网端口25565转发到内网服务器 IP 的25565。设置完成后,用在线端口检测工具扫一下外网 IP 的25565是否开放。
5. 功能测试与效果验证
服务器搭完,不能只看Done就认为成功。下面给出一套完整的验证流程,建议每次改完配置后都跑一遍。
5.1 客户端连接测试
先在服务器本机测试连接。打开 MC 客户端,选择“多人游戏”,添加服务器,地址填127.0.0.1:25565。如果本地能进,再用局域网 IP 测试;如果是云服务器,用公网 IP 测试。
判断成功标准:
- 客户端能看到服务器 MOTD。
- 点击进入后能正常加载世界。
- 服务端日志显示玩家加入消息,比如
xxx joined the game。
如果本地能进,公网进不了,先别查游戏配置,检查安全组、路由器端口映射和防火墙。大部分连接超时问题都出在这三层。
5.2 管理命令测试
进入游戏后,在控制台或游戏内测试以下基础命令:
| 命令 | 作用 |
|---|---|
list | 列出当前在线玩家 |
op <玩家名> | 给予管理员权限 |
gamemode creative <玩家名> | 切换创造模式 |
save-all | 手动保存存档 |
whitelist add <玩家名> | 添加白名单 |
测试目标是把这些命令全部执行一遍,确认控制台没有红色报错。尤其是save-all,如果存档路径没有写入权限,会看到Failed to save,这时候必须修复权限,否则重启后回档。
5.3 备份恢复测试
不删档最重要的保障是备份。写一个最简单的备份脚本:
#!/bin/bash BACKUP_DIR=/backup/mc WORLD_DIR=/opt/mc-server/world TIMESTAMP=$(date +%Y%m%d%H%M%S) mkdir -p "$BACKUP_DIR" tar -czf "$BACKUP_DIR/mc-$TIMESTAMP.tar.gz" "$WORLD_DIR" find "$BACKUP_DIR" -type f -mtime +30 -delete给脚本加执行权限,然后运行:
chmod +x /opt/mc-server/backup.sh /opt/mc-server/backup.sh验证方式是:先记录当前游戏内坐标和物品,然后执行save-all,再把world目录改名为world_bak,把备份文件解压成新的world目录,重启服务器,进入游戏确认坐标和物品与备份时一致。这一步能提前暴露备份不完整、路径错误、权限不足等问题。
5.4 崩溃自动恢复测试
故意模拟一次崩溃,验证 systemd 会不会自动拉起。在服务器运行时执行:
sudo systemctl kill -s SIGKILL minecraft然后等待 15 秒,执行:
sudo systemctl status minecraft如果状态是active (running),说明自动重启生效。再查看日志确认启动过程无异常:
sudo journalctl -u minecraft -u | tail -50如果你用的是 Windows 计划任务,模拟崩溃后需要手动确认任务是否重新拉起进程,或者用第三方工具设置为守护进程。Windows 下没有 systemd 这么方便,建议对稳定性要求高时直接使用 Linux。
6. 接口 API、RCON 与远程管理
“永久不删档”不是每天坐在服务器前盯着控制台,而是需要远程管理能力。Minecraft 服务端自带 RCON 远程控制协议,开启后可以通过命令行远程执行管理员命令,很适合写脚本做自动化运维。
在server.properties中开启并设置:
enable-rcon=true rcon.port=25575 rcon.password=your_strong_password密码一定要够复杂,因为 RCON 控制的是服务器后台,一旦泄露等于服务器被别人接管。改完配置后重启服务器。
使用 RCON 客户端连接,常用工具是mcrcon。安装后执行:
mcrcon -H 127.0.0.1 -P 25575 -p your_strong_password "list"返回在线玩家列表说明 RCON 已通。这个命令可以写进自动备份脚本,实现备份前执行save-all,保证存档落盘。
实际调用接口的示例脚本:
#!/bin/bash mcrcon -H 127.0.0.1 -P 25575 -p your_strong_password "save-off" mcrcon -H 127.0.0.1 -P 25575 -p your_strong_password "save-all" sleep 5 tar -czf /backup/mc/mc-$(date +%Y%m%d%H%M%S).tar.gz /opt/mc-server/world mcrcon -H 127.0.0.1 -P 25575 -p your_strong_password "save-on"如果你用的是面板服务,比如 MCSManager、Pterodactyl 之类,它们通常自带 HTTP API,可以查询服务器状态、发送命令。具体地址和鉴权方式以面板文档为准,这里不展开,因为不同面板差异很大。
7. 资源占用与性能优化
长期运行的 MC 服务器最怕资源不足导致崩溃或卡顿。先看两条硬规则:第一,JVM 堆内存不要超过物理内存减掉系统和其他服务所需内存;第二,不要盲目把-Xmx调大,过大的堆反而会增加 GC 停顿。
内存分配建议从保守值开始。10 人以内的小型生存服,常见配置是-Xms2G -Xmx4G,具体还要看插件、模组、世界预生成程度和玩家长时间在线率。你可以先用这个配置跑,然后在高峰期观察内存占用:
free -h top -p $(pgrep -f paper.jar)如果内存长期在 90% 以上,说明需要升配置或降view-distance。如果把view-distance从 8 降到 6,对内存和 CPU 的占用会有明显改善。
Paper 核心还提供额外优化选项。paper-global.yml和paper-world-defaults.yml里有大量舆情开关,但不要一次全改,建议保持默认,只针对卡顿现象做单项调整。常见的优化方向:
- 降低实体数量上限,限制刷怪塔的堆积实体。
- 使用世界预生成插件或命令,提前生成区块,减少玩家探索时的卡顿。
- 定好自动重启时间,比如每天凌晨 5 点重启一次,释放内存碎片。
- 日志和备份放到不同磁盘,避免磁盘 IO 抢资源。
显存对 MC Java 版服务端没有影响,显卡基本不参与服务端计算。只有开光影的客户端才吃显卡,服务器只看 CPU、内存、磁盘 IO 和网络带宽。
8. 常见问题与排查方法
下面是长期运营中最高频的问题,可以直接对照排查:
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 启动后立刻退出 | EULA 未同意 | 查看eula.txt | 改为eula=true |
报UnsupportedClassVersionError | Java 版本不匹配 | 执行java -version | 按服务端核心要求安装对应 Java 版本 |
控制台有Failed to bind to port | 端口被占用 | 检查server-port和进程列表 | 关闭占用进程或换端口 |
| 客户端连接超时 | 防火墙/安全组/路由器未放行 | 用在线端口工具检测 | 放行 TCP 25565 或做端口映射 |
| 客户端提示版本不匹配 | 客户端与服务端版本不一致 | 检查启动器版本号 | 统一版本后重连 |
| 存档无法保存 | 目录权限不足 | 检查日志报错信息 | chown -R mc:mc /opt/mc-server |
| 玩家列表出现未授权账号 | online-mode=false | 检查server.properties | 公网长期服改为true |
| 服务器随机崩溃 | 内存不足或插件冲突 | 查看journalctl日志 | 减少插件、调低 view-distance、加大磁盘 swap |
| 备份文件很大且增长快 | 存档区块过多 | 检查磁盘占用 | 定期清理无人探索区域,或加载预生成范围限制 |
| RCON 连接被拒绝 | RCON 未开启或密码不对 | 检查server.properties | 确认enable-rcon=true并重启服务端 |
排查原则很简单:先看日志,再改配置,一次只改一个变量。不要同时改一堆参数,不然出了问题都不知道是哪一步导致的。
9. 最佳实践与使用建议
“永久不删档”更多是运维习惯问题,而不是技术一次性配置。以下几个建议可以直接用起来。
第一,备份和主目录分开。永远不要把备份放到服务器同一块磁盘上,否则磁盘坏了备份也跟着没。有条件就把备份同步到另一台机器或对象存储。
第二,建立固定的重启周期。即使没有崩溃,也建议每天或每两天自动重启一次。长期不重启的 MC 服务端可能会出现区块加载异常、内存碎片增多、实体卡死等问题。用 systemd timer 或 cron 可以做到:
0 5 * * * systemctl restart minecraft第三,管理员账号要收口。不要给每个朋友都发 OP,建议使用白名单 + 基础权限插件。给核心管理一个强密码,RCON 密码也要定期换。
第四,对外发布 IP 后要关注日志。如果发现大量陌生 IP 尝试连接,先确认online-mode是否为 true,再考虑是否需要加一层 TCP 防火墙限制来源 IP。
第五,更新服务端核心之前,先备份存档,并在测试环境验证插件兼容性。不要在生产服直接升级,尤其跨度大版本时,存档可能无法直接兼容。
第六,涉及玩家数据时尊重隐私。不要在公开帖子里贴玩家 IP 或真实信息,聊天日志要妥善保管,不要用作“公开处刑”。
这些习惯坚持下来,比任何一键脚本都更能保证服务器“一辈子”的可持续性。
10. 总结与下一步
这个项目最值得尝试的点,是把“开一个永久生存服”从口号变成一套可执行的流程:固定版本、守护进程、自动备份、远程管理、权限收口。最先应该验证的是systemctl start minecraft后客户端能不能连进来,以及save-all手动保存后存档是否完整。最容易踩的坑是 Java 版本不匹配和公网端口没放行,这两个问题占了新手开服报错的八成。
后续可以继续扩展的方向很多:接入动态地图让玩家在网页上看世界,部署远程管理面板方便非技术管理员操作,把备份脚本挂到对象存储实现异地容灾,或者增加机器人监听服务器状态并推送到聊天群。当前建议先把最小可用配置跑通,再逐步加插件和自动化脚本。把这套配置保存到服务器目录里,后续每次调整都有据可查,你的服务器就不会再是“玩两天就没”的临时服了。