首次自建MC服务器笔记
需求
起因只是同课题组一起毕业的四五个小伙伴想一起约着开一个MC服玩玩。
不过我们偏好的平台不太统一,有电脑端有手机端,大部分人没有国际版正版,但我又想用自己的皮肤(所以尽可能不用网易版)。刚好手头有校园网环境内的云服务器。
经过一系列调研之后,最终选择Minecraft Java服务端 + Geyser(间歇泉)的方式,PC用户用Java端直连服务器,手机用户用携带版通过Geyser转发连接服务器。由于目前版本Geyser已经不支持外置登录,我们最终采用了关闭在线验证,离线登录+白名单的方式,虽然不够理想但是校园网+使用人数少,也不是不能接受。
主要流程可以参考Sakura Frp平台给出的教程。但是毕竟平台不同,流程多少有些差别。
基础配置
云服务器
配置如下:
- Ubuntu 22.04 LTS (x86_64)
- 虚拟CPU 4个,内存4GB,存储40GB SSD,另有100GB HDD作为临时备份用
作为服务器来说,内存略小,如果能扩到8GB会比较好。
服务器SSH设置略。一般在线服务还建议配置一个non-sudo用户专门运行。
Java环境安装
可以用官方软件源的openjdk 21
sudo apt install openjdk-21-jdk-headless
headless 表示无图形界面
Minecraft Java服务端
首先建议先通读一遍服务器核心相关的科普。
按照服务器能否支持插件或Mod,排列组合可以分为四类服务器核心。我们需要一定程度的定制性(可折腾),所以排除原版服务器。而定制化最高的Mod+插件服(比如CatServer)最复杂,坑也多,所以排除在外。最终是打算插件/Mod服二选一。
考虑到服务器性能羸弱,加上我们目前对Mod兴趣不大,我们最终还是用了插件服务器中的Paper。PaperMC在性能上有一些激进的优化(代价是优化掉了一些原版特性),一些服务器常用(扩展命令、皮肤)可以直接借助插件实现,比较适合我们的场景。
Minecraft版本方面,我们最终使用了最新的1.21.4。这点可能有点欠考虑,因为Paper核心本身还处于dev build,不够稳定,而且大部分插件的兼容性还没到这个版本。不过,我发现插件对版本的需求没有Mod那么严格,往往好几个大版本前的插件现在还能用(也可能我用的插件修改程度比较浅)。
可以直接从官网下载PaperMC的JAR包。
下载后,用以下指令启动服务器
java -Xms2G -Xmx2G -jar paper.jar --nogui
- 其中
-Xms
后面的是Java的启动内存,-Xmx
是最大内存。 - 建议在tmux中运行,保证SSH退出后服务器仍在后台运行。
- 可以启动命令写成一个名为
launch.sh
的shell脚本,然后chmod +x launch.sh
赋予执行权限。
第一次运行时必然会报错退出,需要同意EULA规约,即把eula.txt
中设置改为true
。
与此同时,可以在server.properties
中改一些配置:
# 离线模式
online-mode=false
# motd影响搜出服务器时显示的名称
motd=xxxx
# 应群友要求关闭了友伤
pvp=false
# 给大伙上上强度.jpg
difficulty=hard
# 同服最大玩家数量,稍微留了点余量方便开小号
max-players=8
为了保证关闭云服务器SSH后服务端还在后台运行,我是把launch.sh
跑在tmux里的。