刘明帅
热爱生活!
刘明帅
使用systemctl管理mc服务器
使用systemctl管理mc服务器

最近又重拾了这款游戏,和几个朋友一起联机玩。随即就发现很多教程并没有给出如何自动化管理服务端。

在网上查了一些资料后选择交由系统来完成所有工作,于是选用了原版服务端+Rcon+systemctl管理。

关于服务器如何搭建我就不在这里赘述了,基本都是同样的下载jar包、修改配置文件、映射端口。

服务 版本
Ubuntu20.04
Minecraft Server1.16.1
  • MC服务端放置在/opt/minecraft内

编译并启动MCRcon

解决依赖关系

sudo apt install git build-essential openjdk-8-jre-headless 

下载源码并编译:

git clone https://github.com/Tiiffi/mcrcon.git ; cd mcrcon/
make ; sudo make install

在server.properties修改如下行的参数:

rcon.port=25566
rcon.password=PASSWD
enable-rcon=true

注意!
不建议将Rcon端口映射至公网,建议防火墙禁止Rcon端口访问。

此时启动服务端后即可测试Rcon是否正常启动。

sudo mcrcon -H localhost -P 25566 -p PASSWD -t

创建systemctl配置文件

sudo vi /lib/systemd/system/mcser.service

[Unit]
Description=Minecraft Server
Documentation=

Wants=network.target
After=network.target

[Service]
User=root
Group=root
KillMode=none
SuccessExitStatus=0 1

ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
PrivateTmp=true
ReadWriteDirectories=/opt/minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xmx2048M -Xms4096M -jar minecraft_server.1.16.1.jar nogui
ExecStop=/usr/local/bin/mcrcon -H localhost -P 25566 -p PASSWD stop

[Install]
WantedBy=multi-user.target

启动服务

sudo systemctl daemon-reload
sudo systemctl start mcser
sudo systemctl enable mcser

服务端日志对接到journal中管理,使用journalctl即可管理

journalctl -u minecraft -f 

关于自动保存

虽然服务端有save-on命令可以完成自动保存,但是并没有给出如何指定保存时间或说明在什么情况下会触发保存,所以暂时使用crontab定时保存

* 3 * * mcrcon -H localhost -P 25566 -p PASSWD save-all

关于防火墙

此处仅声明默认服务端口,不声明Rcon端口

sudo vi /etc/ufw/applications.d/minecraft

[Minecraft]
title=Minecraft Server
description=
ports=25565/tcp

如果你是第一次启动ufw防火墙,请放通SSH端口后再启用。避免因防火墙开启而阻断SSH链接

sudo ufw reload
sudo ufw allow OpenSSH
sudo ufw allow Minecraft
sudo ufw enable

参考文献

文章链接: https://lmshuai.com/archives/406
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

推荐文章

发表评论

textsms
account_circle
email

刘明帅

使用systemctl管理mc服务器
序 最近又重拾了这款游戏,和几个朋友一起联机玩。随即就发现很多教程并没有给出如何自动化管理服务端。 在网上查了一些资料后选择交由系统来完成所有工作,于是选用了原版服务端+R…
扫描二维码继续阅读
2020-09-02