总结于经历了卡顿和服务器崩溃后的经验

最重要的是,如果要开离线服务器,请务必使用登录认证插件,无论是否开启白名单。

本教程不安装面板,使用mcrcon控制。

购买云服务器

配置参考:

服务器/需求/专用 - 中文 Minecraft Wiki

配置需求 玩家 CPU 内存 硬盘 上传带宽 下载带宽 备注
最低配置 1-3 Intel Pentium 4 2.0 GHz 或 AMD Athlon-Based CPUs 以上 512 MB 2 GB 可用空间 (5GB - 如果经常备份服务器) 3 Mbit/s 2 Mbit/s (Minecraft服务器能勉强在1Mbit/s的上传带宽上运行)
可接受配置 3-5 Intel Pentium 4 2.8 GHz 或 AMD Athlon XP 2600+ 以上 1 GB 8 GB 可用空间 6 Mbit/s 3 Mbit/s
推荐配置 5-8 Intel Core-Based CPUs 或 AMD K8-Based CPUs 以上 3 GB 16 GB 可用空间 8 Mbit/s 4 Mbit/s
优良配置 8-12 Intel Core-Based CPUs 或 AMD K8-Based CPUs at 3.0GHz 或更高 5 GB 25 GB 可用空间 14 Mbit/s 7 Mbit/s
最佳配置 12+ Intel Nehalem-Based CPUs 或 AMD K10-Based CPUs 以上 6 GB 35 GB 可用空间 30 Mbit/s 15 Mbit/s 推荐使用高速读写的机械磁盘或SLC SSD。

环境配置

JDK:OpenJDK Runtime Environment Zulu21.40+17-CA (build 21.0.6+7-LTS)

Minecraft:Purpur 1.20.1

开始安装

重装系统

云服务器自带的系统通常不纯净,会安装监控软件等。不仅占用资源,而且没人喜欢被监控,对吧?

这里使用bin456789的dd脚本,重置为 Ubuntu 系统。当然,如果你熟悉其他系统,可以不选择 Ubuntu 系统。

这是一个示例脚本,root 密码会在每次刷新时随机生成,此时密码为:加载中…

1
2
curl -O https://gitlab.com/bin456789/reinstall/-/raw/main/reinstall.sh || wget -O reinstall.sh $_
sudo bash reinstall.sh ubuntu 24.04 --password AjYBL67d8pb5ZoKj

可以通过多种方式(SSH、HTTP 80 端口、后台 VNC、串行控制台)查看安装进度。即使安装过程出错,也能通过 SSH 运行 /trans.sh alpine 安装到 Alpine。

等待安装完成。

安装JDK

1
2
3
4
5
6
7
sudo apt update
sudo apt upgrade
sudo apt install gnupg ca-certificates curl
curl -s https://repos.azul.com/azul-repo.key | sudo gpg --dearmor -o /usr/share/keyrings/azul.gpg
echo "deb [signed-by=/usr/share/keyrings/azul.gpg] https://repos.azul.com/zulu/deb stable main" | sudo tee /etc/apt/sources.list.d/zulu.list
sudo apt update
sudo apt install zulu21-jdk -y

检查 Java 版本以确保 Zulu Java 已正确安装。输出应显示已安装的 Zulu Java 版本,确认安装。

1
java -version

创建 Minecraft 用户

出于安全原因, Minecraft 不应在 root 用户下运行。我们将创建一个新的系统用户和用户组,用户主目录为/opt/minecraft。这个用户将拥有最小权限来运行 Minecraft 服务器:

1
sudo useradd -r -m -U -d /opt/minecraft -s /bin/bash minecraft

我们不会为这个用户设置密码。这样,这个用户将无法通过 SSH 登录。要修改 minecraft 用户,你需要使用 root 登录服务器,或者其他有 sudo 权限的用户。

安装 Minecraft

切换到minecraft用户:

1
sudo su - minecraft

运行以下命令在用户主目录下创建三个新目录:

1
mkdir -p ~/{backups,tools,server}
  • backups目录将存储服务器备份。你可以将此目录同步到你的远程备份服务器。
  • tools目录将托管mcrcon客户端和备份脚本。
  • server目录将包含实际的 Minecraft 服务器及其数据。

下载 mcrcon

以下是通过源码编译的方法,也可以从 Release 中下载。

