Skip to main content

如何在 VPS 或专用服务器上创建 Minecraft 服务器

本指南介绍如何在您的 VPS 或专用 Linux 服务器上安装和配置 Minecraft Java 版服务器。

订购服务器

要托管您的 Minecraft 服务器,HostMyServers 提供多种游戏优化选择:

前提条件

  • 以 root 或具有 sudo 权限的用户进行 SSH 访问
  • 已更新的 Debian/Ubuntu 系统
  • 最少 2 GB 内存(10+ 玩家建议 4 GB)
  • 端口 25565 可访问(TCP)
  • 稳定的网络连接

配置要求

玩家数量最低内存推荐内存
1-51 GB2 GB
5-102 GB4 GB
10-204 GB6 GB
20+6 GB8 GB+

系统更新

sudo apt update && sudo apt upgrade -y

安装 Java

Minecraft 1.17+ 至少需要 Java 17。对于最新版本(1.20+),推荐使用 Java 21。

安装 Java 21(推荐)

sudo apt install -y openjdk-21-jdk

验证安装

java --version

您应该看到类似以下的输出:

openjdk 21.0.x 2024-xx-xx
OpenJDK Runtime Environment (build 21.0.x+xx-xx)
OpenJDK 64-Bit Server VM (build 21.0.x+xx-xx, mixed mode, sharing)

创建专用用户

出于安全考虑,永远不要以 root 身份运行服务器。创建专用用户:

sudo adduser --system --home /opt/minecraft --shell /bin/bash minecraft

安装必要工具

sudo apt install -y screen wget curl unzip
  • screen:在 SSH 断开后保持服务器运行
  • wget/curl:用于下载文件
  • unzip:用于解压文件

下载 Minecraft 服务器

以 minecraft 用户身份连接

sudo -u minecraft bash
cd /opt/minecraft
mkdir server
cd server

下载官方服务器

minecraft.net/download/server 获取最新版本的链接,然后:

wget -O server.jar https://piston-data.mojang.com/v1/objects/XXXXXXX/server.jar
注意

请将 URL 替换为所需版本的官方链接。

接受 EULA

您必须接受 Minecraft 许可协议:

echo "eula=true" > eula.txt

首次启动

首次启动服务器以生成配置文件:

java -Xms1G -Xmx2G -jar server.jar nogui

内存参数:

  • -Xms1G:初始内存(1 GB)
  • -Xmx2G:最大内存(2 GB)
  • nogui:禁用图形界面

首次启动后使用 stopCtrl+C 停止服务器。

服务器配置

根据您的需求编辑 server.properties 文件:

nano server.properties

重要设置

# 服务器端口(默认:25565)
server-port=25565

# 最大玩家数量
max-players=20

# 游戏模式(survival, creative, adventure, spectator)
gamemode=survival

# 难度(peaceful, easy, normal, hard)
difficulty=normal

# 服务器列表中显示的消息
motd=我的 Minecraft 服务器

# 渲染距离(如有卡顿请降低)
view-distance=10

# 启用白名单
white-list=false

# 在线模式(Mojang 账户验证)
online-mode=true

# 启用 PvP
pvp=true

# 出生点保护(方块半径)
spawn-protection=16

防火墙配置

在防火墙中开放 Minecraft 端口:

使用 UFW

sudo ufw allow 25565/tcp
sudo ufw reload

使用 iptables

sudo iptables -A INPUT -p tcp --dport 25565 -j ACCEPT
sudo iptables-save | sudo tee /etc/iptables/rules.v4

使用 screen 运行

在 SSH 断开后保持服务器运行:

在 screen 中启动服务器

screen -S minecraft
cd /opt/minecraft/server
java -Xms1G -Xmx2G -jar server.jar nogui

分离会话

Ctrl+A 然后 D 分离会话。

返回会话

screen -r minecraft

列出会话

screen -ls

配置为 systemd 服务

用于服务器启动时自动运行:

创建服务文件

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

文件内容:

[Unit]
Description=Minecraft Java Server
After=network.target

[Service]
User=minecraft
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xms1G -Xmx2G -jar /opt/minecraft/server/server.jar nogui
ExecStop=/bin/kill -SIGINT $MAINPID
Restart=on-failure
RestartSec=20
StandardInput=null

[Install]
WantedBy=multi-user.target

启用并启动服务

sudo systemctl daemon-reload
sudo systemctl enable minecraft.service
sudo systemctl start minecraft.service

管理命令

# 检查状态
sudo systemctl status minecraft.service

# 停止服务器
sudo systemctl stop minecraft.service

# 重启服务器
sudo systemctl restart minecraft.service

# 查看日志
sudo journalctl -u minecraft.service -f

服务器管理

常用控制台命令

连接到服务器控制台后(通过 screen):

命令描述
stop正常停止服务器
save-all保存世界
list显示在线玩家
op <玩家>给予玩家管理员权限
deop <玩家>移除管理员权限
kick <玩家>踢出玩家
ban <玩家>封禁玩家
whitelist add <玩家>添加玩家到白名单
whitelist remove <玩家>从白名单移除玩家
gamemode <模式> <玩家>更改游戏模式
difficulty <级别>更改难度

性能优化

优化启动脚本

创建带有优化参数的启动脚本:

nano /opt/minecraft/server/start.sh
#!/bin/bash
cd /opt/minecraft/server

java -Xms2G -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 server.jar nogui

使脚本可执行:

chmod +x /opt/minecraft/server/start.sh

减少卡顿

server.properties 中:

# 减少渲染距离
view-distance=8

# 减少模拟距离
simulation-distance=6

# 限制实体
max-tick-time=60000

自动备份

备份脚本

sudo nano /opt/minecraft/backup.sh
#!/bin/bash
BACKUP_DIR="/opt/minecraft/backups"
SERVER_DIR="/opt/minecraft/server"
DATE=$(date +%Y-%m-%d_%H-%M-%S)

mkdir -p $BACKUP_DIR

# 世界备份
tar -czf $BACKUP_DIR/world_$DATE.tar.gz -C $SERVER_DIR world world_nether world_the_end

# 删除超过7天的备份
find $BACKUP_DIR -name "world_*.tar.gz" -mtime +7 -delete

echo "备份完成:world_$DATE.tar.gz"
chmod +x /opt/minecraft/backup.sh

计划备份

sudo crontab -e

添加:

# 每天凌晨4点备份
0 4 * * * /opt/minecraft/backup.sh

连接到服务器

玩家可以使用以下信息连接:

  • 地址您的服务器IP您的域名.com
  • 端口25565(默认)

在 Minecraft 中:多人游戏 → 添加服务器 → 输入地址

故障排除

服务器无法启动

  • 检查日志:tail -f /opt/minecraft/server/logs/latest.log
  • 验证 Java 已安装:java --version
  • 验证 EULA 已接受:cat eula.txt

玩家无法连接

  • 验证端口 25565 已开放:sudo ufw status
  • 验证服务器正在运行:sudo systemctl status minecraft.service
  • 测试端口:nc -zv 服务器IP 25565

性能问题

  • 增加分配的内存(-Xmx
  • server.properties 中降低 view-distance
  • 使用 Paper 或 Spigot 代替原版服务器以获得更好的性能