# 开始前的准备
## MC 服务器原理
MC 服务器由一个运行在主机上的服务器核心(jar 文件)驱动,玩家可以通过主机名(绑定的 IP 地址)加端口来连接到你的服务器。
## 选择服务器核心
在开始之前你需要根据需求去选择一个服务端核心来运行你的服务器,常见的核心如下。
### [Mojang 官方核心](https://www.minecraft.net/zh-hans/download/server)
官方提供的服务器核心,保留了原版内容。
- 优点:Mojang 官方核心是 Minecraft 官方提供的原生服务端,保留游戏原版功能,稳定性较强。
- 缺点:不支持插件和模组,可自定义程度差。
- 适用场景:小型服务器,没有对插件/mod 的要求。
### [Paper](https://papermc.io/)
Paper 是 Spigot 下游分支,插件服务端核心,由 PaperMC 一个开发 MC 服务器软件的组织开发,对服务端性能进行了大量优化,是一个主流且较受欢迎的核心。
- 优点:支持插件且插件生态丰富,性能出色,稳定性强,社区活跃且更新迅速。
- 缺点:过度的优化修补了绝大多数的漏洞,但可能使原版依赖漏洞工作的生电机器停止工作。
- 适用场景:非生电为主流,以休闲为主的中小型服务器。
### [Leaves](https://leavesmc.org/)
Leaves 是 Paper 的下游分支。插件服务端核心,还原了 Paper 中被修改的原版特性,为生电服设计,且内置生电假人。
- 优点:还原了被 Paper 修复的原版特性,内置生电假人。
- 缺点:更新较慢。
- 适用场景:生电服务器。
### [Leaf](https://www.leafmc.one/zh/)
Leaf 是一个 Paper 分支,专注于寻找性能优化、原版特性、稳定之间的平衡。
- 优点:基于 Paper 进行了性能优化,保留原版特性。
- 缺点:正式版更新较慢。
- 适用场景:稳定性为主,较注重原版特性的服务器。
### [Folia](https://papermc.io/software/folia/)
Folia 是 PaperMC 开发的新一代 Minecraft 服务器核心,Paper 的一个分支,基于 Paper 但采用区域化多线程架构,不再局限于单线程计算,从而在多玩家或复杂红石场景中实现更高的运行效率。
- 优点:引入了多线程,性能提升高。
- 缺点:配置与调试复杂度高,较 Paper 比更困难。
- 适用场景:有大量玩家的服务器。
### [Fabric](https://fabricmc.net/use/server/)
Fabric 是一个极其轻量化的模组加载器,其对应的服务端同样轻量化,自 Fabric 诞生,许多模组选择了适配 Fabric,Fabric 客户端也被广泛用于小型整合包或添加少量 mod 的游戏场景中。
- 优点:轻量化,安装与主流核心操作基本一致,上手简单,更新积极。
- 缺点:在多模组环境中,存在兼容性与稳定性问题。
- 适用场景:小型整合包服务器,以及原版服务器。
### [Neoforge](https://neoforged.net/)
NeoForge 核心是 Forge 原开发团队推出的独立续作(非简单分支),新一代模组加载器,全面支持 Mod 开发与运行,对应的服务端在性能、稳定性及 Mod 兼容性上优于传统 Forge,是搭建模组服务器的首选核心。
- 优点:支持 mod 且兼容性强,稳定性高,更新积极,控制台日志自带颜色方便查看错误。
- 缺点:较为笨重。
- 适用场景:中大型整合包服务器。
## 选择运行服务器核心的主机
你可以选择将服务器运行在你自己的主机上,也可以选择使用云服务器。
但是想让玩家连接到服务器,需要一个能提供公网 IP 的主机,这在自己的主机上是通常没有的,使用云服务器。
建议使用云服务器来部署 MC 服务器,相对于物理机来说,云服务器会更省心,且云服务器带有公网 IP,方便配置,延迟低。
此处推荐使用雨云服务器
### [雨云(新一代云服务提供商)](https://app.rainyun.com)
你可以购买云服务器来搭建 MC 服务器,一切计算都在云端完成,无需自己保养机器,是非常省心的选择。
雨云是新一代的云服务提供商,以超高的性价比爆火,雨云专门提供了游戏云服务器来供玩家搭建游戏服务器,当然雨云并不只有这些服务。
### 物理主机
如果足够富裕,可以选择自己准备一台主机来搭建服务器,如果家中没有公网 IP 会稍困难一些。
在没有公网 IP 的前提下,可以利用内网穿透将服务器端口映射到公网中,供玩家连接。
## 选择合适的服务器系统
常用的服务器系统有 Windows、Linux,它们分别有以下特点:
### Linux(推荐)
Linux 是 MC 服务器的首选操作系统,轻量、高效且对硬件资源占用低,但对刚接触开服、不了解 Linux 的新手不太友好。对于不熟悉 Linux 但仍想开服的服主,可以使用 Windows 进行开服。
Linux 只是一个内核,其被打包成的发行版才是完整的操作系统,常见的服务器发行版有 Ubuntu Server、Debian、Rocky、CentOS(不推荐,已失去维护)。
### Windows
Windows Server 是图形化操作的服务器系统,上手门槛低,适合无 Linux 基础的服主。但 Windows 资源占用高,后台进程易消耗资源,且自动化部署与管理效率低,会显著增加运维成本。
### MacOS
对于足够富裕的人,可以选择 Mac Mini 来当作服务器,环境稳定且算力强悍。
### 雨云面板服(推荐)
面板服并不是一个操作系统,它以 Linux 为基础,搭建的可视化 Web 管理网站,玩家可以通过自己购买到的面板云来管理自己的 Minecraft 服务器,资源占用低于 Windows,操作简单,适合新手服主。
同时雨云服务器提供面板云服务器,可在雨云官网中选购 MC 面板云,面板云搭建 MC 教程也会在后续详细讲解。
## 为服务器选择合适的硬件配置
### Linux 系统
对于原版服务器,2 核 4G 运存 3M 带宽足以供 1~3 个人流畅游玩
对于小型整合包/mod 服务器,最低需要 4C8G5M 的配置,能供给 2~5 个人游玩
若是大型整合包,推荐 4 核心 16G 运存 10M 带宽及其以上配置的服务器
### Windows Server 系统
在 Linux 原配置基础上多加 2 颗核心、2~4G 运存
## 配置系统环境
**使用 ssh 连接到远程 Linux 服务器**
ssh 是一种远程登录工具,用于在远程服务器执行命令。
打开系统终端,输入以下命令来连接到远程服务器。
```shell
ssh -p 端口 用户名@服务器ip地址
```
>对于 Windows 系统若提示ssh不是内部或外部命令,请在设置-搜索中输入环境变量,编辑系统环境变量-高级-环境变量-系统环境变量,找到Path,双击,新建,输入 `C:\Windows\System32\OpenSSH` 并保存,重启终端即可正常使用ssh服务。
同时你也可以使用第三方ssh客户端,推荐 [Termius](https://termius.com/download/windows)
### 安装一些必要软件
```shell
sudo apt install wget screen htop
```
>Linux 中,可以在命令输入到一半时,按下 Tab 键来补全命令,无需手动将命令打完,如果有多种可能的补全结果,则会补全到出现差异的前一个字母。
>如你要前往 `/home/this_is_a_example` 目录,命令输入到 `cd /home/this` 时,/home 目录没有其他以 this 开头的目录,按下 Tab 键就会自动补全为 `cd /home/this_is_a_example/`,是不是很方便,快说谢谢 bash!
- wget 可以直接从下载直链中获取下载文件。
- screen 可用于创建后台会话。
- htop 可以监视系统资源占用情况。
### 安装 Java
有两种安装 Java 的方式,一种是通过自带的包管理器安装,另一种是通过手动安装的方式。
**通过包管理器安装**
使用 debian/ubuntu 的 apt 包管理器安装 Java,以 jdk-21 为例,需要其他版本可以替换数字 21 为其他数字。
你也可以选择手动安装,见下文。
```shell
apt install openjdk-21-jdk
```
你也可以手动安装 Java。
**手动安装**
如果你要手动安装 Java 而不是通过包管理器,步骤如下。
下载 Java 压缩包手动配置 Java 环境。
以 [Oracle Java](https://www.oracle.com/java/technologies/downloads/) 为例,在官网中选择对应的 JDK 版本(推荐 21),系统选择 Linux,在下列的下载链接中选择对应架构的 `Compressed Archive` 包,右键下载链接 - 复制链接,回到终端窗口中使用如下命令来将压缩包下载到当前目录。
```bash
wget 下载链接复制到此处
```
,使用
```bash
tar -xzvf jdk-xx_Linux-xxx_bin.tar.gz
```
来解压缩文件到当前目录,会出现一个jdk开头的目录,随后可以选择将它移动到其他地方,方便柏茯灵管理文件,以移动到 `/usr/local` 文件夹为例。
```bash
mv jdk-xx_Linux-xxx_bin /usr/local/jdk-21
```
:::tip
如果 `mv` 命令的目标文件夹中没有那个文件或目录,命令会将被移动的文件或目录更改为目标文件名后放置到目标目录,如`jdk-xx_Linux-xxx_bin`被移动到`/usr/local`目录后,名字也会改为 `jdk-21`。
:::
接下来配置Java环境,使用使用如下命令来编辑/etc/profile文件
```bash
vim /etc/profile
```
在新窗口中轻敲`i`按键来启用编辑模式,在文件末尾加入以下字段
```bash title="profile"
export JAVA_HOME=/usr/local/jdk-21
export PATH=$JAVA_HOME/bin:$PATH
```
>请将jdk目录路径替换为你存放jdk的实际路径
编辑完成后轻敲`Esc`退出编辑模式,并键入`:wq`保存并退出,接下来重新引用环境变量文件。
```bash
source /etc/profile
```
**验证Java安装**
在终端中输入:
```bash
java -version
```
如果输出版本,如`21.0.9`即成功
### Windows系统
以[Oracle Java](https://www.oracle.com/Java/technologies/downloads/)为例,在官网中选择对应的JDK版本(推荐21),系统选择Windows,找到`X64 Install`下载后双击运行exe文件,无脑下一步即可安装完成。
***