个人服务器初探

0. 前言

过年在家闲着无聊,于是打算组一台小服务器玩玩。但是,我可以说是0基础的小白,对于装机、网络配置、装系统等都没什么经验,虽然学过计组和计网,但也都停留在理论水平,没有实打实的摸过。所以在组装NAS之前,我把家里的旧电脑拆机清灰重装系统了一番,借助网上的教程,过程总的来说还是比较顺利的。

PS:其实一开始想的是把这台旧电脑改成NAS的,但奈何是M-ATX的主板,部分硬件也不合适,而我又想要一个小巧的服务器,所以重买了个ITX的主板,把旧电脑清灰重装了系统,组装回去了。

123

在装机热身完成后,我就和认识的一位“垃圾佬” @zgf 请教讨论(后面基本都是这位大佬帮我扫清道路,带我入坑),开始在海鲜市场和PDD捡垃圾。

1. 需求分析

捡垃圾之前,还需要对自己的服务器做一个需求分析,进而可以选择更加合适的硬件。我是想做一个All in one 的小服务器,主要需要的功能有:

  • 软路由,实现科学上网,以及更舒适的网络环境
  • 文件中枢,实现多设备文件共享,组raid1存储重要的文件(照片、资料、数据等)
  • 家庭影音中心,下载和存放影视和音乐资源
  • HomeAssistant家庭智能中枢,小米设备接入HomeKit
  • 后期安装一些docker

由此,可以梳理出大致的要求。软路由需要两个网口,并且希望内网跑满硬盘读写速度,所以买入一个pcie转2.5G的网卡,准备搭建2.5G内网环境。然后综合上述的需求,使用了8G的内存,买了两块4T的硬盘组raid1存储重要资源,然后还有一块闲置的5T移动机械硬盘插USB口存放影视资源。此外,又购入一块480G的固态硬盘作为系统盘存放系统文件。而我想要一个比较小巧紧凑的小主机,所以选择了itx的主板和蜗牛机箱。下面是全部的具体配置信息:

硬件名 价格 型号
主板 160元 华硕hb1i-plus(一个sata口损坏)
CPU 0 Intel i5-4570(闲置cpu)
网卡 50元 RTL8125BG
机箱 260元 蜗牛星际A款带pcie口
电源 同上 益衡7025b电源250w
内存 60元 金士顿8G DDR3 1600频率
硬盘 680元 希捷VX015 4T + 大华Vm000 4T
固态 145元 京东京造3系列 480GB

综上,总计一共花费1355元,除去存储硬件的开销,小主机花费530元。

2. 装机

2.1 艰难的点亮

经过几天的等待,硬件陆续到齐,开始正式装机。在有过一次旧电脑的清灰重装经验后,我也信心满满能一次点亮。但在我装上cpu,涂上硅脂安装好风扇,插上所有电源后,按下电源键,结果毫无反应,甚至连cpu风扇都不转。于是开始最小系统法debug,逐个排查电路的每个部分,首先检查了电源线有没有漏接和错接,发现都没问题。使用螺丝刀短接开机针脚,也没反应,排除电源键的问题。交换内存插槽,仍然没用,内存是新的,并且连风扇都不转,应该不是内存的问题。怀疑电源故障,于是将电源接到旧电脑上,也能正常点亮,排除电源问题。换了一个正常的风扇,也不转,排除风扇的原因。剩下只有CPU和主板故障,这就比较头大了。因为CPU拆下来还要换硅脂太麻烦。主板故障概率也不大,因为卖家直接从运行的机器上拆下来的,快递也包的很好。后来@zgf建议试一下清空coms,结果就点亮了!非常玄学,怀疑可能是卖家之前在主板设置了一些东西导致的问题。

微信图片_20230120200055

2.2 令人头大的装机&理线

