基于unraid的allinone服务器搭建
自从使用了百度网盘以来,被他的龟速不堪折磨,于是脑子里萌生一个想法,要搭建一个属于自己的网盘系统,先是买了个玩客云,映射网络驱动器的时候电脑老是卡死,果断退货了,后来又在淘宝上搜索,第一次接触了蜗牛星际和黑群晖,就又买了个安装黑群晖的蜗牛星际,又遇到总是无法开机的问题,无奈退货后入了个四盘位的黑群晖,这次cpu升级成了j3455,但是因为安装了ds3617的系统,无法实现集成显卡硬解,所以才有这次的基于unraid的allinone服务器搭建。
这次的allinone服务器解决了我多个痛点:
1.jellyfin集成显卡硬解问题;
2.虚拟机平台直接安装docker的问题;
3.局域网内万兆网络访问nas的问题;
4.虚拟机平台的虚拟机和docker无缝通过黑群晖存储数据的问题;
5.方便的硬件直通。
第一次买的玩客云网盘
淘宝上买的四盘位黑群晖一、网络架构基础
家里因为组建了米家全屋智能,所以使用了两个路由器+一个八口的交换机,网口属于将将够用的状态。
网络架构二、硬件选型指南
除机械硬盘外的硬件机柜淘宝上买的9u短机柜
6u4u12u网络机柜小型2u9u弱电箱监设备控机柜壁挂家用挂墙交换机-淘宝网
机柜机箱
12盘位nas机箱企业家用热插拔atx主板存储4U机架式短多盘位服务器-淘宝网
机箱CPU选择10代10900Tes,价格、性能与功耗实现最佳平衡。
主板一开始咸鱼淘了一块微星的Z490,用了大概两年挂了,又在修电脑那里整了块二手的技嘉Z490
第一次咸鱼淘的微星Z490主板
第二次修电脑那里买的二手技嘉Z490主板网卡方面,整了两块Intel X540T2网卡,一块插allinone服务器,一块插台式机,实现内网万兆访问。
服务器的网卡,散热空间小,买稍微贵点的
台式机网卡,散热空间大,可以买便宜点的
电源三、系统部署策略
系统方面,选择unraid作为底层系统,上面部署黑群晖直通硬盘sata控制器,顺便直接导入之前黑群晖上的数据。
在选择unraid之前,试过了直接安装黑群晖,当时为了多盘位,安装了ds3617的系统,但是这个系统不支持硬件解码,而且虚拟机性能很弱,所以就放弃了。后面又安装了pve,这个系统不能直接安装docker,而且硬件直通又很麻烦,也放弃了。
unraid主界面
unraid上部署的虚拟机四、Docker容器化
安装了常用的docker

unraid上部署的docker五、我的独有创新用法
为了解决数据统一存储和docker需要安装在unraid基础平台内的问题,我自己创新了一种方法,将docker的存储路径放在群晖下,然后通过nfs协议将路径挂载到unraid,实现了数据与应用分离。这样大多数docker应用就可以直接安装在unraid中,同时产生的数据存储到群晖。对于部分需要读取群晖本机信息的docker应用,继续安装在群晖内部,这部分应用本身占用资源比较少,安装在虚拟群晖内部也能流畅运行。
将群晖存储空间挂载到unraid
部分依然安装在虚拟群晖内部的docker应用六、遗留问题与未来规划
更换主板后jellyfin硬解失效了,正在研究解决方案。
后续打算整两块pcieX1转4口sata的转接卡,解决主板sata接口不够十二口以及第二个nvme使用后会导致现有6个sata接口只能使用4个的问题。
关于更换主板后jellyfin硬解失效问题,首先确认主板的集成显卡和VT虚拟化设置均是打开的,确认主板Bois设置无问题;接着在docker控制台中确认jellyfin是否有/dev/dri这个目录的读取权限,以及该目录下是否有集成显卡驱动文件,均无问题。最后查看docker日志,发现报一个和ffmpeg有关的错误:
[20:00:43] [ERR] [69] MediaBrowser.Providers.TV.EpisodeMetadataService: Error in ffprobe MediaBrowser.Common.FfmpegException: ffprobe failed - streams and format are both null.
因此初步断定是ffmpeg安装不正确导致,用ffmpeg -version命令确认ffmpeg是否安装,果然报找不到该命令,因此在jellyfin的docker控制台中使用命令apt-get install重新安装ffmpeg,安装完后果然可以硬解了,抓紧把配置好的容器导出为镜像保存起来,免得后面又要设置。
手动安装ffmpeg后成功恢复硬解功能
将配置好的容器导出为镜像备用
配置好ffmpeg后8k转码不在话下最后,分享一下自己解决问题的经验,比如docker应用的问题,解决步骤通常如下:
1.查看docker日志,看看日志里有没有红色的error或者warning,一般应用启动失败或者某些功能实现不了都会报错;
2.将错误提示复制到百度里搜索,看看前人是否遇到过类似的问题;
3.根据自己对错误提示的理解或者搜索到的其他人的解决方案依次尝试,直至问题解决;
4.善于总结,将自己解决问题的过程写成文章,一方面供其他遇到类似问题的兄弟参考,另一方面也方便自己下次再次遇到忘记是怎么解决的了。
比如本次遇到的jellyfin硬解突然失效的问题,我就是根据docker日志的ffmpeg错误提示锁定问题的原因,并且经过验证果然容器里的ffmpeg查询不到,然后搜索到安装方法手动安装就解决了。

nostalgis
校验提示文案
小小小tiny
校验提示文案
615的小崽子们
校验提示文案
nostalgis
校验提示文案
615的小崽子们
校验提示文案
小小小tiny
校验提示文案