我的自建网络服务体系很多服务都是抱着试一试的心态搭建起来,然后很多服务就开着没有实际使用,直到下一次偶然发现再次使用。虽然我将大部分服务都通过Dashy面板界面集成到了一起,但还是有些服务由于各种原因忘了怎么配置、使用。并且有些服务在我没有使用Bitwarden之前甚至经常忘记密码,每次都需要找如何重制该服务的密码,非常令人头疼。
本清单用于服务、设备备忘,同时梳理整个网络服务结构。
一 机房
我现在的机房暂时是在一个狭小的杂物间,比较大的问题是没有一个良好的通风情况,后面应该会搬到飘窗或者其他通风阴凉干燥的环境。
这里暂时只放了服务器和NAS,后面打算换成机柜,然后把服务器间网络换成10G光网络。
二 物理设备
1.网络基础设施
雷迪斯UPS
机房UPS,只能拖600W,但对于我机房来说是足够的。这里是将USB直接插到了NAS上,直接使用的群辉的UPS不断电系统进行设置,具体操作看下面这篇文章:
这个UPS我测试了下应该能拖我机房的三个机器常规负载情况下20mins左右,大约在17分钟达到群辉默认的UPS低电量临界点 10.3%。
网线
所有的网线我都是用的千兆网线,对于内部使用来说还是比较足够了,由于在装修的时候预埋的是百兆网线,我这里是直接拉的明线,比较丑。
2.路由器
路由器这里我就只将一下作为主路由的物理机iKuai和作为旁路由的虚拟机OpenWrt了,其他路由器我设置为桥接作为无线AP节点了。
主路由和旁路由都是在一个物理机上,物理机上直接装的iKuaiOS,旁路由OpenWrt是通过iKuai上的高级应用中的虚拟机建立的,后面有时间写一下怎么在iKuai上搭建虚拟机(我使用的镜像是eSir的GDQ版本OpenWrt,用StarWindConvertor将img转为了vmdk文件作为已有硬盘启动)。但我使用的这个固件中大部分功能都不是我需要的,后面有时间自己编译一个固件。
下面是这个机器的外观:
机器有双网口,我一个接到设置为桥接模式的光猫上,另一个接到了H3C交换机上。
物理机:工控机
这个路由器是一个双网口 i5-3317U 4G 8111千兆螃蟹卡 工控机。从性能上来说是没有问题的,单纯做一个路由器还是比较Overkill的。工控机我设置AC Recovery PowerOn让他来电自启。
机器上我是直接装的iKuaiOS。
主路由:iKuaiOS
主路由iKuaiOS,爱快操作系统是一个面向商业场景的路由器操作系统,这个操作系统是闭源的而且由于安全等考虑没有开放root权限。这样就保证了iKuai设备的稳定性,但是也失去了从Host操作系统上直接魔改的能力。但iKuai也提供了VM和Docker能力,让我们可以直接在iKuai上运行VM和Docker。
在iKuai上创建的虚拟机直接接入的LAN网络,不需要进行一次NAT,所以比较方便。我的旁路由OpenWrt就是直接在iKuaiVM上建立的。
iKuai Docker中创建的容器我感觉有比较多的限制,之前想在iKuaiDocker中装SoftEtherVPN容器用于远程访问,直接报错。而且这些容器不能设置privilege。具体开启iKuaiDocker能力的方法网上已经有很多了,这里就不在赘述。我在写文章时准备去iKuaiDocker截个图,突然发现进入Docker页面的插件管理直接消失了???因为我也没有使用iKuaiDocker这里就不看了。
总的来说iKuai对于新手还是比较友好的,拥有简单易用的远程访问控制和一些基础的拓展能力。但我感觉有些时候动手能力还是被限制住了,完全在一个操作一个黑盒。
旁路由:OpenWrt
旁路由OpenWrt是通过iKuai虚拟机功能实现,我这里直接使用的eSir的GDQ固件,基本需要的科学上网的插件都有。通过OpenWrt实现的功能将会在下面的部分讲解。
网络设置
这里记录一下网络的设置,首先我本地网络的DHCP服务在iKuaiOS上,因此所有的DHCP操作都直接在iKuai中进行具体设置在网络设置部分讲解。而我在DHCP中设置的网关是OpenWrt的IP地址,因此所有流量实际是发往了OpenWrt上,而DNS我则将首选DNS设置为OpenWrt备选设置为了iKuai,iKuai的DNS首选DNS指向外网ISP分配的首选DNS(我的这个没有变过都是一个DNS服务器),备选指向了群辉的DNS服务。
因此我的网络流量流向是从客户机=>OpenWrt==[国内外分流]==>iKuai===>互联网。
DNS查询是直接查OpenWrt,如果OpenWrt崩溃了再查iKuai,iKuai又会去查群辉,都设置了DNS查询记录缓存。(这里是为了在OpenWrt崩溃的情况下我内网仍然可以使用我设置的内网域名,防止有些网络恢复服务无法通过DNS查询获得对应服务器IP)。
本来想将服务器网络和家人用的网络使用VLAN分离,但由于下面这个不知名品牌的交换机我不知道怎么设置它的VLAN,导致我无法设置。
3.交换机
不知名品牌千兆交换机
这个交换机不是很好,他实际跑满带宽只能跑700Mbps左右,而且很不稳定。而且家用型号交换机比较坑的是从来不会标背板带宽,简直坑。由于这个东西经常丢包,我本来计划好的将存储资源转移到群辉NAS上,计算资源使用ESXi的想法也落空了,怎么说呢,就是很卡。
后面资金充足直接整光网络。
H3C S5120-28P-Si 交换机
华三强的网管交换机,对于我家用来说也是Overkill了,但是架不住我对这类企业级网络设备的好奇,我就直接闲鱼淘了个二手的回来。这上面我没有进行特殊的配置,但注意使用这种类型的机器还是要买一根Console线好进行直接连接,我中间有一次忘了Web管理界面的密码就是通过Console先将密码重置恢复后才进的控制界面。
H3C交换机的Web管理界面:
这里功能很多我都根本没有用上,因为对于家庭应用场景下根本不需要太多限制,最多设置下QoS。其他我用的最多的竟然是线缆检测,可以测线缆长度,但是它超大的背板带宽(192Gbps)让所有数据交互都可以跑满千兆。
他日常的用途就是为我的工控机路由器垫脚,哈哈哈。
想要购买这类交换机的HomeLab用户需要注意下,这类交换机基本都有满血的散热风扇,相对来说声音还是比较大的,从感官上来说,他开着的时候风扇的声音和我的DELL R720服务器低负载时的声音差不多,所以对声音比较敏感的用户还是要慎重考虑,或者自己改个被动散热?
网络拓扑图
这里画一个不标准的网络拓扑图,中空线段代表网线连接,虚线代表虚拟连接(虚拟机通过桥接Host网络等方式进行网络通讯):
4.服务器
我暂时有三个服务器,一个群辉可以算是文件服务器,另外两个服务器上都安装的ESXi7,用于运行虚拟机。我的非重要服务基本都是在ESXi上运行的,大部分服务都是Docker容器中,而比较重要的服务都是在群辉上运行,相对来说群辉启动比服务器启动要快,所以我希望能在停电场景下尽快恢复这些重要服务。
群辉DS218+
群辉DS218+是我拥有的第一个可以算是服务器的设备,群辉机器对于HomeLab新手来说是真的非常好的入门设备,在你可以完全不了解底层原理和配置的情况下,你可以非常便捷的设置DNS、Docker、还有群辉各种各样的文件服务功能。如果要我推荐HomeLab新手的第一台设备,那我一定推荐群辉。但由于群辉都是以企业级为标准,因此价格不是太美丽。如果由于经济等原因无法购买群辉产品,可以尝试在威联通、星际蜗牛上尝试刷黑群辉系统,同样也可以享受到DSM系统带来的便捷(TrueNAS等其他开源NAS也是不错的)。
这台群辉原本应该是2G内存,在2G的情况下是无法开启Docker套件的,至少需要4G内存,因此我去淘了一根8G的内存,插在了另外一个内存空槽上,组了10G内存,现在基本上内存都没有耗尽过,只是经常一启动一个Docker容器就会给我发CPU跑满100%的邮件。
群辉机器上我主要使用的其实不是他的文件服务,因为我感觉我对文件服务的需求不是很大。首先我不怎么摄影,所以没有很多照片需要存储,其次我对于文件同步需求是很大,因为我写文档等文件要么是直接在博客上写,要么就不需要同步数据,而笔记等文件都是通过OneNote来进行同步。而文件备份也比较少使用,因为我大部分文件其实都是在笔记本上,一块1T的三星固态加1T的备份用的HDD,只有少部分重要数据才会直接使用群辉的同步和备份功能。因此其实我直接使用群辉进行文件同步和备份的频率不是很高。
我对于群辉机器的定位是很明确的,群辉上只运行重要的,如果关闭则会影响网络质量、便捷性的非计算密集型的轻量级服务,这些服务一般我在Docker中运行,可以在崩溃后自动重启,比如VaultWarden的密码存储服务,Snapdrop的传输服务,UptimeKuma的网络监控服务,青龙面板的Schedule服务,Gitlab的SCM服务等。如果这些服务有一个丢失,就可能会造成在一个工作流程或服务中的不顺畅。如果有计算密集型的服务,则不应该将这些服务放到群辉上,而是将服务放到ESXi虚拟机中,群辉上运行其前端容器,比如Kibana、ParseDashboard等我都是只把前端运行到了群辉上,而计算密集型的服务比如ElasticSearch(IO密集型?)、Logstash、ParseServer都是运行到ESXi虚拟机中。
群辉上我使用频率最高的还是他的Docker套件和Gitlab套件,之前我的代码基本都是存在群辉的GitLab套件上,但现在我希望能够使用GitLab的CI/CD,而CI/CD并不应该运行在群辉上,所以现在我打算把Gitlab迁移到Kubernetes上,方便以后拓展和使用。
虽然我没有直接使用群辉的文件服务,但实际上我的服务器会将群辉作为内容库,读取其中的ISO镜像。或者将虚拟机存储在群辉上,而运行时的计算资源是在服务器上。同时群辉也是我的家庭网络的反向代理枢纽,在没有使用HomeAssistantOS的NginxProxyManager插件之前,我的所有的反向代理都是在群辉上实现的,下面给一张图就可以知道我到底设置了多少内部域名。群辉在最开始搭建HomeLab时真的给予了我很大帮助。
另一个使用文件服务的地方就是服务器和虚拟机的备份,基本所有的重要服务我都在群辉上做了定时备份,比如博客的备份是5天的循环覆盖备份,同时每个星期会向我的邮箱内发一份备份。
群辉另一个比较好的方面是他屏蔽底层配置的前提下还基于用户足够的权限,用户可以通过ssh进入群辉而后用sudo su进行提权从而完全掌握对群辉的修改和控制权。
Dell R720
Dell R720是我拥有的第一台企业级的服务器(暂时也只有一台打算入一台做文件存储的文件服务器),取快递时差点没把我吓死,1.2m*60cm*35cm的巨大箱子,应该有30~40斤重。拿出来之后就傻眼了,服务器太长,没有地方可以放,最后只有把家里一个画沙画的箱子的脚架拆下来放,还刚好合适。我最开始装的是ESXi6.7,但在ESXi7出来之前,听说能直接在ESXi内使用Kubernetes(vSphere with Tanzu),我早早的预留了重装ESXi的硬盘,最后却发现需要三台服务器组HA之后才能使用。但我还是将系统升到了ESXi7。
这里还有一个坑,ESXi7无法识别我原来的H310阵列卡,我只有去淘了一张H710P阵列卡才把ESXi7装上。
服务器的配置为 E5-2637v2 *2 8*8GB 2T 4*1000Mbps。但我因为硬盘基本都是捡的二手的,导致服务器经常读写延迟非常高,在高IO的情况下能达到几秒的读写延迟,简直恐怖。
捡这种企业服务器的好处就是他直接就有iDRAC这类远程管理卡的企业级license,可以直接使用。确实满足了对服务器远程控制的诸多需求。
服务器上运行着我比较重要的虚拟机,首先就是对两台ESXi进行管理的VCSA虚拟机,虽然他官方说至少要24G内存,但我把内存调低一点也没有啥问题,但调到20G一下就可能会启动时卡在中间,而且实际上它也没有占用那么多内存,在我使用的场景下基本都是4~8G内存左右,就只有启动时可能比较高。然后是一台专门用于跑容器的用Portainer操作的Docker虚拟机。一台跑Kasm的虚拟机。我博客和NextCloud所在的宝塔面板虚拟机(准备把宝塔换了)。一台做Kubernetes从节点的虚拟机。一台HomeAssistantOS的虚拟机。剩下都是开发用的虚拟机。
总的来说,这台服务器才是我经常跑服务的机器,而且由于这里服务器的设计目的就是7*24h运行,所以自从我在21年3月份开机后,基本除了我手动断电或停电,这台服务器都没有出过什么差错。
服务器 v旧电脑二次利用版
这台从设计目的上来说只能算PC的电脑也被我装上了ESXi成了我HomeLab的一台服务器,我已经忘了他的主板是啥了,好像是微星的一个板子。这台服务器的配置为 i5-6400 8*2G 2T 2*1000Mbps,这里的网卡不是板子上带的网卡,因为ESXi7没有螃蟹卡的驱动了,因此我只有去淘了一张Broadcom5720双口网卡装上去。这台电脑的硬件是我从两台旧电脑上拆下来组装到一起组成的。
这台服务器上我只运行了两台虚拟机,两台都是运行的Kubernetes。直接一台分了8G内存然后内存就无了。
5.终端
这里的终端是指我直接使用的与服务器上的服务交互的设备。在我这里就是我的笔记本电脑这些设备。
主力笔记本
我的笔记本从来都是被我高强度使用,每次跑服务都会先尝试在笔记本上先跑一跑,而这个主力笔记本也构成饿了我的工作空间。接的两个外屏,笔记本上的屏幕是没有使用的。下面的小平板是用来看HomeAssistant服务的。窗口看起来很凌乱,但实际上是使用PowerToys的FancyZone进行管理的,具体请看我关于PowerToys的博客。
笔记本被我藏在了飘窗上,请无视右边这只肥猫。
Surface Go
自从买了Surface之后我就没有再考虑过买其他平板了,因为这个电脑太对我的胃口了。
我首先有上面这台重达20斤的主机笔记本,这个笔记本太笨重了,所以我一般是不会挪动它的,而出门一般都会带上SurfaceGo,然后通过IPSecVPN远程回来使用远程桌面或其他服务。并且他10.3寸的大小,正好可以塞到我的挎包内,便携性拉满,电池也可以说比较耐用,还可以直接接Type-C的充电宝,简直是居家必备良品,同时他搭载的Windows系统也让他拥有一定的生产力,即时性能上不是很足,夏天用着会烫手,但也无法掩盖他的优点。
我觉得SurfaceGo比较好的第二个方面是他与OneNote搭配起来非常好用,我有在写代码前进行设计的习惯,因此有这种写写画画的刚需,SurfaceGo+OneNote完美的契合了我的需求,他大小正当合适,而且书写顺滑,简直完美。
还有一个我觉得比较好的一点是,他启动速度非常快,基本上我如果想记下笔记基本在我摁下开机键5s内SurfaceGo就能启动完等待我使用WindowsHello登入了。
我是在三年前买的SurfaceGo,用到今天他经历了风风雨雨,基本四个角都被我摔掉了一点皮儿,但由于他的被盖是铝合金一体成型的,因此竟然被我多次摧残下屏幕都没有一点损伤,只是边角的铝合金被我磕掉了。同时如果你仔细看我的SurfacePen,你可以看到我已经把手握的位置的漆都用掉了。
但OneNote上的比较基本只有我自己能够看懂,因为我写这些的时候都是一直在随着思路写写画画,有时我自己都不知道自己在写啥。但一般我需要写博客时,我就会把博客内容部分的OneNote笔记翻出来,重新走一遍之前的思路,这样博客的架构和思路就更加清晰,一步一步抽丝剥茧完成文章。
文石 NotePro 墨水屏
文石NotePro是我最近才入手的设备,之前一直感觉墨水屏设备不是很好,但在一次试用朋友的墨水屏设备后,我感觉这个东西简直就是为我设计的。我有一个不算很好的习惯,屯书,我特别喜欢买书,只要有我感兴趣的部分的书,我都会买回来,但又不会读完,只会把我感兴趣的部分进行阅读。因此我的书架上什么奇怪的书都可能出现,从易筋经到薛定谔的什么是生命再到弗洛伊德的梦的解析,所以我的书架上的分类和书都比较奇怪。而这种墨水屏设备正好可以解决我这个问题,我不想花费太多钱在购买实体书籍上,因此直接购买一个墨水屏设备,然后在上面进行阅读,只要把墨水屏设备的购买价格读回来我就回本了(哈哈哈)。
我最开始看了下文石还有其他一些墨水屏设备生产商,因为我有PDF和图像阅读的需求,因此我考虑购买尺寸至少是9寸以上。但我发现9寸以上最新的机器都基本超出了我的预期,因此我选择了文石几年前的旗舰机,这台机子是安卓6.0的操作系统,可以满足我的一些其他软件需求,比如直接用微信阅读或者用Pocket进行阅读。这台机器的配置CPU我不知道,但够用就行,内存是4G内存,尺寸为10.3寸和SurfaceGo一样,他们可以叠在一起放到我的挎包内。
买回来的第一时间我就把原装的京东书城给关了,提前查了下书库里的书大部分都不是我想要的。而后我在应用商店内下载了Pocket和微信阅读,之后我就开始重度使用NotePro了,前段时间学习React我就是在微信读书上看的一本叫《Learn React Hooks》的书。
然后是Pocket软件,对我来说是非常完美的一个软件,一个简单但又不简单的稍后阅读软件:
总的来说,如果你有比较大的阅读需求,我认为一个好的墨水屏软件在你正确的使用下应该能保护你的双眼,同时让你拥有更加广阔的知识面,也可以方便的通过阅读加深自己的知识体系。我基本上每周都会花费至少7个小时阅读,平均下来每天至少一个小时。
可能阅读是我的一个兴趣吧,哈哈。
推荐一下最近我读的几本比有意思的书:
- 汽车是怎样跑起来的
- 跟动物交换身体
- 菊与刀
- 固体海洋
- 神们自己
Google Pixel3 手机
我的主力手机是华为的Mate30Pro但由于我即时装了Google框架,很多软件都显示我手机上没有GooglePlay服务,比如Reddit、Middle等。因此我没有办法只有买了个美版的GooglePixel3,然后把他作为我的备用机和出海机(梯子出去)。这个机子是我闲鱼上淘的,拿回来我就刷了安卓12和Magisk,装了黑阈和其他一些软件。但由于二手机的特性,电池容量只有75%,因此这个机子常规使用只能用个一天左右就需要充电了,好在他支持无线充和快充,充电速度比较快。
而且他和Mate30Pro不一样的是看视频非常爽,因为Mate30Pro是单音箱,而Pixel3是双音箱,很明显能够感觉到环绕音。一般看视频我都用Pixel3。
这里不得不说一下,谷歌对于Pixel手机的设计是真的很不错,就举个栗子,如果我想打开屏幕顶部的控制栏,其他手机需要手在屏幕顶部滑下来,但Pixel手机可以直接通过背面的指纹解锁面板上从上到下滑动打开控制栏,感觉这些细节都非常人性化。而且GoogleAssistant比华为的小艺呼出率高了不知多少,也更加好用,同时可以通过 “握压手机” 快速唤出GoogleAssistant,非常的方便。而且感觉安卓原生系统比国内的很多厂商自己的OS都顺滑和好用,但是由于国内环境的问题,在离开了梯子的条件下使用Pixel基本是半残的状态。最近谷歌出了个GoogleFi,天天都在打广告后面看看。
还有一个想要吐槽的点就是,国内的手机推送服务太混乱了,各个厂商各自为战,导致想要做个推送服务都需要向各个厂商单独申请,而且最重要的是API都还不一样。希望HMS Core能够快点承担起国内的安卓软件生态平台吧。
iPad Air
这个机子非常老了应该是5年前的机型了吧,由于他的电池出了问题,电池只能支撑10mins左右,而我的笔记本有微星的一个叫SuperCharger的驱动,可以直接接出来一根线给他充电,因此我就买了一根长线,一头连笔记本一头连iPad,保持他的通电状态。
这台机子我就只有两个用途,第一个是作为第三副屏,第二个是作为HomeAssistant的显示面板。
我使用了一个叫Duet的软件将iPad作为屏幕,这个软件从响应速度上来说开1080×1920的分辨率下响应速度还是不错的,2K就有一点卡了。还有每次他启动就可能导致我的WallpaperEngine裂开。但我在写博客的时候Duet一直启动不起,,非常奇怪。我排查之后发现是我买的第三方充电线的问题,换成原装线就没有问题了。
第二个用途是作为HomeAssistant的控制面板
我的HomeAssistant暂时裂开了,等我修复好再上图
iPad Pro
这个iPad我通常用来画画,但已经很久没有画过了,沉迷代码无法自拔.jpg。这个iPad我还比较常用来看一些彩色的书籍,因为有些书籍在手机上太小了,而在NotePro上32阶灰度也表现不出来一些颜色细节,那就需要使用iPadPro来看了。
我的HomeLab的服务部分将在下一篇博客中展示
v0.3wep添加一部分内容
v1.0