成功点亮后,开始装机,把各种硬件塞入机箱。原以为轻轻松松的装机,结果也有很多问题。首先是这个蜗牛机箱实在太小了,空间非常紧凑,而我又是第一次安装,所以,前前后后重装了好多次才顺利装好。而主板的电源线设计得就好像一次性的,插上去就很难拔下来。推荐装机的时候带一个手套,不然手真的会被扎地很痛。此外,一个电动螺丝刀真的能大幅改善装机体验。最后,千辛万苦,终于装好了所有的电源线、usb线、SATA线,pcie网口,并且也正常点亮(关于理线我真的尽力了,每根线都有自己的想法我也没办法)。另外,装机前可以买一盒装机螺丝备用,因为你是收的二手物品,不能保证你手上有合适的螺丝。就像我这次,卖家忘记发螺丝了,导致我很多地方没上螺丝,之后买了再上。

image-20230120201418419

3. EXSI

接下来就要开始折腾软件部分了(硬件部分折腾了2天,新手入坑实在是太不容易了)。我是跟着b站的教程来的:

ESXI虚拟机下安装OpenWRT+群晖NAS+Windows,打造All in One系统

教程中设计好了IP地址,我也就按照它的示意图进行分配,反正内网IP都可以随便分配。由于我的小主机只有两个网口,一个是主板自带的千兆网口,一个是PCIE转的2.5G网口,为了内网速度不受网口瓶颈,所以将2.5G网口作为LAN口对内,主板自带的千兆网口对外连接互联网。

image-20230120203510527

准备好需要的文件后,先安装EXSI,跟着教程一切顺利,安装好系统,配置好网络,使用网口将PC接入小主机,访问 192.168.66.6 顺利进入EXSI后台。然后发现检测不到外接的2.5G网口,应该是没装驱动,去网上找了RTL8125的驱动(vib格式),下载到PC(驱动链接),然后ssh进入EXSI,先将PC的驱动使用scp传到EXSI上,一般放在tmp 目录下,命令如下:

scp 本地文件路径 用户名@ip地址:目标路径

然后使用下面的命令安装驱动:

esxcli software vib install -v vib文件路径

最后记得 reboot!reboot!reboot!即使提示安装失败也要reboot!我当时就是提示安装失败,但是reboot后就检测到网卡了。然后就是跟着教程设置虚拟交换机vSwitch和端口组VM NetWork。由于我有两个物理网口,为了做网络隔离,也便于后期拓展,就设置了两个虚拟交换机,vSwitch0的上游链路为vmnic1对应2.5G的网口,vSwitch1的上游链路为vmnic对应千兆网口。接着设置端口组,相当于设置交换机的下游链路端口,给 vSwitch0 和 vSwitch1 分别添加了 VM NetWork 和 VM NetWork1。然后虚拟机就可以分配VM NetWork或者VM NetWork1作为网卡,通过虚拟交换机,连入上游链路(即物理网口)。

这里需要注意,由于我需要使用2.5G网口连接内网,所以内网设备要访问ESXI的后台就需要将Management Network和2.5G网口绑定,然而Management Network默认和vSwitch0绑定。所以我在上面才将vSwitch0的上游链路设置成了vmnic1(即2.5G网卡)。更改后,记得将网线接入正确的网口,否则无法访问ESXI后台。

Tips:在折腾的时候,有几次设置错了,导致无法从网页进入后台,可以在主板上设置的 Network Restore Options 中,初始化所有设置,然后重新设置网络配置就能正常访问了。

下面是我的vSwitch0的配置:

image-20230415103136858

下面是vSwitch1的配置:

image-20230415103159102

可以看到,VM NetWork中链接的就是虚拟机,两个NetWork分别连接了OpenWrt软路由的LAN和WAN口,实现外网的访问。综上,OpenWrt可以看做是虚拟路由器,vSwitch可以看做是连接在虚拟路由器上的两个虚拟交换机,而其他的虚拟机就通过VM Network和虚拟交换机相连。

4. OpenWRT

4.1 安装系统

然后就可以装虚拟机了,先安装OpenWRT,跟着教程也是很顺利安装上了。这里需要注意的是,如果提示未开启VT-x,就需要进入主板的BIOS开启,每个主板的开启方式不同,网上一般都有(部分主板默认开启的就没事)。跟着教程配置完成后,就可以顺利上网了,这时小主机就具备了路由器的功能。由于安装时WAN和LAN默认绑定的网口不正确,需要进行调整,因为我前面将2.5G对内的网口和vSwitch0绑定了,所以我需要将OpenWRT的LAN口也接入vSwitch0,然后OpenWRT的WAN口接入vSwtich1。

