MC联机服务器搭建教程

本站租赁了腾讯云双核4G的轻量应用服务器,该服务器的性能用于这个网站绰绰有余,故在此基础上搭建了MC联机服务器。

本文在此分享一下个人搭建MC服务器的一些经历。

我租赁的服务器系统为ubuntu server 20.04,操作上和常规的linux大同小异。

首先是登陆服务器,可以直接使用腾讯云控制台内的终端,或者通过SSH连接到云服务器。这些在腾讯云官网内均有详细教程,在此不做赘述。

登陆服务器后,需要先下载MC所需要的java运行环境。在终端中输入如下代码即可:

sudo apt install openjdk-8-jre-headless

运行完成后,可以新建一个用户,命名为minecraft,避免MC服务器直接运行在root账户下。

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

接下来需要安装获取mcrcon所需的git软件包。

 sudo apt-get install git build-essential

安装完成后,切换到minecraft账户,创建游戏目录,并通过git指令获取github上的mcrcon工具。

 sudo su minecraft
 mkdir -p ~/{backups,tools,server}

·backups用于存放备份

·tools用于存放mcrcon管理工具

·server则为服务器运行目录

 cd ~/tools && git clone https://github.com/Tiiffi/mcrcon.git
 cd ~/tools/mcrcon
 gcc -std=gnu11 -pedantic -Wall -Wextra -O2 -s -o mcrcon mcrcon.c

该步骤完成后,即下载并编译了mcrcon,若不放心可以用如下代码测试编译结果:

 ./mcrcon -h

如果编译成功,应该会返回如下内容:

Usage: mcrcon [OPTIONS] [COMMANDS]

Send rcon commands to Minecraft server.

Options:
  -H		Server address (default: localhost)
  -P		Port (default: 25575)
  -p		Rcon password
  -t		Terminal mode
  -s		Silent mode
  -c		Disable colors
  -r		Output raw packets
  -w		Wait for specified duration (seconds) between each command (1 - 600s)
  -h		Print usage
  -v		Version information

Server address, port and password can be set with following environment variables:
  MCRCON_HOST
  MCRCON_PORT
  MCRCON_PASS

- mcrcon will start in terminal mode if no commands are given
- Command-line options will override environment variables
- Rcon commands with spaces must be enclosed in quotes

Example:
	mcrcon -H my.minecraft.server -p password -w 5 "say Server is restarting!" save-all stop

编译成功后,就可以开始下载并配置MC服务器了,本人下载的MC服务器版本为1.16.1,下载地址为:https://launcher.mojang.com/v1/objects/a412fd69db1f81db3f511c1463fd304675244077/server.jar

可以通过wget指令将其下载到刚创建的server文件夹中:

 wget https://launcher.mojang.com/v1/objects/a412fd69db1f81db3f511c1463fd304675244077/server.jar -P ~/server

下载完成后,打开server.jar

 cd ~/server
 java -jar server.jar nogui

初次运行时,它将执行一些操作并创建server.properties和eula.txt文件后停止运行。此时需要打开eula.txt文件,并将false改为true

 nano ~/server/eula.txt

更改内容为

 eula=true

更改完成后,继续配置server.properties文件

 nano ~/server/server.properties

找到以下内容并修改

 rcon.password=strong-password  # rcon连接密码自行更改设置
 enable-rcon=true               # 允许rcon连接
 op-permission-level=4          # op操作权限为最高,级别为1-4
 online-mode=false              # 不验证连接Minecraft

配置完成后需要在服务器供应商的防火墙选项中开放25565和25575端口,否则将无法连接到服务器。

并执行以下代码

sudo ufw allow 25565/tcp
sudo ufw allow 25575/tcp

到目前为止已经做好了服务器搭建的前期准备工作,接下来即可启动服务器。

创建systemd服务文件:

sudo su    
sudo nano /etc/systemd/system/minecraft.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=/usr/bin/java -Xmx3072M -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

其中3072M和1024M分别代表MC服务器最大和最小占用内存,可以根据自己服务器配置更改,strong-password则需要改为之前server.properties中自己修改的密码。

重新加载systemed:

sudo systemctl daemon-reload

启动MC服务器:

sudo systemctl start minecraft

查看MC服务器状态:

sudo systemctl status minecraft

如果正确运行,应有如下返回内容:

● minecraft.service - Minecraft Server
     Loaded: loaded (/etc/systemd/system/minecraft.service; disabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-12-07 17:54:58 CST; 2h 12min ago
   Main PID: 31521 (java)
      Tasks: 22 (limit: 4612)
     Memory: 1.3G
     CGroup: /system.slice/minecraft.service
             └─31521 /usr/bin/java -Xmx3072M -Xms1024M -jar server.jar nogui

设置MC服务器自启动:

sudo systemctl enable minecraft

如果需要关闭MC服务器,则可通过以下指令实现:

sudo systemctl stop minecraft

同时为了服务器安全,防止被人炸服,备份功能必不可少,可以通过以下步骤配置:

sudo su minecraft
nano ~/tools/backup.sh

粘贴以下内容

#!/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_%R).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

创建cron作业,每天23:00备份

crontab -e

在打开的文档结尾处粘贴如下内容后保存

0 23 * * * /opt/minecraft/tools/backup.sh

如上设置完成后,MC服务器就会在每天23:00自动备份,同时删除一周前的备份。

测试MC连接

启动MC客户端,在多人游戏中选择添加服务器,在服务器地址栏内输入服务器IP及端口,格式为XXX.XXX.XXX.XXX:25565,然后添加服务器,如果能够成功连接就说明服务器搭建成功。

打开服务器控制台

 ~/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p strong-password -t

其中strong-password需要改为上文在server.properties中修改的密码。

回车后即可以进入MC服务器的控制台,这与个人模式下的控制台大同小异,多了一些诸如op、save这类服务器指令,详情可以参看MC wiki

上述就是我个人学习到的ubuntu下搭建MC服务器的方法,希望能对大家有所帮助。