博主头像
SHIJUTIAN

欢迎光临!在这里
发现你想要的,创造你喜欢的。

我的世界服务器开服完全指南 —— Windows & Linux 双平台超详细教程

适用版本:Minecraft Java Edition 1.21.x | 教程内核:Paper 1.21 | Windows + Linux 双平台 | 更新日期:2025年5月

本文是一份超详细的 Minecraft 服务器开服教程,分为 WindowsLinux 两个独立部分,涵盖从 Java 安装、服务器核心选择、配置文件详解、端口映射、插件管理到性能优化的完整流程,另附 7 个实用附录。

🎮 我的世界服务器开服完全指南

2026年05月22日 · 超详细版 · Windows + Linux 双平台

适用版本:Minecraft Java Edition 1.21.x教程内核:Paper 1.21.x(兼顾 Vanilla / Purpur / Fabric / Forge)

📖 目录

第一部分:Windows 平台开服教程

1.1 开服前的知识准备

1.2 系统环境准备与 Java 安装

1.3 服务器核心选择与下载

1.4 创建目录结构

1.5 编写启动脚本

1.6 首次启动与 EULA 协议

1.7 初启后文件结构解析

1.8 核心配置文件 server.properties 逐项详解

1.9 Windows Defender 防火墙配置

1.10 路由器端口映射详解

1.11 测试端口连通性

1.12 首次连接服务器

1.13 服务器日常管理与常用指令

1.14 插件安装与管理

1.15 世界存档备份

1.16 JVM 启动参数深度优化

1.17 Windows 常见问题排错

第二部分:Linux 平台开服教程

2.1 Linux 开服的优势

2.2 服务器选购与初始配置

2.3 SSH 连接与基础环境配置

2.4 Java 安装(Ubuntu/Debian/CentOS/Rocky)

2.5 创建专用用户与目录结构

2.6 下载服务器核心

2.7 编写启动脚本

2.8 首次启动与 EULA

2.9 核心配置文件详解

2.10 Linux 防火墙配置(iptables/ufw/firewalld)

2.11 云服务器安全组配置

2.12 使用 Screen/tmux 保持后台运行

2.13 注册为 systemd 系统服务(开机自启)

2.14 插件安装与管理

2.15 自动化备份(crontab + rsync)

2.16 JVM 参数深度优化

2.17 使用 Docker 部署 Minecraft 服务器

2.18 Linux 常见问题排错

第三部分:附录

附录 A:服务器核心对比大全

附录 B:插件推荐与排名

附录 C:JVM 启动参数完整参考

附录 D:各路由器品牌端口映射指南

附录 E:server.properties 完整字段速查表

附录 F:常用管理指令速查表

附录 G:性能优化完整检查清单

第一部分:Windows 平台开服教程

1.1 开服前的知识准备

在开始动手之前,先了解一些基本概念,这会帮助你理解后面的每一步操作到底是做什么的。如果你是零基础,请仔细阅读本节;如果你已有一定基础,可以快速浏览后跳至 1.2 节。

什么是 Minecraft 服务器?