Tips:在折腾的时候,也可能设置错误导致网页端后台无法进入(多数因为设置错了LAN和WAN对应的物理接口),同样有解决办法,可以ssh连接OpenWRT在虚拟机终端中修改 vi etc/config/network,即IP配置文件。

4.2 科学上网

由于我订阅了机场,所以使用Clash比较方便,于是使用OpenClash这个插件,跟着网上的教程运气好的话是基本没啥问题的。但是我的运气比较差,我使用的是视频里的OpenWRT固件,比较老,很多依赖的版本比较低,然而我如果要使用OpenClash必须要更新内核,而更新的内核所需的依赖版本较高,这就导致一直出错,最后实在没办法重新找了一个2022年的OpenWRT固件重装,完成了内核的更新。

image-20230121153358100

更新好内核以及编译版本后,在模式设置里选择Fake-IP(增强模式),订阅一下机场的链接,然后在服务器与测量组管理里面读取一下配置,启动OpenClash就行了。其他的设置就和PC端的clash基本差不多。

image-20230121153818227

至此就完成了软路由最重要的功能了,当然OpenWRT还有很多插件待开发,比如广告拦截,BT下载,docker等。

4.3 开启ipv6外网访问

ipv4太难申请了,想尝试一下使用ipv6来实现外网访问小主机。首先要实现内网的ipv6访问,这一步骤就难了我很久。首先是要在OpenWRT中开启ipv6,然后是光猫和路由器都需要开启ipv6,我家的网络环境默认全不支持ipv6,我就只能一个一个去摸索如何开启。参考教程 首先是OpenWRT的设置,比较简单,只要按照教程做就行,需要注意的是WAN口必须要设置成PPPoE的协议,填入宽带的账号密码。也就是说,我们使用软路由来拨号,光猫仅设置为桥接,用于光信号的调制和解调。所以下面就是要进行光猫的设置,登录光猫管理员后台,我的是联通光猫,后台为 192.168.1.1/cu.html ,进入后点击管理员账户,账号密码都是CUAdmin。

QQ图片20230121162741然后设置成bridge桥接,模式选ipv4/v6,这样能同时支持两种ip格式,这里需要注意的是VLAN ID每个地区是不一样且固定的,查看一下原来光猫配置的是多少,一致就行,然后业务模式要选择INTERNET表示是上网服务。

121234

在管理员后台设置好后,进入用户后台,输入用户密码(一般在光猫后面都有写),然后选择一下刚刚新建的连接,就完成了光猫的设置。

1234

设置好光猫后,还需要设置路由器,这里有两种情况:

  • 一种是路由器开启DHCP,我的是华硕的路由器,需要进入路由器后台后在IPv6中选择Passthrough,具体选择可以参考华硕的文档。

image-20230121162607279

  • 第二种情况是将路由器设置成AP,关闭路由器的DHCP服务,由软路由统一进行DHCP,路由器只作为一个具有无线功能的交换机。这里我在设置的时候遇到了一些坑,华硕登录路由器管理后台是使用域名登录的,所以在更改成AP后,路由器IP由软路由重新分配,就导致域名无法访问了。这时只要去软路由下的DHCP中查看一下就能顺利进入AP的后台了,进入后台后可以将LAN的ip改成一个固定的静态ip即可,如下图。

    image-20230121195125572

     

到此为止,就算完成了ipv6的内网配置,在OpenWRT中查看IPv6的内网地址,复制2408开头的ip(每个人可能不一样),然后在浏览器中输入[ipv6地址],查看是否能正常访问OpenWRT后台。同时使用https://test-ipv6.com/检测是否支持ipv6(注意要关闭科学上网),就说明配置完成。

image-20230121164116078

后续:来成都后租的房子居然没有ipv6,痛苦!!

5. HomeAssistant

5.1 系统安装

前面一节实现了软路由的功能,这一节来实现智能家居中枢的功能。由于财力有限,所以智能家居选用的都是小米的产品,但我又是苹果生态的深度用户,并且Siri比小爱同学好用太多了,所以我需要将米家的产品接入到HomeKit中,使用HomeAssistant来实现。

