minecraft开服
最近和朋友回坑mc,发现联机挺麻烦。最开始用radmin,但地区不同延迟太大;改用frp内网穿透,但又必须我本地一直开机,对设备压力也大
于是打算直接在云服务器上开个服,方便随时玩。但在搜教程时发现,网上大都是雨云之类的服务商推广,全是教你用人家自带的面板,对我来说有0的参考价值。最后自己找了docker项目研究了一下,并写下了这个文章
配置
我使用的是一台安装了docker的linux服务器 配置最低建议2CPU / 2G内存 / 10G硬盘 如果人数在2-4人左右,为了不卡顿,建议内存4G以上
下面是我测试时跑图的监控截图
单人游玩时,只要不疯狂跑图加载新区块,CPU的负载大约在25-30%左右,主要的压力还是在内存上

搭建过程
于是针对java版1.21.1 Fabric 搭建的,后续的插件链接也都是为了配合版本,如果要开其他版本,记得对应替换链接
安装docker的部分就跳过了
1.创建个存放模组的目录并进入
sudo mkdir -p /var/lib/docker/volumes/mcserver/_mods && cd /var/lib/docker/volumes/mcserver/_mods
2.下载Fabric API
sudo wget -4 -O fabric-api.jar https://github.com/FabricMC/fabric-api/releases/download/0.102.0+1.21.1/fabric-api-0.102.0+1.21.1.jar
3.下载EasyAuth,用于离线模式的注册登录验证
sudo wget -4 -O easyauth.jar https://github.com/NikitaCartes/EasyAuth/releases/download/3.2.1/easyauth-mc1.21-3.2.1.jar
4.docker一键启动
sudo docker run \
-d \
--name mcserver \ # 容器名称
-p 34567:25565/tcp \ # 镜像默认25565端口进入游戏会被bot扫描,为了安全起见,建议改掉
--restart=always \
-e EULA=TRUE \ # 同意官方EULA(必须为TRUE才能启动)
-e TYPE=FABRIC \ # 服务器类型:Fabric
-e VERSION=1.21.1 \ # 游戏版本
-e LEVEL=MyNewWorld \ # 世界在服务器目录的文件夹名
-e ONLINE_MODE=FALSE \ # 关闭正版验证
-e ENABLE_WHITELIST=FALSE \ # 不启用白名单
-e OVERRIDE_SERVER_PROPERTIES=TRUE \ # 允许环境变量覆盖server.properties
-e ENFORCE_SECURE_PROFILE=FALSE \ # 部分客户端需要禁用安全聊天验证
-e CREATE_CONSOLE_IN_PIPE=true \ # 允许通过docker attach进入控制台
-e MOTD="MC?!!" \ # 服务器列表显示的信息
-v mcserver:/data:rw \
-v /var/lib/docker/volumes/mcserver/_mods:/mods:ro \
itzg/minecraft-server
等docker下载完后执行
sudo docker logs -f mcserver
出现done的时候

进入游戏输入IP+端口就可以看见游戏,可以进入了

5.创建用户
注册个账号 格式:auth register [你的昵称] [密码],这个username是在游戏中显示的昵称
sudo docker exec --user 1000 -i mcserver mc-send-to-console auth register USERNAME PASSWORD
进入游戏后输入
/login PASSWORD
如果不想在ssh执行,则先进入游戏注册
/register PASSWORD PASSWORD
6.给op权限
这一步只能在ssh终端执行
docker exec --user 1000 -i mcserver mc-send-to-console op USERNAME
游戏中会提示获得了权限

7.结尾
到这一步基本就折腾完了,记得放行34567端口
如果后续想微调服务器配置,比如改最大人数、难度等,可以在 /var/lib/docker/volumes/mcserver/_data 目录下找到 server.properties 进行修改
更高级的参数修改,比如内存限制、更多环境变量等,可以访问 镜像文档 来修改