前言
昨天看到了阿里云的经济型e服务器,感觉性价比挺不错的,因此尝试用来搭一台MineCraft服务器玩玩,这样用Curtain之类的模组挂机很方便。
VPS基本配置信息
阿里云经济型e服务器购买地址:云服务器ECS e实例-阿里云 (aliyun.com)
CPU: 2vCPU
RAM: 8GB
SSD: 20GB
Bandwidth: 5Mbps
OS: Debian 12.2 x64
MineCraft配置信息
Version: 1.18.2 Java Edition
Mod API: Forge 40.2.10
JDK:OpenJDK 17
搭建使用工具
XShell Community + XFTP Community 免费下载地址:XSHELL - The Industry’s Most Powerful SSH Client (netsarang.com)
当然其他工具包应该也是完全可以的,MobaXterm之类的,不过如果只用PuTTY之类的简单工具可能在模组传输过程中有点麻烦,这方面个人没研究过。
或许可以试试FTP之类的工具,实在不行就用curl或者wget慢慢下(?)
搭建过程
安装OpenJDK
首先通过密钥对或用户名+密码的方式,使用XShell登录远程服务器。
首先是例行更新一下
1 | apt-get update -y |
这里以我决定搭建的MineCraft 1.18.2 JE为例,它需要Java 16+,那么我安装Java 17。
(PS:Java版本通常而言越高越好,但这并非绝对,例如1.12.2及以下的一些版本就只能通过Java 8运行,这里需要根据自己的需求来修改)
1 | apt install openjdk-17-jdk |
Forge服务端部署
获取Forge下载链接
打开Forge的官方网站 Downloads for Minecraft Forge,找到自己对应游戏版本的Forge。
这里以1.18.2 Forge 40.2.10为例:
右键Installer,点击复制链接,复制到剪贴板,此时你会得到这样的一条链接:
1 | https://adfoc.us/serve/sitelinks/?id=271228&url=https://maven.minecraftforge.net/net/minecraftforge/forge/1.18.2-40.2.10/forge-1.18.2-40.2.10-installer.jar |
此时,你需要把第二个”https://“之前的部分去掉,得到这样的一条链接:
1 | https://maven.minecraftforge.net/net/minecraftforge/forge/1.18.2-40.2.10/forge-1.18.2-40.2.10-installer.jar |
这就是需要用到的链接
安装Forge服务端
此时需要写一条下载Forge的命令,注意,这条命令根据自己刚才得到的链接来修改:
1 | wget -O installer.jar https://maven.minecraftforge.net/net/minecraftforge/forge/1.18.2-40.2.10/forge-1.18.2-40.2.10-installer.jar |
在服务端根目录下创建一个MineCraft Forge自己的文件夹吧,这样方便管理,不容易混淆。
当然,你完全可以自己修改到一个想要安装的位置:
1 | cd / |
下载完成之后,就可以用Java运行Forge安装包来安装MineCraft Forge服务端了:
1 | java -jar installer.jar --installServer |
安装模组
新建一个mods文件夹,用来存放模组:
1 | mkdir mods |
此时,如果有XFTP这样的文件传输工具,你可以直接连接到VPS,然后直接用GUI操作,把本地已经准备好的模组文件都复制到服务端的/Forge/mods文件夹当中就可以了。
(注意:最好查一下 MC百科 或 CurseForge 来确认一部分模组是否有必要在服务端安装。一些“服务端可选”的模组安装了也问题不大,但是一些“服务端无效”的模组请尽量删除(例如:Rubidium,Oculus等),否则可能会造成服务器启动失败。)
首次启动
尝试运行服务端
Forge 1.17+自带了这样的一个一键脚本,可以运行MineCraft服务端,你只需要启用一键脚本就可以了:
1 | /Forge/run.sh nogui |
Forge 之前版本需要Java设置一些参数来启动,这里以MineCraft 1.12.2 JE Forge 23.5.2859为例,之后的启动方法同理:
1 | java -jar -Xmx4096M -Xms2048M forge-1.12.2-14.23.5.2859.jar nogui |
(PS:如果你有Xmanager,那么可以去掉”nogui”,因为XShell会自动调用Xmanager处理GUI的交互部分)
同意用户协议
首次启动会失败,然后创建一个eula.txt文件,这是用户协议,我们必须同意协议才能进行游戏。
我们可以用各种文本编辑器来修改它,nano、vim都可以。这里以最简单的nano为例:
1 | nano eula.txt |
此时就进入了eula.txt的编辑界面:
通过上下左右键可以操作光标,只要把false改成true就可以了,代表同意用户协议。
然后Ctrl+X退出,Y保存修改,回车,这样就保存了更改。
第二次启动
尝试运行服务端
现在可以第二次运行MineCraft服务器了,这会生成一个世界,加载模组资源,并初始化所有配置文件:
1 | /Forge/run.sh nogui |
如果启动失败,那么基本上有两种原因。如果显示killed,那么是服务器资源不足,如果显示大量的报错信息,那么基本可以确定是模组冲突。
资源不足
1.17+
可以尝试调整user_jvm_args.txt文件中的配置,把内存拉低一些,但是通常而言最好不要低于1G。
1.17-
可以尝试调整运行参数,把运行参数降下来。因为一般而言killed都是内存不足导致的。
报错信息
阅读红色的报错日志,看看究竟是什么模组出问题了,是什么模组之间发生冲突了。
然后进入mods文件夹,通过rm指令删除对应的模组即可,有XFTP的可以通过图形化界面来操作,更容易。
退出 修改服务端配置文件
世界生成完毕后,个人的建议是先退出:
1 | /stop |
此时你可以检查一下目前的/Forge文件夹,发现创建了很多文件:
1 | ls |
可以尝试修改一下服务端配置文件,定制化你的游戏体验,这一部分不详细赘述:
1 | nano server.properties |
正式启动
使用Screen分屏功能 在后台运行MineCraft
个人推荐使用screen分屏功能来简单地管理MineCraft服务器,这样只需要后台挂一个窗口就行,期间服务器可以做别的事情。
安装screen:
1 | apt install screen |
使用screen进行分屏操作(示例,分屏名称完全可以自选):
1 | screen -S Forge |
运行MineCraft服务端:
1 | /Forge/run.sh nogui |
退出分屏:
Ctrl + A + D
管理之前的分屏
查看现有分屏:
1 | screen -ls |
恢复上一次的分屏会话:
1 | screen -r |
恢复特定的分屏会话(示例,选择你自己想要进入的那个分屏):
1 | screen -r Forge |
至此,MineCraft Forge服务端搭建过程已经完成。
配置防火墙规则
云服务供应商控制台
个人使用的服务器为阿里云,这类云服务厂商提供单独的安全组/防火墙策略。需要在控制面板上找到安全组,手动添加一条TCP规则。
端口默认是25565,如果你修改过server.properties文件,那么请根据你自己设置的端口号开放端口访问权限。
UFW等内置防火墙
如果你的服务器没有控制台的防火墙规则,你又不希望把所有端口全部开放,那么可以尝试使用ufw这样的简单防火墙工具。
首先检查一下ufw是否安装好了:
1 | apt install ufw |
然后开放ufw的几个关键端口:
(PS:请一定要确认SSH端口是不是默认的22,有些云服务供应商不是的,别一个防火墙把自己的SSH连接给掐断了)
(PS:这里的25565端口也是MineCraft默认的服务器端口,如果改过server.properties文件,还是要根据自己的设置来调整)
1 | ufw allow ssh |
启用ufw防火墙:
1 | ufw enable |
简单检查一下防火墙的运行状态:
1 | ufw status |
客户端连接MineCraft服务器进行游玩
关于模组兼容
根据个人经验,客户端模组和服务端模组是这样的关系:
如果某个模组要求客户端需装,服务端需装,那么客户端和服务端必须同时安装这个模组。(此类模组多为内容模组,例如世界生成、科技、魔法、农业等)
如果某个模组要求客户端需装,服务端可选,那么通常而言,客户端安装这个模组即可。(此类模组多为辅助模组,例如操作、面板、管理、地图、优化等)
如果某个模组要求客户端需装,服务端无效,那么最好不要在服务端安装这个模组。(此类模组多为深度优化模组,例如Rubidium, Sodium, Oculus, Iris)
客户端连接方式
打开游戏,多人游戏,添加服务器。
输入备注,服务器IP地址、端口即可。不填端口的话就会尝试连接默认的25565端口。
提示模组不兼容很正常,这通常是因为客户端和服务端优化模组等差异造成的。此时不要直接放弃,一定要尝试连接一下。如果有一些模组不匹配,通常会收到一些信息,那么你可以在服务器后台或者客户端安装一些模组来补全。大多数情况下,就算模组列表不匹配,还是可以游玩的。
结语
至此,一台可运行的MineCraft Forge服务器已经搭建完成并上线运行。
个人水平有限,应该还有很多没有讲到的地方,之后如果发现了也会尝试补充完善。
本教程比较依赖XShell / XFTP工具包,因此操作中出现很多“偷懒”的地方。
希望这篇文章能对想要自建MineCraft Forge服务器的用户有所帮助。