kengwang
强者
[请注意, 此帖内容已经过时]
[请注意, 此篇内容仅为草稿, 且未进行二次审核]
如何优雅的用 Multicraft 开 BDS 插件服
在去年我在Mcbar发布了一篇 如何优雅地用Multicraft开BDS服务器 (此文已经重新发出,但是内容可能稍微有点旧) 一年过去了,BDS圈子也发生了变化,原本认为只能原版生存的BDS因为Player大佬的一篇文章而产生了众多优秀框架和插件。对于腐竹来说,又有插件又是原版是非常吸引人的,很多面板商也就开始选择了BDS插件服。这也就回到了开头的问题,如何优雅地用Multicraft开BDS插件服
0x01 为什么要用Multicraft
诚然,现在有很多优秀的开源面板,但是大多不适合拿来做商用,而是方便团队和个人管理。而Multicraft凭借着多年来的技术沉淀所拥有的稳定性,安全性,易管理性(以及防破解性)也算是成熟的解决方案了。@Multicraft Support 没想到居然官方也在,哈哈.
永恒云的方法最为简单,采用的不是BDX或者BDSJSRunner,而是采用了BDL这个框架。BDL框架没有脚本Mod的支持,所以没有那么广泛使用。
既然采用了BDL,系统肯定是Linux了
顺带一提,因为BDS的Linux版本没有做代码优化导致效率很低,所以Linux的BDS比Windows卡。 永恒的解决方案我个人是不推荐的。不过有一说一,永恒的价格很舒适,本次测试只花了2元就开了台BDS服务器(端午节期间购买,不知道是不是卡的BUG,假如说是的话那要说声对不起,我没有长时间的开服)而且实现方法也很简单,几下能搞定. 我也就不会对这种方案进行实现.
旋律云对于BDS圈子的开发者很友好,他们的解决方案我也会详细的说明下。 首先是核心,旋律云支持BDS原版和插件服(BDX和BDSJSRunner),他们用的也是Linux系统(Debian GNU/Linux 10),但是他们却跑起来了BDX插件服,其中就不得不提wine了。BDX的作者也说明了假如在Linux环境下建议使用wine。 但是旋律云的一个危险的操作就是暴露了 run.sh 意味着稍微有点Linux知识的人就可以修改 run.sh 来运行他想要运行的程序,反弹一个 shell,来进行只能在 localhost 上执行的操作.
旋律云方案
(注: 此章节仅是对方案的猜测,我不是官方人员,不能保证此方案和旋律云方案完全一致,如旋律云因为技术需要要删除此章节可以邮箱 atkengwang@qq.com 联系)
好了,最近有买服务器的资金了,我就买了21元/月的服务器来试试. 旋律还挺良心的,支持自定义玩家数
进行切换了核心,我们会发现控制台输出有安装模板的迹象
这个也是个不错的想法,灵活的运用了 Multicraft 的模板功能来切换核心数据,然后我们再看看服务器文件,里面有个run.sh,看样子就是开服要执行的命令了,我把他内容贴出来
#!/bin/bash
export WINEDLLOVERRIDES="vcruntime140_1,vcruntime140,msvcp140=n;mscoree,mshtml,explorer.exe,winemenubuilder.exe,services.exe,playplug.exe=d"
export WINEDEBUG="-all"
export PATH=$PATH:"/opt/wine/bin/"
wine64 bedrock_server.exe | tee -a latest.log
不难发现,这个是使用Wine来运行的,加载一堆dll然后再启动BDX版的bds服务器,同时记录日志到latest.log
但是,我在这里要吐槽一句,把这个shell这样公开出来真的好吗? 还是777权限......很容易利用用来搞事吗? (虽然没有root)
不过既然如此,我们还是继续吧. 旋律的方案有个很关键的东西就是 wine,以便在Linux上运行Windows程序
前排提示:下面内容可能会过于简略和过于硬核,新手可以说一句:我可以的 然后继续看下去
第一步,模板制作
按照官方的教程,在Windows环境下做好符号数据库(RoDB.exe),然后再回到Linux环境下,在服务器目录下运行下面的指令来安装vc运行时 ,Ubuntu或者Arch按照官方教程安装,CentOS可以直接使用我打包好的包
========== 此方案 To Be Continued =======
我接下来会对旋律云的方案进行尝试实现
文章可能还会咕咕咕几天,我会找点钱买下机子 (欢迎赞助哦~ https://afdian.net/@kengwang)
========== To Be Continued ===========
Kengwang 方案
(此方案为Kengwang原创,允许商用,请保留版权,使用GPL协议授权)
此方案为Windows系统方案,Linux就算了,我们开始吧~
创建服务器需要的权限
找到Multicraft的Jar文件夹
将我发KWRunner.exe和MCDllInject.exe丢进去,将conf文件也丢进去,创建文件夹叫做BDS,然后将def.properties放进去,再新建个文件夹,名字为BDS 的版本号(如1.14.32.1),再将bds的压缩包丢进去,删除不必要的文件,最后只留下
4. 插件支持
在C:\Plugin\BDSJSRunner下放上BDSJSRunner.dll,随便命名,不过要记住.
修改Multicraft的jar下的BDS-xxxxx-JS-TP 找到command那行,在--dll后面改成刚刚那个dll的存放路径
5. Multicraft配置
修改Multicraft根目录下的Multicraft.conf
按键盘的“窗口+R”,在运行窗口中输入“gpedit.msc”回车确认,打开组策略编辑器。在编辑器的左面的列表中,依次点开“计算机配置”、“windows设置”、“安全设置”、“本地策略”、“安全选项”,在安全选项右面的窗口中找到“用户账户控制:以管理员批准模式运行所有管理员”,双击打开。最后在“用户账户控制:以管理员批准模式运行所有管理员”属性中选择“已禁用”,单击确定,重新启动计算机。这样就完全关闭了操作系统的UAC机制。
下载KWRunner (待发布),将其放置到jar目录下
[请注意, 此篇内容仅为草稿, 且未进行二次审核]
如何优雅的用 Multicraft 开 BDS 插件服
前言
在去年我在Mcbar发布了一篇 如何优雅地用Multicraft开BDS服务器 (此文已经重新发出,但是内容可能稍微有点旧) 一年过去了,BDS圈子也发生了变化,原本认为只能原版生存的BDS因为Player大佬的一篇文章而产生了众多优秀框架和插件。对于腐竹来说,又有插件又是原版是非常吸引人的,很多面板商也就开始选择了BDS插件服。这也就回到了开头的问题,如何优雅地用Multicraft开BDS插件服
0x01 为什么要用Multicraft
诚然,现在有很多优秀的开源面板,但是大多不适合拿来做商用,而是方便团队和个人管理。而Multicraft凭借着多年来的技术沉淀所拥有的稳定性,安全性,易管理性(以及防破解性)也算是成熟的解决方案了。@Multicraft Support 没想到居然官方也在,哈哈.
永恒云顺便打个广告,我目前正在策划一个 EasyCraft 面板,采用 C# 的 .NET Core, 将会实现很多有趣的功能,敬请期待!
永恒云的方法最为简单,采用的不是BDX或者BDSJSRunner,而是采用了BDL这个框架。BDL框架没有脚本Mod的支持,所以没有那么广泛使用。
既然采用了BDL,系统肯定是Linux了
顺带一提,因为BDS的Linux版本没有做代码优化导致效率很低,所以Linux的BDS比Windows卡。 永恒的解决方案我个人是不推荐的。不过有一说一,永恒的价格很舒适,本次测试只花了2元就开了台BDS服务器(端午节期间购买,不知道是不是卡的BUG,假如说是的话那要说声对不起,我没有长时间的开服)而且实现方法也很简单,几下能搞定. 我也就不会对这种方案进行实现.
旋律云PS. 由于开始撰写文章的时候 BDX 和 BDL 的作者还未发布 End of Support Sysca11 大佬在 2020 年 6 月 28 日在 Telegram 群正式声明终止维护(但BDL会更新 1.60 )
旋律云对于BDS圈子的开发者很友好,他们的解决方案我也会详细的说明下。 首先是核心,旋律云支持BDS原版和插件服(BDX和BDSJSRunner),他们用的也是Linux系统(Debian GNU/Linux 10),但是他们却跑起来了BDX插件服,其中就不得不提wine了。BDX的作者也说明了假如在Linux环境下建议使用wine。 但是旋律云的一个危险的操作就是暴露了 run.sh 意味着稍微有点Linux知识的人就可以修改 run.sh 来运行他想要运行的程序,反弹一个 shell,来进行只能在 localhost 上执行的操作.
旋律云方案
(注: 此章节仅是对方案的猜测,我不是官方人员,不能保证此方案和旋律云方案完全一致,如旋律云因为技术需要要删除此章节可以邮箱 atkengwang@qq.com 联系)
好了,最近有买服务器的资金了,我就买了21元/月的服务器来试试. 旋律还挺良心的,支持自定义玩家数
进行切换了核心,我们会发现控制台输出有安装模板的迹象
这个也是个不错的想法,灵活的运用了 Multicraft 的模板功能来切换核心数据,然后我们再看看服务器文件,里面有个run.sh,看样子就是开服要执行的命令了,我把他内容贴出来
#!/bin/bash
export WINEDLLOVERRIDES="vcruntime140_1,vcruntime140,msvcp140=n;mscoree,mshtml,explorer.exe,winemenubuilder.exe,services.exe,playplug.exe=d"
export WINEDEBUG="-all"
export PATH=$PATH:"/opt/wine/bin/"
wine64 bedrock_server.exe | tee -a latest.log
不难发现,这个是使用Wine来运行的,加载一堆dll然后再启动BDX版的bds服务器,同时记录日志到latest.log
但是,我在这里要吐槽一句,把这个shell这样公开出来真的好吗? 还是777权限......很容易利用用来搞事吗? (虽然没有root)
不过既然如此,我们还是继续吧. 旋律的方案有个很关键的东西就是 wine,以便在Linux上运行Windows程序
安装好后就可以从模板入手开始搞了~具体教程可以看看某位大佬发的帖子: https://www.bilibili.com/read/cv5695357 (已交至 Web Archive 备份)
CentOS 可以执行:
yum -y groupinstall 'Development Tools'
yum -y install libX11-devel freetype-devel zlib-devel libxcb-devel
yum -y install wine
yum -y install p7zip p7zip-plugins unzip
来安装wine
前排提示:下面内容可能会过于简略和过于硬核,新手可以说一句:我可以的 然后继续看下去
第一步,模板制作
按照官方的教程,在Windows环境下做好符号数据库(RoDB.exe),然后再回到Linux环境下,在服务器目录下运行下面的指令来安装vc运行时 ,Ubuntu或者Arch按照官方教程安装,CentOS可以直接使用我打包好的包
========== 此方案 To Be Continued =======
我接下来会对旋律云的方案进行尝试实现
文章可能还会咕咕咕几天,我会找点钱买下机子 (欢迎赞助哦~ https://afdian.net/@kengwang)
========== To Be Continued ===========
Kengwang 方案
(此方案为Kengwang原创,允许商用,请保留版权,使用GPL协议授权)
此方案为Windows系统方案,Linux就算了,我们开始吧~
创建服务器需要的权限
- 打开计算机管理 - 本地用户和组 - 右键 组 - 新建组
组名: mc
描述:随意(Minecraft Server User Group)
然后点击创建 - 配置用户组权限
- 按下win+r 打开运行
- 输入 gpedit.msc
- 选择 计算机配置 - Windows设置 - 安全设置 - 本地策略 - 用户权限分配
共有以下几个策略要更改- 拒绝从网络访问这台计算机
- 拒绝通过远程桌面服务登录
- 拒绝以服务身份登录
- 拒绝作为批处理作业登录
- 以下以拒绝从网络访问这台计算机为例
双击此项打开属性
点击添加用户或组
点击对象类型,勾选组
在下方文本框输入mc
点击检查名称,如果mc下方打了下滑线即可确定然后再确定
其他几个一样的操作
- 禁止错误提示
- 以管理员身份运行gpedit.msc
- 计算机配置->管理模板->Windows 组件->Windows 错误报告
- 在“禁用Windows 错误报告”上右击,选编辑,从未配置或者已禁用改为已启用
- 在“阻止显示用户界面上的关键错误”上右击,选编辑,未配置或者已禁用改为已启用
找到Multicraft的Jar文件夹
将我发KWRunner.exe和MCDllInject.exe丢进去,将conf文件也丢进去,创建文件夹叫做BDS,然后将def.properties放进去,再新建个文件夹,名字为BDS 的版本号(如1.14.32.1),再将bds的压缩包丢进去,删除不必要的文件,最后只留下
4. 插件支持
在C:\Plugin\BDSJSRunner下放上BDSJSRunner.dll,随便命名,不过要记住.
修改Multicraft的jar下的BDS-xxxxx-JS-TP 找到command那行,在--dll后面改成刚刚那个dll的存放路径
5. Multicraft配置
修改Multicraft根目录下的Multicraft.conf
- 找到serversDir那一行,将他修改到把服务器存在哪里 (E:\Server)
- 找到 forbiddenFiles 那一行,将等号后面改为 (.dll|DONOTMODIFY|.exe|.bat|.pif|.sh|.cmd|Password.ini)
- 将我发的server_properties.conf 放到 panel\protected\data下
- 然后就可以了呢
按键盘的“窗口+R”,在运行窗口中输入“gpedit.msc”回车确认,打开组策略编辑器。在编辑器的左面的列表中,依次点开“计算机配置”、“windows设置”、“安全设置”、“本地策略”、“安全选项”,在安全选项右面的窗口中找到“用户账户控制:以管理员批准模式运行所有管理员”,双击打开。最后在“用户账户控制:以管理员批准模式运行所有管理员”属性中选择“已禁用”,单击确定,重新启动计算机。这样就完全关闭了操作系统的UAC机制。
下载KWRunner (待发布),将其放置到jar目录下
由版主最后编辑: