基于Docker的群辉NAS mc服务器搭建记录
基于Docker的群辉NAS mc服务器搭建记录
Time
2025.1.7:开始搭建
2025.1.12:搭建完成
软硬件环境
- NAS:群晖DS224+
- 系统:DSM 7.2.2-72806 Update 2
- MCSM docker镜像版本:githubyumao/mcsmanager-web:latest、githubyumao/mcsmanager-daemon:latest
- java镜像版本:mcsm-openjdk:17
- mc服务器内核:paper 1.20.1 release
前期工作
SSH软件选择
要连接NAS时发现自己还是用的古早的putty,,,决定换一下。在xshell,tabby,mobaxterm中选择了mobaxterm,查了一些资料列在下面了。
相关资料:
- 除了Xshell和FinalShell 还有什么好用的SSH连接工具? https://www.bilibili.com/video/BV1xJ4m1s7zX/?share_source=copy_web&vd_source=94787cc75783769da63e2f41d6831447
- MobaXterm快速入门、高级使用技巧 https://blog.csdn.net/qq_34435096/article/details/130729092
- 【终端】全能终端神器MobaXterm https://www.bilibili.com/video/BV1ze41157SP/?share_source=copy_web&vd_source=94787cc75783769da63e2f41d6831447
Docker环境配置
操作里要拉取docker镜像,但因为一些众所周知的原因截至2024年9月国内站点全暴毙了,目前的想法是在内网下用另一个设备实现全局代理来科学上网,之后再在docker里拉取clash镜像实现一劳永逸。
但是经过两个多小时的试验发现全局代理莫名其妙不生效,具体表现为在root用户下可以ping通baidu.com但是curl google.com无响应,同时套件中心查找功能也失效,很是头疼。
目前没有解决办法,于是思路改为直接离线部署docker的clash镜像解决——然后现在问题就变成了怎么离线部署clash容器,这里目前使用docker命令下直接读取镜像压缩包的模式,所以先安装win10的docker desktop,之后做迁移。
但是我犯了个很大的错误:win10的docker desktop可基于hyper-v或wsl安装,我这里选择的是wsl后端,但问题是这是通过虚拟化实现的,是在win中搭建linux子系统,导致我找不到image的安装位置,,,或者直接是在虚拟机的虚拟盘里没法直接定位到,这条路子又不太好走通了。
于是问题又回到了寻找还现存的docker镜像网站——好在是最后找到了www。另外在搜寻资料的过程中发现clash由于不再维护已经不是主流魔法软件了,所以换成了v2ray为内核的v2raya(自己还是更喜欢GUI一点),只能重新扒翻文档,最后还是学会了。
于是目前的魔法路径是启动容器后通过2017端口登录v2raya,然后选择节点连接即可。关闭时逆序操作,关闭节点连接后关闭容器。不过有一个很显而易见的坏处就是自己家是公网ip,导致开着容器的时候梯子是裸着的,,,现在只能随用随关了,打算搞完这些东西用防火墙解决一下。
另外记录一下发生的一些bug和想法:
上面提到过的全局代理不生效问题。
以wsl2为核心的docker image文件导出如何操作。
服务器与镜像服务器关系:为什么docker在服务器无法连接的情况下不会切换至镜像服务器连接(至少我这边现象是这样),另外为什么只有魔法可以连接到注册表而修改仓库地址不行(但是却可以pull?)。
开始构建v2vara镜像时使用的是bridge的docker网络架构,本来想着做防护,但是一旦通过防火墙仅将2017端口暴露给内网就会连接失败(这不是docker自己做好的端口映射吗,搞不懂),所以现在又改为host网络了,会不会导致不安全情形?发生这一问题的原因又是什么?
现在开容器的时候端口是直接裸露的,有没有一种方法使控制端口仅对内网开放的同时其他端口正常使用,目前想不出来bridge和host的做法。
开容器必须使用root权限否则在连接节点时出错,查了一下好像是centos iptables的问题,为什么?
群辉nas可以curl google.com生效但是ping不通,二者的工作原理有什么不同?
相关资料:
群晖7.2系统通过Docker安装Clash实现全局代理科学上网 https://www.onemuggle.com/archives/739.html
Windows使用wsl2安装docker教程 https://blog.csdn.net/weixin_43982359/article/details/135699935
群晖DSM7.2 修改Docker配置文件,并重启Docker服务生效 https://blog.csdn.net/caca_66/article/details/139904656(目前只有这个命令能用)
解决Docker拉取镜像时遇到的dial tcp …:443: i/o timeout错误 https://blog.csdn.net/zhangkunls/article/details/139612810
浅析docker容器网桥的实现原理以及docker的四种网络模式和bridge模式的具体原理 https://www.cnblogs.com/goloving/p/15133673.html
群辉 NAS docker 中配置 v2ray 客户端 https://wqdy.top/1165.html
V2Ray 配置指南 https://selierlin.github.io/v2ray/
科学上网:利用 Docker 搭建 v2raya 客户端 https://lazypool-blog.netlify.app/2024/05/13/docker/
v2raya使用请教 https://forums.unraid.net/topic/151161-v2raya%E4%BD%BF%E7%94%A8%E8%AF%B7%E6%95%99/
搭建MCSM面板
因为决定采用docker,所以前期工作完成后部署起来意料之中的顺利——基本上跟着官方文档走一遍就行。需要注意一下群辉系统好像没给管理员太多权限,所以在dsm里有时镜像会构建失败,尽量还是通过ssh在root权限下用命令行操作。
相关资料:
- 【官方文档】使用 Docker 安装面板 https://docs.mcsmanager.com/zh_cn/docker-install.html
- 群晖DSM 7.2 Container Manager中部署MCSManager https://www.bilibili.com/opus/823010927596011526?spm_id_from=333.999.0.0
部署服务端
根据官方流程,首先需要启动用于维护服务器的daemon容器,之后在web面板内进行配置就行。MCSM面板集成了开服绝大部分需要的操作,基本上点一点服务器就搭好了(笑)。总体来看,基本流程为:
新增节点:将面板web端连接到守护进程端daemon上,其中可能需要配置daemon节点密钥,根据doc走一遍就行。
为节点添加应用实例:在
应用实例板块选择新建应用,选择自己需要搭建的应用类型即可。这里我选择的是搭建java服务器Minecraft快速部署功能,选择所有语言后挑选自己喜欢的服务器核心即可。服务器设置:应用实例构建完成后会进入终端板块,在
功能组中选择应用实例设置。其中基础设置与高级设置基本不需要操作,因为本篇文章主要是基于docker环境构建的服务器,所以需要配置一下服务器的容器化,相关参数如下:
其中需要额外注意
Docker镜像与网络模式两项。前者会指定mc运行环境,可以通过拉取相关java环境镜像解决。后者需要与自己的docker网络模式相适应(我选择的是与前面web面板及daemon容器在同一个桥接网络下,不能保证不在这个网络下构建会不会出错,这边的远离我没太搞清楚)服务器初始化:运行终端即可,paper的服务器核心会自动处理,最终在java容器内搭建好服务器,之后就可以通过
服务器ip+端口号连接服务器。
p.s. 在这部分有一个问题困扰了我好久:我是如何实现服务器存储数据的持久化的——换言之,物理机与服务器容器内的文件的映射关系是怎样的。最终也是找到了答案:
1 | 物理机地址:/volumn1/docker/mcsmanger/daemon... |
通过一级挂载与一级映射解决,好棒的思路。
相关资料:
- 【官方文档】连接其他机器 https://docs.mcsmanager.com/zh_cn/advanced/distributed.html
- 群晖在MCSManager中创建MC服务器 https://www.bilibili.com/opus/844852382488592422?spm_id_from=333.999.0.0
- 闲置NAS不要扔,裹上教程开个MC服务器还不是真香,MCSM面板使用教程 https://www.bilibili.com/video/BV15YzVYKEyj/?spm_id_from=333.337.search-card.all.click&vd_source=d6914ee62954ad222463c717aedc5f40
- MCSM安装docker以及使用教程 https://www.bilibili.com/video/BV1gV4y1h7pj/?spm_id_from=333.337.search-card.all.click&vd_source=d6914ee62954ad222463c717aedc5f40
- 使用 Docker 快速搭建《我的世界》(Minecraft)服务器 https://www.bilibili.com/opus/931671697539465241
- 威联通NAS用Docker搭建我的世界(MC)服务器 https://blog.zeruns.com/archives/674.html
- docker 容器中文件目录一般创建在哪里 https://blog.51cto.com/u_16213416/12955067
- 解决Docker容器内文件修改不生效的问题:深入理解Volume与Bind Mount的使用 https://www.oryoy.com/news/jie-jue-docker-rong-qi-nei-wen-jian-xiu-gai-bu-sheng-xiao-de-wen-ti-shen-ru-li-jie-volume-yu-bind-mo.html
一些碎碎念
竟然还是童年想联机玩mc的愿景驱使我搞完这些东西,,,现在自己也是有了能和好友快乐玩耍的一番天地了。以及终于补完了和老吴的mc约定,顺带还想起来和天哥开荒服务器的的时光,当时的我是否又能想象到现在的自己。
以及现在边学科三边搞这东西真是心力憔悴,前几天熬夜找问题还得早起练车,,,寒假回来还没好好歇着喂(!
以及公网ip给了我太多的可能性了,下一步可能考虑迁移一下博客(顺便再美化一下),以及想起来毕设也还得搞(发愁,雷达自己没接触过要重新学啊…
怎么还有人看到这,如果有兴趣来陪我聊天吧,QQ一直都在看到了就会回(摊手
相关记录
开服流程:打开web容器->打开deamon容器->在web面板内打开服务器容器