Minecraft(Java 版)本身是一个客户端软件。当你启动游戏时,你的电脑就是"客户端",负责渲染画面、播放声音、接收你的键盘鼠标输入。而"服务器"是另一个独立运行的程序,它负责:

  • 管理和存储整个游戏世界的地形、方块、生物数据
  • 处理所有玩家的移动、交互、战斗等游戏逻辑
  • 同步所有玩家的游戏状态(你在某个位置放了一个方块,其他玩家也要看到)
  • 执行服务器端的指令和插件逻辑
  • 简单来说,服务器是"裁判",客户端是"运动员"。客户端负责让你看到画面和操作,服务器负责判定"这个操作是否合法"以及"世界发生了什么变化"。

    服务器是怎么工作的?

    Minecraft 服务器本质上是一个 Java 程序,它以 Tick(游戏刻)为单位运行。每秒有 20 个 Tick(即 20 TPS),每个 Tick 内服务器需要完成:更新所有方块状态、计算生物 AI、处理红石信号、同步玩家数据等。如果某个 Tick 耗时超过 50 毫秒,就会出现"掉刻"——你感受到的就是卡顿、延迟、生物瞬移。这就是为什么 Minecraft 服务器对 CPU 单核性能要求极高的原因。

    你需要什么?

    要运行一个 Minecraft 服务器,你需要:

    1. 一台电脑(可以是你的日常电脑,也可以是一台专门的电脑或云服务器)

    2. Java 运行环境(因为 Minecraft 是用 Java 写的)

    3. 服务器核心文件(一个 .jar 文件,就是服务器程序)

    4. 稳定的网络连接(如果是外网联机,还需要公网 IP 和端口映射)

    5. 基本的命令行操作能力(本教程会手把手教你)

    自建 vs 云服务器 vs 领域服

    方案 费用 性能 自由度 技术门槛 推荐人群
    自己电脑开服 免费(电费) 取决于你的电脑配置 ★★★★★ 完全控制 ★★★☆☆ 中等 学习研究、小范围联机
    云服务器 月费 ¥50-500 稳定、24/7 在线 ★★★★★ 完全控制 ★★★☆☆ 中等 长期运营、稳定开服
    领域服 Realms ¥50/月 一般,人数上限10 ★☆☆☆☆ 几乎无法定制 ★☆☆☆☆ 极低 不想折腾、纯原版体验
    面板服 月费 ¥20-100 共享资源不稳定 ★★☆☆☆ 有限定制 ★★☆☆☆ 较低 预算有限的小型服务器

    ✅ 本教程全面覆盖"自己电脑开服"和"云服务器开服"两种场景。如果你计划长期运营(7×24小时在线),推荐云服务器方案。

    1.2 系统环境准备与 Java 安装(Windows)

    硬件最低要求

    配置项 最低要求(1-5人) 推荐配置(5-15人) 最佳配置(15-50人)
    CPU Intel i3 / AMD Ryzen 3 或同等 Intel i5 / AMD Ryzen 5 或同等 Intel i7/i9 / AMD Ryzen 7/9
    内存 4 GB(给服务器分配 2 GB) 8 GB(给服务器分配 4-6 GB) 16-32 GB(给服务器分配 8-16 GB)
    硬盘 HDD(机械硬盘) SSD(固态硬盘) NVMe SSD
    网络上行 2 Mbps 10 Mbps 20+ Mbps
    操作系统 Windows 10/11 64位 Windows 10/11 64位 Windows Server 或 Linux

    ⚠️ 最重要的事情说三遍:CPU 单核性能 > CPU 核心数量!CPU 单核性能 > CPU 核心数量!CPU 单核性能 > CPU 核心数量!Minecraft 服务器主要吃单核,一颗 4 核但主频 4.0GHz 的 CPU 比一颗 8 核但主频 2.5GHz 的 CPU 要好得多。

    检查你的系统信息

    在安装 Java 之前,先确认你的系统信息:

    1. 右键点击"此电脑" → "属性",查看你的系统类型:

  • 如果显示"64 位操作系统,基于 x64 的处理器"→ 可以继续
  • 如果显示"32 位操作系统"→ 需要升级到 64 位系统(32 位系统最多只能用 4GB 内存,不适合开服)
  • 2. 同时确认内存大小(如 "8.00 GB"),这决定了你能分配给服务器多少内存

    为什么要装 Java 21?

    Minecraft 1.20.5 及以后的版本(包括 1.21)需要 Java 21 才能运行。Java 21 是目前最新的长期支持(LTS)版本。如果你的电脑之前装过旧版 Java(如 Java 8、Java 17),不用担心——可以同时安装多个 Java 版本,它们互不冲突。

    Java 有多个发行版(就像 Linux 有很多发行版一样),我们推荐使用 Eclipse Temurin(以前叫 Adoptium),它是免费、开源、社区维护最活跃的 OpenJDK 发行版。

    方法一:通过官网安装(推荐)

    步骤 1:打开浏览器,访问 Adoptium 官网

    地址:https://adoptium.net/zh-CN/download/

    这是 Eclipse Temurin JDK 的官方下载页面,JDK(Java Development Kit)包含 JRE(运行环境)和开发工具。

    步骤 2:选择版本和操作系统

    在下载页面上你会看到三个下拉选择框:

  • 版本(Version):选择 "JDK 21 (LTS)"
  • 操作系统(Operating System):选择 "Windows"
  • 架构(Architecture):选择 "x64"
  • 如果你使用较新的 Windows on ARM 设备(如 Surface Pro X),选择 "aarch64"。

    步骤 3:下载并运行安装包

    点击下载按钮,会得到一个 .msi 安装文件,文件名类似于:

    
    OpenJDK21U-jdk_x64_windows_hotspot_21.0.x_x.msi
    

    双击运行这个文件。

    步骤 4:安装向导步骤

    安装向导会经过以下几个页面(每一步都点击"Next"继续):

  • Welcome 页面:直接点击 "Next"
  • 许可协议:勾选 "I accept the terms",点击 "Next"
  • 安装路径:保持默认路径(通常为 C:\Program Files\Eclipse Adoptium\jdk-21.0.x.x-hotspot\),点击 "Next"
  • ⚠️ 重要!记下这个安装路径,后面可能会用到。

  • 自定义安装:保持所有组件都勾选,点击 "Next"
  • 准备安装:点击 "Install"
  • 等待安装完成,期间如果弹出 UAC(用户账户控制)提示,点击"是"
  • 安装完成后点击 "Finish"
  • 步骤 5:验证安装是否成功

    按下键盘上的 Win + R 键(Win 键是键盘左下角 Windows 图标键),打开"运行"对话框。

    输入 cmd 然后按回车,这会打开命令提示符(一个黑色背景的窗口)。

    在命令提示符中,输入以下命令并回车:

    
    java -version
    

    如果你看到类似下面的输出,说明 Java 安装成功了:

    
    openjdk version "21.0.5" 2024-10-15 LTS
    OpenJDK Runtime Environment Temurin-21.0.5+11 (build 21.0.5+11-LTS)
    OpenJDK 64-Bit Server VM Temurin-21.0.5+11 (build 21.0.5+11-LTS, mixed mode, sharing)
    

    如果提示 "java 不是内部或外部命令",说明安装过程中没有正确设置环境变量。解决方法见下面的"方法二"。

    方法二:使用 ZIP 包手动安装(无需管理员权限)

    如果你使用的是公司电脑或学校电脑,没有管理员权限,可以使用 ZIP 包方式安装。这也是最"干净"的安装方式——所有文件都在一个文件夹里,删除文件夹就等于卸载。

    步骤 1:下载 ZIP 包

    在 Adoptium 下载页面(https://adoptium.net/download/),选择版本和操作系统后,

    在 "JVM" 下拉框中选择 "HotSpot",点击 "ZIP" 按钮下载压缩包。

    步骤 2:解压到指定位置

    创建一个文件夹 C:\Java(你也可以放在任何你方便的位置,比如 D:\Programs\Java)。

    将下载的 ZIP 文件解压到这个文件夹中。解压后你会看到类似这样的路径:

    
    C:\Java\jdk-21.0.5+11\
    

    在这个文件夹里应该有 bin、lib、include 等子文件夹。

    步骤 3:设置环境变量

    右键点击"此电脑" → "属性" → "高级系统设置" → "环境变量"

    在"系统变量"区域中,找到变量名为 "Path" 的变量,双击它。

    点击"新建",输入 Java 的 bin 目录路径:

    
    C:\Java\jdk-21.0.5+11\bin
    

    注意:路径要精确到 bin 文件夹!确认 bin 文件夹里有 java.exe 文件。

    点击"确定"保存所有设置。

    步骤 4:验证

    打开一个新的命令提示符窗口(必须新开一个,旧窗口不会加载新的环境变量),输入:

    
    java -version
    

    应该能看到 Java 21 的版本信息。

    javac -version

    JDK 安装的话这个命令也应该能正常显示版本号。

    如何检查电脑上已安装的所有 Java 版本?

    where java

    这个命令会显示所有在 PATH 中找到的 java.exe 路径。如果你装过多个版本,这里会列出多个路径。

    系统会使用排在最前面的那个 Java 版本(即 PATH 环境变量中靠前的那个)。

    1.3 服务器核心选择与下载(Windows)

    什么是服务器核心?

    服务器核心就是一个 .jar 文件(Java 归档文件),它包含了 MC 服务器的全部代码。把这个 .jar 文件交给 Java 运行,你的电脑就变成了一台 Minecraft 服务器。不同团队修改了原版服务器的代码,创造出了各种"核心"——它们各有侧重,适合不同的需求。

    主流核心详细介绍

  • ▎Vanilla(原版核心)
  • 作者:Mojang(微软)官方发布

    特点:100% 原汁原味,没有任何修改。所有游戏机制完全与单机一致。

    优点:最稳定(没有第三方代码),原版特性更新最快,适合研究原版机制

    缺点:性能最差(后期掉刻严重),不支持任何插件,无法优化红石/生物性能

    下载:https://www.minecraft.net/zh-hans/download/server

    适合场景:想要纯粹的原版体验、不需要任何插件、玩家人数很少(1-5人)

  • ▎Paper(纸核心)⭐ 本教程的主力推荐
  • 作者:PaperMC 团队(社区最活跃的 MC 服务器开发团队)

    特点:基于 Spigot 深度优化,性能大幅提升,完全兼容 Bukkit/Spigot 插件生态

    优点:

  • 性能远超 Vanilla 和 Spigot(TPS 更稳定)
  • 内置大量性能优化(异步区块加载、实体管理、红石优化)
  • 修复了大量原版游戏的性能 Bug
  • 支持所有 Bukkit/Spigot 插件
  • 配置文件极为详细(paper-global.yml、paper-world-defaults.yml 等)
  • 社区活跃,问题响应快,文档完善
  • 缺点:部分原版特性被修改/默认关闭(如 TNT 复制、铁轨复制),需要手动开启

    下载:https://papermc.io/downloads

    适合场景:90% 的服务器需求都推荐使用 Paper

  • ▎Purpur(紫核心)
  • 作者:PurpurMC 团队(基于 Paper 的二次开发)

    特点:在 Paper 的基础上提供了更多可配置选项,几乎每个游戏特性都可以精细调控

    优点:极其丰富的配置选项(骑马速度、村民交易折扣、方块重力等都能单独配置)

    缺点:选项太多可能导致新人困惑,更新比 Paper 稍慢

    下载:https://purpurmc.org/downloads

    适合场景:需要精细控制游戏机制的高级服主

  • ▎Folia
  • 作者:PaperMC 团队

    特点:多线程服务器核心——将世界按区域划分,每个区域独立线程处理

    优点:真正利用多核 CPU,理论上可以支持数百人同时在线

    缺点:目前仍处于实验阶段,大量插件不兼容,稳定性不如 Paper

    适合场景:大型服务器(100+ 人),对多线程有明确需求

  • ▎Fabric(模组加载器)
  • 作者:Fabric 社区

    特点:轻量级模组加载器,设计理念是"最小化修改 + 模块化"

    优点:更新极快(经常在新版本发布后几小时内就能支持),轻量,性能优化模组丰富(Lithium、Phosphor 等)

    缺点:不支持 Bukkit 插件(但可以通过 Cardboard 等桥接插件勉强支持),大型模组包不如 Forge 丰富

    下载:https://fabricmc.net/use/server/

    适合场景:轻量模组服、性能优化为主、追求最新版本

  • ▎Forge / NeoForge(模组加载器)
  • 作者:Forge 社区 / NeoForged 团队

    特点:最老牌、生态最丰富的模组加载器。NeoForge 是 Forge 1.20+ 版本的分支,由原核心团队维护。

    优点:模组数量最多(几十万个),大型整合包生态成熟(CurseForge、Modrinth)

    缺点:更新较慢,安装流程相对复杂,性能开销较大

    下载:Forge → https://files.minecraftforge.net/ | NeoForge → https://neoforged.net/

    适合场景:大型模组包(如 RLCraft、GregTech、Create 等)

    ✅ 本教程以 Paper 为例展开所有步骤,但大部分操作(启动、配置、端口映射等)对所有核心都通用。

    下载 Paper 核心(使用教程)

    以 Minecraft 1.21 版本的 Paper 为例,详细步骤如下:

    步骤 1:打开 PaperMC 下载站

    浏览器访问:https://papermc.io/downloads

    你会看到页面上列出了所有可用的 Minecraft 版本。

    步骤 2:选择 Minecraft 版本

    找到 "Minecraft 1.21" 或你想要的版本(如 "Minecraft 1.21.1"),点击进入。

    注意:选择最新的稳定版本(通常版本号不带 "pre" 或 "rc" 字样)。

    步骤 3:下载 .jar 文件

    在版本详情页,你会看到最近的构建(Build)列表。最上面的就是最新版本。

    点击最新构建旁的下载按钮(Download),会下载一个文件,名字类似于:

    paper-1.21.1-140.jar

    这个数字(如 140)代表构建编号,数字越大越新,但只要是同一 MC 版本的都兼容。

    步骤 4:保存文件

    暂时先把它保存到"下载"文件夹,稍后在创建目录结构时会用到。

    ⚠️ 不建议使用浏览器直接下载的纯连接方式去保存,一定要确认下载完成后文件的扩展名是 .jar(而不是 .jar.zip 之类的)。

    1.4 创建目录结构(Windows)

    一个良好的目录结构能让你的服务器管理井井有条。我们来一步步创建。

    步骤 1:选择一个合适的位置

    服务器文件夹最好放在一个路径中没有中文和空格的位置,这能避免很多奇怪的 Java 兼容问题。

    推荐路径:

    
    C:\MinecraftServer\
    

    或者你的文档/桌面所在的 D 盘:

    
    D:\Minecraft\server\
    

    步骤 2:创建主文件夹

    在文件资源管理器中,导航到你选择的位置,右键 → 新建 → 文件夹,命名为:

    minecraft-server

    (名字可以随便取,但后续步骤我们会假设你用的是这个名字)

    步骤 3:创建子文件夹(提前规划)

    在 minecraft-server 文件夹里,再创建以下子文件夹:

    
    D:\Minecraft\minecraft-server\
    ├── plugins\          ← 插件存放目录(启动后自动生成)
    ├── backups\          ← 备份存放目录
    └── logs\             ← 日志存放目录(启动后自动生成)
    

    你可以手动创建 backups 文件夹(plugins 和 logs 会在首次启动时自动生成),或者全部手动创建。

    步骤 4:复制服务器核心

    把之前下载的 paper-1.21.1-xxx.jar 文件复制到 minecraft-server 文件夹中。

    为了方便后续操作,建议将它重命名为一个简单的名字:

    server.jar

    现在你的文件夹应该长这样:

    
    D:\Minecraft\minecraft-server\
    ├── backups\
    ├── plugins\
    ├── logs\
    └── server.jar
    

    ✅ 为什么要重命名为 server.jar?因为每次下载新的 Paper 构建更新时,只需把新文件复制进来并重命名为 server.jar 即可替换,启动脚本不需要改动。

    1.5 编写启动脚本(Windows)

    启动脚本是一个 .bat 批处理文件,它的作用是用正确的参数运行 Java 来启动服务器。有了脚本,你只需双击就能启动,不需要每次都手动输入长命令。

    基础启动脚本

    步骤 1:创建脚本文件

    在 minecraft-server 文件夹中,右键 → 新建 → 文本文档。

    默认名称为"新建文本文档.txt",我们把它重命名为:

    start.bat

    ⚠️ 注意:如果看不到文件扩展名(.txt、.bat 等),需要先在文件资源管理器顶部菜单栏点击"查看" → 勾选"文件扩展名",这样才能把 .txt 改成 .bat。

    步骤 2:编辑脚本内容

    右键点击 start.bat → 编辑(或用记事本打开),输入以下内容:

    
    @echo off
    

    title Minecraft Server - Paper 1.21

    
    :: 设置分配给服务器的内存(单位:MB)
    :: 请根据你的实际内存调整这两个数值
    :: 例如:4GB = 4096M,6GB = 6144M,8GB = 8192M
    set MIN_RAM=2048M
    set MAX_RAM=4096M
    :: 启动服务器
    java -Xms%MIN_RAM% -Xmx%MAX_RAM% -jar server.jar nogui
    :: 暂停(服务器关闭后保留窗口,方便查看错误信息)
    

    pause

    逐行解释:

  • @echo off:关闭命令回显,让窗口看起来更干净
  • title Minecraft Server - Paper 1.21:设置命令窗口的标题栏文字(方便在多窗口中找到它)
  • :: 开头的行:注释,不会被实际执行
  • set MIN_RAM=2048M:设置最小内存为 2048 MB(即 2 GB)
  • 如果你的电脑总共只有 4GB 内存,给服务器分配 2GB 是比较安全的选择
  • 如果有 8GB 内存,可以尝试 4096M(4GB)
  • 如果有 16GB 内存,可以分配 8192M(8GB)甚至更多
  • set MAX_RAM=4096M:设置最大内存,建议和最小内存设成一样的值
  • java -Xms... -Xmx... -jar server.jar nogui:这是实际启动服务器的命令
  • -Xms:初始堆内存大小
  • -Xmx:最大堆内存大小
  • -jar server.jar:指定要运行的 JAR 文件
  • nogui:不启动图形管理界面(纯命令行模式,性能更好)
  • pause:服务器关闭后,窗口不会立即消失,会显示"按任意键继续..."方便查看错误
  • 步骤 3:保存文件

    记事本中点击"文件" → "保存"(或者按 Ctrl + S)。

    确保"保存类型"是"所有文件"、编码是"UTF-8"或"ANSI"。

    高级启动脚本(带自动重启功能)

    如果你希望服务器意外崩溃后自动重启(比如半夜崩溃了,不需要你手动重新启动),可以使用以下脚本:

    
    @echo off
    

    title Minecraft Server - Paper 1.21 (Auto Restart)

    
    :: 内存设置
    set MIN_RAM=2048M
    set MAX_RAM=4096M
    

    :loop

    
    echo ================================
    echo  [%date% %time%] Minecraft 服务器启动中...
    echo ================================
    java -Xms%MIN_RAM% -Xmx%MAX_RAM% -jar server.jar nogui
    echo ================================
    echo  [%date% %time%] 服务器已关闭
    echo  10 秒后自动重启...(按 Ctrl+C 取消)
    echo ================================
    

    timeout /t 10 /nobreak >nul

    goto loop

    这个脚本的关键点:

  • :loop 和 goto loop:无限循环,服务器关闭后自动回到 loop 标签重新执行
  • timeout /t 10:服务器关闭后等待 10 秒再重启,留出时间让你手动按 Ctrl+C 终止循环
  • 如果想关闭服务器,在 CMD 窗口中输入 stop 命令(而不是直接点 × 关闭窗口),这样服务器会安全保存数据后再退出
  • ⚠️ 建议初学者先用基础版脚本。等服务器稳定运行了,再升级到自动重启版。过早使用自动重启可能会掩盖配置问题——服务器一直崩溃重启你反而发现不了。

    内存分配建议表

    你的电脑总内存 操作系统占用 建议分配给 MC 服务器 参数值
    4 GB ~2 GB 2 GB -Xms2G -Xmx2G
    6 GB ~2.5 GB 3 GB -Xms3G -Xmx3G
    8 GB ~3 GB 4-5 GB -Xms4G -Xmx4G
    12 GB ~3.5 GB 6-8 GB -Xms6G -Xmx6G
    16 GB ~4 GB 8-12 GB -Xms8G -Xmx8G
    32 GB ~5 GB 12-20 GB -Xms12G -Xmx12G

    ⚠️ 不要把所有内存都给 MC 服务器!操作系统本身需要内存来运行。一个简单规则:给服务器分配的内存不超过总内存的 60%-70%。

    1.6 首次启动与 EULA 协议(Windows)

    步骤 1:双击运行 start.bat

    在 minecraft-server 文件夹中找到 start.bat,双击运行。

    你会看到一个黑色命令行窗口弹出。如果是首次启动,很快就会看到类似以下的错误信息:

    
    [Server] Starting minecraft server version 1.21.1
    [Server] Loading properties
    [Server] Defaulting to server port 25565
    [Server] You need to agree to the EULA in order to run the server.
    [Server] Go to eula.txt for more info.
    [Server] 服务器已退出(退出代码:1)
    

    这是完全正常的,不是错误!首次启动时,服务器发现你没有同意用户协议(EULA),会生成 eula.txt 文件然后自动退出。我们需要去修改这个文件。

    步骤 2:修改 eula.txt

    回到 minecraft-server 文件夹,你会发现多了几个新文件和新文件夹。

    找到 eula.txt,用记事本打开它。你看到的内容大概是:

    
    #By changing the setting below to TRUE you are indicating ...
    #...
    

    eula=false

    把最后一行改为:

    eula=true

    保存并关闭文件。

    这个操作意味着你同意 Mojang 的最终用户许可协议(EULA)。具体来说,你同意:

  • 不向玩家收费提供影响游戏玩法的内容(比如付费获得钻石装备)
  • 可以接受玩家捐赠或收取外观类内容的费用
  • 更多细节请阅读 eula.txt 中的链接
  • 步骤 3:第二次启动

    再次双击 start.bat。这次服务器会正式开始加载:

    你会看到一大串日志信息不断滚动输出,包括:

  • 加载服务器属性(server.properties)
  • 生成世界地形(如果是第一次)
  • 加载默认的世界(world、world_nether、world_the_end)
  • 准备出生点区域
  • 最后出现 "Done (XX.XXXs)!" —— 表示启动完成!
  • 
    [Server thread/INFO]: Done (45.234s)! For help, type "help"
    

    看到 "Done!" 就说明服务器已经成功启动,可以接受玩家连接了!🎉

    启动过程中的关键信息解读:

  • "Preparing spawn area: XX%" —— 服务器在生成出生点周围的区块,首次启动需要较长时间
  • "Done (XXs)!" —— 括号里的时间越短越好,Paper 通常在 20-60 秒内完成启动
  • 如果卡在某个百分比不动,大概率是在生成地形——耐心等待
  • 步骤 4:测试服务器是否正常运行

    在 CMD 窗口中,点击一下窗口内部(确保焦点在窗口中),输入以下命令并回车:

    list

    应该会显示:

    There are 0 of a max of 20 players online

    这表示服务器正在运行,当前在线人数为 0。

    ❌ 输入 stop 命令可以安全关闭服务器(不要直接点 × 关闭窗口!)。直接关窗口会丢失未保存的数据,可能导致地图损坏。

    1.7 首次启动后文件结构详解(Windows)

    首次成功启动后,minecraft-server 文件夹的内容如下。我们来逐一了解每个文件的作用:

    minecraft-server\

    
    │
    ├── server.jar                    ← 服务器核心文件(你自己放的)
    ├── start.bat                     ← 启动脚本(你自己写的)
    ├── eula.txt                      ← EULA 协议同意文件
    ├── server.properties             ← ★★★ 服务器主配置文件
    ├── banned-players.json           ← 封禁玩家列表
    ├── banned-ips.json               ← 封禁 IP 列表
    ├── ops.json                      ← 管理员(OP)列表
    ├── whitelist.json                ← 白名单
    ├── usercache.json                ← 玩家 UUID 缓存
    ├── version_history.json          ← Paper 版本历史
    │
    ├── world\                        ← 主世界存档目录
    │   ├── region\                   ← 区块数据文件(.mca)
    │   ├── playerdata\               ← 玩家数据(背包、位置、经验等)
    │   ├── entities\                 ← 实体数据
    │   ├── poi\                      ← 村民兴趣点数据
    │   ├── advancements\             ← 玩家进度数据
    │   ├── stats\                    ← 玩家统计数据
    │   ├── datapacks\                ← 数据包
    │   ├── level.dat                 ← 世界基本信息(种子、时间、天气等)
    │   └── session.lock              ← 世界锁定文件(防止同时打开)
    │
    ├── world_nether\                 ← 下界存档目录(结构同上)
    ├── world_the_end\               ← 末地存档目录(结构同上)
    │
    ├── plugins\                      ← ★★★ 插件目录
    │   └── (每个插件有自己的子文件夹存放配置和数据)
    │
    ├── logs\                         ← 日志目录
    │   ├── latest.log                ← 最新日志文件(每次启动会重置)
    │   └── 2024-XX-XX-X.log.gz       ← 历史日志(压缩存档)
    │
    ├── config\                       ← Paper 专有配置目录
    │   ├── paper-global.yml          ← Paper 全局配置
    │   └── paper-world-defaults.yml  ← Paper 世界默认配置
    │
    ├── libraries\                    ← Paper 依赖库文件
    ├── versions\                     ← 版本信息
    └── cache\                        ← 缓存文件
    

    重要文件说明

  • server.properties:服务器所有基础设置都在这里,后面会用整整一章来讲解
  • world/:你的整个世界存档!这个文件夹是最重要的,备份时首先要备份它
  • plugins/:插件全在这里。直接把 .jar 文件扔进去,重启服务器就装好了
  • logs/latest.log:排查问题的第一手资料。玩家说"我进不来"的时候,先看这个文件
  • 1.8 核心配置文件 server.properties 逐项详解(Windows)

    server.properties 是 Minecraft 服务器最重要的配置文件。用记事本打开它,你会看到一行一个配置项,格式为 键=值。下面我们逐项讲解每一个配置项的作用和推荐值。

    在修改配置之前,一定要先输入 stop 关闭服务器再改,改完保存后再重新启动。如果在服务器运行中修改此文件,只需在控制台输入 reload 或 restart 即可热重载。

    一、基础服务器设置

    配置项 默认值 类型 详细说明
    allow-flight false 布尔值 是否允许玩家飞行。如果你的服务器装有飞行相关的插件或模组,需要设为 true。原版生存服保持 false 可以防止作弊飞行。
    allow-nether true 布尔值 是否启用下界。设为 false 则地狱门无法激活,玩家无法进入下界。如果关闭下界,可以减少约 30% 的服务器负载。
    broadcast-console-to-ops true 布尔值 是否将控制台命令输出发送给在线 OP。设为 false 可以避免后台操作被 OP 玩家看到。
    broadcast-rcon-to-ops true 布尔值 是否将 RCON 命令输出发送给在线 OP。RCON 是远程控制台协议,一般用不到。
    bug-report-link "" 字符串 Bug 反馈链接。玩家在游戏中遇到问题时会看到这个链接。可以设置为你的群公告或 Discord 链接。
    difficulty easy 枚举 游戏难度。可选值:peaceful(和平)、easy(简单)、normal(普通)、hard(困难)。和平模式下怪物不会生成,饥饿值不会下降。大多数生存服设为 normal 或 hard。
    enable-command-block false 布尔值 是否启用命令方块。命令方块是原版最强工具,可以实现各种自动化。公开服务器建议关闭(防止被滥用),技术服或小游戏服则需要开启。
    enable-jmx-monitoring false 布尔值 是否启用 JMX 监控。JMX 是 Java 管理扩展,用于性能监控工具(如 VisualVM)连接。普通用户不需要开启。
    enable-rcon false 布尔值 是否启用 RCON(远程控制台)协议。可以通过外部程序远程向服务器发送指令。有安全风险,一般不需要开启。
    enable-status true 布尔值 是否允许玩家查询服务器状态(通过多人游戏列表)。设为 false 则服务器对外"隐身"。
    enforce-secure-profile true 布尔值 是否强制使用安全的玩家档案(Mojang 的公钥签名系统)。如果允许盗版玩家进入(online-mode=false),需要同时把这个设为 false。
    force-gamemode false 布尔值 是否每次玩家加入时强制设为服务器默认游戏模式。设为 true 则玩家上次退出时的游戏模式会被覆盖。
    gamemode survival 枚举 默认游戏模式。可选值:survival(生存)、creative(创造)、adventure(冒险)、spectator(旁观)。adventure 模式不能破坏方块,spectator 可以穿墙但不能交互——后者适合管理巡查。
    generate-structures true 布尔值 是否生成自然结构(村庄、要塞、沙漠神殿、末地城等)。设为 false 会得到完全空旷的世界——适合空岛地图或超平坦建造。
    hardcore false 布尔值 是否开启极限模式。玩家死亡后自动被封禁,无法重新进入。这个模式和 difficulty=hard 配合使用效果最好。
    hide-online-players false 布尔值 是否隐藏在线玩家列表。设为 true 则玩家执行 /list 时也看不到其他人。
    max-chained-neighbor-updates 1000000 整数 红石连锁更新的最大限制。设为 -1 为无限制,设为 0 完全禁用。降低此值可以防止红石机器造成巨大卡顿,但可能破坏复杂红石装置。
    max-players 20 整数 最大同时在线玩家数量。超过了玩家会看到"服务器已满"。这个只是人数限制,不等于你能带的动这么多人——还要看服务器性能。
    max-tick-time 60000 整数 最大 Tick 耗时(毫秒)。如果某个 Tick 超过这个时间,服务器会视为崩溃并自动关闭。设为 -1 禁用此保护(不推荐)。Paper 默认已优化,一般不需要调整。
    motd "A Minecraft Server" 字符串 服务器 MOTD(Message of the Day)。就是玩家在多人游戏列表中看到的服务器名称和描述。支持颜色代码(如 §6§l 表示金色加粗),也支持 \n 换行。
    network-compression-threshold 256 整数 网络压缩阈值(字节)。数据包超过这个大小才会压缩。设为 -1 完全禁用压缩(局域网联机推荐),设为 0 全部压缩。
    online-mode true 布尔值 ★★★ 是否开启正版验证。这是最重要的设置之一!true:只有购买了正版 Minecraft 的玩家才能进入(通过 Mojang 服务器验证身份)。false:任何人都能进入,包括使用离线登录的盗版玩家。注意:设为 false 后玩家身份无法验证,任何人都可以冒充别人的 ID 登录!
    op-permission-level 4 整数 OP 权限等级。1-4 级,4 级最高。1 级:可以绕过出生点保护。2 级:可以使用大多数指令。3 级:可以使用 /ban、/kick 等管理指令。4 级:可以使用所有指令(包括 /stop、/save-all)。
    prevent-proxy-connections false 布尔值 是否禁止代理连接。设为 true 可以阻止使用 VPN 或代理的玩家(但需要 online-mode=true)。
    pvp true 布尔值 是否允许玩家对战(PVP)。设为 false 则玩家无法互相造成伤害。
    query.port 25565 整数 服务器查询端口(UDP)。和主端口设为一致即可。
    rate-limit 0 整数 数据包速率限制。设为 0 禁用。高频率交互的服务器可能需要调高此值。
    require-resource-pack false 布尔值 是否强制玩家使用服务器资源包(材质包)。设为 true 会强制玩家下载并应用指定材质。
    resource-pack "" 字符串 资源包下载地址(URL)。需要是直接的下载链接。
    resource-pack-id "" 字符串 资源包 ID。修改此值会强制客户端重新下载资源包。
    resource-pack-prompt "" 字符串 资源包提示信息。当询问玩家是否下载资源包时显示的文本。
    resource-pack-sha1 "" 字符串 资源包的 SHA-1 哈希值。用于校验下载的资源包是否完整。
    server-ip "" 字符串 服务器监听的 IP 地址。留空则监听所有网络接口(推荐留空)。只在某些特殊网络环境下需要指定——比如有多个网卡需要选择绑定某一个。
    server-port 25565 整数 服务器监听端口。默认 25565 是 Minecraft Java 版的标准端口。如果需要运行多个服务器,可以分别使用 25566、25567 等不同端口。
    simulation-distance 10 整数 实体模拟距离(区块)。控制多远范围内的生物会正常活动(移动、生成等)。与 view-distance 不同:view-distance 只影响视觉,simulation-distance 影响生物行为。
    spawn-monsters true 布尔值 是否生成怪物(僵尸、骷髅、苦力怕等)。设为 false 只影响自然生成,刷怪笼和指令仍可生成。
    spawn-protection 16 整数 出生点保护范围(格)。在此范围内的方块只有 OP 能破坏或放置。设为 0 关闭保护。
    sync-chunk-writes true 布尔值 是否同步写入区块文件。设为 false 可以提高写入性能(异步写入),但有微小几率在崩溃时损坏地图。
    text-filtering-config "" 字符串 文本过滤配置(适用于微软家庭设置的内容过滤),一般用不上。
    use-native-transport true 布尔值 是否使用本地传输(Linux 的 epoll)。Windows 上无效。
    view-distance 10 整数 视距(区块)。控制玩家能看到多远。每个区块是 16x16 格,所以 10 个区块就是 160 格半径。这是对性能影响最大的参数之一!视距 10 和视距 32 的服务器负载可能差 5 倍以上。
    white-list false 布尔值 是否开启白名单。设为 true 则只有白名单中的玩家能进入。管理 whitelist.json 来维护名单。

    二、世界生成设置(决定你的世界长什么样)

    注意:以下设置只在首次创建世界时生效。一旦世界已生成,修改这些设置不会改变已有地形。

    配置项 默认值 详细说明
    level-name world 世界存档文件夹名称。修改此值相当于创建了一个新世界,旧的存档不会丢失(只是不用了)。
    level-seed "" 世界种子。留空则随机生成。输入一个具体的种子(数字或字符串)可以生成特定地形。例如输入 -837648712 会生成一个经典的生存岛种子。
    level-type minecraft:normal 世界类型:minecraft:normal = 普通世界minecraft:flat = 超平坦minecraft:large_biomes = 大型生物群系(生物群系大小是正常的 4 倍)minecraft:amplified = 放大化世界(地形极度夸张)minecraft:single_biome_surface = 单一生物群系
    generator-settings "" 世界生成器的高级设置(JSON 格式)。用于自定义超平坦或单一生物群系世界。普通玩家不需要修改。
    max-world-size 29999984 世界边界半径(格)。默认约 3000 万格,就是你能走到的最远距离。减小此值可以节省硬盘空间,例如设定为 10000 则世界只有 2 万×2 万的范围。
    spawn-animals true 是否生成动物(猪、牛、羊等)。
    spawn-npcs true 是否生成 NPC(村民、流浪商人等)。

    三、Paper 独有配置(config 文件夹)

    Paper 除了 server.properties 外,还在 config/ 文件夹中提供了更详细的配置。这些是 Paper 性能优异的关键:

  • config/paper-global.yml:影响整个服务器的全局设置
  • 包括异步区块加载、物品合并优化、漏斗性能设置等
  • 例如:hopper.disable-move-event=false 可以让漏斗不再触发事件,大幅降低 CPU 使用
  • 例如:misc.use-faster-eigencraft-redstone=true 使用更快的红石算法
  • config/paper-world-defaults.yml:影响全部世界的默认设置
  • 包括怪物生成率、掉落物合并、区块卸载行为等
  • 例如:despawn-ranges.soft=32 控制非玩家附近多少格的怪物会被清理
  • 例如:max-entity-collisions=8 防止太多实体堆积造成卡顿
  • ✅ Paper 的默认配置已经很好了,新手不需要修改 config/ 中的文件。等你对服务器有更深理解后再逐步调整这些高级设置。

    1.9 Windows Defender 防火墙配置

    Windows 自带的防火墙可能会阻止外部玩家连接你的服务器。我们需要创建防火墙规则,允许 Minecraft 的端口(25565)通过。

    方法一:通过 Windows 安全中心(图形界面)

    步骤 1:打开 Windows 安全中心

    点击左下角的 Windows 开始按钮(田字格图标),输入"Windows 安全中心",点击打开。

    或者右键点击任务栏右下角的盾牌图标 → 查看安全仪表板。

    步骤 2:进入防火墙设置

    在安全中心窗口中,点击左侧的"防火墙和网络保护"。

    在右侧会看到"域网络"、"专用网络"、"公用网络"三个选项。

    你当前活动的网络类型会标注"(活动)"字样。记下你的网络类型。

    步骤 3:打开高级设置

    向下滚动,找到并点击"高级设置"链接。

    这会打开"高级安全 Windows Defender 防火墙"管理窗口。

    步骤 4:新建入站规则

    在左侧面板中,点击"入站规则"。

    在右侧面板中,点击"新建规则..."。

    一个"新建入站规则向导"窗口会弹出。

    步骤 5:选择规则类型

    向导第一步让你选择规则类型。选择"端口",然后点击"下一步"。

    步骤 6:指定端口

    选择"TCP"。

    选择"特定本地端口",在输入框中填写:

    25565

    点击"下一步"。

    步骤 7:选择操作

    选择"允许连接",点击"下一步"。

    步骤 8:选择配置文件

    你会看到三个复选框:域、专用、公用。

    根据你刚才在第二步中看到的网络类型勾选对应的。如果不太确定,全部勾选也没关系。

    点击"下一步"。

    步骤 9:命名规则

    在"名称"输入框中填写:Minecraft Server (TCP)

    在"描述"中填写:允许 Minecraft Java 版服务器端口 25565 通过防火墙

    点击"完成"。

    步骤 10:创建 UDP 规则

    Minecraft 还需要 UDP 协议用于服务器查询功能。重复步骤 4-9,但这次:

  • 在第 6 步选择 "UDP" 而不是 TCP
  • 在第 9 步将名称改为:Minecraft Server (UDP)
  • 步骤 11:验证规则是否创建成功

    在入站规则列表中,找到你刚创建的规则。它们的"已启用"列应该显示"是"。

    绿色勾号表示规则已启用。如果没有,右键规则 → 启用规则。

    方法二:通过命令行(快速方法)

    如果你更喜欢命令行操作,以管理员身份打开命令提示符,执行以下命令:

    
    :: 以管理员身份运行 CMD,然后执行:
    netsh advfirewall firewall add rule name="Minecraft Server TCP" dir=in action=allow protocol=TCP localport=25565
    netsh advfirewall firewall add rule name="Minecraft Server UDP" dir=in action=allow protocol=UDP localport=25565
    

    验证规则:

    
    netsh advfirewall firewall show rule name="Minecraft Server TCP"
    

    如果 Windows 防火墙被第三方软件接管?

    有些杀毒软件(如 360、腾讯电脑管家、火绒、卡巴斯基等)会接管系统的防火墙功能。

    在这种情况下,你需要在第三方杀毒软件的设置中找到防火墙/网络防护设置,在"允许应用通过防火墙"中添加 Java 的端口 25565。

    具体操作因软件而异,但核心逻辑都相同:放行 25565 端口的 TCP 和 UDP 流量。

    1.10 路由器端口映射详解(Windows)

    如果你的目的是让局域网内的其他设备(比如家里的另一台电脑、同一 WiFi 下的手机)连接服务器,防火墙设置就足够了,不需要做端口映射。

    但如果你的目的是让互联网上的朋友(不在你家里、不在同一个网络)连接到你的服务器,就需要配置路由器的端口映射。

    什么是端口映射?

    要理解端口映射,首先要理解 NAT(网络地址转换)。简单来说:

    你的路由器有一个公网 IP 地址(比如 123.45.67.89),这是整个家庭网络的"对外身份"。

    同时,路由器为家里的每个设备分配了局域网 IP 地址(比如 192.168.1.100 是你的电脑)。

    当外部的玩家尝试连接 123.45.67.89:25565 时,路由器收到这个请求,但它不知道该把这个请求转发给家里哪台设备。

    端口映射就是告诉路由器:"凡是发到 25565 端口的请求,都转发给 192.168.1.100 这台电脑。"

    前置步骤:获取必要信息

    步骤 1:获取你的局域网 IP 地址

    按 Win + R,输入 cmd 回车,在命令提示符中输入:

    ipconfig

    在输出中找到类似以下的内容:

    无线局域网适配器 Wi-Fi:

    IPv4 地址 . . . . . . . : 192.168.1.100

    默认网关. . . . . . . . : 192.168.1.1

    记下:

  • IPv4 地址(如 192.168.1.100)—— 这是你的电脑在局域网中的地址
  • 默认网关(如 192.168.1.1)—— 这是你的路由器管理地址
  • 步骤 2:设置静态局域网 IP(重要!)

    大多数路由器默认使用 DHCP(动态主机配置协议)自动分配 IP。这意味着你的电脑的局域网 IP 可能会变化(比如今天还是 192.168.1.100,明天重启路由器后就变成了 192.168.1.105)。如果 IP 变了,端口映射就失效了——因为路由器仍然把请求转发到旧地址。

    解决方法:在路由器管理界面中将你的电脑的 IP 固定为静态地址。

    在 Windows 中设置静态 IP 的方法:

    1. 打开"设置" → "网络和 Internet" → "Wi-Fi"(或"以太网")

    2. 点击你当前连接的网络 → "硬件属性"

    3. 找到"IP 分配" → 点击"编辑"

    4. 将"自动(DHCP)"改为"手动"

    5. 打开 IPv4 开关

    6. 填写以下信息:

    IP 地址:192.168.1.100(使用你刚才 ipconfig 看到的地址)

    子网掩码:255.255.255.0

    网关:192.168.1.1(使用你刚才 ipconfig 看到的默认网关)

    首选 DNS:192.168.1.1(可以先填路由器的地址,或使用 114.114.114.114)

    7. 点击"保存"

    更推荐的方法是在路由器中做 DHCP 静态绑定(IP 与 MAC 绑定),这样不需要修改电脑的网络设置。

    各品牌路由器端口映射操作指南

  • ▎TP-Link 路由器
  • 1. 浏览器访问 192.168.1.1(或 tplogin.cn)

    2. 登录(默认用户名和密码通常都是 admin,贴在路由器底部)

    3. 找到"应用管理"或"高级设置" → "虚拟服务器"

    4. 点击"添加"

    常用服务器:留空或自定义

    外部端口:25565

    内部端口:25565

    IP 地址:192.168.1.100(你的电脑 IP)

    协议:TCP

    5. 再添加一条相同设置但协议为 UDP 的规则

    6. 保存并生效

  • ▎小米(MiWiFi)路由器
  • 1. 浏览器访问 192.168.31.1 或 miwifi.com

    2. 登录后点击"高级设置" → "端口转发"

    3. 点击"添加规则"

    名称:Minecraft

    协议:TCP 和 UDP

    外部端口:25565

    内部 IP 地址:192.168.31.xxx(你的电脑 IP)

    内部端口:25565

    4. 保存

  • ▎华为(HUAWEI)路由器
  • 1. 浏览器访问 192.168.3.1

    2. 登录 → "更多功能" → "安全设置" → "NAT 服务" → "端口映射"

    3. 点击"新建"

    应用名称:Minecraft

    协议:TCP/UDP

    内部主机:你的电脑 IP

    内部端口:25565

    外部端口:25565

    4. 保存

  • ▎华硕(ASUS)路由器
  • 1. 浏览器访问 192.168.50.1 或 router.asus.com

    2. 登录 → "高级设置" → "WAN" → "端口转发"

    3. 启用端口转发 → 添加

    服务名称:Minecraft

    通信协议:TCP

    外部端口:25565

    内部端口:25565

    本地 IP 地址:你的电脑 IP

    4. 同样添加一条 UDP 规则

    5. 应用本页面设置

  • ▎水星(MERCURY)/ 迅捷(FAST)/ 腾达(Tenda)路由器
  • 这些品牌的操作界面和 TP-Link 非常相似,同样是找到"虚拟服务器"或"端口转发"功能。

  • ▎软路由(OpenWrt / iStoreOS)
  • 1. 登录 LuCI 管理界面(通常 192.168.1.1)

    2. "网络" → "防火墙" → "端口转发"

    3. 添加规则:

    名称:Minecraft

    协议:TCP+UDP

    外部端口:25565

    内部 IP 地址:你的电脑 IP

    内部端口:25565

    4. 保存并应用

    💡 如果你的路由器品牌不在此列表中,请搜索"[你的路由器品牌] 端口映射 教程"。核心操作都是一样的:找到端口转发/Virtual Server/Port Forwarding 功能,添加 25565 端口的转发规则。

    重要:运营商层面的限制

    即使你在路由器中正确设置了端口映射,外网玩家也可能仍然无法连接。这是因为很多家庭宽带运营商(特别是中国电信、中国联通、中国移动的家庭宽带)使用了一种叫 NAT444(也叫 CG-NAT 或大内网)的技术——本质上你的"公网 IP"其实也是在一个更大的运营商内部网络中,并不是真正的公网 IP。

    判断你是否在 NAT444 环境中的方法:

    1. 百度搜索"IP",获取你的公网 IP(比如 123.45.67.89)

    2. 登录路由器,查看 WAN 口的 IP 地址

    3. 如果两个 IP 相同 → 你有真正的公网 IP → 端口映射有效

    4. 如果两个 IP 不同(路由器 WAN IP 是 10.x.x.x 或 100.x.x.x 开头)→ NAT444 → 端口映射无效

    如果你的路由器 WAN IP 和百度搜到的 IP 不一致,说明你在运营商的大内网中。

    解决方法:

  • 联系运营商客服,要求改为"公网 IP"(通常免费,有些运营商需要付费)
  • 如果运营商不给改,使用内网穿透工具(如 SakuraFrp、OpenFrp、frp 等)
  • 或者直接租用云服务器开服(绕过这个问题)
  • 1.11 测试端口连通性(Windows)

    完成防火墙和端口映射配置后,我们需要验证端口是否真的对外开放了。

    方法一:在线端口检测工具

    这是最简单的方法:

    步骤 1:确保服务器正在运行

    双击 start.bat,确保服务器已启动并显示 "Done!"。

    步骤 2:使用在线工具检测

    浏览器访问以下任一网站:

  • https://www.yougetsignal.com/tools/open-ports/
  • https://portchecker.co/
  • https://tool.chinaz.com/port
  • 步骤 3:输入信息

    在检测页面中:

  • Remote Address / IP:会自动填写你的公网 IP(不用改)
  • Port Number:输入 25565
  • 点击"Check"或"检测"按钮。

    步骤 4:解读结果

  • "Port 25565 is OPEN" → 恭喜!端口已成功开放!✅
  • "Port 25565 is CLOSED" → 端口未开放,检查防火墙和路由器设置 ❌
  • "Connection timed out" → 连接超时,通常意味着你在大内网中 ❌
  • 方法二:使用 telnet 命令本地测试

    这可以帮你判断问题出在本地防火墙还是路由器端口映射:

    
    :: 在 CMD 中测试(本地测试,不需要端口映射)
    telnet 127.0.0.1 25565
    

    如果本地 127.0.0.1 能连接但外部检测不到,问题在路由器/运营商。

    如果本地都连接不上,问题在防火墙或服务器没启动。

    💡 Windows 默认没有安装 telnet。如果提示"不是内部或外部命令",去"控制面板 → 程序 → 启用或关闭 Windows 功能 → 勾选 Telnet 客户端"。

    方法三:局域网内另一台设备测试

    用家里的另一台电脑(或手机),连接到同一个 WiFi,在 Minecraft 多人游戏中输入服务器的局域网 IP 地址。

    如果能连接 → 防火墙没问题

    如果不能连接 → 防火墙没配好

    1.12 首次连接服务器(Windows)

    自己连接(本机)

    确保 start.bat 正在运行(CMD 窗口没有关闭,且显示了 "Done!"),然后:

    1. 启动 Minecraft Java 版

    2. 点击"多人游戏"

    3. 点击"添加服务器"

    4. 填写:

    服务器名称:随便填(如"我的世界")

    服务器地址:localhost

    或者输入 127.0.0.1(效果完全相同)

    5. 点击"完成",然后双击服务器图标进入

    局域网内的其他设备连接

    如果朋友在你家同一个 WiFi 下(同一局域网):

    服务器地址填写你开服电脑的局域网 IP 地址(如 192.168.1.100)

    不需要端口号(默认 25565 会自动使用)

    外网朋友连接

    如果朋友在另一个城市(外网):

    服务器地址填写你的公网 IP 地址(如 123.45.67.89)

    如果你使用的是非默认端口(不是 25565),需要在 IP 后面加 :端口号

    例如:123.45.67.89:25566

    如何查看自己的公网 IP?

    最简单的方法:打开浏览器,搜索"我的 IP"。

    或者访问 https://ip.sb、https://ifconfig.me 等网站。

    这些网站会直接返回你的公网 IP 地址。

    ⚠️ 大多数家庭宽带的公网 IP 是动态的(每次重启路由器或每隔几天就会变)。每次朋友连不上时,先确认一下你的公网 IP 有没有变化。

    给自己管理员权限

    进入游戏后,回到 CMD 窗口(服务器控制台),输入:

    op 你的玩家ID

    例如你的游戏 ID 是 Steve,就输入 op Steve。

    之后就可以在游戏聊天栏中使用以 / 开头的指令了。

    1.13 服务器日常管理与常用指令(Windows)

    控制台管理基础

    Minecraft 服务器控制台(CMD 窗口)是你管理服务器的核心界面。所有操作都可以在这里输入指令完成。

    以下是作为服主必须掌握的指令:

    玩家管理

    指令 说明 示例
    /list 查看在线玩家列表 /list — 显示所有人
    /op <玩家名> 给予/撤销管理员权限 /op Steve — 给 Steve OP
    /deop <玩家名> 撤销管理员权限 /deop Steve
    /kick <玩家名> [原因] 踢出玩家 /kick Steve 请勿破坏建筑
    /ban <玩家名> [原因] 封禁玩家(禁止进入) /ban Steve 使用作弊软件
    /ban-ip <IP> 封禁 IP 地址 /ban-ip 192.168.1.100
    /pardon <玩家名> 解封玩家 /pardon Steve
    /pardon-ip <IP> 解封 IP /pardon-ip 192.168.1.100
    /whitelist add <玩家名> 添加白名单 /whitelist add Steve
    /whitelist remove <玩家名> 移除白名单 /whitelist remove Steve
    /whitelist on 开启白名单(只有白名单玩家可进入) /whitelist on
    /whitelist off 关闭白名单 /whitelist off
    /whitelist list 查看白名单 /whitelist list

    世界管理

    指令 说明 示例
    /time set <值> 设置时间 /time set day — 白天 /time set night — 黑夜
    /time add <值> 增加时间(tick) /time add 1000 — 前进 1000 tick
    /weather <clear/rain/thunder> 设置天气 /weather clear — 晴天
    /weather <类型> <秒数> 设置天气持续时间 /weather rain 600 — 下雨 10 分钟
    /difficulty <值> 修改难度 /difficulty hard
    /gamerule <规则> <值> 修改游戏规则 /gamerule keepInventory true
    /gamerule doDaylightCycle false 冻结日夜循环 太阳停止移动
    /gamerule doFireTick false 禁止火焰蔓延 木质建筑不会被烧
    /gamerule mobGriefing false 怪物不破坏方块 苦力怕不炸方块
    /seed 查看世界种子 显示生成世界的随机种子
    /locate structure <结构> 定位结构 /locate structure village_desert

    服务器维护

    指令 说明 详细用途
    /save-all 立即保存世界 强制将内存中的世界数据写入硬盘。重要操作前(如备份、重启)先执行此命令。
    /save-on 开启自动保存 默认就是开启的。如果你临时关闭了自动保存,用这个恢复。
    /save-off 关闭自动保存 暂时关闭自动保存。执行大型建筑操作时使用,完成后记得 save-on 和 save-all。
    /stop 安全关闭服务器 ★★★ 这是关闭服务器的正确方式!它会自动先执行 save-all,然后关闭。千万不要直接点 × 关闭窗口!
    /restart 重启服务器 Paper 支持的热重启,不需要关闭 CMD 窗口。
    /reload 重载配置 重新加载 server.properties 和插件配置。但建议 restart 更安全。
    /reload confirm 确认重载 因为 reload 有风险(可能导致数据丢失),Paper 要求输入两次确认。
    /say <消息> 发送服务器公告 用于向全体在线玩家广播消息。消息会以粉色文字显示。
    /msg <玩家> <消息> 私聊玩家 /msg Steve 你的房子盖好了吗?
    /me <动作> 发出动作描述 /me 正在维护服务器... → 显示为 *服主 正在维护服务器...

    游戏内常用 gamerule(游戏规则)

    在控制台或游戏内用 /gamerule 可以随时修改这些规则:

    规则名 默认值 效果
    keepInventory false true = 死亡不掉落物品
    doFireTick true false = 火焰不会蔓延(防烧家)
    mobGriefing true false = 苦力怕/末影人不破坏方块
    doDaylightCycle true false = 冻结日夜循环
    doWeatherCycle true false = 冻结天气变化
    doInsomnia true false = 幻翼不会生成
    doPatrolSpawning true false = 不生成灾厄巡逻队
    doTraderSpawning true false = 不生成流浪商人
    disableRaids false true = 禁用袭击事件
    announceAdvancements true false = 不显示成就提示
    commandBlockOutput true false = 不显示命令方块输出
    logAdminCommands true false = 不在日志中记录管理指令
    randomTickSpeed 3 3=默认速度,0=禁用随机刻,更高=植物生长更快
    spawnRadius 10 出生点随机分布半径(格)

    1.14 插件安装与管理(Windows / Paper 服务器)

    插件(Plugin)是 Minecraft 服务器的灵魂。它们不会修改游戏客户端,而是在服务器端添加各种功能——经济系统、领地保护、小游戏、反作弊等等。

    插件的运行机制

    1. 插件是 .jar 文件,放在 plugins/ 文件夹中

    2. 服务器启动时会自动扫描 plugins/ 文件夹,加载所有 .jar 文件

    3. 首次加载后,插件会在 plugins/<插件名>/ 下生成自己的配置文件

    4. 修改配置后一般需要重启或 reload 才能生效

    如何安装一个插件?以 EssentialsX 为例

    步骤 1:关闭服务器

    在控制台输入 stop,确保服务器完全关闭。

    虽然理论上可以在运行中加入插件然后 reload,但安装新插件最好完全重启。

    步骤 2:下载插件

    访问 SpigotMC 资源站:https://www.spigotmc.org/resources/

    搜索 "EssentialsX",进入插件页面。

    EssentialsX 是一个基础指令套装插件,提供了 /home、/warp、/spawn、/tpa 等最常用的命令。

    步骤 3:注意依赖插件

    EssentialsX 的页面会提示它依赖 Vault 插件(Vault 是经济系统的基础 API)。

    下载 EssentialsX 和 Vault 两个 .jar 文件。

    步骤 4:放入 plugins 文件夹

    将下载的 EssentialsX.jar 和 Vault.jar 复制到 minecraft-server/plugins/ 文件夹中。

    步骤 5:启动服务器

    双击 start.bat 重新启动。

    在启动日志中你会看到类似这样的信息:

    
    [Server thread/INFO]: [Essentials] Enabling Essentials v2.21.0
    [Server thread/INFO]: [Vault] Enabling Vault v1.7.3
    

    步骤 6:验证插件是否工作

    进入游戏后,在聊天栏输入:

    /plugins

    你会看到已加载的插件列表,Essentials 和 Vault 应该都在列表中。

    /help Essentials

    查看这个插件提供的所有指令。试试输入 /home(如果没有设置过,会提示 /sethome)。

    常用的插件下载站点

  • SpigotMC:https://www.spigotmc.org/resources/ — 最大的插件市场
  • PaperMC:https://hangar.papermc.io/ — Paper 官方的现代插件平台
  • Modrinth:https://modrinth.com/plugins — 同时支持模组和插件的开源平台
  • Bukkit:https://dev.bukkit.org/ — 老牌插件站,很多经典插件仍在这里
  • 插件与服务器版本兼容性

    ⚠️ 安装插件前必须确认它支持你的 Minecraft 版本!一个为 1.19 编写的插件不一定能在 1.21 上正常工作,可能导致服务器崩溃或数据损坏。在插件页面上寻找 "Tested Minecraft Versions" 或 "Native Minecraft Version" 字段。

    1.15 世界存档备份(Windows)

    服务器世界存档是你最宝贵的资产——它承载了你和朋友们数百小时的创造。养成定期备份的习惯,当灾难发生时(硬盘损坏、误操作、熊孩子破坏),你可以恢复到之前的存档。

    备份什么?

    至少备份以下三个文件夹(如果存在):

  • world/ —— 主世界
  • world_nether/ —— 下界
  • world_the_end/ —— 末地
  • 方法一:手动备份(最简单)

    1. 在服务器控制台输入 save-all(确保数据已保存到硬盘)

    2. 在服务器控制台输入 save-off(暂停自动保存,防止备份过程中数据变化)

    3. 复制 world、world_nether、world_the_end 三个文件夹到 backups/ 文件夹

    4. 在 backups/ 中将粘贴的文件夹重命名,加上日期(如 world-2024-01-15)

    5. 在服务器控制台输入 save-on(恢复自动保存)

    方法二:使用批处理脚本自动备份

    创建 backup.bat 文件(放在 minecraft-server 文件夹中),内容如下:

    
    @echo off
    

    setlocal enabledelayedexpansion

    
    :: 设置日期格式为 YYYY-MM-DD
    set TODAY=%date:~0,4%-%date:~5,2%-%date:~8,2%
    :: 创建备份目录
    set BACKUP_DIR=backups\%TODAY%
    :: 如果今天的备份已存在,询问是否覆盖
    if exist "%BACKUP_DIR%" (
    echo 今天的备份已存在: %BACKUP_DIR%
    

    choice /c YN /m "是否覆盖?"

    if errorlevel 2 exit /b

    )

    
    echo ================================
    echo  [%date% %time%] 开始备份...
    echo ================================
    :: 备份三个世界文件夹(使用 robocopy 支持增量复制)
    echo [1/3] 备份主世界 (world)...
    robocopy world "%BACKUP_DIR%\world" /e /z /np >nul
    echo [2/3] 备份下界 (world_nether)...
    if exist world_nether robocopy world_nether "%BACKUP_DIR%\world_nether" /e /z /np >nul
    echo [3/3] 备份末地 (world_the_end)...
    if exist world_the_end robocopy world_the_end "%BACKUP_DIR%\world_the_end" /e /z /np >nul
    echo ================================
    echo  备份完成!路径: %BACKUP_DIR%
    echo ================================
    

    pause

    使用 robocopy 的好处是——第二次备份同一个世界时只会复制发生变化的文件,速度极快。

    方法三:Windows 任务计划程序(全自动每日备份)

    你可以使用 Windows 自带的"任务计划程序"让备份每天自动运行:

    1. 按 Win + R,输入 taskschd.msc,回车打开"任务计划程序"

    2. 右侧点击"创建基本任务"

    3. 名称填写"Minecraft Server Backup",点击"下一步"

    4. 触发器选择"每天",设置合适的时间(如凌晨 4:00),点击"下一步"

    5. 操作选择"启动程序",浏览选择你创建的 backup.bat,点击"下一步"

    6. 点击"完成"

    💡 备份时间最好选在服务器玩家最少的时候(凌晨 3-5 点)。如果在备份期间服务器在运行,需要先 save-all 再备份。更好的做法是让备份脚本通过 RCON 自动执行 save-all。

    如何恢复备份?

    1. 确保服务器已关闭(输入 stop)

    2. 将当前的 world/ 文件夹重命名为 world_broken/(先保留,以防万一)

    3. 从 backups/ 中找到要恢复的备份文件夹

    4. 将备份中的 world/ 文件夹复制回 minecraft-server/ 根目录

    5. 检查 server.properties 中的 level-name 是否和恢复的文件夹名匹配

    6. 重新启动服务器

    1.16 JVM 启动参数深度优化(Windows)

    前面的启动脚本使用的是最基本的 Java 参数。对于追求极致性能的玩家,以下是一套被社区广泛认可的优化参数(Aikar's Flags),适用于 Paper/Purpur 服务器。

    什么是 JVM 启动参数?

    Java 虚拟机(JVM)是运行 Minecraft 服务器的环境。通过调整 JVM 启动参数,你可以控制 Java 如何管理内存、如何执行垃圾回收(GC)、如何处理并发等。合理的参数可以显著提升服务器性能,不合理的参数则可能适得其反。

    优化版启动脚本(推荐进阶用户使用)

    在 start.bat 中使用以下 Java 启动参数(替换原来的 java -Xms... -Xmx... 那一行):

    
    @echo off
    

    title Minecraft Server - Paper 1.21 (Optimized)

    
    java -Xms4G -Xmx4G ^
    

    -XX:+UseG1GC ^

    -XX:+ParallelRefProcEnabled ^

    -XX:MaxGCPauseMillis=200 ^

    -XX:+UnlockExperimentalVMOptions ^

    -XX:+DisableExplicitGC ^

    -XX:+AlwaysPreTouch ^

    -XX:G1NewSizePercent=30 ^

    -XX:G1MaxNewSizePercent=40 ^

    -XX:G1HeapRegionSize=8M ^

    -XX:G1ReservePercent=20 ^

    -XX:G1HeapWastePercent=5 ^

    -XX:G1MixedGCCountTarget=4 ^

    -XX:InitiatingHeapOccupancyPercent=15 ^

    -XX:G1MixedGCLiveThresholdPercent=90 ^

    -XX:G1RSetUpdatingPauseTimePercent=5 ^

    -XX:SurvivorRatio=32 ^

    -XX:+PerfDisableSharedMem ^

    -XX:MaxTenuringThreshold=1 ^

    -Dusing.aikars.flags=https://mcflags.emc.gs ^

    -Daikars.new.flags=true ^

    -jar server.jar nogui

    pause

    逐项解释这些参数的作用:

  • -Xms4G -Xmx4G:初始和最大内存设为相同值(4GB),避免 JVM 在运行时不断调整堆大小
  • -XX:+UseG1GC:使用 G1(Garbage First)垃圾回收器。这是 Java 21 的默认 GC,最适合 Minecraft 工作负载
  • -XX:+ParallelRefProcEnabled:并行处理引用对象,加快 GC 速度
  • -XX:MaxGCPauseMillis=200:GC 暂停目标 200 毫秒。G1 会尽量把每次 GC 暂停控制在这个时间内
  • -XX:+UnlockExperimentalVMOptions:解锁实验性选项(后面的参数需要)
  • -XX:+DisableExplicitGC:禁止代码调用 System.gc(),防止不必要的全堆 GC
  • -XX:+AlwaysPreTouch:启动时预分配所有内存页,减少运行时缺页中断导致的卡顿
  • -XX:G1NewSizePercent=30:新生代最小占比 30%,给年轻对象更多空间
  • -XX:G1HeapRegionSize=8M:每个堆区域 8MB,适合内存较大的服务器
  • -XX:G1ReservePercent=20:保留 20% 堆空间作为紧急缓冲区
  • -XX:G1HeapWastePercent=5:允许 5% 的堆空间浪费以避免频繁 GC
  • -XX:G1MixedGCCountTarget=4:混合 GC 目标次数
  • -XX:InitiatingHeapOccupancyPercent=15:堆占用率达到 15% 就开始并发标记周期
  • -XX:SurvivorRatio=32:新生代中 Eden 区与 Survivor 区的比例
  • -XX:+PerfDisableSharedMem:禁用性能计数器共享内存(避免 %tmp% 文件夹权限问题)
  • -XX:MaxTenuringThreshold=1:对象在新生代存活 1 次 GC 后就被移到老年代
  • 💡 Aikar's Flags 是社区公认最优参数,但使用前请确保你了解每个参数的作用。不同的硬件环境可能需要微调。详细文档:https://flags.sh

    1.17 Windows 常见问题排错

    以下是在 Windows 平台开服过程中最常遇到的问题及解决方案。

    问题 1:双击 start.bat 闪一下就没了

    原因:Java 未安装或未正确配置环境变量。

    解决步骤:

    1. 打开命令提示符(Win+R → cmd → 回车)

    2. 输入 java -version,看是否正常显示版本信息

    3. 如果提示"不是内部或外部命令",说明 Java 没有添加到 PATH

    4. 重新按照 1.2 节的方法安装 Java 并配置环境变量

    5. 另外检查 server.jar 是否在正确的位置(和 start.bat 在同一文件夹)

    问题 2:Error: Could not create the Java Virtual Machine

    原因:分配给 JVM 的内存超过了系统可用内存。

    解决:检查 start.bat 中的 -Xmx 值,降低内存分配。例如从 -Xmx8G 改为 -Xmx4G。

    也可以打开任务管理器 → 性能 → 内存,查看实际可用的剩余内存。

    问题 3:java.lang.OutOfMemoryError: Java heap space

    原因:服务器分配的堆内存用完了。

    解决:

    1. 增加 -Xmx 值(例如从 2G 改为 4G)

    2. 降低 view-distance(视距)到 8 或更低

    3. 安装 Chunky 插件预生成区块,减少实时算地形的压力

    4. 检查是否有内存泄漏的插件(逐个禁用插件排查)

    问题 4:服务器显示 "Can't keep up!" 警告

    原因:服务器 Tick 处理时间超过 50ms,即 TPS 下降。

    出现这个警告意味着服务器跟不上 20 TPS 的标准速度,玩家会感到延迟和卡顿。

    解决(按优先级排序):

    1. 降低 server.properties 中的 view-distance(视距),从 10 降到 8 甚至 6

    2. 降低 simulation-distance,从 10 降到 6

    3. 检查是否有大量生物堆积(在控制台输入 /kill @e[type=minecraft:bat] 等清理无用实体)

    4. 使用 Spark 插件(/spark profiler)定位性能瓶颈

    5. 检查是否有卡顿的红石机器或生物农场

    6. 从 Vanilla 核心换到 Paper 核心(性能提升最明显)

    7. 升级 CPU 或增加分配内存

    问题 5:朋友连不上服务器

    这是最常见的问题,按以下顺序逐一排查:

    1. 确认服务器正在运行(CMD 窗口显示 "Done!")

    2. 确认 Windows 防火墙已放行 25565 端口(1.9 节)

    3. 确认路由器端口映射已设置(1.10 节)

    4. 使用在线端口检测工具验证(1.11 节)

    5. 确认你的公网 IP 没有变化(重新搜索"我的 IP"对比)

    6. 如果是盗版服,确认 online-mode=false(1.8 节)

    7. 如果有第三方杀毒软件,检查其防火墙设置

    8. 尝试让朋友直接输入 IP:25565(带上端口号)

    9. 如果以上都确认没问题,可能是运营商 NAT444 问题——参考 1.10 节的运营商限制部分

    问题 6:游戏出现 "Failed to verify username" 错误

    原因:online-mode=true 但玩家使用盗版登录(或 Mojang 验证服务暂时不可用)。

    解决:如果允许盗版玩家,在 server.properties 中设置 online-mode=false。

    问题 7:服务器端口被占用

    原因:25565 端口已经被另一个程序占用(可能是另一个 MC 服务器实例)。

    错误信息通常为:

    **** FAILED TO BIND TO PORT!

    解决:

    1. 在 CMD 中查看端口占用情况:

    
    netstat -ano | findstr :25565
    

    2. 找到占用该端口的程序 PID

    3. 在任务管理器中结束该进程,或修改 server.properties 中的 server-port 为其他端口(如 25566)

    第二部分:Linux 平台开服教程

    2.1 Linux 开服的优势

    虽然 Windows 也可以开服,但 Linux 在服务器领域有压倒性的优势:

    1. 性能更好:Linux 占用的系统资源远少于 Windows。同样是 4GB 内存的云服务器,Windows 系统本身就要占用 2GB+,Linux 可能只需 200MB。多出来的内存都可以给 MC 服务器。

    2. 更加稳定:Linux 服务器可以连续运行几个月甚至几年不重启。Windows 经常会因为系统更新而自动重启。

    3. 成本更低:大多数云服务商的 Linux 服务器比同等配置的 Windows 服务器便宜。

    4. 社区更成熟:绝大多数大型 Minecraft 服务器都运行在 Linux 上,你遇到任何问题都能找到解决方案。

    5. 命令行原生支持:Minecraft 服务器本质上是命令行程序,Linux 的命令行环境远比 Windows 强大。远程 SSH 管理也非常方便。

    6. Docker 支持:可以轻松将服务器容器化,迁移和扩展极为方便。

    ⭐ 如果你认真考虑长期运营 MC 服务器,强烈建议学习 Linux。前期的一点学习成本,会在后续的稳定性和灵活性上得到百倍回报。

    2.2 服务器选购与初始配置(Linux)

    云服务器 vs 物理机 vs 虚拟机

    方案 优点 缺点 推荐人群
    云服务器(阿里云/腾讯云/华为云等) 稳定可靠、弹性扩容、BGP多线网络、有快照备份 月费较高、带宽有限 ⭐ 首选方案
    VPS(良心云海外/搬瓦工/Vultr等) 价格便宜、带宽大 网络质量不如国内云、售后较弱 预算有限的海外服
    家里闲置电脑装 Linux 完全免费、完全控制 家庭带宽上行差、用电成本、噪音 学习实验、局域网
    树莓派等 ARM 单板 极小功耗、极其安静 性能很弱、ARM 兼容性问题 极客玩家、轻量服

    推荐的最低配置(云服务器)

    玩家人数 CPU 内存 系统盘 带宽 月费参考
    1-5 人 2 核 4 GB 40 GB SSD 3 Mbps ¥60-80
    5-15 人 4 核 8 GB 60 GB SSD 5 Mbps ¥120-200
    15-30 人 4 核高频 12-16 GB 80 GB NVMe 8-10 Mbps ¥250-400
    30-80 人 8 核高频 16-32 GB 120 GB NVMe 15-20 Mbps ¥500-1000

    推荐的操作系统

  • Ubuntu Server 22.04 LTS / 24.04 LTS —— 资料最多、社区最活跃、教程最丰富(新手首选)
  • Debian 12 —— 极致稳定,适合有经验的用户
  • Rocky Linux 9 / AlmaLinux 9 —— 企业级稳定性,兼容 Red Hat 生态
  • 本教程以 Ubuntu Server 22.04 为主要演示系统,Debian 和 CentOS/Rocky 用户请参考对应注释。

    购买服务器后的初始设置

    假设你已在云服务商处购买了一台 Ubuntu 22.04 服务器。以下是拿到服务器后的第一步操作。

    步骤 1:通过 SSH 连接到服务器

    如果你是第一次接触 SSH,它是一个让你通过命令行远程控制另一台电脑的协议。

    在 Windows 上,推荐使用以下任一 SSH 客户端:

  • Windows Terminal(Windows 10/11 内置,在 CMD 或 PowerShell 中直接使用 ssh 命令)
  • PowerShell(Windows 10/11 内置,自带 SSH 客户端)
  • PuTTY(老牌 SSH 客户端,图形界面,适合完全不会命令行的新手)
  • Tabby / MobaXterm(功能更强大的第三方终端)
  • 使用 PowerShell 或 CMD 连接:

    
    ssh root@你的服务器公网IP
    

    例如你的服务器 IP 是 123.45.67.89:

    
    ssh root@123.45.67.89
    

    首次连接会提示确认服务器的指纹(fingerprint),输入 yes 然后回车。

    然后输入你在云服务商设置的 root 密码(注意:输入密码时屏幕不会显示任何字符,这是安全设计,不是卡住了)。

    步骤 2:更新系统

    连接成功后,第一件事就是更新系统到最新状态:

    
    apt update          # 更新软件包列表
    apt upgrade -y      # 升级所有已安装的软件包
    

    解释:

  • apt update:从软件源获取最新的软件包列表信息
  • apt upgrade -y:安装所有可用的升级,-y 表示自动确认(不需要手动输入 yes)
  • 这个过程可能需要几分钟,取决于你的服务器网络和系统的新旧程度。

    如果是 CentOS / Rocky Linux,对应的命令是:

    
    dnf update -y
    

    步骤 3:安装常用的基础工具

    
    apt install -y wget curl vim git unzip screen htop
    

    各个工具的用途:

  • wget / curl:下载文件(后面会用它们下载服务器核心)
  • vim:文本编辑器(用于编辑配置文件)
  • git:版本控制工具
  • unzip:解压 .zip 文件
  • screen:终端会话管理器(让服务器在后台持续运行)
  • htop:系统监控工具(查看 CPU、内存使用)
  • 2.3 SSH 连接与基础环境配置(Linux)

    SSH 使用技巧

  • 断开 SSH 连接:输入 exit 或按 Ctrl + D
  • 复制粘贴:在大多数 SSH 客户端中,选中文字即复制,右键点击即粘贴
  • 多终端:可以打开多个终端窗口同时连接同一台服务器
  • 快捷键:Ctrl + C 终止当前命令,Ctrl + Z 暂停当前命令,Ctrl + L 清屏
  • 配置 SSH 密钥登录(可选但推荐)

    密码登录每次都要输入密码,而且不如密钥安全。如果你打算长期管理这台服务器,建议配置 SSH 密钥登录。

    在你自己电脑上(不是服务器),生成 SSH 密钥对:

    ssh-keygen -t ed25519 -C "minecraft-server"

    一路回车即可(不要设置密码短语可以免密登录)。

    然后把公钥复制到服务器上:

    ssh-copy-id root@你的服务器IP

    之后你就可以直接 ssh root@IP 登录,不需要输入密码了。

    文件传输

    如果你需要把本地文件(如插件 .jar 文件)传到服务器上,使用 scp 命令:

    
    scp 本地文件路径 root@服务器IP:/目标路径/
    

    示例:

    
    scp myplugin.jar root@123.45.67.89:/opt/minecraft/plugins/
    

    从服务器下载文件到本地:

    
    scp root@123.45.67.89:/opt/minecraft/logs/latest.log .
    

    2.4 Java 安装(Linux - 各发行版)

    Ubuntu / Debian

    方法一:使用 apt 直接安装(最简单)

    
    apt update
    apt install -y openjdk-21-jdk-headless
    

    注意加上了 -headless,因为我们不需要图形界面相关的 Java 组件,可以节省空间。

    方法二:使用 Temurin 官方仓库(获取最新版本)

    
    # 添加 Temurin APT 仓库
    wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /usr/share/keyrings/adoptium.gpg > /dev/null
    echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
    # 安装 Java 21
    apt update
    apt install -y temurin-21-jdk
    

    验证安装:

    
    java -version
    # 应该输出类似 openjdk version "21.0.x"...
    

    CentOS / Rocky Linux / AlmaLinux

    
    dnf install -y java-21-openjdk-headless
    java -version
    

    使用 SDKMAN 管理多个 Java 版本(高级)

    如果你需要在一台服务器上运行多个不同版本的 MC 服务器(比如一个 1.21 和 一个 1.16),可以使用 SDKMAN 来管理多个 Java 版本,随时切换。

    
    # 安装 SDKMAN
    curl -s "https://get.sdkman.io" | bash
    source "$HOME/.sdkman/bin/sdkman-init.sh"
    # 安装 Java 21
    sdk install java 21.0.5-tem
    # 安装 Java 17
    sdk install java 17.0.13-tem
    # 切换到 Java 21
    sdk use java 21.0.5-tem
    # 设置默认 Java 版本
    sdk default java 21.0.5-tem
    

    2.5 创建专用用户与目录结构(Linux)

    安全最佳实践:绝对不要用 root 用户运行 Minecraft 服务器!万一服务器出现安全漏洞,攻击者将获得 root 权限,可以完全控制你的服务器。创建一个专用的普通用户来运行 MC 服务器。

    步骤 1:创建专用系统用户

    
    # 创建 minecraft 用户(无登录密码,不能通过 SSH 直接登录)
    

    useradd -r -m -d /opt/minecraft -s /bin/bash minecraft

    参数解释:

  • -r:创建系统用户(没有家目录下的常规文件夹)
  • -m -d /opt/minecraft:创建家目录在 /opt/minecraft
  • -s /bin/bash:设置 Shell 为 bash
  • 步骤 2:切换到 minecraft 用户并创建目录

    
    su - minecraft
    

    这条命令会将当前用户从 root 切换为 minecraft。你会看到提示符从 root@xxx 变为 minecraft@xxx。

    
    # 创建服务器目录(此时你已经是 minecraft 用户)
    pwd                      # 确认当前在 /opt/minecraft
    mkdir -p server          # 创建 server 子目录
    mkdir -p server/plugins  # 插件目录
    mkdir -p server/backups  # 备份目录
    

    cd server # 进入服务器目录

    
    pwd                      # 确认在 /opt/minecraft/server
    

    目录结构确认:

    /opt/minecraft/server/

    
    ├── plugins/      ← 插件
    └── backups/      ← 备份
    

    2.6 下载服务器核心(Linux)

    以 Paper 1.21.1 为例。我们会使用 wget 命令直接下载。

    首先确认你仍在 minecraft 用户下,且当前目录为 /opt/minecraft/server:

    
    whoami                  # 应显示 minecraft
    pwd                     # 应显示 /opt/minecraft/server
    

    方法一:从 PaperMC 官网直接下载(推荐)

    PaperMC 提供了 API 接口,可以直接下载最新版本:

    
    # 下载 Paper 1.21.1 的最新构建
    wget -O server.jar https://api.papermc.io/v2/projects/paper/versions/1.21.1/builds/latest/downloads/paper-1.21.1-latest.jar
    

    参数解释:

  • wget -O server.jar:下载文件并保存为 server.jar
  • 后面的是 PaperMC API 地址,latest 会自动获取最新构建
  • 如果你想下载特定构建号(而不是 latest),可以这样:

    
    # 下载构建 #140
    wget -O server.jar https://api.papermc.io/v2/projects/paper/versions/1.21.1/builds/140/downloads/paper-1.21.1-140.jar
    

    方法二:从官网手动下载后上传

    1. 在你自己的电脑浏览器上访问 https://papermc.io/downloads

    2. 选择版本,下载 .jar 文件

    3. 使用 scp 上传到服务器:

    
    scp paper-1.21.1-xxx.jar root@你的IP:/opt/minecraft/server/server.jar
    

    其他核心的下载命令

    Vanilla:

    
    wget -O server.jar https://piston-data.mojang.com/v1/objects/59353fb...(完整链接在官网获取)
    

    Purpur:

    
    wget -O server.jar https://api.purpurmc.org/v2/purpur/1.21.1/latest/download
    

    Fabric:

    
    curl -OJ https://meta.fabricmc.net/v2/versions/loader/1.21.1/0.16.5/1.0.0/server/jar
    

    确认下载成功:

    
    ls -lh server.jar
    # 应显示文件大小和名称,例如:
    # -rw-rw-r-- 1 minecraft minecraft 52M Jan 15 10:30 server.jar
    

    2.7 编写启动脚本(Linux)

    与 Windows 的 .bat 脚本对应,Linux 使用 Shell 脚本(.sh)。

    步骤 1:创建启动脚本

    使用 vim(或你习惯的编辑器)创建 start.sh 文件:

    
    vim start.sh
    

    在 vim 中,按 i 进入编辑模式,粘贴以下内容:

    
    #!/bin/bash
    # Minecraft Server 启动脚本 - Paper 1.21.1
    # 文件位置: /opt/minecraft/server/start.sh
    #============================================
    # 配置区:根据你的服务器修改以下参数
    #============================================
    # 最小内存(建议和最大内存设为相同值)
    

    MIN_RAM="2G"

    
    # 最大内存(不要超过系统可用内存的 70%)
    

    MAX_RAM="4G"

    
    # 服务器核心文件名
    

    SERVER_JAR="server.jar"

    
    #============================================
    # 以下一般不需要修改
    #============================================
    # 服务器启动命令
    echo "================================"
    echo "  Minecraft 服务器启动中..."
    echo "  内存分配: $MIN_RAM ~ $MAX_RAM"
    echo "  核心文件: $SERVER_JAR"
    echo "  启动时间: $(date)"
    echo "================================"
    java -Xms$MIN_RAM -Xmx$MAX_RAM -jar $SERVER_JAR nogui
    

    保存并退出 vim:按 Esc 键(确保退出了编辑模式),输入 :wq 然后回车。

    步骤 2:赋予执行权限

    Linux 中新建的文件默认没有执行权限,需要手动添加:

    
    chmod +x start.sh
    chmod +x 的意思是"给这个文件添加可执行权限"。
    

    步骤 3:验证脚本

    
    ls -l start.sh
    

    应该看到类似 -rwxrw-r-- 的输出。注意有一个 x(execute),表示可执行。

    带自动重启的高级启动脚本

    创建 start_restart.sh:

    
    #!/bin/bash
    # 带自动重启的 Minecraft 服务器启动脚本
    

    MIN_RAM="4G"

    MAX_RAM="4G"

    SERVER_JAR="server.jar"

    
    while true; do
    echo "================================"
    echo "  Minecraft 服务器启动中..."
    echo "  启动时间: $(date)"
    echo "  自动重启模式: 已开启"
    echo "================================"
    java -Xms$MIN_RAM -Xmx$MAX_RAM -jar $SERVER_JAR nogui
    echo "================================"
    echo "  服务器已关闭 ($(date))"
    echo "  10 秒后自动重启..."
    echo "  按 Ctrl+C 取消自动重启"
    echo "================================"
    

    sleep 10

    done

    
    while true; do ... done 创建了一个无限循环。当 Java 进程退出(服务器关闭/崩溃)后,脚本等待 10 秒然后重新启动。
    

    2.8 首次启动与 EULA(Linux)

    步骤 1:首次运行

    确保当前在 /opt/minecraft/server/ 目录下:

    
    pwd                     # 确认当前目录
    

    ./start.sh # 运行启动脚本

    和 Windows 一样,首次启动会生成 eula.txt 然后退出,并提示你需要同意 EULA。

    步骤 2:同意 EULA

    
    ls -la                  # 查看生成了哪些文件
    

    你应该能看到 eula.txt 和 server.properties 等文件。

    
    cat eula.txt            # 查看 eula.txt 内容
    

    你看到的内容中,最后一行应该是 eula=false。

    用 vim 编辑 eula.txt:

    
    vim eula.txt
    

    按 i 进入编辑模式,将 eula=false 改为 eula=true。

    按 Esc 退出编辑模式,输入 :wq 保存退出。

    或者直接用 sed 命令一键修改:

    
    sed -i 's/eula=false/eula=true/' eula.txt
    

    参数解释:sed -i 表示直接修改文件内容,s/旧值/新值/ 表示替换。

    步骤 3:再次启动

    ./start.sh

    这次服务器会正常启动。看到 "Done (XX.XXXs)!" 表示成功!

    2.9 核心配置文件详解(Linux)

    Linux 下的 server.properties 与 Windows 版本完全相同(毕竟是同一个 Minecraft 程序)。请参考本文档 1.8 节的完整配置说明。这里只补充 Linux 特有的操作方式。

    Linux 下编辑 server.properties

    使用 vim 编辑:

    
    vim server.properties
    vim 基本操作复习:
    
  • 按 i → 进入编辑模式(可以修改内容)
  • 按 Esc → 退出编辑模式
  • 输入 :wq → 保存并退出
  • 输入 :q! → 不保存强制退出
  • 输入 /关键词 → 搜索(按 n 下一个,N 上一个)
  • 使用 nano 编辑(对新手更友好):

    
    nano server.properties
    nano 操作:
    
  • 直接用方向键移动光标,直接编辑
  • Ctrl + O → 保存
  • Ctrl + X → 退出
  • Ctrl + W → 搜索
  • 修改完成后重启服务器使配置生效:

    ./start.sh # 如果服务器已关闭

    
    # 或者如果服务器正在运行(在 screen 中),在控制台输入:
    

    reload confirm

    
    # 注意:reload 有一定风险,restart 更安全
    

    2.10 Linux 防火墙配置

    Linux 有多种防火墙方案。云服务器通常在云服务商层面也有安全组(下一节介绍),所以部分云服务器默认没有开启系统防火墙。但为了安全,建议同时配置。

    UFW(Ubuntu 默认推荐)

    UFW(Uncomplicated Firewall)是 Ubuntu 上最简单易用的防火墙前端。

    
    # 检查 UFW 状态
    ufw status
    # 如果显示 inactive(未激活),先配置再开启
    # 允许 SSH(非常重要!否则开启防火墙后你无法连接服务器)
    ufw allow 22/tcp
    ufw allow 22    # SSH 也可以不指定协议
    # 允许 Minecraft 服务器端口
    ufw allow 25565/tcp
    ufw allow 25565/udp
    # 查看规则
    ufw status numbered
    # 开启防火墙
    ufw enable
    # 提示:此操作可能会中断 SSH 连接(如果 22 端口已放行则不会),输入 y 确认
    # 再次检查状态
    ufw status verbose
    

    输出应该显示 22/tcp、25565/tcp、25565/udp 均为 ALLOW。

    
    iptables(通用方案,所有 Linux 发行版可用)
    iptables 是 Linux 内核自带的防火墙,几乎所有发行版都支持。
    # 允许本地回环
    iptables -A INPUT -i lo -j ACCEPT
    # 允许已建立的连接
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    # 允许 SSH(非常重要!)
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    # 允许 Minecraft
    iptables -A INPUT -p tcp --dport 25565 -j ACCEPT
    iptables -A INPUT -p udp --dport 25565 -j ACCEPT
    # 查看规则
    iptables -L -n -v
    

    保存 iptables 规则(Ubuntu/Debian):

    
    apt install -y iptables-persistent
    

    netfilter-persistent save

    
    firewalld(CentOS / Rocky Linux / Fedora 默认)
    # 检查状态
    systemctl status firewalld
    # 如果没有运行,启动它
    systemctl start firewalld
    systemctl enable firewalld
    # 允许 Minecraft 端口
    firewall-cmd --permanent --add-port=25565/tcp
    firewall-cmd --permanent --add-port=25565/udp
    # 重载规则
    firewall-cmd --reload
    # 查看已开放的端口
    firewall-cmd --list-ports
    

    2.11 云服务器安全组配置

    如果你使用阿里云、腾讯云、华为云等国内云服务商,除 Linux 系统防火墙外,还需要在云服务商控制台的"安全组"中开放端口。安全组相当于服务器外面的另一层防火墙。

    通用配置逻辑(适用所有云服务商)

    1. 登录云服务商控制台

    2. 找到你的服务器实例,点击进入详情

    3. 找到"安全组"或"防火墙"标签页

    4. 添加入方向规则:

    配置项 说明
    协议 TCP Minecraft 主通信协议
    端口范围 25565 Minecraft Java 版默认端口
    源 IP 0.0.0.0/0 允许所有 IP 访问(如果想限制只有朋友能进,填他们的 IP)
    描述 Minecraft Server 备注,方便你日后管理

    5. 再添加一条 UDP 25565 规则(用于服务器查询功能)

    各云服务商操作入口

  • 阿里云:ECS 控制台 → 实例 → 安全组 → 配置规则 → 入方向 → 手动添加
  • 腾讯云:轻量应用服务器 → 防火墙 → 添加规则
  • 华为云:ECS → 安全组 → 配置规则 → 入方向规则 → 添加规则
  • AWS:EC2 → Security Groups → Inbound rules → Edit → Add rule
  • Azure:虚拟机 → 网络 → 添加入站端口规则
  • 2.12 使用 Screen/tmux 保持后台运行(Linux)

    这是 Linux 开服最重要的知识点之一!如果你直接在 SSH 终端中运行 ./start.sh,一旦关闭 SSH 窗口,服务器进程也会被终止。Screen 和 tmux 解决了这个问题——它们创建了一个独立的"虚拟终端",即使你断开 SSH,里面的程序也会继续运行。

    Screen 使用教程(推荐新手)

    Screen 已经在我们前面安装基础工具时装好了。如果还没有:

    
    apt install -y screen
    

    基本操作流程:

    ① 创建一个新的 Screen 会话:

    
    screen -S mcserver
    

    -S mcserver 参数给这个会话起了一个名字叫 "mcserver"。执行后你会进入一个新的终端界面。

    ② 在 Screen 会话中启动服务器:

    cd /opt/minecraft/server

    ./start.sh

    服务器开始在 Screen 会话中运行,你会看到熟悉的启动日志。

    ③ 脱离(detach)Screen 会话:

    按下键盘组合键:先按 Ctrl + A,松开,再按 D。

    屏幕会显示 "[detached from ...]" 然后回到你之前的 SSH 终端。

    注意:服务器并没有停止!它仍在 Screen 会话中继续运行。你现在可以安全地关闭 SSH 窗口了。

    ④ 重新连接(attach)到 Screen 会话:

    下次 SSH 连接服务器后,输入:

    
    screen -r mcserver
    

    你会重新看到服务器的控制台界面,可以继续输入指令。

    ⑤ Screen 的更多操作:

    命令 用途
    screen -ls 列出所有 Screen 会话
    screen -r mcserver 重新连接到名为 mcserver 的会话
    screen -d mcserver 强制分离一个会话(如果它被其他终端占用)
    screen -S mcserver -X quit 关闭一个 Screen 会话
    Ctrl+A, D 脱离当前会话
    Ctrl+A, K 杀死当前会话
    Ctrl+A, [ 进入滚动模式(用上下键翻看历史输出,按 Esc 退出)
    Ctrl+A, C 创建新窗口
    Ctrl+A, N 下一个窗口
    Ctrl+A, P 上一个窗口
    
    tmux 使用教程(更现代的选择)
    tmux 是 Screen 的现代替代品,功能更强大。如果未安装:
    apt install -y tmux
    

    基本操作流程:

    ① 创建新会话并启动服务器:

    
    tmux new -s mcserver
    

    cd /opt/minecraft/server && ./start.sh

    ② 脱离会话:

    按 Ctrl + B,松开,再按 D。

    ③ 重新连接:

    
    tmux attach -t mcserver
    

    ④ 更多操作:

    命令 用途
    tmux ls 列出所有 tmux 会话
    tmux attach -t mcserver 连接到 mcserver 会话
    tmux kill-session -t mcserver 杀死 mcserver 会话
    Ctrl+B, D 脱离会话
    Ctrl+B, [ 滚动模式(PageUp/PageDown 翻页,Q 退出)
    Ctrl+B, % 纵向分屏
    Ctrl+B, " 横向分屏

    ✅ 使用 Screen 还是 tmux?新手推荐 Screen(更简单),进阶用户推荐 tmux(更强大)。两者都能完成基本任务。

    2.13 注册为 systemd 系统服务(Linux 开机自启)

    虽然 Screen/tmux 能让服务器在后台运行,但有一个问题:如果服务器因为任何原因重启(系统更新、断电等),服务器不会自动启动,你需要手动 SSH 进去重新开。把 MC 服务器注册为 systemd 服务后,就能实现:开机自动启动、崩溃自动重启、统一的日志管理。

    第一步:创建 systemd 服务文件

    使用 root 用户(或 sudo)创建服务文件:

    
    # 切换回 root 用户
    exit    # 如果还在 minecraft 用户下
    # 创建服务文件
    vim /etc/systemd/system/minecraft.service
    

    在文件中写入以下内容:

    
    [Unit]
    Description=Minecraft Server - Paper 1.21.1
    

    After=network.target

    
    [Service]
    # 运行用户和用户组
    User=minecraft
    Group=minecraft
    # 工作目录
    WorkingDirectory=/opt/minecraft/server
    # 启动命令
    # 注意:systemd 直接运行 Java 而不是通过 start.sh
    ExecStart=/usr/bin/java -Xms4G -Xmx4G -jar /opt/minecraft/server/server.jar nogui
    # 重启策略
    Restart=on-failure
    

    RestartSec=10s

    
    # 信号处理(确保 stop 命令执行 save-all 后安全退出)
    KillSignal=SIGINT
    # 标准输出和错误日志
    StandardOutput=append:/opt/minecraft/server/logs/stdout.log
    StandardError=append:/opt/minecraft/server/logs/stderr.log
    [Install]
    WantedBy=multi-user.target
    

    关键参数解释:

  • After=network.target:确保网络服务启动后再启动 MC 服务器
  • User/Group=minecraft:以 minecraft 用户身份运行(安全)
  • Restart=on-failure:服务器崩溃时自动重启
  • RestartSec=10s:崩溃后等 10 秒再重启(防止无限重启循环)
  • KillSignal=SIGINT:关闭服务时发送 Ctrl+C 信号,让 MC 服务器有机会执行 save-all
  • 第二步:启用并启动服务

    
    # 重新加载 systemd 配置
    systemctl daemon-reload
    # 设置为开机自启
    systemctl enable minecraft
    # 启动服务
    systemctl start minecraft
    # 查看服务状态
    systemctl status minecraft
    

    如果一切正常,你会看到 Active: active (running)。

    第三步:日常管理命令

    命令 用途
    systemctl status minecraft 查看服务器运行状态
    systemctl start minecraft 启动服务器
    systemctl stop minecraft 停止服务器(会发送 SIGINT 信号,安全保存后关闭)
    systemctl restart minecraft 重启服务器
    systemctl enable minecraft 设置开机自启
    systemctl disable minecraft 取消开机自启
    journalctl -u minecraft -f 实时查看服务器日志(类似 tail -f)
    journalctl -u minecraft -n 100 查看最近 100 行日志
    journalctl -u minecraft --since today 查看今天的日志

    如何在 systemd 运行时输入管理指令?

    使用 systemd 后,服务器在后台运行,没有交互式控制台。如果你需要向服务器发送指令(比如 /op、/list),有几种方法:

    1. 在游戏中以 OP 身份输入指令(最简单)

    2. 使用 RCON(远程控制台)。在 server.properties 中开启 RCON,然后用 RCON 客户端连接。

    3. 使用 mcrcon 工具(轻量级 RCON 客户端):

    
    apt install -y mcrcon
    

    mcrcon -H 127.0.0.1 -P 25575 -p 你的RCON密码

    4. 在 server.properties 中设置 enable-rcon=true 和 rcon.password=你的密码,重启生效。

    5. 使用 Screen + systemd 结合的方式:用一个简单的脚本在 Screen 中启动:

    
    # 修改 ExecStart 为:
    ExecStart=/usr/bin/screen -DmS mcserver /usr/bin/java -Xms4G -Xmx4G -jar /opt/minecraft/server/server.jar nogui
    

    这样你就可以用 screen -r mcserver 连接到控制台了(需要先 su - minecraft)。

    2.14 插件安装与管理(Linux)

    Linux 下的插件安装和 Windows 原理完全相同,只是操作方式不同。

    安装插件的方法

  • 方法一:直接在服务器上用 wget 下载
  • 这是最方便的方法。以安装 EssentialsX 为例:

    cd /opt/minecraft/server/plugins

    
    # 从 SpigotMC 下载(需要先获取直接下载链接)
    # 注意:SpigotMC 的下载链接通常需要从网页获取
    wget -O EssentialsX.jar "https://cdn.modrinth.com/data/.../EssentialsX-2.21.0.jar"
    # 或者从 Modrinth 下载(API 友好)
    wget -O Vault.jar "https://cdn.modrinth.com/data/.../Vault-1.7.3.jar"
    
  • 方法二:在本地下载后使用 scp 上传
  • 
    # 在你自己的电脑上执行:
    scp EssentialsX.jar root@你的IP:/opt/minecraft/server/plugins/
    scp Vault.jar root@你的IP:/opt/minecraft/server/plugins/
    # 然后修正文件权限(插件由 minecraft 用户运行)
    ssh root@你的IP "chown minecraft:minecraft /opt/minecraft/server/plugins/*.jar"
    
  • 方法三:使用 sftp 客户端(图形界面)
  • 如果你不习惯命令行,可以使用以下图形界面 SFTP 客户端:

  • FileZilla(免费开源)
  • WinSCP(Windows 经典)
  • Termius(跨平台,SSH+SFTP 一体)
  • 连接信息:

    协议:SFTP

    主机:你的服务器 IP

    端口:22

    用户名:root

    密码:你的 root 密码

    安装后重启服务器:

    
    systemctl restart minecraft
    

    2.15 自动化备份(crontab + rsync)

    使用 rsync 进行增量备份

    
    rsync 是一个强大的文件同步工具。与直接 cp 复制不同,rsync 只复制发生变化的文件,备份速度极快,非常适合 MC 世界存档这种包含大量小文件的目录。
    

    创建备份脚本:

    
    # 使用 root 用户创建
    vim /opt/minecraft/backup.sh
    

    脚本内容:

    
    #!/bin/bash
    # Minecraft Server 世界备份脚本
    # 作者: 石龙虾教程
    # 日期: 2024
    #==============================
    # 配置区
    #==============================
    

    SERVER_DIR="/opt/minecraft/server"

    BACKUP_DIR="/opt/minecraft/server/backups"

    DATE=$(date +%Y-%m-%d_%H-%M)

    KEEP_DAYS=7 # 保留最近 7 天的备份,更早的自动删除

    
    #==============================
    # 开始备份
    #==============================
    echo "[$DATE] 开始备份..."
    # 向服务器发送 save-all 指令(如果启用了 RCON)
    # mcrcon -H 127.0.0.1 -P 25575 -p 你的密码 "save-all"
    # sleep 5  # 等待保存完成
    # 创建当天备份目录
    mkdir -p "$BACKUP_DIR/$DATE"
    # 备份世界数据(增量备份,只复制变化的文件)
    rsync -av --delete "$SERVER_DIR/world/" "$BACKUP_DIR/$DATE/world/"
    rsync -av --delete "$SERVER_DIR/world_nether/" "$BACKUP_DIR/$DATE/world_nether/" 2>/dev/null
    rsync -av --delete "$SERVER_DIR/world_the_end/" "$BACKUP_DIR/$DATE/world_the_end/" 2>/dev/null
    # 备份插件和配置
    rsync -av --delete "$SERVER_DIR/plugins/" "$BACKUP_DIR/$DATE/plugins/"
    cp "$SERVER_DIR/server.properties" "$BACKUP_DIR/$DATE/"
    cp "$SERVER_DIR/ops.json" "$BACKUP_DIR/$DATE/ops.json" 2>/dev/null
    cp "$SERVER_DIR/whitelist.json" "$BACKUP_DIR/$DATE/whitelist.json" 2>/dev/null
    # 压缩备份(可选,节省空间)
    

    cd "$BACKUP_DIR"

    
    tar -czf "$DATE.tar.gz" "$DATE/"
    

    rm -rf "$DATE/"

    
    # 删除旧备份(保留最近 N 天)
    

    find "$BACKUP_DIR" -name "*.tar.gz" -mtime +$KEEP_DAYS -delete

    
    # 显示备份大小
    

    SIZE=$(du -h "$BACKUP_DIR/$DATE.tar.gz" | cut -f1)

    
    echo "[$DATE] 备份完成!文件: $BACKUP_DIR/$DATE.tar.gz ($SIZE)"
    

    参数解释:

  • rsync -av:a = 归档模式(保留权限和时间),v = 详细输出(显示复制了哪些文件)
  • --delete:删除目标中存在但源中不存在的文件(保持完全一致)
  • tar -czf:c = 创建压缩包,z = gzip 压缩,f = 指定文件名
  • find ... -mtime +7 -delete:删除 7 天前的备份文件
  • 赋予执行权限:

    
    chmod +x /opt/minecraft/backup.sh
    

    使用 crontab 设置定时备份

    cron 是 Linux 的定时任务系统。我们可以设置它每天凌晨 4 点自动执行备份。

    
    # 编辑 minecraft 用户的 crontab
    su - minecraft
    crontab -e
    

    如果是第一次使用 crontab,会提示你选择编辑器,选 1 (nano) 或 2 (vim)。

    在打开的文件中添加以下行:

    
    # 每天凌晨 4:00 执行备份
    

    0 4 * * * /opt/minecraft/backup.sh >> /opt/minecraft/server/backups/backup.log 2>&1

    cron 表达式格式:分 时 日 月 星期

  • 0 4 * * * = 每天凌晨 4:00
  • 0 */6 * * * = 每 6 小时一次
  • 0 4 * * 0 = 每周日凌晨 4:00
  • 查看 crontab 是否设置成功:

    
    crontab -l
    

    ⚠️ 注意:如果 MC 服务器使用 systemd 运行,备份时最好先通过 RCON 执行 save-all,否则备份的数据可能不完整。或者先 systemctl stop minecraft → 备份 → systemctl start minecraft。

    2.16 JVM 参数深度优化(Linux)

    Linux 下的 JVM 优化与 Windows 原理相同,但有一个重要的额外选项。

    Linux 专有优化:使用大页内存(HugePages)

    Linux 内核支持"大页内存"(Transparent HugePages),可以减少内存管理开销,对内存密集型的 Java 应用(如 Minecraft 服务器)有帮助。

    检查当前大页设置:

    
    cat /sys/kernel/mm/transparent_hugepage/enabled
    

    如果输出 [always],说明已启用。如果输出 [madvise] 或 [never],可以手动开启。

    建议设置:

    
    echo always > /sys/kernel/mm/transparent_hugepage/enabled
    

    优化版 systemd 服务文件

    将之前创建的服务文件中的 ExecStart 替换为完整的优化参数:

    
    [Service]
    User=minecraft
    Group=minecraft
    WorkingDirectory=/opt/minecraft/server
    # 使用 Aikar's Flags 优化版启动命令
    ExecStart=/usr/bin/java \
    

    -Xms4G -Xmx4G \

    -XX:+UseG1GC \

    -XX:+ParallelRefProcEnabled \

    -XX:MaxGCPauseMillis=200 \

    -XX:+UnlockExperimentalVMOptions \

    -XX:+DisableExplicitGC \

    -XX:+AlwaysPreTouch \

    -XX:G1NewSizePercent=30 \

    -XX:G1MaxNewSizePercent=40 \

    -XX:G1HeapRegionSize=8M \

    -XX:G1ReservePercent=20 \

    -XX:G1HeapWastePercent=5 \

    -XX:G1MixedGCCountTarget=4 \

    -XX:InitiatingHeapOccupancyPercent=15 \

    -XX:G1MixedGCLiveThresholdPercent=90 \

    -XX:G1RSetUpdatingPauseTimePercent=5 \

    -XX:SurvivorRatio=32 \

    -XX:+PerfDisableSharedMem \

    -XX:MaxTenuringThreshold=1 \

    -jar /opt/minecraft/server/server.jar nogui

    
    Restart=on-failure
    

    RestartSec=10s

    修改后重新加载:

    
    systemctl daemon-reload
    systemctl restart minecraft
    

    监控服务器性能

    Linux 提供了丰富的性能监控工具:

  • htop:实时查看 CPU、内存、负载(彩色界面,比 top 好看)
  • free -h:查看内存使用情况
  • df -h:查看磁盘使用情况
  • iftop:实时查看网络流量(需要 apt install iftop)
  • iotop:实时查看磁盘 I/O(需要 apt install iotop)
  • 2.17 使用 Docker 部署 Minecraft 服务器(高级)

    Docker 是一种容器化技术,可以将应用程序及其所有依赖打包到一个标准化的容器中。使用 Docker 部署 MC 服务器有诸多好处:环境完全隔离、一键部署、轻松迁移、多服务器管理方便。

    安装 Docker

    Ubuntu/Debian 安装 Docker 的官方推荐方法:

    
    # 卸载旧版本(如果有的话)
    for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
    apt remove -y $pkg
    

    done

    
    # 安装依赖和 Docker 官方 GPG 密钥
    apt update
    apt install -y ca-certificates curl
    

    install -m 0755 -d /etc/apt/keyrings

    
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    chmod a+r /etc/apt/keyrings/docker.gpg
    # 添加 Docker 仓库
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
    # 安装 Docker
    apt update
    apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
    # 验证安装
    docker --version
    docker compose version
    

    使用 Docker Compose 部署 Paper 服务器

    使用 Docker Compose 可以通过一个配置文件定义整个服务器环境,非常方便。

    创建项目目录和配置文件:

    
    mkdir -p /opt/minecraft-docker && cd /opt/minecraft-docker
    

    创建 docker-compose.yml:

    
    vim docker-compose.yml
    

    文件内容:

    version: "3.8"

    services:

    mc:

    image: itzg/minecraft-server:latest

    container_name: minecraft-server

    restart: unless-stopped

    tty: true

    stdin_open: true

    ports:

  • "25565:25565" # Minecraft Java 版端口
  • volumes:

  • ./data:/data # 服务器数据持久化
  • ./plugins:/plugins # 插件目录
  • ./mods:/mods # 模组目录(如使用 Forge/Fabric)
  • environment:

    EULA: "TRUE"

    TYPE: "PAPER" # 服务器类型:PAPER/PURPUR/VANILLA/FORGE/FABRIC

    VERSION: "1.21.1" # Minecraft 版本

    MEMORY: "4G" # 内存分配

    TZ: "Asia/Shanghai" # 时区

    MOTD: "Docker Minecraft Server"

    DIFFICULTY: "normal"

    MAX_PLAYERS: "20"

    VIEW_DISTANCE: "10"

    ENABLE_RCON: "true"

    RCON_PASSWORD: "your_strong_password_here"

    这个 itzg/minecraft-server 镜像是一个广受社区认可的 Minecraft 服务器 Docker 镜像,支持 Paper、Vanilla、Forge、Fabric、Purpur 等几乎所有核心,通过环境变量即可配置。

    启动服务器:

    
    docker compose up -d
    # -d = 后台运行(detached mode)
    

    查看日志:

    
    docker compose logs -f
    # -f = 实时跟踪(类似 tail -f)
    

    进入服务器控制台:

    
    docker attach minecraft-server
    # 按 Ctrl+P Ctrl+Q 脱离(不会停止容器)
    # 不要按 Ctrl+C,那会停止服务器!
    

    其他常用 Docker Compose 命令:

    命令 用途
    docker compose up -d 启动服务(后台运行)
    docker compose down 停止并删除服务
    docker compose restart 重启服务
    docker compose logs -f 实时查看日志
    docker compose ps 查看服务状态
    docker compose exec mc rcon-cli RCON 控制台(需开启 RCON)

    2.18 Linux 常见问题排错

    问题 1:Permission denied(权限不足)

    这是 Linux 新手最常见的问题。Linux 有严格的权限系统,每个文件都有所属用户。

    症状:运行 ./start.sh 时提示 Permission denied。

    原因:

    1. start.sh 没有执行权限 → 运行 chmod +x start.sh

    2. 当前用户不是文件所有者 → 运行 ls -l 查看,使用 chown 修改所有权

    3. 不要在 root 下创建了文件然后切换到 minecraft 用户去运行

    解决:

    
    # 确保整个目录的所有权都属于 minecraft 用户
    chown -R minecraft:minecraft /opt/minecraft/server
    # 确保脚本有执行权限
    chmod +x /opt/minecraft/server/start.sh
    

    问题 2:端口被占用(Address already in use)

    症状:启动时提示 "FAILED TO BIND TO PORT!" 或 "Address already in use"。

    原因:25565 端口已被其他程序占用(可能有另一个 MC 服务器在运行)。

    解决:

    
    # 查看哪个程序占用了 25565 端口
    ss -tlnp | grep 25565
    # 或
    lsof -i :25565
    # 杀死占用端口的进程(假设 PID 是 12345)
    kill 12345
    # 如果还不行,强行杀死
    kill -9 12345
    # 或者修改 server.properties 中的端口为其他值
    

    问题 3:Screen 会话中无法输入指令

    症状:重新连接到 Screen 会话后,键盘输入没有反应。

    原因:可能是之前意外断开,Screen 认为会话仍在"被占用"状态。

    解决:

    
    screen -d mcserver      # 先强制分离
    screen -r mcserver      # 然后重新连接
    

    问题 4:systemctl start minecraft 失败

    症状:systemctl start minecraft 提示失败,但手动运行 ./start.sh 可以正常启动。

    排查步骤:

    
    # 1. 查看详细日志
    journalctl -u minecraft -n 50
    # 2. 检查 Java 路径是否正确
    

    which java

    
    # 如果输出为空,说明 Java 没有安装或不在 PATH 中
    # 3. 检查文件权限
    ls -l /opt/minecraft/server/server.jar
    # 确保 minecraft 用户可读写
    # 4. 测试 minecraft 用户是否能手动启动
    su - minecraft -c "cd /opt/minecraft/server && java -Xms2G -Xmx2G -jar server.jar nogui"
    # 5. 检查 SELinux(CentOS/Rocky 常见问题)
    getenforce
    # 如果是 Enforcing,尝试临时关闭
    setenforce 0
    systemctl start minecraft
    # 如果问题解决,设置 SELinux 规则或永久关闭
    

    问题 5:磁盘空间不足

    症状:服务器报错 "No space left on device" 或世界保存失败。

    诊断:

    
    df -h                  # 查看磁盘使用情况
    du -sh /opt/minecraft/server/world    # 查看世界存档占用空间
    du -sh /opt/minecraft/server/backups  # 查看备份占用空间
    

    解决:

    1. 清理旧备份文件

    2. 清理 /var/log 下的旧系统日志:journalctl --vacuum-size=500M

    3. 缩减世界边界(max-world-size)

    4. 升级云服务器硬盘(各大云服务商都支持在线扩容)

    第三部分:附录

    附录 A:服务器核心对比大全

    核心 开发者 性能 插件支持 模组支持 更新速度 推荐场景
    Vanilla Mojang ★☆☆☆☆ ★★★★★ 纯粹原版体验
    Spigot SpigotMC ★★☆☆☆ ✓ Bukkit ★★★★☆ 经典插件服
    Paper PaperMC ★★★★★ ✓ Bukkit/Spigot ★★★★★ ★ 首选插件服
    Purpur PurpurMC ★★★★★ ✓ Bukkit/Spigot/Paper ★★★★☆ 精细控制插件服
    Folia PaperMC ★★★★★ 部分兼容 ★★☆☆☆ 大型多线程服(实验)
    Pufferfish pufferfish-gg ★★★★☆ ✓ Bukkit/Spigot/Paper ★★★★☆ 高负载优化插件服
    Fabric FabricMC ★★★★☆ 桥接支持 ✓ Fabric ★★★★★ 轻量模组/优化模组服
    Forge ForgeDev ★★★☆☆ 桥接支持 ✓ Forge ★★★☆☆ 丰富模组包
    NeoForge NeoForged ★★★☆☆ 桥接支持 ✓ Forge/NeoForge ★★★★☆ 现代模组包
    Quilt QuiltMC ★★★★☆ ✓ Quilt/Fabric ★★★★☆ Fabric 的社区分支

    附录 B:插件推荐与排名

    以下是最受社区欢迎和推荐的 MC 插件,按功能类别分组:

    必装插件(几乎所有服务器都需要)

    插件名 用途 同类替代
    EssentialsX 核心指令套装(/home /warp /tpa /spawn 等) CMI(付费,功能更多)
    LuckPerms 权限管理(控制谁能用什么指令) PermissionsEx(已过时)
    Vault 经济系统基础 API(其他经济插件依赖它) 无替代,几乎所有经济插件都依赖它
    WorldEdit 快速建造和地形编辑 FastAsyncWorldEdit(性能更好)
    WorldGuard 区域保护(防止破坏指定区域) GriefPrevention(更轻量,更早于玩家自助)
    CoreProtect 方块记录和回滚(查询谁破坏了什么) Prism(功能更强,性能开销更大)

    生存服推荐插件

    插件名 用途
    GriefPrevention 玩家自助圈地保护(放置金铲子即可圈地)
    ChestShop 箱子商店(玩家交易系统)
    Jobs Reborn 职业系统(挖矿/伐木/渔夫等职业升级)
    mcMMO RPG 技能系统(挖掘/战斗/采集技能升级)
    AuctionHouse 拍卖行
    QuickShop-Hikari 快捷商店(新版 ChestShop 替代)
    Dynmap 网页实时地图(Google Maps 风格的服务器鸟瞰图)
    Chunky 区块预生成(防止探索新地形时的卡顿)

    管理与安全插件

    插件名 用途
    Spark 性能分析(输入 /spark profiler 诊断卡顿原因)
    DriveBackupV2 自动备份(支持本地、FTP、云存储)
    Plan 玩家数据分析(网页面板展示玩家活跃度)
    DiscordSRV Discord 与服务器聊天互通
    GeyserMC 让基岩版(手机/主机)玩家也能加入 Java 服务器
    Floodgate Geyser 的辅助插件(处理基岩版玩家登录)
    TAB Tab 列表美化(自定义玩家列表)
    Anti-Xray 反 X-Ray(防透视矿物作弊)
    GrimAC 反作弊(运动检测)
    Vulcan 专业反作弊(功能非常强大)

    附录 C:JVM 启动参数完整参考

    以下列出常用的 JVM 启动参数及其作用。注:带 ★ 的是 Aikar's Flags 中使用的核心参数。

    参数 作用
    -Xms<值> 初始堆内存大小。建议与 -Xmx 相同。例如 -Xms4G
    -Xmx<值> 最大堆内存大小。不要超过系统可用内存的 70%。例如 -Xmx4G
    ★ -XX:+UseG1GC 使用 G1 垃圾回收器。Java 21 默认值,最适合 Minecraft
    ★ -XX:+ParallelRefProcEnabled 并行处理引用对象,加快 GC 速度
    ★ -XX:MaxGCPauseMillis=200 GC 最大暂停目标(毫秒)。降低此值可减少卡顿感但增加 GC 频率
    ★ -XX:+DisableExplicitGC 禁用显式 GC 调用,防止不必要的全堆回收
    ★ -XX:+AlwaysPreTouch 启动时预分配所有内存页,减少运行时缺页中断
    ★ -XX:G1NewSizePercent=30 G1 新生代最小占比(默认 5,设为 30 更利于 MC)
    ★ -XX:G1MaxNewSizePercent=40 G1 新生代最大占比
    ★ -XX:G1HeapRegionSize=8M G1 区域大小。4-16G 堆推荐 8M
    ★ -XX:G1ReservePercent=20 保留堆空间百分比,防止晋升失败
    ★ -XX:G1MixedGCCountTarget=4 混合 GC 目标次数
    ★ -XX:InitiatingHeapOccupancyPercent=15 堆占用率阈值,触发并发标记周期
    ★ -XX:SurvivorRatio=32 Eden 区与 Survivor 区的比例
    ★ -XX:MaxTenuringThreshold=1 对象晋升老年代的年龄阈值
    -XX:+UseZGC 使用 ZGC(超低延迟 GC)。需要 Java 21+。适合大内存(16G+)场景
    -XX:+UseShenandoahGC 使用 Shenandoah GC。与 ZGC 类似,低延迟 GC
    -XX:+PerfDisableSharedMem 禁用性能计数器共享内存
    -Dfile.encoding=UTF-8 强制使用 UTF-8 编码
    -Djava.security.egd=file:/dev/urandom 加速随机数生成(Linux)
    -jar 指定要运行的 JAR 文件
    nogui Minecraft 参数:不启动图形界面(节省资源)

    不同内存大小对应的 G1HeapRegionSize

    堆内存大小 推荐的 G1HeapRegionSize
    < 4 GB 2M 或 4M
    4 GB - 8 GB 4M 或 8M
    8 GB - 16 GB 8M
    16 GB - 32 GB 16M
    > 32 GB 32M

    附录 D:各路由器品牌端口映射指南

    已在上文 1.10 节和 2.10 节详细介绍,此处不重复。

    附录 E:server.properties 完整字段速查表

    已在上文 1.8 节逐项详解,此处为速查表:

    字段 类型 作用
    allow-flight bool 是否允许飞行
    allow-nether bool 是否启用下界
    difficulty string 游戏难度
    enable-command-block bool 是否启用命令方块
    gamemode string 默认游戏模式
    generate-structures bool 是否生成自然结构
    hardcore bool 极限模式
    level-name string 世界文件夹名
    level-seed string 世界种子
    max-players int 最大玩家数
    motd string 服务器名称/描述
    online-mode bool 正版验证
    pvp bool 是否允许 PVP
    server-ip string 绑定 IP(留空)
    server-port int 端口号
    spawn-protection int 出生点保护范围
    view-distance int 视距(区块)
    white-list bool 是否开启白名单

    附录 F:常用管理指令速查表

    服务器控制台指令

    指令 作用
    op <玩家> 给予管理员权限
    deop <玩家> 撤销管理员权限
    kick <玩家> 踢出玩家
    ban <玩家> 封禁玩家
    pardon <玩家> 解封玩家
    whitelist add <玩家> 添加白名单
    whitelist remove <玩家> 移除白名单
    whitelist on/off 开启/关闭白名单
    list 查看在线玩家
    save-all 手动保存世界
    stop 安全关闭服务器
    restart 重启服务器
    reload 重新加载配置
    say <消息> 发送服务器公告

    世界操作指令

    指令 作用
    /seed 查看世界种子
    /time set day 设为白天
    /time set night 设为黑夜
    /weather clear 晴天
    /weather rain 下雨
    /weather thunder 雷暴
    /difficulty peaceful 和平模式
    /difficulty hard 困难模式
    /gamerule keepInventory true 死亡不掉落
    /gamerule doFireTick false 火焰不蔓延
    /gamerule mobGriefing false 苦力怕不破坏
    /gamerule doDaylightCycle false 冻结时间
    /locate structure village 寻找村庄
    /locate structure stronghold 寻找要塞
    /kill @e[type=item] 清除地上所有掉落物

    游戏内玩家常用指令(需对应权限)

    指令 作用
    /home 传送回家(需设置)
    /sethome <名> 设置家
    /tpa <玩家> 请求传送到某玩家
    /tpaccept 接受传送请求
    /warp <名> 传送到传送点
    /spawn 回到出生点
    /msg <玩家> <消息> 私聊
    /pay <玩家> <金额> 转账(经济插件)
    /bal 查看余额

    附录 G:性能优化完整检查清单

    当你的服务器出现卡顿、延迟、TPS 下降时,按以下清单逐项排查:

    基础优化(新手必做)

    ☐ 使用 Paper 核心(而不是 Vanilla 或 Spigot)

    ☐ 降低 server.properties 中的 view-distance 到 8 或以下

    ☐ 降低 simulation-distance 到 6 或以下

    ☐ 确保 -Xms 和 -Xmx 设置为相同值

    ☐ 升级到 Java 21(性能比 Java 17 有提升)

    ☐ 分配足够的内存给服务器(但不超 70%)

    中级优化

    ☐ 使用 Aikar's Flags JVM 参数

    ☐ 安装 Chunky 预生成区块(/chunky radius 5000 → /chunky start)

    ☐ 安装 Spark 进行 TPS 分析(/spark profiler --timeout 300)

    ☐ 调整 Paper 配置(paper-world-defaults.yml):

  • despawn-ranges.soft = 28(更激进地清理远处怪物)
  • max-entity-collisions = 4(减少实体碰撞计算)
  • 优化漏斗:hopper.disable-move-event = false
  • ☐ 清理实体:/kill @e[type=minecraft:bat] 等

    高级优化

    ☐ 使用 Folia 多线程核心(如果插件兼容)

    ☐ 使用更快的 CPU(MC 服务器强烈依赖单核性能)

    ☐ 使用 NVMe SSD(区块加载速度质的飞跃)

    ☐ 分离世界存储和系统盘(不同的物理磁盘)

    ☐ 在 Linux 上启用 Transparent HugePages

    ☐ 使用 ZGC 或 Shenandoah GC(大内存场景)

    ☐ 考虑使用多个服务器 + Velocity/BungeeCord 代理进行分布式部署

    ⭐ 🎉 恭喜你完成了这份超详细的《我的世界服务器开服完全指南》!无论你是用 Windows 还是 Linux,无论是开给三五好友还是几百人的大服,这份教程都应该能帮你搞定。如果在实际开服过程中遇到任何问题,欢迎回到教程中查找对应章节。加油,去创造属于你自己的 Minecraft 世界吧!

    我的世界服务器开服完全指南 —— Windows & Linux 双平台超详细教程
    https://www.shijutian.cn/index.php/archives/17/
    本文作者 shijutian
    发布时间 2026-05-22
    许可协议 CC BY-NC-SA 4.0
    发表新评论