黑群晖

版权声明:本文采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,欢迎转载,但转载请注明来自hceng blog(www.hceng.cn),并保持转载后文章内容的完整。本人保留所有版权相关权利。 https://blog.csdn.net/hceng_linux/article/details/89913994

CSDN仅用于增加百度收录权重,排版未优化,日常不维护。请访问:www.hceng.cn 查看、评论。
本博文对应地址: https://hceng.cn/2019/04/22/黑群晖/#more

黑群晖折腾记录。

最近,权游第八季上映,下载好的资源,如何在众多播放设备:IPad、小米盒子、Android手机以及多台电脑之间共享成了一个问题。
想到之前折腾过树莓派做过NAS,实现过文件共享,但受制性能,导致实用性不高,这次准备弄个X86迷你主机折腾黑群晖。

出于实际需求和学习,运用所学知识开始折腾之旅。

1.硬件篇

先说说黑群晖的概念,黑群晖就是在普通主机上运行Synology DSM系统,对应的白群晖就是使用官方提供的主机运行Synology DSM系统,因此售卖主机成了Synology的主要收入来源。
Synology两个盘位的服务器主机价格在1000元以上,只从硬件成本角度看,价格太高了,但Synology还有系统、软件成本,这个价位也可以理解。Synology对待盗版的举措有点像微软,用盗版先培养用户使用习惯,等市场占有率提高,用户成长起来,体会到存储安全的重要性,了解群晖正版产品的便利性后,逐步转为白群晖。

1.1 硬件成本

在淘宝逛了一圈黑群晖主机后,发现价格都普遍300左右,且体积都比较肥大。
我的要求是:在性能基本够用的情况下,主机体积一定要小,最好双盘位,CPU要64位以便升级DSM 6.2,还要考虑功耗、散热、噪音等。

最后花费364.14元,其中主机220元、两个500G西数绿盘141.6元、20个1N5408二极管2.54元。

主机配置:

  • CPU: Intel Celeron 1037U @ 双核 1.80GHz
  • RAM: 2G DDR3 1600笔记本内存(单卡槽)
  • ROM: 32G msata接口SSD
  • 硬盘位: 可放两个3.5寸硬盘或2.5寸硬盘
  • 网卡: 千兆网卡
  • USB: 4个USB 2.0
  • 显示接口: VGA、HDMI
  • 主板尺寸:17 X 17CM
  • 机箱尺寸:20 X 22.5 X 6.5CM
  • 电源:12V直流供电(配送12v/5A适配器)
  • 功耗:20W(负载两个3.5寸硬盘)

拿到主机和硬盘后,就可以装机了,过程比较简单,插上两个硬盘,拧好固定螺丝:

1.2 改善噪音

上电后,发现CPU上的散热风扇噪声有点大,整机温度不算高,因此使用二极管降低风扇的电压,从而降低转速减少噪音,这里串联了四个1N5408二极管:

修改后,噪声明显降低,已经比室内空调声音还小,几乎可以忽略不计,此时主机温度也可以接受。

扫描二维码关注公众号,回复: 6159314 查看本文章

2.系统篇

2.1 装机思路

先回顾一下普通的Windows/Linux电脑,如何U盘装系统。

