最近又重拾了这款游戏,和几个朋友一起联机玩。随即就发现很多教程并没有给出如何自动化管理服务端。
在网上查了一些资料后选择交由系统来完成所有工作,于是选用了原版服务端+Rcon+systemctl管理。
关于服务器如何搭建我就不在这里赘述了,基本都是同样的下载jar包、修改配置文件、映射端口。
服务 |
版本 |
Ubuntu |
20.04 |
Minecraft Server |
1.16.1 |
编译并启动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
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| [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
|
参考文献