Minecraft 一直是最流行的游戏之一。它是一个沙盒视频游戏,用户可以体验无限的世界,并且可以构建不同的结构,从简单的房子到高耸的摩天大楼。这个指南解释如何在 Ubuntu 上如何搭建我的世界服务器。我们将会使用 Systemd 来运行我的世界服务器以及 mcrcon 工具来连接运行的实例。我们也将向你展示如何创建一个计划任务,执行常规的服务器备份。
一、前提
根据 Minecraft 官方网站,4GB RAM 内存是最基本的配置。
安装必要的软件包来构建 mcrcon 工具:
sudo apt update
sudo apt install git build-essential
二、安装运行环境 Java mcrcon
JAVA
Minecraft 需要 Java 8 或者更高版本。 我们将会安装 Java 的 JRE 版本。这个版本更适合服务器应用,因为它有更少的依赖,并且使用更少的系统资源。
我们使用压缩包安装
进入 java 构建网站adoptium,当前链接已设定 jre21、、linux、x64,可手动修改
# 下载完成后使用scp上传到服务器
scp ./OpenJDK*.tar.gz username@host:~/
# 移动到/usr/local/
sudo mv OpenJDK*.tar.gz /usr/local/ && cd /usr/local
# 解压文件
sudo tar xzf OpenJDK*.tar.gz
# ls -l 查看解压目录
# 创建软连接到/usr/local/bin目录,并重命名放置冲突
sudo ln -sf $(ls -d /usr/local/jdk-*)/bin/java /usr/local/bin/jre21
# 查看软连接
ls -l /usr/local/bin/jre21
mcrcon
RCON 是一个协议,它允许你连接到 Minecraft 服务器,并且执行命令。mcron是一个 RCON 客户端,使用 C 语言编写而成。
我们将会从 Github 下载最新的源代码,并且构建 mcrcon
二进制文件。
从 Github 克隆 Tiiffi/mcrcon
源到 ~/tools/mcron
目录:
# 无法下载可以尝试使用代理 git config --global https.proxy http://127.0.0.1:7890
# 自行切换代理地址,或使用其他github加速方式
sudo git clone https://github.com/Tiiffi/mcrcon.git /usr/local/mcrcon
cd /usr/local/mcrcon
sudo make
一旦完成,验证 mcrcon
编译成功,打印它的版本:
./mcrcon -v
mcrcon 0.7.2 (built: Feb 22 2024 01:39:23) - https://github.com/Tiiffi/mcrcon
Bug reports:
tiiffi+mcrcon at gmail
https://github.com/Tiiffi/mcrcon/issues/
创建软连接
sudo ln -s /usr/local/mcrcon/mcrcon /usr/local/bin/mcrcon
三、创建 Minecraft 用户
因为安全原因, Minecraft 不应该在 root 用户下运行。我们将会创建一个新的系统用户和用户组,用户主目录 /opt/minecraft
。这个用户有最小权限,来运行 Minecraft 服务器:
sudo useradd -r -m -U -d /opt/minecraft -s /bin/bash minecraft
我们不会为这个用户设置密码。这样,这个用户将不能通过 SSH 登录。想要修改 minecraft
用户,你将需要使用 root 登录服务器,或者其他有 sudo 权限的用户。
四、在 Ubuntu 上安装 Minecraft
在开始安装过程之前,切换到 minecraft 用户:
sudo su - minecraft
复制 运行下面的命令在用户主目录下创建三个新的目录:
mkdir -p ~/{backups,tools,server}
backups
目录将会存储 服务器备份。你可以同步这个目录到你的远程备份服务器。tools
目录将会托管mcrcon
客户端和备份脚本。server
目录将会包含实际的 Minecraft 服务器和它的数据。
4.1 下载 Minecraft 服务器
有一些 Minecraft 服务器 mods 例如 Craftbukkit 或者 Spigot ,允许你在你的服务器上添加特性(插件)以及定制,以及调整服务器设置。
在这个指南中,我们将会安装最新的 Fabric 我的世界服务器。同样的指令,同样适合于其他的服务器 mods。
我们进入Fabric Server核心下载页面下载最新的 Minecraft 服务器 Java 压缩包(JAR)。在写作的时候,最新的版本是 1.21.4。
使用 wget
下载 jar 文件到~/server 目录。
curl -o ~/server/server.jar https://meta.fabricmc.net/v2/versions/loader/1.21.4/0.16.10/1.0.1/server/jar
4.2 配置 Minecraft 服务器
一旦下载完成,切换到 ~/server
目录,并且启动 Minecraft 服务器:
cd ~/server
jre21 -Xmx2048M -Xms1024M -jar server.jar nogui
第一次启动的时候,服务器会执行一些操作,最后创建 server.properties
和 eula.txt
文件,并且停止。
[17:35:14] [main/ERROR]: Failed to load properties from file: server.properties
[17:35:15] [main/WARN]: Failed to load eula.txt
[17:35:15] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
想要运行服务器,你需要同意 Minecraft EULA
,就像上面输出所有提示的。
打开 eula.txt
文件,并且修改 eula=false
为 eula=true
:
sed -i 's/false/true/g' ~/server/eula.txt
查看文件
cat ~/server/eula.txt
下一步,打开 server.properties
文件,并且启动 rcon
协议,并且设置 rcon 密码:
vim ~/server/server.properties
定位到下面的行,并且更新它们的值,就像下面显示的一样:
rcon.port=25575
rcon.password=strong-password
enable-rcon=true
不要忘记将 strong-password
修改为一些更安全的密码。如果你不想从远程位置访问 Minecraft 服务器,确保 rcon 端口被防火墙所阻塞。 复制 在这里,你可以调整服务器的默认属性。想要获取更多关于服务器设置的信息,浏览minecraft.service页面。
五、创建 Systemd 单元文件
与手动启动 Minecraft 服务器相比,我们将会创建一个 Systemd 单元文件,并且将 Minecraft 当作服务来运行。
通过 exit
来切换回你的 sudo 用户。
打开你的文本编辑器,并且在 /etc/systemd/system/
目录下创建一个名为 mcpaper.service
的文件:
sudo vim /etc/systemd/system/mcserver.service
粘贴下面的配置:
[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=jre21 -Xmx2048M -Xms1024M -jar server.jar nogui
ExecStop=mcrcon -H 127.0.0.1 -P 25575 -p strong-password stop
[Install]
WantedBy=multi-user.target
根据你的服务器资源来调整 Xmx
和 Xms
标志。Xmx
标志定义 Java 虚拟机的最大申请内存。而 Xms
定义了初始申请内存。当前,确保你使用了正确的 rcon
端口和密码。
保存文件,并且重新加载 systemd 管理配置:
sudo systemctl daemon-reload
sudo systemctl start mcserver
sudo systemctl status mcserver
输出:
● mcpaper.service - Minecraft Server
Loaded: loaded (/etc/systemd/system/mcpaper.service; disabled; preset: enabled)
Active: active (running) since Tue 2024-08-27 14:23:02 CST; 1min 6s ago
Main PID: 55281 (jre21)
Tasks: 40 (limit: 4697)
Memory: 1.3G ()
CPU: 38.196s
CGroup: /system.slice/mcpaper.service
└─55281 jre21 -Xmx2048M -Xms1024M -jar server.jar nogui
最后,启动 Minecraft 服务开机启动。
sudo systemctl enable mcpaper
六、调整防火墙
Ubuntu 附带防火墙工具 UFW。如果在你的系统上启用了防火墙,你想从你的本地网络访问 Minecraft 服务器,你需要打开端口 25565
:
sudo ufw allow 25565/tcp
云服务器需要去对应厂商的防火墙控制台配置规则
七、配置备份
在这一节,我们创建一个备份 shell 脚本和计划任务,以便自动备份 Minecraft 服务器。
切换到 minecraft
:
sudo su - minecraft
打开你的文本编辑器,并且创建下面的文件:
vim /opt/minecraft/tools/backup.sh
粘贴下面的配置:
#!/bin/bash
function rcon {
# 自处需修改登录密码
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"
## Delete older backups
find /opt/minecraft/backups/ -type f -mtime +7 -name '*.gz' -delete
保存文件,并且将脚本设置为可执行:
chmod +x /opt/minecraft/tools/backup.sh
下一步,创建一个定时任务,每天自动在一个固定时间运行一次。
打开你的 crontab 文件,输入:
crontab -e
每天 23:00 运行备份脚本,粘贴下面的文本:
0 23 * * * /opt/minecraft/tools/backup.sh
八、访问 Minecraft 终端
想要访问 Minecraft 终端,使用 mcrcon
工具。你需要指定主机,rcon 端口,rcon 密码并且使用 -t
(启动 mcrcon
终端模式):
mcrcon -H 127.0.0.1 -P 25575 -p strong-password -t
Logged in. Type "Q" to quit!
>
从远程位置访问 Minecraft 终端,确保 rcon 端口没有被阻塞。
如果你正常连接到 Minecraft 终端,不想输入一大串命令,你可以创建一个 bash 关联。
九、总结
我们已经向你展示如何在 Ubuntu 20.04 上搭建一个 Minecraft(我的世界)服务器,并且设置每天备份。
现在你可以启动你的 Minecraft 客户端,连接到服务器,并且开始 Minecraft 冒险。
原文 :https://linuxize.com/post/how-to-make-minecraft-server-on-ubuntu-20-04/
十、基岩版
cd ~
mkdir Server
cd Server
sudo apt-get install wget -y
wget https://minecraft.azureedge.net/bin-linux/bedrock-server-1.20.71.01.zip
sudo apt-get install unzip -y
unzip bedrock-server-1.20.71.01.zip
随后你可以使用 ls 命令查看目录下的文件,有可能这些文件被再次纳入了一个文件夹,你可以使用 cd 命令进入此文件夹,然后执行以下任一命令启动它:
LD_LIBRARY_PATH=. ./bedrock_server
或
./bedrock_server
使 BDS 在后台运行编辑编辑源代码 当你退出 SSH 终端亦或者结束掉 bash 终端时,你运行的程序也会随之终止,为此,你需要安装 screen:
sudo apt-get install screen -y
然后使用 screen 进入 screen 终端(你可能需要再按一次 ↵ Enter)
随后再次执行刚才的命令:
LD_LIBRARY_PATH=. ./bedrock_server
或
./bedrock_server
这样你的 BDS 就可以在后台运行而不需要你一直保持着终端开启。