- 正常启动:上电后,首先运行的是BIOS,在进行硬件自检后,会根据BOOT里设置的启动顺序(此时装有系统的硬盘在第一顺序),将硬盘里的系统加载到RAM,从而启动系统。 - U盘重装:首先将[U盘制作为启动盘](http://www.wepe.com.cn/)(实质就是装一个精简版的Windows系统),然后插在电脑上,进入BIOS,在BOOT里将U盘设置为第一启动盘。重新上电后,仍然先运行BIOS,此时U盘作为第一启动盘,将U盘的精简系统加载到RAM里,进入该精简系统后,可以操作读写其它硬盘,此时再将完整的系统写入到硬盘里。最后拔掉U盘,将硬盘设置为第一启动盘。

再来看看群辉的Synology DSM系统(实质是一个Linux系统):

  • 正常启动:上电后,首先运行的是BIOS,在进行硬件自检后,会根据BOOT里设置的启动顺序(此时装有引导系统的硬盘1在第一顺序),将硬盘1里的引导系统加载到RAM,运行引导系统,在加载硬盘2里的DSM系统(硬盘2、3都有DSM系统,优先使用第一个分区的DSM系统)。
  • U盘重装:首先将U盘制作为启动盘(实质就是装一个精简版的Windows系统),然后插在电脑上,进入BIOS,在BOOT里将U盘设置为第一启动盘。重新上电后,仍然先运行BIOS,此时U盘作为第一启动盘,将U盘的精简系统加载到RAM里,进入该精简系统后,可以操作读写任意硬盘,接着将引导系统写入到硬盘1里,然后拔掉U盘,将硬盘1设置为第一启动盘,进入系统盘的引导系统,再根据提示安装DSM系统到硬盘2、3里面。

上述重装DSM系统的方法是由装Windows类比过来的,对于黑群辉,还有一个更简便的方法,在Windows上使用win32diskimager等工具,直接将引导系统写到U盘上,将U盘设置为第一启动顺序,上电后直接进入引导系统,然后安装、启动DSM系统。但这样有个缺点,每次启动都需要插U盘进行引导。因为主机送了一个32G的SSD,于是把这个作为引导盘,使用U盘的PE将引导系统烧写到SSD上,这样每次启动就自动引导,不在需要额外U盘。

2.2 装机准备

系统安装过程,需要准备:

MPALL_V3.63synoboot.imgRoadkil's Disk Image拷贝到U盘里。
连接好显示器、键盘、鼠标,插上U盘,启动电源,跳按Delete(一般就F2F10Delete中某一个)进入BIOS。
BOOT选项卡里将U盘设置为第一启动顺序,保存,重启。

2.3 安装引导系统

进入PE后,打开DiskGenius查看分区情况,可以看到四个盘:两个500G的机械硬盘,一个32G的固态硬盘,一个16G的U盘。

使用DiskGenius先将SSD格式化,再运行MPALL_V3.63,输入对应的盘符,记录下SSD的VIDPID

DiskGenius里选择硬盘->打开虚拟磁盘文件,选择synoboot.img,点击grub文件夹,选择grub.cfg,右键选择复制到"桌面"

打开grub.cfg,找到:

set vid=0x058f
set pid=0x6387
set sn=A8ODN02468
set mac1=0011322CA603

set vid=0x058f 改为U盘的VID:0x13fe
set pid=0x6387 改为U盘的PID:0x5500
set sn=A8ODN02468 序列号,用于洗白,现在不好洗白,不用修改
set mac1=0011322CA603 MAC地址,用于洗白,现在不好洗白,不用修改

改完之后,在DiskGenius里,右键复制文件到当前分区,覆盖掉原来的grub.cfg,退出DiskGenius

接着打开Roadkil's Disk Image,在映像写入选项卡里,选择要写入的SSD,再选中前面修改过的synoboot.img,点击开始,待写入完成后退出程序。

重启PE,进入BIOS,将SSD设置为第一启动顺序,拔掉U盘,再次重启。

2.4 安装DSM系统

插上网线,SSD作为引导盘,启动后显示屏上显示:

Screen will stop updating shortly, please open http://find.synology.com to continue.

此时,使用在同一局域网的笔记本,浏览器打开http://find.synology.com搜索设备,或者安装SynologyAssistant搜索设备。
搜出设备后,根据提示点击设置,上传DSM_DS3617xs_23739.pat安装,待安装完成后,自动重启即可。

重启后,进入系统初始化设置界面,根据提示进行设置,因为是黑群晖,没有洗白的缘故,不能使用QuickConnect,在该设置界面直接跳过即可。

3.必要设置

3.1 配置存储空间

刚装好的DSM系统,没有设置存储空间,需要自己根据硬盘情况组建存储空间。
比如,我这有两个HDD,一个SSD,SSD作为引导盘,自然不能使用,两个HDD可以组建RAUD1。
具体的操作步骤,当时没有截图,现在已经在使用中,又不好重新删除演示一遍,下次重装再补教程。
网上也有很多教程,直接参考群晖无存储空间怎么设置

3.2 内网穿透

白群晖用户,可以登陆账户,使用Quickconnect功能,在外面通过Quickconnect就可以操作群晖,访问文件。
黑群晖用户,不能登陆也就不能使用该功能,就算洗白后可以使用,占用群晖的服务器资源也不厚道,况且还有许多其它方法实现外网访问群晖。

之前嵌入式Linux网络编程——TCP/UDP里提到了使用端口号和网络地址的组合可以唯一的确定整个网络中的一个网络进程

比如访问百度,可以直接在浏览器输入119.75.217.109:80访问。
这里的119.75.217.109是百度的固定IP,80是http网页服务端口,用于普通网页浏览,该端口是默认端口,可不写。
可以看到,如果我们有一个固定IP,便可直接通过固定IP访问到群晖,对于个人用户,拥有一个固定IP用于家庭网络,是一件不太现实的事情。目前个人用户都是从运营商那里购买宽带服务,运营商提供的大部分都是内网IP,即便申请到公网IP,也不是固定IP

另外,我们不容易记住类似119.75.217.109的固定IP,一般都是在浏览器输入www.baidu.com,也可以打开百度。这里是运用了DNS(Domain Name System),将域名自动解析成了相应的IP地址。

没有固定IP,要想通过外网访问黑群晖,也就是内网穿透,还有两个方法:动态域名反向代理

3.2.1 动态域名DDNS

动态域名服务(Dynamic Domain Name Server),简称DDNS。
DDNS将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会把该主机的动态IP地址传送给位于服务商主机上的服务器程序,而服务器程序负责提供DNS服务并实现动态域名解析。

通俗一点的解释:
首先向宽带运营商申请公网IP,找个DDNS服务商(比如花生壳),注册账号,添加内网IP、端口、访问域名等信息。
打开群晖/路由器的DDNS服务客户端,选择同一DDNS服务商,输入账号,再设置端口转发等。
内网设备,每次连接网络,群晖/路由器的DDNS客户端将本机的公网IP发送给DDNS服务器端。
外网用户,输入域名+端口,DNS先解析域名找到DDNS服务商,DDNS服务器端找到对应公网IP,返回给用户,实现访问。
就算以后设备的公网IP发生了变化,仍然可以访问内网设备。

优点:配置简单,成本低;
缺点:需要公网IP,公网IP发生变化时可能半小时无法访问;

3.2.2 反向代理frp

如果没有公网IP,就只能进行反向代理,反向代理的常见工具有ngrokfrp,其中frp简单一点,这里使用frp
frp的原理就是,利用有固定IP的VPS(Virtual Private Server)虚拟专用服务器做中转。
在外网VPS上搭建服务端frps,在内网服务器上启动客户端frpc,以后访问外网VPS的某个端口,就可以反向代理转发到内网的对应端口上。

之前在搬瓦工上购买了一个VPS搭建SSR用于"科学上网",理论上完全可以在上面搭建服务端frps,但因为是和朋友合购的,怕影响性能,就没在VPS上搭建,直接使用现成免费的VPS,以后有机会再补上VPS搭建服务端frps

1.frp服务器
首先找到一个免费frp服务器,比如在外网门里选择一个适合自己的服务器。

这个截图里有服务器的很多信息,后面慢慢会用到。

使用其提供的工具或者自己新建frpc.ini文件,生成文件内容如下:

# frps信息
[common]
server_addr = aliyunsz2.waiwang.men #服务器地址
server_port = 6666                  #服务器端口
token = waiwang.men                 #连接凭证
protocol= tcp                       #协议类型

# frpc信息
[hceng.nas]                         #名字,同一类型的名字不能一样
type = http                         #类型
privilege_mode = true               #开启特权模式
local_ip = 192.168.123.123          #群晖本地IP地址
local_port = 5000                   #群晖控制界面端口号
use_encryption = true               #开启加密
use_compression = true              #开启压缩
custom_domains = nas.hceng.cn       #绑定的域名

然后将该文件上传到群晖,比如放在docker/frpc/里。

2.安装docker和frp客户端
在群晖里打开“套件中心”,在“所有套件”中找到docker,点击“安装套件”。

安装完后,启动docker,在“注册表”选项卡的搜索框输入oldiy,找到oldiy/frpc,双击它弹出“选择标签”,这里选择0.24.1版本即可。

注意,随着frp版本的更新,出现了配置文件不兼容的情况,大致可以分为三个版本:
0.93以前的版本、0.93-0.17.0版本、0.17.0-0.26.0版本。
因为前面选择的frp服务器版本为0.20.0,这里选择0.17-0.26.0都行。

待其下载完后,切换到“映像”选项卡,双击oldiy/frpc:0.24.1,在弹出的“创建容器”窗口里,设置“容器名称”、勾选“使用高权限执行容器”,点击“高级设置”。

在弹出的“高级设置”窗口里,切换到“卷”选项卡,点击“添加文件”,选择前面新建的docker/frpc/frpc.ini,“装载路径”里填写/frp/frpc.ini

这样设置后,docker里的frpc在启动时,执行/bash/sh -c /frpc -c /frp/frpc.ini,就使用的是前面编写的frpc.ini

接着切换到“网络”选项卡,勾选“使用与 Docker Host 相同的网络”,再点击“应用”。

切换到“容器”选项卡,可以看到frpc已经启动了。

3.查看连接
打开frp服务器的Dashboard监控界面aliyunsz2.waiwang.men:7777,输入账号、密码(监控端口,账号密码等信息都在前面frp服务器截图里面),在Overview选项卡界面可以看到frp服务器信息,其中http端口是88。

切换到Proxies选项卡,选择HTTP,可以看到hceng.nas的状态是online,说明连接成功。

4.设置DNS
最后还要域名解析,我们希望通过nas.hceng.cn的方式来访问,虽然在frpc.ini里设置了该域名,还需要找个DNS解析服务商,将nas.hceng.cn解析到aliyunsz2.waiwang.men
参考之前GitHub+Hexo博客搭建及优化——4.2绑定域名,在DNSPod里添加一条记录。
主机记录:nas
记录类型:CNAME
线路类型:默认
记录值:aliyunsz2.waiwang.men (frp服务器域名)

优点:相对稳定,无需公网IP;
缺点:需要VPS搭建frps,配置相对复杂;

参考资料:
DDNS简单教程
How DDNS Works
内网穿透:在公网访问你家的 NAS
群晖 Docker版的frp客户端配置详解+免费服务器分享

4.扩展设置

后面这些设置就不是必须的了,以后遇到什么有趣的,就记录下来,不断更新。

4.1 自动修改登陆壁纸

实现每日抓取bing美图作为登陆界面壁纸,并替换欢迎信息为美图简介。

4.2 将NAS入口添加到博客

实现将群晖登陆接口添加到博客左下方图标位置。

1、使用FontCreator修改博客主题下的ttf文件。
比如我使用的yilia主题ttf路径为:blog\themes\yilia\source\fonts\iconfont.16acc2.ttf

使用FontCreator打开iconfont.16acc2.ttf后,选择一个合适图标,或者修改一个没有图标,这里直接选择原来home图标作为nas图标。
选中图标,右键选择“字形属性”,在弹出的窗口里,将名称home改为nas

然后点击“文件”->“导出字体”->“导出TrueType/OpenType字体”,覆盖掉原来的iconfont.16acc2.ttf

2、将iconfont.16acc2.ttf上传到网站fontke,勾选eotwoffsvg,点击“立即转换”,将生成的iconfont.16acc2.eoticonfont.16acc2.svgiconfont.16acc2.woff,覆盖掉原来的这几个文件。

3、打开blog\themes\yilia\source\main.0cf68a.css,搜索里面的home,全改为nas
改完后,找到a.nas{background:#6ea3ff;border:1px solid #6ea3ff},可以修改图标背景颜色。

4、打开blog\themes\yilia\_config.yml,在subnav下添加:

nas: "http://nas.hceng.cn:88/"
  • 效果:

4.3 安装浏览器访问内网

通过外网访问群晖里的浏览器,实现科学上网或访问内网路由器,并设置访问密码

之前有个需求:在不能使用SSR的特殊情况下,想科学上网访问Google,并且下载文件资料。
家里的路由器搭了ShadowSocks,可以访问外网,只要能够访问家里的内网,就能科学上网。
群辉的docker就像一个大宝盒,由它可以扩展出许多意想不到的功能,chrome也是通过它实现的。

1、安装chrome
参考前面安装frpc的过程。打开docker,在“注册表”选项卡搜索框里输入oldiy,找到oldiy/chrome-novnc,并双击下载。
下载完成后,在“映像”选项卡里双击oldiy/chrome-novnc:latest,在弹出的“创建容器”窗口里设置“容器名字”,再点击“高级设置”。
在弹出的“编辑”窗口里,选择“常规设置”选项卡,勾选“创建桌面快捷方式”,选择“网页”,输入自定义域名或本地IP+端口号+vnc.html。
因为想后面通过外网访问,所以这里填写自定义域名,frps提供的http端口为88。

接着切换到“卷”选项卡,因为要通过chrome下载文件,默认的下载路径在docker里的/root/Downloads,这里将其映射到本地文件路径,后面通过chrome下载的文件放在默认路径,就可以在群辉的public/download里找到。

再切换到“端口设置”选项卡,右边的容器端口59008083不要修改,左边的本地端口,根据自己需求,自行设置。需要考虑frps中是否被占用,设置的端口是否在开放范围以内。

最后点击“应用”即可。

2、设置frpc
要想通过外网访问,还要配置frpc进行反向代理,因为chrome用到了两个端口,这里也需要配置两个,修改frpc.ini如下:

{% codeblock %}

frps信息

[common]
server_addr = aliyunsz2.waiwang.men #服务器地址
server_port = 6666 #服务器端口
token = waiwang.men #连接凭证
protocol= tcp #协议类型

frpc信息

[hceng.web] #名字,同一类型的名字不能一样
type = tcp #类型
local_ip = 192.168.123.123 #群晖本地IP地址
local_port = 12140 #chrome端口号
remote_port = 12140 #反向代理后的端口号

[hceng.web] #名字,同一类型的名字不能一样
type = http #类型
local_ip = 192.168.123.123 #群晖本地IP地址
local_port = 12141 #chrome端口号
use_encryption = true #开启加密
use_compression = true #开启压缩
custom_domains = web.hceng.cn #绑定的域名
{% endcodeblock %}

修改完后,重新启动frpc

3、设置DNS
DNSPod里添加一条记录。
主机记录:web
记录类型:CNAME
线路类型:默认
记录值:aliyunsz2.waiwang.men

此时,访问web.hceng.cn:88/vnc.html就可以访问chrome。但这样任何人都可以访问,导致一些安全隐患,因此还需设置密码。

4、设置密码
docker的“容器”选项卡里选中正在运行的chrome,点击上方“详情”,在弹出的窗口里切换到“终端”选项卡,点击“新增”,再点击刚才出现的bash,此时右边就会出现终端。

在终端输入:

x11vnc -storepasswd

然后输入密码,确认再输入一次,然后会有提示,问你是否保存到/root/.vnc/passwd,按y回车。
接着还要改下启动命令,让x11启动时候加载密码文件。先安装vim以便后面修改文件,输入:

apt install -y vim

安装完成后,输入:

vim /etc/supervisor/conf.d/supervisord.conf

在第9行后面添加:

 -rfbauth /root/.vnc/passwd

这里会用到vim编辑器的基本操作,自行百度。随后重启chrome容器即可。
以后,通过群晖桌面的快捷方式或者输入web.hceng.cn:88/vnc.html就可以打开noVNC,再输入密码即可打开chrome

建议把缩放模式改为“本地缩放”,这样就可以全屏显示chrome

参考文章:
在群晖里使用浏览器,通过Docker安装火狐/Chrome浏览器+Enpass,可以外网访问群晖所在内网路由等!
给Docker镜像运行的chrome镜像添加访问密码

4.4 加快群晖自带下载器速度

加快群晖自带Download Station下载种子的速度。

群辉自带的下载工具Download Station下载效果还是可以,如果遇到下载比较慢的任务,可以添加tracker服务器。
打开trackerslist,选择trackers_best_ip.txt,复制里面所有的内容。

再打开Download Station,选中下载慢的种子,切换到“Tracker服务器”选项卡,点击“加入”,粘贴前面复制的内容,最后点击“确定”。

参考链接:自己添加tracker服务器,加快群晖下载速度

猜你喜欢

转载自blog.csdn.net/hceng_linux/article/details/89913994