ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

从零搭建永不删档的Minecraft私服:Java与基岩版互通全攻略

2026/9/4 19:42:19 拓冰建站 浏览量
从零搭建永不删档的Minecraft私服:Java与基岩版互通全攻略 在搭建和管理 Minecraft 服务器的过程中你是否遇到过这样的困扰精心搭建的世界因为服务器提供商的问题、数据迁移的麻烦或是单纯想和朋友在局域网里畅玩而无法实现一个真正稳定、私密且能长久保存进度的“养老服”是许多玩家的梦想。本文将手把手带你从零开始搭建一个“永不删档”、支持离线登录、并实现基岩版与Java版互通的Minecraft服务器。无论你是想和三五好友建立一个私密的休闲世界还是希望拥有一个完全由自己掌控的存档这套方案都能满足你。我们将覆盖从环境准备、核心服务端配置、互通桥接到数据备份、日常维护的全流程并提供完整的配置文件和命令确保每一步都可操作、可复现。1. 核心概念与架构解析在开始动手之前理解我们所要构建系统的各个组成部分及其关系至关重要。这能帮助你在后续配置和排错时心中有数。1.1 什么是“永不删档”与“离线可进”“永不删档”这并非指数据绝对物理不灭而是一种工程上的承诺。其核心在于数据自主掌控和完善的备份机制。与传统租赁服务器可能受服务商条款限制不同我们将服务器搭建在自己的物理机、云主机或本地NAS上世界存档、玩家数据、插件配置等核心资产完全由自己管理。通过自动化备份脚本如定时打包存档并同步到网盘或另一台机器即使本地硬件故障也能从备份中快速恢复从而实现事实上的“永不删档”。“离线可进” (离线模式)这是Minecraft服务端的一种认证模式。官方正版服务器运行在“online-modetrue”状态下会强制验证每个连接玩家的正版账户。而“offline-mode”或通过修改为“online-modefalse”则跳过了这项验证允许任何玩家使用任意游戏ID直接进入服务器。这对于局域网联机、内部测试或希望快速让朋友加入的场景非常方便。但请注意离线模式存在安全隐患恶意用户可能冒充他人ID因此通常仅在可信的私人环境中使用。1.2 基岩版与Java版互通原理Minecraft 基岩版Bedrock Edition运行在手机、Win10/11、主机和 Java 版PC传统版使用完全不同的网络协议和代码基因此它们无法直接连接。实现互通需要一个“翻译官”这就是互通代理服务端。目前最成熟、稳定的方案是使用GeyserMC项目。它的工作原理如下Java版服务端作为主服务器运行存储世界、处理游戏逻辑、管理插件如 PaperMC。Geyser作为一个独立的Java程序或插件形式运行。它扮演两个角色对基岩版客户端它伪装成一个基岩版官方服务器接受基岩版客户端的连接。对Java版服务端它伪装成一个Java版客户端连接到上一步搭建的Java版服务端。协议转换Geyser 在中间实时翻译基岩版协议与Java版协议将基岩版玩家的移动、操作、聊天等信息“翻译”给Java服同时将Java服的世界、实体、事件等信息“翻译”回基岩版客户端。同时为了让基岩版玩家也能使用Java服的账号系统尤其在离线模式下还需要Floodgate同样是GeyserMC项目的一部分。Floodgate 可以为基岩版玩家自动生成一个唯一的、带前缀的Java版角色名如*Geyser_PlayerName并管理他们的身份验证从而无缝接入离线模式的Java服。我们的核心架构基岩版客户端 - [Geyser Floodgate] - Java版服务端 (Paper) - Java版客户端。2. 环境准备与版本说明一个清晰的环境是成功的第一步。以下是搭建所需的核心组件及版本选择建议。2.1 硬件与操作系统要求操作系统Linux如 Ubuntu 20.04/22.04 LTS, CentOS 7/8、Windows Server 或 Windows 10/11、macOS。本文以Linux (Ubuntu 22.04)为例进行命令行演示Windows下的操作逻辑类似。CPU与内存这是性能的关键。对于一个小型10人以内的纯净或轻量插件服内存至少为Java服务端分配 2GB RAM。如果安装较多插件或模组建议 4GB 或更多。系统本身也需要内存因此服务器总内存建议不低于 4GB。CPU单核性能更重要。现代的双核或四核处理器通常足够。网络需要公网IP或通过内网穿透工具如 frp、樱花映射将服务暴露给互联网。对于局域网联机只需确保设备在同一网络下即可。磁盘空间初始安装约需 500MB。世界存档会随时间增长建议预留 10GB 以上空间。2.2 核心软件依赖Java 运行环境 (JRE)Java版服务端、Geyser、插件都依赖Java。版本强烈推荐使用Java 17或Java 21长期支持版本。大多数现代服务端Paper 1.20已要求 Java 17。检查与安装# 检查是否已安装Java java -version # 在Ubuntu上安装OpenJDK 17 sudo apt update sudo apt install openjdk-17-jre-headless -y # 或者安装OpenJDK 21 # sudo apt install openjdk-21-jre-headless -yScreen 或 Tmux (Linux推荐)用于在后台持久运行服务器进程即使断开SSH连接服务器也不会停止。sudo apt install screen -y # 或安装 tmux # sudo apt install tmux -y2.3 服务端组件版本选择Java版服务端核心我们选择PaperMC。它是 Spigot/Bukkit 的高性能分支优化了游戏逻辑兼容绝大多数插件且更新迅速。访问 PaperMC 官网 获取最新构建版本。例如对于 Minecraft 1.20.4我们下载paper-1.20.4-550.jar。互通组件Geyser从 GeyserMC 官网 下载独立版 Jar 文件。选择最新稳定版。Floodgate从同一页面下载 Floodgate 的 Jar 文件。如果你计划将 Floodgate 以插件形式运行在 Paper 上推荐管理更方便则下载floodgate-spigot.jar。3. 搭建Java版服务端 (Paper)这是整个服务器的游戏逻辑核心。我们将在一个独立的目录中设置它。3.1 创建目录与下载服务端# 1. 创建一个总目录来管理所有服务 mkdir -p ~/minecraft-server cd ~/minecraft-server # 2. 创建Java版服务端子目录并进入 mkdir java-server cd java-server # 3. 下载Paper服务端 Jar 文件 (请替换为实际下载链接和版本) # 你可以从 papermc.io 复制最新版本的直链 wget https://api.papermc.io/v2/projects/paper/versions/1.20.4/builds/550/downloads/paper-1.20.4-550.jar -O paper.jar # 4. 首次运行生成默认配置文件和世界 # 这里分配了2GB内存给服务端你可以根据机器情况调整 -Xmx 参数 java -Xms1G -Xmx2G -jar paper.jar --nogui首次运行会失败并退出这是正常的。它会生成eula.txt、server.properties等必要文件。3.2 同意EULA并配置基础设置Minecraft 服务端要求你同意最终用户许可协议 (EULA)。编辑eula.txt文件将eulafalse改为eulatrue。nano eula.txt # 找到 eulafalse改为 eulatrue保存退出 (CtrlX, 然后 Y, 回车)配置server.properties这是服务器的主配置文件。nano server.properties找到并修改以下关键行# 服务器IP默认留空即可监听所有网络接口 server-ip # 服务器端口Java版默认25565确保防火墙开放此端口 server-port25565 # 最大玩家数 max-players20 # 游戏模式survival生存creative创造adventure冒险spectator旁观 gamemodesurvival # 是否强制玩家为正版。我们设为 false 以启用离线模式。 online-modefalse # 是否生成怪物 spawn-monsterstrue # 是否生成动物 spawn-animalstrue # 是否生成NPC村庄 generate-structurestrue # 视图距离单位是区块。数值越大越耗性能建议设为6-10。 view-distance10 # 是否开启白名单建议先关闭等所有朋友加好后再开启 white-listfalse # 服务器 MOTD显示在玩家服务器列表中的描述 motdA Never-Delete Private Server保存并退出。3.3 使用Screen后台运行并测试# 回到 java-server 目录 cd ~/minecraft-server/java-server # 创建一个名为 mc-java 的 screen 会话并在其中启动服务器 screen -S mc-java # 现在你进入了一个新的虚拟终端 # 再次启动服务器这次它会正常加载世界 java -Xms1G -Xmx2G -jar paper.jar --nogui # 当看到类似“Done (XX.XXXs)! For help, type help”的日志时说明服务器已启动成功。 # 你可以输入一些命令测试例如 list # 应该会显示“There are 0/20 players online” # 暂时分离 screen 会话让服务器在后台运行 # 按下 CtrlA然后松开再按 D 键。 # 你会看到 [detached from ...] 的提示回到主终端。现在你的Java版服务器已经在后台运行了。你可以用screen -r mc-java重新连接回这个会话查看日志或输入命令。4. 配置基岩版与Java版互通 (Geyser Floodgate)我们将以独立运行 Geyser 并搭配 Paper 插件版 Floodgate 为例这是最灵活的配置方式。4.1 配置 Floodgate (插件形式)安装 Floodgate 插件# 回到 java-server 目录的 plugins 文件夹 cd ~/minecraft-server/java-server/plugins # 将下载好的 floodgate-spigot.jar 放入此目录 # 假设你已经下载好了使用 wget 或 scp 上传 wget https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot -O floodgate-spigot.jar重启 Paper 服务端以加载插件# 重新连接到 screen 会话 screen -r mc-java # 在服务器控制台输入重启命令 restart # 或者先 stop再重新用 java -jar 命令启动重启后在plugins文件夹下会生成一个floodgate配置目录。Floodgate 会自动运行无需额外配置。它会为每个连接的基岩版玩家生成一个唯一的、以.开头的用户名例如.Geyser_Steve。4.2 配置并运行 Geyser (独立版)创建 Geyser 运行目录并下载cd ~/minecraft-server mkdir geyser-standalone cd geyser-standalone wget https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/standalone -O geyser.jar首次运行生成配置java -jar geyser.jar运行后会生成config.yml等文件然后程序会停止。编辑 Geyser 主配置文件nano config.yml找到并修改以下关键部分# 监听地址和端口Geyser 将在此接收基岩版客户端的连接 bedrock: address: 0.0.0.0 # 监听所有地址 port: 19132 # 基岩版默认端口确保防火墙开放此端口 # 要连接的远程 Java 版服务器信息即我们刚搭建的 Paper 服 remote: address: 127.0.0.1 # 如果 Geyser 和 Paper 在同一台机器就用 localhost port: 25565 # Paper 服务器的端口 auth-type: floodgate # 这是关键使用 floodgate 认证模式 # Floodgate 相关配置 floodgate-key-file: ../java-server/plugins/floodgate/key.pem # 指向 Floodgate 生成的密钥文件路径 # 通常这个路径是正确的如果不对请根据实际生成的 key.pem 位置修改。 # 其他可以调整的选项 metrics: enabled: false # 可选关闭数据统计保存并退出。在 Screen 中后台运行 Geyser# 新建一个 screen 会话运行 Geyser screen -S mc-geyser cd ~/minecraft-server/geyser-standalone java -jar geyser.jar # 看到日志正常没有报错后同样按 CtrlA, D 分离会话。5. 连接测试与基础管理5.1 客户端连接方式Java版玩家服务器地址你的服务器IP:25565例如123.123.123.123:25565或局域网192.168.1.100:25565。由于设置了online-modefalse任何Java版客户端正版或非正版都可以直接连接。基岩版玩家服务器地址你的服务器IP:19132端口是 Geyser 监听的19132。在基岩版“好友”或“服务器”页面不同平台位置略有不同添加服务器输入上述地址即可。连接后玩家在Java服中的名字会是Floodgate生成的格式如.Geyser_PlayerName。5.2 常用服务器管理命令在 Paper 服务器的 Screen 会话 (screen -r mc-java) 中可以输入以下命令list查看在线玩家。op 玩家名给予玩家管理员权限。whitelist add 玩家名将玩家加入白名单需先设置white-listtrue。save-all手动立即保存世界。stop或restart停止或重启服务器如果安装了重启插件。5.3 安装基础管理插件可选但推荐通过安装插件可以极大方便管理。将插件 Jar 文件放入~/minecraft-server/java-server/plugins/目录然后重启服务器。EssentialsX提供一套完整的实用命令如/home设置家/tpa传送/spawn回出生点等。LuckPerms目前最强大的权限管理插件可以精细控制每个玩家或组的权限。WorldEdit/WorldGuard如果你是创造模式建筑服这两个插件是神器。CoreProtect记录方块和容器的破坏/放置记录用于追查破坏行为。安装插件后务必查阅其文档进行配置。6. 实现“永不删档”自动化备份与维护这是保证服务器长治久安的核心。6.1 手动备份与恢复备份的本质就是复制整个服务器目录尤其是world,world_nether,world_the_end默认世界文件夹以及plugins目录。# 进入服务器根目录 cd ~/minecraft-server/java-server # 创建一个备份压缩包包含世界和插件配置 tar -czvf ../backup/server-backup-$(date %Y%m%d-%H%M).tar.gz world world_nether world_the_end plugins/ # 备份文件会保存在 ~/minecraft-server/backup/ 目录下并以时间戳命名。 # 恢复备份危险操作务必先停止服务器 # 1. 停止服务器 # 2. 删除或移走当前的世界文件夹 # 3. 解压备份包到当前目录 # tar -xzvf ../backup/server-backup-20231001-1200.tar.gz -C ./6.2 自动化备份脚本 (Linux)创建一个 Shell 脚本并利用 Crontab 定时执行。创建备份脚本~/minecraft-server/backup.sh#!/bin/bash # 定义变量 SERVER_DIR/home/你的用户名/minecraft-server/java-server BACKUP_DIR/home/你的用户名/minecraft-server/backups MAX_BACKUPS10 # 保留最近10份备份 # 创建备份目录如果不存在 mkdir -p $BACKUP_DIR # 进入服务器目录 cd $SERVER_DIR # 向服务器控制台发送保存命令如果服务器在运行 # 注意这需要配置 rcon 或使用 screen 发送命令这里用简单方式直接备份。 # 更安全的方式是先执行 screen -S mc-java -X stuff save-all\n 再等待几秒。 # 创建备份文件 TIMESTAMP$(date %Y%m%d-%H%M%S) BACKUP_FILE$BACKUP_DIR/server-$TIMESTAMP.tar.gz tar --exclude./cache --exclude./logs -czf $BACKUP_FILE ./world ./world_nether ./world_the_end ./plugins ./server.properties echo Backup created: $BACKUP_FILE # 清理旧备份只保留最新的 MAX_BACKUPS 份 cd $BACKUP_DIR ls -t server-*.tar.gz | tail -n $(($MAX_BACKUPS 1)) | xargs -r rm --给脚本添加执行权限chmod x ~/minecraft-server/backup.sh设置定时任务crontab -e在末尾添加一行例如每天凌晨3点执行备份0 3 * * * /home/你的用户名/minecraft-server/backup.sh /home/你的用户名/minecraft-server/backup.log 21保存退出。现在你的服务器就会每天自动备份了。6.3 将备份同步到远程可选为了应对本地硬盘损坏可以将备份同步到网盘如通过 rclone 同步到阿里云盘、OneDrive等或另一台服务器通过 rsync。7. 常见问题与排查思路在搭建和运行过程中你可能会遇到以下问题。问题现象可能原因排查与解决思路Java版客户端无法连接1. 服务器未启动。2. 防火墙未开放25565端口。3.server.properties中server-ip配置错误。4. 客户端地址或端口输错。1. 检查 Paper 服务端 Screen 会话是否运行 (screen -ls)。2. 检查防火墙/安全组规则sudo ufw allow 25565/tcp(Ubuntu)。3. 确保server-ip为空或正确内网IP。4. 仔细核对连接地址和端口。基岩版客户端无法连接1. Geyser 未运行。2. 防火墙未开放19132端口UDP协议。3.config.yml中remote地址端口配置错误。4.auth-type不是floodgate。1. 检查 Geyser Screen 会话 (screen -r mc-geyser)。2. 开放 UDP 19132 端口sudo ufw allow 19132/udp。3. 确认remote指向正确的 Paper 服务器地址和端口。4. 确认auth-type: floodgate且floodgate-key-file路径正确。基岩版玩家进服后名字带前缀或物品异常1. Floodgate 未正确安装或加载。2. Geyser 配置中auth-type错误。3. 某些插件与 Floodgate 不兼容。1. 检查 Paper 的plugins目录下是否有floodgate-spigot.jar并查看启动日志确认加载成功。2. 确认 Geyser 的config.yml中auth-type设置为floodgate。3. 暂时移除其他插件测试或查阅插件兼容性列表。服务器卡顿、TPS低1. 内存分配不足。2. 视图距离 (view-distance) 过高。3. 红石机器、实体过多。4. 硬盘 IO 慢尤其是机械硬盘。1. 增加启动命令中的-Xmx值如-Xmx4G。2. 在server.properties中降低view-distance如设为 8。3. 使用/tps命令查看TPS使用/entity或插件如 Spark分析性能瓶颈。4. 考虑使用 SSD 硬盘。玩家数据丢失1. 服务器异常关闭数据未保存。2. 备份恢复错误。1.养成使用stop命令关服的习惯避免强制关闭进程。2. 恢复备份前务必备份当前状态。检查备份文件是否完整。启用定时备份。Screen 会话找不到或意外关闭1. 会话被终止。2. 系统重启。1. 使用screen -ls列出所有会话screen -r 会话名重新连接。2. 可以考虑使用systemd服务来管理服务器进程实现开机自启和更稳定的守护。8. 进阶优化与最佳实践当服务器稳定运行后可以考虑以下优化来提升体验和安全性。8.1 使用 Systemd 管理服务Linux比 Screen 更专业能实现开机自启、自动重启、日志管理。创建服务文件sudo nano /etc/systemd/system/mc-java.service[Unit] DescriptionMinecraft Java Server (Paper) Afternetwork.target [Service] Typesimple User你的用户名 WorkingDirectory/home/你的用户名/minecraft-server/java-server ExecStart/usr/bin/java -Xms2G -Xmx4G -jar paper.jar --nogui Restarton-failure RestartSec10 [Install] WantedBymulti-user.target重载 systemd 并启用服务sudo systemctl daemon-reload sudo systemctl enable mc-java.service sudo systemctl start mc-java.service # 查看状态 sudo systemctl status mc-java.service同样可以为 Geyser 创建mc-geyser.service。8.2 安全强化建议启用白名单在server.properties中设置white-listtrue然后在游戏内或控制台使用whitelist add 玩家名添加可信玩家。这是最有效的防打扰方式。使用防火墙只开放必要的端口25565, 19132屏蔽其他所有端口。定期更新关注 Paper、Geyser、Floodgate 及插件的更新及时修复漏洞。权限管理使用 LuckPerms 等插件遵循最小权限原则不要轻易给予玩家op权限。8.3 性能监控与调优监控TPS在游戏内输入/tps或使用插件如Spark查看服务器性能指标。TPS应稳定在20左右。优化世界定期使用 Paper 自带的./paper optimize命令或插件Chunky预生成世界区块避免玩家探索时实时生成造成的卡顿。实体控制使用插件如ClearLag定期清理掉落物、经验球等多余实体。8.4 内网穿透无公网IP方案如果你没有公网IP可以使用内网穿透工具将本地服务器暴露到公网。工具选择Sakura Frp、花生壳、Ngrok 等都有免费套餐。配置要点在穿透工具中创建两条隧道分别映射本地的25565(TCP) 和19132(UDP) 端口到公网服务器的两个不同端口。然后让玩家连接穿透工具提供的公网地址和端口。至此一个由你完全掌控、支持双版本互通、具备自动化备份能力的“永不删档” Minecraft 休闲养老服务器就搭建完成了。从环境搭建、核心服务配置、互通桥接到数据维护这套流程覆盖了私有服务器运营的主要环节。最重要的是你掌握了整个服务器的根控制权数据和配置都牢牢握在自己手中。接下来你可以邀请好友开始规划你们的专属世界安装喜欢的插件和模组打造独一无二的游戏体验。如果在实践中遇到新的问题善用日志文件和社区资源如各项目的 GitHub Issues、Wiki大部分技术问题都能找到解决方案。