这是我们面向游戏服务器的 VPS 页面的动手搭档。那一页讲的是哪个套餐合适;这一页讲的是真正把服务器立起来——Paper、一个正经的 systemd 服务、省 RAM 的配置、防火墙和备份。读到最后,你会有一台熬过崩溃、熬过重启、也不会悄悄吃掉你整台机器的 Minecraft 服务器。
开始前一个诚实的说明:那个用例页里的 CPU 和 RAM 界限仍然适用。Paper 在一个 Small 或 Medium 套餐上给一群朋友玩很棒。一个给大社区的 150 mod 整合包不是这些套餐的用途,再多的配置也修不了那个。说清楚这点,我们开搭。
1. 装 Java
Paper 跑在 Java 上。装一个 headless JDK——对当前的 Minecraft 版本那是 Java 21:
sudo apt update
sudo apt install -y openjdk-21-jre-headless
java -version
如果你的 Minecraft 版本更老,装它要求的 Java(1.18-1.20 时代是 17)。如果版本不对,服务器日志会大声抱怨。
2. 设好服务器目录和 Paper
以它自己的用户跑服务器,而不是 root——万一出岔子,你想让爆炸半径小。
sudo adduser --system --group --home /opt/minecraft minecraft
sudo -u minecraft mkdir -p /opt/minecraft/server
cd /opt/minecraft/server
下载你 Minecraft 版本的 Paper jar(从他们的下载页拿 URL)、保存为 server.jar:
sudo -u minecraft wget -O server.jar "PASTE_PAPER_DOWNLOAD_URL_HERE"
跑一次以生成配置文件,然后接受 EULA:
sudo -u minecraft java -Xms1G -Xmx3G -jar server.jar --nogui
# 它会立刻停下、要你接受 EULA
sudo -u minecraft sed -i 's/eula=false/eula=true/' eula.txt
-Xmx3G 是 JVM 堆的上限。在一个 4 GB 的 Small 套餐上,给 JVM 约 3 GB 让操作系统有喘息空间。别把它设成你的全部 RAM——JVM 在堆之外还有开销,而 OOM 杀手不谈判。
3. 调 server.properties 省 RAM
这是你免费给自己买来性能的地方。打开 server.properties、设:
view-distance=8
simulation-distance=6
max-players=10
view-distance—— 每个玩家周围保持加载的区块数。默认的 10 很慷慨;8(甚至 6)明显省 RAM 和 CPU,几乎没人注意到差别。simulation-distance—— 实体、红石和作物生长实际 tick 的距离。更低更便宜。6 是一个合理的起点。max-players—— 设成你实际预期的数,这样一群意外来客不会炸掉你的 RAM 预算。
记住单线程的现实:Minecraft 的 tick 依赖一个核。如果 TPS 掉了,更多 RAM 帮不上——降低 simulation-distance 和怪物上限会。
4. 作为 systemd 服务来跑
这是把“一个我跑过一次的 jar”变成“一台服务器”的部分。创建 /etc/systemd/system/minecraft.service:
[Unit]
Description=Minecraft Paper Server
After=network.target
[Service]
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xms1G -Xmx3G -jar server.jar --nogui
Restart=on-failure
RestartSec=10
SuccessExitStatus=0 143
[Install]
WantedBy=multi-user.target
Restart=on-failure 是要紧的那行——如果 JVM 崩溃,systemd 在十秒内把它拉回来。SuccessExitStatus=... 143 让 systemd 不把一次正常的 SIGTERM 关机当成失败。启用并启动它:
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo systemctl status minecraft
sudo journalctl -u minecraft -f # 实时日志
现在它开机就起、崩溃就重启,日志进 journald。
5. 开防火墙端口
Minecraft 默认监听 TCP 25565。只开那个:
sudo ufw allow 25565/tcp
sudo ufw enable
把服务器的 IP 给你的朋友(如果你改了端口就加 :25565)。别开任何你不需要的——跑自己机器的全部意义就是你决定什么可达。
6. 备份世界
那件人们一直跳过、直到希望自己没跳过的那天。一个简单的脚本:
#!/bin/bash
cd /opt/minecraft/server
TS=$(date +%Y%m%d-%H%M)
tar czf /opt/minecraft/backups/world-$TS.tar.gz world world_nether world_the_end
从 cron 跑它,而且——这是重要的一半——把归档拷到服务器之外,到对象存储或另一台机器。一个跟世界在同一块磁盘上的备份随磁盘一起死。如果你的世界要紧,在打 tar 之前先在服务器控制台里跑 save-off 和 save-all,这样你永远不会在写入中途做快照。
就这样
Java、Paper、调好的配置、一个自动重启的 systemd 服务、一个防火墙端口,以及住在别处的备份。那就是一台像样运转的 Minecraft 服务器。
如果你还没有机器:挑一个套餐——一小群人用 Small($8)、往十个玩家推就用 Medium($12)——用 USDC 或 USDT 付款(无需 KYC、不用文件),你大约 60 秒就有 root。然后照着这一页往下做。最后再诚实提醒一次:这是给原版或跟朋友玩 Paper 的对的配置。一个给大社区的重整合包需要不同的硬件,我们宁愿你先从我们这儿听到这句。
评论
暂无评论。来做第一个吧。