# Linux 搭建服务器
:::caution
确保你已经完成了 [**开始前的准备**](./1-1) 这个环节,并安装了合适的 JAVA 环境
:::
>根据不同核心,操作步骤略有不同,但整体非常相似。
## 安装服务端
:::note
不同核心对应的服务端安装逻辑一般相同,但 Neoforge/Forge 这两个核心与其他核心相比略有不同。
:::
下载服务端核心。
在官网选择好合适的版本后,右键并复制链接,使用 wget 进行下载。
```bash
wget 下载链接url
```
下载完成后你的目录下会出现 `xxxxx-xxx-xx.jar` 文件。
:::caution
下载得到的服务器核心一般是一个jar文件,运行命令时请将 `xxxxx-xxx-xx.jar` 替换为实际 jar 文件全称。
:::
创建一个目录,即文件夹,名称随意,如mc-server目录为例,创建后将 `xxxxx-xxx-xx.jar` 移动至新目录并进入该目录。
```bash
mkdir mc-server
mv xxxxx-xxx-xx.jar mc-server
cd mc-server
```
使用如下命令安装并构建服务端根目录,以及加载协议文件。
### 对于 Paper 及其 Fabric/Spigot 等核心
```bash
java -jar paper-xxx-xx.jar nogui
```
>此命令表示运行jar可执行文件,`nogui` 表示无需图形化。
在安装完成后会输出。
```
[XX:XX:XX INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
```
此时会在服务端根目录生成一个 `eula.txt` 文件,终端输出表示需要你去同意协议,在eula.txt中了解更多信息。
### 对于 Neoforge/Forge 核心
```bash
java -jar neoforge-xx-xx-xx-installer.jar --install-server nogui
```
>此命令表示运行jar可执行文件,`nogui`表示无需图形化。
运行完成后会输出
```
The server installed successfully
You can delete this installer file now if you wish
```
接下来需要运行启动脚本去加载协议文件。
给予启动脚本执行权限,否则我们无法运行脚本。
```bash
sudo chmod 711 run.sh
```
随后运行以下命令来运行脚本。
```bash
./run.sh
```
:::note
Neoforge服务端下载会小概率因为网络原因出现错误,如果在服务端无法正常安装,可以选择在本地电脑进行安装然后上传到服务器,如果仍然无法成功安装,删掉本地服务端根目录除 `neoforge-xx-xx-xx-installer.jar` 以外的所有文件后,更换网络或使用热点重试(有些时候使用魔法报错比使用正常网络还快,这是我至今也搞不懂的,但是在我个人的环境中 **使用热点能很好地解决这一问题** )
:::
## 配置服务端
使用vim编辑器同意协议,将末行的 `eula=false` 更改为 `eula=true` 如下
```vim
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://aka.ms/MinecraftEULA).
#Sat XXX XX XX:XX:XX CST XXXX
eula=true
```
编辑server.properties文件
该文件已经是预设好的,不需要额外配置即可正常使用,可以根据需求进行对某些配置进行设置此处仅展示一些简单的讲解
关于该文件的更多配置请参阅[**Minecraft Wiki-server.properties详解**](https://minecraft.fandom.com/zh/wiki/Server.properties#Java%E7%89%88_3)
```bash
vim server.properties
```
```properties
#Minecraft server properties
#Sat Jan 10 12:20:36 CST 2026
accepts-transfers=false
#允许通过 /transfer 命令使玩家服务器间传输。
allow-flight=false
#是否允许飞行,与玩家能否飞行无关,若关闭,当玩家在空中停留过久会被踢出服务器。
allow-nether
#服务器是否启用下界维度。
broadcast-console-to-ops=true
#是否向所有在线OP发送所执行命令的输出
broadcast-rcon-to-ops=true
#是否向所有在线OP发送通过RCON执行的命令的输出
bug-report-link=
#bug反馈链接
debug=false
#调试模式
difficulty=easy
#难度
enable-code-of-conduct=false
enable-jmx-monitoring=false
enable-query=false
enable-rcon=false
#允许服务端控制台远程连接
enable-status=true
enforce-secure-profile=true
enforce-whitelist=false
entity-broadcast-range-percentage=100
force-gamemode=false
function-permission-level=2
gamemode=survival
generate-structures=true
generator-settings={}
hardcore=false
hide-online-players=false
#隐藏在线玩家
initial-disabled-packs=
initial-enabled-packs=vanilla
level-name=world
#存档文件夹的名称
level-seed=
#地图种子
level-type=minecraft\:normal
#世界类型,normal 表示普通主世界类型。
log-ips=true
management-server-allowed-origins=
management-server-enabled=false
management-server-host=localhost
management-server-port=0
management-server-secret=0y7vj7nMWbxZz446HCR01sE3f8yiCgLI1yzoc7fh
management-server-tls-enabled=true
management-server-tls-keystore=
management-server-tls-keystore-password=
max-chained-neighbor-updates=1000000
max-players=20
#最大玩家数
max-tick-time=60000
max-world-size=29999984
#最大世界尺寸
motd=A Minecraft Server
#在多人游戏中显示的服务器副标题
network-compression-threshold=256
online-mode=true
#在线模式,若打开,则会进行正版验证,离线玩家将无法进入,如果有离线玩家,建议关闭
op-permission-level=4
pause-when-empty-seconds=-1
player-idle-timeout=0
prevent-proxy-connections=false
query.port=25565
rate-limit=0
rcon.password=
#rcon远程控制台密码
rcon.port=25575
region-file-compression=deflate
require-resource-pack=false
resource-pack=
resource-pack-id=
resource-pack-prompt=
resource-pack-sha1=
server-ip=
#服务器ip,建议留空
server-port=25565
#服务器端口号
simulation-distance=10
spawn-protection=16
#出生点保护范围
status-heartbeat-interval=0
sync-chunk-writes=true
text-filtering-config=
text-filtering-version=0
use-native-transport=true
view-distance=10
#视距
white-list=false
#是否开启白名单模式,开启后只有被添加到白名单的玩家才能加入服务器
```
>请记住端口号,你将通过端口号连接到服务器
## 运行服务端
配置完成后就可以开始开启服务器了,因为ssh远程会话的任务会随着会话关闭而结束,此时需要用到 `screen` 工具使我们的 MC 服务端在后台运行
>screen 是一个强大的后台会话管理工具,可以守护会话在后台运行,在你不需要的时候挂至后台,需要的时候进行重连继续管理。
>使用如下命令创建一个名为 server 的后台会话(你也可以在 -S 后指定自己想要的名称),创建后,会自动进入这个后台新会话。
```bash
screen -S server
```
>此处S要大写
### 对于 Paper 核心,在后台会话中运行
```bash
java -jar paper-xxx-xx.jar nogui
```
来启动服务器
### 对于 Neoforge/Forge 核心
```bash
./run.sh
```
出现以下输出则启动成功
```bash
[12:48:50 INFO]: Done (13.140s)! For help, type "help"
```
如果要临时离开 screen 后台会话,使用 `Ctrl+A 并松开,然后轻敲 D` 来临时离开会话
如果要重新进入这个后台对话,使用如下命令
```bash
screen -r server #此处填写你的会话名称
```
## 加入服务器
随后需要找到设备的公网ip,并确保 Minecraft 服务端端口对应的防火墙规则为开启,在你购买的云服务商控制台主页找到购买的云服务器,找到公网ip并复制,同时寻找安全组/防火墙等字眼,并前往该页面开启放通MC服务端端口对应的防火墙
此时进入与服务端版本相同的Minecraft客户端后,进入多人游戏,添加服务器,地址填写如下
```
你的公网ip:端口号
```
完成后随后即可看到在多人游戏中看到该服务器,此时Paper服务端已经搭建完成
***