HomeAssistant(HA),是一套开源的智能家居系统,借助开源社区的力量,现在HA可以接入大约1900多种品牌的设备或软件产品,有效解决不同厂家的协议、网关不互通问题,将家庭设备的数据汇集到一个平台上,实现全屋设备关联,比如通过Homekit来控制小米、华为、涂鸦的设备等,另外还能避免部分隐私问题,你的家庭使用数据部分可以实现本地化,防止厂商收集你的日常行为。

由于我是在ESXI中安装HA,所以我可以直接安装OS版本(版本区别如下),在官网找到vmdk的系统文件,然后参照OpenWRT的安装步骤就可以进行安装,还是比较轻松的。

image-20230206092756221

5.2 HACS

HACS 可以理解为 Home Assistant 上的一个第三方应用商店,可以安装很多有用的集成。

安装完成后下载 Xiaomi Miot Auto 集成如下图所示,使用下面的这个集成就可以将小米设备接入Homeassistant,后续如果有其他厂商的设备也可以通过HACS里找到对应的集成来接入。

image-20230415105435400

在HACS里下载好后,点击左边栏里的配置->设备与服务->集成,选择右下角添加集成,如下图所示:

image-20230415105843069

搜索Apple,然后选择Homekit,跟随提示进行设置,就能将Homekit接入到HomeAssistant了。然后搜索Xiaomi Miot Auto,添加后配置小米账户就能自动检测到当前有哪些智能设备,然后将这些设备添加,就接入了HomeAssistant,到此就能实现Homekit控制米家设备。此外,我买了两个DIY的人在传感器,使用ESPHome接入。最终如下图所示:

image-20230415110343669

2.3 配置设备

最后给每个设备命名,进行整理后效果如下。因为租的小房子里设备也不多,所以就比较简洁。此外,在配置->场景自动化中还能设置一些自动化,比如人来开灯,人走灯灭等。目前已实现功能:

  • 早上关闭起床闹钟后自动打开窗帘和卧室灯,同时播放歌单音乐
  • 晚上准备睡觉时,唤醒Siri并告知“睡觉”,就能关闭所有灯和窗帘
  • 支持所有灯的Siri语音控制
  • 厕所和洗漱台实现人来灯亮,人走灯灭,人在保持
  • 语音控制空调
  • 设置电子围栏,离家关闭屋内所有灯,回家时打开客厅灯
  • 手机控制家中的开关

image-20230415110431526

手机中的界面如下图,由于HomePod为家庭中枢,所以无需公网IP,就能实现不在家中控制家里的设备(走苹果的服务器)。

image-20230415135531706

6. 黑群晖

6.1 安装

由于群晖的软件生态比较好,所以选择了它作为NAS系统,我选择了DS918+ DSM 6.2.3-25426版本进行安装,只要后续不更新系统,基本不会数据丢失。安装需要引导文件和系统文件,其中引导文件是img格式,需要使用StarWind转成适用于ESXI的vmdk文件,系统文件就是群晖的系统,文件格式为pth。image-20230415122521027

然后创建虚拟机,名字可以自定义:

image-20230415122631340

选择虚拟机存放的位置

image-20230415122658009

删掉无用的设备,只留下需要的设备。

image-20230415122805457

设置引导选项,使用EFI引导,延迟5000毫秒。

image-20230415122911204

完成虚拟机的创建,点击创建好的虚拟机,点击编辑,添加硬盘,选择现有硬盘。

image-20230415123301918

然后找到对应虚拟机名称的文件,点击上载,将两个群晖引导文件vmdk上传,最终只会显示一个虚拟硬盘,但必须两个都上传。选择这个硬盘,然后就成功加载到文件夹中了。然后再添加一个存储群晖系统文件的硬盘,选择添加硬盘->新标准硬盘,然后选择合适的位置创建一个50G的硬盘,相当于Windows中的C盘。

image-20230415123623055

最终得到如下两个硬盘:

引导盘,注意这个盘的SATA控制器必须是SATA(0:0)

image-20230415124028069

以及系统盘:

image-20230415124126556

然后就可以开机了,选择第3个进行安装:

image-20230415124327979

然后将会进入这个界面,在浏览器中输入下面的find.synology.com就能搜索到群晖的安装向导界面:

image-20230415124351165

