从零搭建永不删档的Minecraft私服:Java与基岩版互通全攻略
2026/9/23 0:16:35 网站建设 项目流程

在搭建和管理 Minecraft 服务器的过程中,你是否遇到过这样的困扰:精心搭建的世界因为服务器提供商的问题、数据迁移的麻烦或是单纯想和朋友在局域网里畅玩而无法实现?一个真正稳定、私密且能长久保存进度的“养老服”是许多玩家的梦想。本文将手把手带你从零开始,搭建一个“永不删档”支持离线登录、并实现基岩版与Java版互通的Minecraft服务器。无论你是想和三五好友建立一个私密的休闲世界,还是希望拥有一个完全由自己掌控的存档,这套方案都能满足你。我们将覆盖从环境准备、核心服务端配置、互通桥接,到数据备份、日常维护的全流程,并提供完整的配置文件和命令,确保每一步都可操作、可复现。

1. 核心概念与架构解析

在开始动手之前,理解我们所要构建系统的各个组成部分及其关系至关重要。这能帮助你在后续配置和排错时心中有数。

1.1 什么是“永不删档”与“离线可进”

  • “永不删档”:这并非指数据绝对物理不灭,而是一种工程上的承诺。其核心在于数据自主掌控完善的备份机制。与传统租赁服务器可能受服务商条款限制不同,我们将服务器搭建在自己的物理机、云主机或本地NAS上,世界存档、玩家数据、插件配置等核心资产完全由自己管理。通过自动化备份脚本(如定时打包存档并同步到网盘或另一台机器),即使本地硬件故障,也能从备份中快速恢复,从而实现事实上的“永不删档”。
  • “离线可进” (离线模式):这是Minecraft服务端的一种认证模式。官方正版服务器运行在“online-mode=true”状态下,会强制验证每个连接玩家的正版账户。而“offline-mode”或通过修改为“online-mode=false”,则跳过了这项验证,允许任何玩家使用任意游戏ID直接进入服务器。这对于局域网联机、内部测试或希望快速让朋友加入的场景非常方便。但请注意:离线模式存在安全隐患,恶意用户可能冒充他人ID,因此通常仅在可信的私人环境中使用。

1.2 基岩版与Java版互通原理

Minecraft 基岩版(Bedrock Edition,运行在手机、Win10/11、主机)和 Java 版(PC传统版)使用完全不同的网络协议和代码基,因此它们无法直接连接。实现互通需要一个“翻译官”,这就是互通代理服务端

目前最成熟、稳定的方案是使用GeyserMC项目。它的工作原理如下:

  1. Java版服务端:作为主服务器运行,存储世界、处理游戏逻辑、管理插件(如 PaperMC)。
  2. Geyser:作为一个独立的Java程序(或插件形式)运行。它扮演两个角色:
    • 对基岩版客户端:它伪装成一个基岩版官方服务器,接受基岩版客户端的连接。
    • 对Java版服务端:它伪装成一个Java版客户端,连接到上一步搭建的Java版服务端。
  3. 协议转换: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 核心软件依赖

  1. Java 运行环境 (JRE):Java版服务端、Geyser、插件都依赖Java。

    • 版本:强烈推荐使用Java 17Java 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 -y
  2. Screen 或 Tmux (Linux推荐):用于在后台持久运行服务器进程,即使断开SSH连接,服务器也不会停止。

    sudo apt install screen -y # 或安装 tmux # sudo apt install tmux -y

2.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.txtserver.properties等必要文件。

3.2 同意EULA并配置基础设置

Minecraft 服务端要求你同意最终用户许可协议 (EULA)。

  1. 编辑eula.txt文件,将eula=false改为eula=true

    nano eula.txt # 找到 eula=false,改为 eula=true,保存退出 (Ctrl+X, 然后 Y, 回车)
  2. 配置server.properties,这是服务器的主配置文件。

    nano server.properties

    找到并修改以下关键行:

    # 服务器IP,默认留空即可(监听所有网络接口) server-ip= # 服务器端口,Java版默认25565,确保防火墙开放此端口 server-port=25565 # 最大玩家数 max-players=20 # 游戏模式:survival(生存),creative(创造),adventure(冒险),spectator(旁观) gamemode=survival # 是否强制玩家为正版。我们设为 false 以启用离线模式。 online-mode=false # 是否生成怪物 spawn-monsters=true # 是否生成动物 spawn-animals=true # 是否生成NPC村庄 generate-structures=true # 视图距离,单位是区块。数值越大越耗性能,建议设为6-10。 view-distance=10 # 是否开启白名单(建议先关闭,等所有朋友加好后再开启) white-list=false # 服务器 MOTD,显示在玩家服务器列表中的描述 motd=A 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 会话(让服务器在后台运行) # 按下 Ctrl+A,然后松开,再按 D 键。 # 你会看到 [detached from ...] 的提示,回到主终端。

