Mindustry开服记

前言

最近沉迷 Mindustry,忍不住自己开个服务器,所以开始了经典套路。

购买服务器

我,老穷逼一个,虽然没少去阿里云租抢占式实例服务器用,次次开都是不眨眼那种,动不动开高配那种,但是这些机器都是用一会儿就释放,一般活不过两天那种,但这次开游戏服务器想开久一点,就只能去淘宝找面板服租来玩了,毕竟要省钱,当然是想办法分摊成本,成本摊下来之后就便宜了。

之前呢,我也租过面板服,或者其他各种各样的 vps,用过之后知道老牌服务商呢,个个都是老油条,疯狂超开的,个个都是大内存洋垃圾 CPU,想玩的舒服点呢,只有去挑那些萌新淘宝卖家那些才稍微有那么一点点良心,超售情况没那么严重,自己能用到的服务器 CPU 性能相对多一点。

同时,Mindustry 作为一款垃圾优化游戏,主要吃单核性能,这也是我为什么要避开超售严重地方的原因了;另外说是垃圾优化游戏,但他内存却不怎么吃,当然,多少还是要给正常量的,避免疯狂的 GC,最起码也给个 1G 的内存,虽然多数时候只会用到 300 多左右,但是单位数量一多内存还是往上涨的。

所以,我挑服务器的时候,优先选成交记录少,看起来比较萌新的淘宝卖家,然后问问他们能不能在上面开其他游戏的服务器,问了几家,都是回我可以的,既然可以,那就看看谁先回我就选谁吧,然后就10 块钱上车了。

上车之后,客服还挺好人,问我要什么端口,然后我就顺手报了个 Mindustry 的默认端口 6567,然后对面丝毫没有意思到任何问题,_也不可能意识到有任何问题,因为他们根本不知道这是 Mindustry 的默认端口,毕竟人家卖的是 Minecraft 的面版服_,然后我把服务端 jar 丢上去后还帮我改好了参数,目前看起来还挺正常的。

初步观察

这个卖家用的是国人开发的基于 nodejs 的MCSManager面板,这个面板我没看他代码之前,感觉这个面板有点零碎,有点玩具的感觉。

文件管理感觉像是调用从其他项目复制过来的代码,和外面完全不是一个风格的说,个人甚至有点怀疑不知道是从哪个项目复制过来的代码改改用的,但我没调查,也不好说好坏对吧。

然后控制有两个,一个叫做模拟型终端,是个小窗口浮窗,另一个叫做命令控制台,是个大页面,好吧,一个页面里面出现了两个相同的功能的按钮,不过有点区别也问题不大,是吧,但是,模拟型终端那个能够解析颜色代码并正确显示颜色,而命令控制台则不能,同时虽然都提供输出记录上翻,但往上翻的数量还不如不做。

意外的机会

这个卖家打算上 docker 了,我这时候暗想,草,早知道这逼没上 docker 我他妈直接传 shell 脚本运行不就 nmd 提权了吗?但我这个 Mindustry 的协议上,是同时需要开放 TCP 和 UDP 端口的,而这个 MCSManger 面板,他是不支持同时开放 tcp 和 udp 的(截至指 2021-02-16 1:52 master 分支上依然是不支持多端口进而不能同时开放 tcp 和 udp),这种情况下,我的服务端并不能丢到 docker 里面去。

作为万年老技术人,老 JS 人,看了一下代码,查了下相关资料,开始与淘宝卖家 PY 交易,表示可以魔改一手面板,让他可以在上面跑,代价是他给我多几个月的服务器。恰逢这淘宝卖家又换服务器,把所有服务器都迁移了,我就进了一步,借他退役服务器来调试开发,而这个淘宝卖家又苦于没法开个 udp 端口给基岩版服务端跑,好家伙,双赢啊!

吐槽一句,原来淘宝开面版服的能有怎么低技术力低安全注意度的人吗。

接下来我就顺利的拿到旧服务器的 SSH 登录密码了,在上面完成了修改,大概也就改了一个文件,重写了下 docker 配置生成的部分的代码,让他支持了多端口号开放。并让他部署到了新服务器上,中间还漏了点错误处理,后面补上了。

然后我也连带拿到了新服务器的面板的管理权限,后来也拿到了新服务器的 SSH(一句话就拿到了,太简单了)。

MCSManager 爆炸,翼龙 pterodactyl 上位

在前面调查魔改资料的时候,意外发现了还有一个免费用的翼龙面板,看起来成熟度比较高,同时我也在其他 Mindustry 服务器的面板看到了在用这个面板。

在前面新服务器起来之后,服务器数量上来了,不知道是不是面板上代码的问题,疑似 nodejs 打开文件没有关闭,疯狂爆炸。想起这个面板,我自己忍不住开了一手新加坡的抢占式服务器,几个小时就顺利完成了面板和受控端的搭建,试用一下很香,超级香,截了几个图给他看,他也好像很感兴趣,于是约定第二台服务器上翼龙试下。

第二台服务器快要上了,我和这个淘宝卖家也 PY 交易了一波,翻译了这个面板,在一台他们的 vps 下面搭建了一个测试面板,并且踩了一大堆国内特有的坑(oray.io 的 docker 源国内超慢)。

第二台服务器不久就到了,我们也开始搭建正式的面板,我说要把面板和运行服务器分开,避免一起爆炸,他表示可以,然后问能不能搭在宝塔上,我说我没试过,让他整个独立的吧,磨叽了好一会儿才去租了回来。

(宝塔这玩意蛮坑爹的,因为大包办,很多东西为了符合宝塔的运维思路,没有丢在默认的地方,导致很多通用的教程到了宝塔这边都需要额外的注意才能使用)

(后来他自己琢磨搬到宝塔去了,虽然中间还是得我去处理一些关键的地方才完成搭建,但这都是后话了)

第二台服务器的网络是个 BGP,这个 BGP 有个坑,就是海外全屏蔽,这就引出来一大堆坑,一堆东西都只能是去找国内的镜像才能使用。这时候也亏有了前面的测试,知道阿里云那边有白嫖的 dockers 镜像构建仓库服务,才解决了 docker 的镜像问题。

这时候我也开始有了第二个 Mindustry 服务器,虽然第一个依然是鬼服的样子。

后面帮他们开第三第四台服务器就顺利很多了,我也因此开了第三第四个服务器

后记

事实证明,开淘宝店的人,技术未必到家,后面也未必有个技术在站场处理问题。

给某些人稍微说一句,这里虽然有一点运气成分,但是主要还是靠技术积累的。例如说,挑新开的淘宝卖家,这个没开过面板服的人不会注意到的,当然,这种操作其实也有风险,因为这种淘宝卖家可能三天两头重启服务器,毫无预兆的服务器崩溃,连带面板一起炸裂那种。我就没少经历这种事情,然后还得我去给他擦屁股收拾服务器。同时,你没点技术你能解决人家问题吗???

别说我捡到宝,只能说我有的知识比普通人其他人多那么一点点。

当然,自己几斤几两还是清楚的,有些地方我没有摸过,那些地方我依然是个菜逼,该低头的还是低头,该认别人是大佬的还是得认,平时还是得谦虚点,该请教别人的时候还是得请教。