安装编译mcrcon软件

1
sudo apt install git build-essential

下载mcrcon源码

1
git clone https://github.com/Tiiffi/mcrcon.git ~/tools/mcrcon --depth=1

编译mcrcon

1
2
cd ~/tools/mcrcon
make

检测是否可运行

1
./mcrcon -v

输出应如下所示:

1
2
3
4
mcrcon 0.7.2 (built: Jan 18 2025 14:05:51) - https://github.com/Tiiffi/mcrcon
Bug reports:
tiiffi+mcrcon at gmail
https://github.com/Tiiffi/mcrcon/issues/

下载 Minecraft 服务器

1
wget https://api.purpurmc.org/v2/purpur/1.20.1/2062/download -P ~/server

或在本地电脑上下载完成后,通过 scp 或 sftp 传输到远程服务器,记得更改文件名和权限。

下载地址:https://purpurmc.org/download/purpur

更改权限:

1
2
chown minecraft /opt/minecraft/server -R
chgrp minecraft /opt/minecraft/server -R

配置 Minecraft 服务器

1
2
cd ~/server
java -Xmx1024M -Xms1024M purpur.jar --nogui

第一次启动时,服务器会执行一些操作,创建server.propertieseula.txt文件,并停止。

要运行服务器,你需要同意Minecraft EULA。

1
echo "eula=true" > eula.txt

接下来,打开server.properties文件,修改配置文件:

1
nano ~/server/server.properties

修改以下配置,不要忘记将strong-password修改为更安全的密码,例如:加载中…

如果你不想从远程位置访问 Minecraft 服务器,确保 rcon 端口被防火墙阻塞。

1
2
3
rcon.port=25575
rcon.password=strong-password
enable-rcon=true

其他配置请参照服务端配置文件格式 - 中文 Minecraft Wiki,如
修改难度为困难:

1
difficulty=hard

启用白名单:

1
2
enforce-whitelist=true
white-list=true

关闭正版验证:

1
online-mode=false

安装插件

将插件jar文件复制到服务器文件的plugins文件夹下。

如果关闭了正版验证,AuthMe 必装,FastLogin 和 SkinsRestorer 选装,血的教训

下载地址:

AuthMe

FastLogin

SkinsRestorer

通过 scp 或 sftp 传输到服务器后,不要忘记更改权限:

1
2
chown minecraft /opt/minecraft/server -R
chgrp minecraft /opt/minecraft/server -R

访问 Minecraft 终端

1
/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p strong-password -t

定期备份

1
nano /opt/minecraft/tools/backup.sh

粘贴以下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
##!/bin/bash

function rcon {
/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p strong-password "$1"
}

rcon "save-off"
rcon "save-all"
tar -cvpzf /opt/minecraft/backups/server-$(date +%F-%H-%M).tar.gz /opt/minecraft/server
rcon "save-on"

### 删除旧备份
find /opt/minecraft/backups/ -type f -mtime +7 -name '*.gz' -delete

保存文件,并将脚本设置为可执行:

1
chmod +x /opt/minecraft/tools/backup.sh

接下来,创建一个定时任务,每天在固定时间运行一次。

打开你的 crontab 文件,输入:

1
crontab -e

每天 4:00 运行备份脚本,粘贴以下文本:

1
0 4 * * * /opt/minecraft/tools/backup.sh

创建 Systemd 单元文件

1
sudo nano /etc/systemd/system/minecraft.service

粘贴以下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[Unit]
Description=Minecraft Server
After=network.target

[Service]
User=minecraft
Nice=1
KillMode=none
SuccessExitStatus=0 1
ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xmx1024M -Xms1024M -jar server.jar nogui
ExecStop=/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p strong-password stop

[Install]
WantedBy=multi-user.target

根据你的服务器资源调整Xmx和Xms标志。Xmx标志定义 Java 虚拟机的最大内存,而Xms定义初始内存。确保使用正确的rcon端口和密码。

重新加载 systemd 管理配置:

1
sudo systemctl daemon-reload

你还可以输入以下命令启动 Minecraft 服务器:

1
sudo systemctl start minecraft

使用以下命令检查服务状态:

1
sudo systemctl status minecraft

最后,设置 Minecraft 服务开机启动:

1
sudo systemctl enable minecraft