现在,你的Java版服务器已经在后台运行了。你可以用screen -r mc-java重新连接回这个会话查看日志或输入命令。

4. 配置基岩版与Java版互通 (Geyser + Floodgate)

我们将以独立运行 Geyser 并搭配 Paper 插件版 Floodgate 为例,这是最灵活的配置方式。

4.1 配置 Floodgate (插件形式)

  1. 安装 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
  2. 重启 Paper 服务端以加载插件

    # 重新连接到 screen 会话 screen -r mc-java # 在服务器控制台输入重启命令 restart # 或者先 stop,再重新用 java -jar 命令启动

    重启后,在plugins文件夹下会生成一个floodgate配置目录。Floodgate 会自动运行,无需额外配置。它会为每个连接的基岩版玩家生成一个唯一的、以.开头的用户名(例如.Geyser_Steve)。

4.2 配置并运行 Geyser (独立版)

  1. 创建 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
  2. 首次运行生成配置

    java -jar geyser.jar

    运行后会生成config.yml等文件,然后程序会停止。

  3. 编辑 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 # 可选,关闭数据统计

    保存并退出。

  4. 在 Screen 中后台运行 Geyser

    # 新建一个 screen 会话运行 Geyser screen -S mc-geyser cd ~/minecraft-server/geyser-standalone java -jar geyser.jar # 看到日志正常,没有报错后,同样按 Ctrl+A, D 分离会话。

5. 连接测试与基础管理

5.1 客户端连接方式

  • Java版玩家
    • 服务器地址:你的服务器IP:25565(例如123.123.123.123:25565或局域网192.168.1.100:25565)。
    • 由于设置了online-mode=false,任何Java版客户端(正版或非正版)都可以直接连接。
  • 基岩版玩家
    • 服务器地址:你的服务器IP:19132(端口是 Geyser 监听的19132)。
    • 在基岩版“好友”或“服务器”页面(不同平台位置略有不同)添加服务器,输入上述地址即可。
    • 连接后,玩家在Java服中的名字会是Floodgate生成的格式(如.Geyser_PlayerName)。

5.2 常用服务器管理命令

在 Paper 服务器的 Screen 会话 (screen -r mc-java) 中,可以输入以下命令:

  • list:查看在线玩家。
  • op <玩家名>:给予玩家管理员权限。
  • whitelist add <玩家名>:将玩家加入白名单(需先设置white-list=true)。
  • save-all:手动立即保存世界。
  • stoprestart:停止或重启服务器(如果安装了重启插件)。

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 定时执行。

  1. 创建备份脚本~/minecraft-server/backup.sh

    #!/bin/bash # 定义变量 SERVER_DIR="/home/你的用户名/minecraft-server/java-server" BACKUP_DIR="/home/你的用户名/minecraft-server/backups" MAX_BACKUPS=10 # 保留最近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

  2. 设置定时任务

    crontab -e

    在末尾添加一行,例如每天凌晨3点执行备份:

    0 3 * * * /home/你的用户名/minecraft-server/backup.sh >> /home/你的用户名/minecraft-server/backup.log 2>&1

    保存退出。现在你的服务器就会每天自动备份了。

6.3 将备份同步到远程(可选)

为了应对本地硬盘损坏,可以将备份同步到网盘(如通过 rclone 同步到阿里云盘、OneDrive等)或另一台服务器(通过 rsync)。

7. 常见问题与排查思路

在搭建和运行过程中,你可能会遇到以下问题。

问题现象可能原因排查与解决思路
Java版客户端无法连接1. 服务器未启动。
2. 防火墙未开放25565端口。
3.server.propertiesserver-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.ymlremote地址端口配置错误。
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: floodgatefloodgate-key-file路径正确。
基岩版玩家进服后名字带前缀,或物品异常1. Floodgate 未正确安装或加载。
2. Geyser 配置中auth-type错误。
3. 某些插件与 Floodgate 不兼容。
1. 检查 Paper 的plugins目录下是否有floodgate-spigot.jar,并查看启动日志确认加载成功。
2. 确认 Geyser 的config.ymlauth-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 更专业,能实现开机自启、自动重启、日志管理。

  1. 创建服务文件sudo nano /etc/systemd/system/mc-java.service
    [Unit] Description=Minecraft Java Server (Paper) After=network.target [Service] Type=simple User=你的用户名 WorkingDirectory=/home/你的用户名/minecraft-server/java-server ExecStart=/usr/bin/java -Xms2G -Xmx4G -jar paper.jar --nogui Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target
  2. 重载 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-list=true,然后在游戏内或控制台使用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),大部分技术问题都能找到解决方案。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询