如果搜不到,就进入路由器(OpenWRT)后台查看一下DHCP分配的IP,然后再浏览器中输入IP就能进入:

image-20230415124512853

然后选择手动安装:

image-20230223153020822

选择之前准备的pat系统文件,等待安装完成后重启,然后就安装完成了。

image-20230223153102042

6.2 硬盘直通和挂载

目前我的硬盘是这样的分配的:两块4T的机械硬盘组Raid1存放重要的数据文件,一块闲置的5T移动硬盘来存放影视资源。移动硬盘是通过USB连接主机的,但是ESXI不知道为啥不能自动识别,参考网上教程成功让ESXI识别移动硬盘。

直通完成后,在ESXI中就能看到几个vmdk的文件,表示将这些实体硬盘虚拟成了ESXI中的虚拟磁盘,然后记得将这几个磁盘分配给黑群晖的虚拟机。其实也可以直通SATA控制器,但是由于我的ESXI系统盘也用到了SATA控制器,所以就不能直通SATA控制器。

6.3 影音服务器

尝试过NASTools,但是BT和PT下载有点慢,新资源也少,所以选择了阿里云同步的思路。具体就是使用阿里云WebDAV和群晖的Cloud Sync实现阿里云盘的同步。在网上找到资源后,存到阿里云中,群晖就会自动下载文件到指定文件夹,效果如下图:

image-20230415024603791

然后使用了Jellyfin作为媒体服务器,跟着网上的教程实现自动刮削电影和电视剧,体验还是很好的。

image-20230415130231425

image-20230415130240610

6.4 黑裙数据无损重装

使用过程中,有一次直接ESXI关机,导致群晖进不去,只能重新引导安装。使用如下方法可以保留原来群晖中的所有数据(包括系统数据和文件):

  • 新建一个虚拟机
  • 使用和之前安装黑群晖时相同的引导文件,但必须是新的引导,不能将损害的黑裙里的引导文件拿来用
  • 将原来黑群晖中的所有硬盘都分配给新的虚拟机,包括系统盘和数据盘,一个不能少
  • 开机进入引导界面,然后就会提示你进行恢复系统
  • 等待恢复完成后自动重启,进入群晖就和之前的一样了,这里注意如果你改过IP,那么恢复系统后,IP就会变成你之前修改的IP,而不是最开始DHCP的IP了。

7. 总结

年初的时候就折腾的差不多了,写了个草稿,但中间各种事情耽搁就一直没有写完这篇文章。感觉不能再拖了,就拿了个周六的早晨写完了这篇心路历程。总的来说,还算是成功的,至少学到了很多东西,包括虚拟机的使用,网络环境配置,Linux的基础,各种系统的使用,智能家居的安装配置等,也算是一次个人服务器的初探。受制于各种原因,当前的这个All in one服务器也只能算是个小玩具,离我最终的设想还是有很大的差距的,而真正实现一个对我而言完美的服务器,更加重要的还是有一个稳定的住所,可能若干年后才能得以实现。

未来的一些展望:

  • 实现稳定的外网访问,至少需要有一个公网IP,最好是IPv4,有了外网高速访问的能力才是个人服务器的最终形态:

    • 从此告别爱腾优,随时随地享受无广告的优质影音体验
    • 随时随地自动备份重要文件到服务器中的硬盘
    • 个人博客也能迁移到自己的服务器中
    • 搭建一些docker环境,或者一些服务,比如无需代理的chatgpt,强国助手等。重要的是可以自由DIY。
  • 实现重要数据的321备份原则

  • 真正意义上的2.5G/10G内网,涉及到以后家里装修时网线的预埋。同时终端设备的网口也需要升级。

  • All in one 主机解耦,全部虚拟机放一起稳定性太差,以后打算分离软路由和NAS。可能打算使用硬路由+OpenWrt旁路由的形式,再加上一台白群晖,HomeAssistant使用docker安装在群晖里,最大程度提高稳定性。

  • 实现更高级的智能家居体验,重点在于各种数据的收集和利用

最后的最后,就再放一下小玩具的照片吧~

image-20230415132821148

评论

  1. Taki
    Windows Edge
    12 月前
    2023-4-17 19:06:11

    第一

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