硬件方案回顾

方案 典型案例 优势 劣势
成品NAS 威联通、群晖 etc. 1. 简单,开箱即用
2. 软件服务支持完善,有成熟的客户端
1. 高价低配,PC的价格,手机的性能
2. 没法上虚拟化,只能跑Docker
3. 定制程度高,没有自由度
成品服务器 HPE Microserver Gen 8/9/10+ 1. 企业级整机服务器,稳定性杠杠的 1. 企业级整机服务器,价格也杠杠的
2. 配置自定义程度一般,性能高一点钱包就吐血
服务器硬件自组 永擎/超威 服务器主板 + 自组硬件 1. 服务器级硬件,稳定性值得信赖
2. 自定义程度高,配置灵活
1. 服务器级硬件整一套还是不便宜
2. 电费也不便宜
消费级硬件自组 捡垃圾 1. 极其灵活
2. 成本灵活
1. 稳定性靠3分的打拼和97分的天注定

HomeLab Ver 1 搭建

时间:2018 ~ 2020

配置的具体型号已经不是很清楚了,大概几个重要的参数列在下面

硬件 型号/参数
主板 工地散装Intel主板
CPU 主板自带Intel J1900
内存 工地散装DDR3 4G
系统盘 工地散装SSD 8G
网卡 主板自带1G网卡
数据盘 希捷 3TB HDD
电源 工地散装1U 180W电源

其实就是标准的星际蜗牛矿难机。学生嘛,啥都有,就是没钱,整机连机箱带硬件200块捡垃圾捡回来的

还别说,虽然从内而外透露出一股子不靠谱的气息,但是还挺好用的。毕竟俗话说得好,8000块的电脑宕机了,肯定是电脑辣鸡。800块的电脑宕机了,肯定是我辣鸡。

配置其实也还行,在上面直接安装了CentOS 7,手开了Samba + NFS服务,然后Docker跑网盘(NextCloud) + 视频墙(Jellyfin) + BT下载(Transmission),也能跑的一溜一溜的

可能是期望比较低(基本没有期望),硬件意外的稳定。设备丢宿舍7 * 24H工作,人去实验室或者去外面,基本都能访问到。

也确实会有宕机,但是也不是那种看心情的宕机(机魂不悦)。而是有明确复现路径:

  • 运行的Jellyfin服务,使用显卡硬解视频的时候,大概率宕机。
  • 但是软解一点毛病没有。

所以估摸着,就是核显有点毛病。不过200块,要啥自行车

总而言之,这套200块捡回来的机器,从研究生阶段顶到了工作,实在是属于远远超出预期

HomeLab Ver 2 搭建

时间:2021 ~ 至今

这套属于工作后搭建的了。毕竟捡回来的洋垃圾,跑了仨服务,就已经被榨干了。干脆就执行了整机大升级

硬件 型号/参数
主板 AMD B460 ITX主板
CPU AMD Ryzon 5 4650GE Pro
内存 光威 DDR4 32G
系统盘 Asgard 256G NVME SSD
数据盘1 希捷 3TB HDD
数据盘2 西数 8TB HDD
数据盘3 光威 512GB SATA SSD
网卡 主板自带1G + 主板自带WiFi + Intel 2.5G x2
电源 台达 1U 256W电源
UPS APC BK650

主要考虑点:

  • CPU:
    • 节能的前提下,性能尽可能高:毕竟7x24h开机,能耗高了电用不起
    • 最好支持ECC内存:ZFS搭RAID需要,不然容易损坏数据(事实证明这条没啥用,内存买不起,也不用上RAID)
    • 带核显:总不能整独显吧
  • 内存:
    • 虚拟化可以超卖CPU,但是没法超卖内存
    • 支持国货,让三星的仓库不再有洪水火灾
    • 开发机 8GB(Clang内存大户) + Docker主机 8GB(GitLab内存大户) + NAS 8GB(硬盘数据缓存),这就24GB打底了,还不上个32GB?
  • 系统盘:
    • 需要装Host OS,以及放Guest OS的系统盘,所以在控制成本的情况下可以适当整大一点
  • SSD 数据盘:
    • 后来加的
    • 因为HDD的iops实在拉胯,用来做开发机的Home目录时,VIM配置这样的超多小文件读取,可以卡一万年
    • 所以还是需要一块SSD来存这些meta数据,低频访问的大文件就进HDD
  • 网卡
    • 2.5G网卡,刚好可以跑满单HDD的连续读写
    • 自带Wifi,还能直通给OpenWRT虚拟机,无缝科学上网
  • 电源:
    • 你也不想你的电脑物理意义上的爆炸吧?
  • UPS:
    • 你也不想你的数据物理意义上的爆炸吧?

这套下来差不多5000大洋,但是这个预算下,性价比确实不错(AMD YES!),稳定性也没啥问题,连续几个月开机工作,至今没有卒过。

HPE的MicroServer这个价格,就只能抱着2核奔腾回家了。或者群晖也就是上个J1900的进阶版本 – 还是弱鸡,哪里比得上我AMD Zen2的APU

总之,这套到现在都还在稳定运行,性能也没有拖过后腿,感觉还能再战20年

折腾之路

一个热爱程序的码农,总会想要自己的一个牛逼服务器,解决自己一些(臆想中)的牛逼问题。

研究生阶段一个偶然的机会,趁着矿难低价捡垃圾捡回来一台小蜗牛,从此开始了第一个丐版的HomeLab。到参加工作之后,硬件大升级,也踩了一堆的坑,故记录一下折腾之路。

这篇短文作为第一篇,先记录一下当前的状态,之后有空的时候,再分Topic逐篇详解。

需求分析

  • 为啥要自己搭建:
    • 不想被莫名其妙和谐数据,无论墙内外
需求方向 需求内容 需求原因 优先级
必备 科学上网 程序员的自我修养 P0
生活 照片服务 需要可以自动备份 P0
生活 Win游戏机 程序员的自我修养 P0
生活 NAS存储 需要存储大容量的视频&图片,多设备可以便捷访问 P1
生活 私有网盘 同步移动设备的数据,拍完照就可以存档到存储中 P2
生活 密钥管理 不用再去想密码 P2
生活 PT下载 下载电影 P3
生活 视频服务 需要带有视频墙,管理PT下的电影 P3
开发 Linux开发机 程序员的自我修养 P1
开发 VPN 墙内使用,可以随时在外安全地访问家中服务 P2
开发 Blog 假装自己很喜欢做总结 P2
开发 Git服务 方便管理自己产出的狗屎 P2
开发 Gemini API代理 能使用海外的LLM API P2

软件架构

服务选型

  • 选型原则:
    • 够用
    • 省心
    • 能Hold住

业务服务选型

需求 选型 选择原因
科学上网 V2Ray 主流技术,部署和配置方便,入站出站的代理类型支持丰富
NAS存储 OMV 1. Base On Debian,自己能Hold住
2. 功能完善,符合需求
游戏串流 Sunshine + Moonlight 主流开源服务,RT实测最短
私有网盘 NextCloud 主流开源服务,方便搭建
密钥管理 Vaultwarden 1. 支持Bitwarden客户端
2. 最多3人用,没必要上重型的Bitwarden Server
PT下载 Transmission 功能够用且省心,各个PT站都支持
照片服务 Immich 带AI分类,主流开源服务,方便搭建
视频服务 Jellyfin 主流开源服务,方便搭建
VPN OpenVPN 开源易搭建,Client多
Blog Hexo + NexT 静态博客,省心还好看
Git服务 GitLab 功能完善,用习惯了

技术服务选型

  • 虚拟化还是容器?
    • 都得要:
      • NAS方案是一个完整的OS,且业务稳定性的要求比其他的服务要高(挂了PC就访问不到数据了,)
      • Linux开发机自己会尝试各种玩意,玩炸的可能性很大,得隔离开不能影响其他服务
      • 其他服务资源需求不高,单独VM隔离太浪费
    • 因此:
      • NAS和Linux开发机,需要VM级别单独隔离开
      • 其他服务容器隔离就行
需求 选型 原因
虚拟化方案 PVE 1. Base On Debian,自己能Hold住
2. 虚拟化特性和硬件支持完整
容器方案 Docker Standalone 业务服务之间也没啥联系,没必要上K8S之类的分布式方案
容器管理 Portainer UI友好,能上docker-compose的Stack,功能够用且方便

网络架构

硬件架构

方案选型

方案 典型案例 优势 劣势
成品NAS 威联通、群晖 etc. 1. 简单,开箱即用
2. 软件服务支持完善,有成熟的客户端
1. 高价低配,PC的价格,手机的性能
2. 没法上虚拟化,只能跑Docker
3. 定制程度高,没有自由度
成品服务器 HPE Microserver Gen 8/9/10+ 1. 企业级整机服务器,稳定性杠杠的 1. 企业级整机服务器,价格也杠杠的
2. 配置自定义程度一般,性能高一点钱包就吐血
服务器硬件自组 永擎/超威 服务器主板 + 自组硬件 1. 服务器级硬件,稳定性值得信赖
2. 自定义程度高,配置灵活
1. 服务器级硬件整一套还是不便宜
2. 电费也不便宜
消费级硬件自组 捡垃圾 1. 极其灵活
2. 成本灵活
1. 稳定性靠3分的打拼和97分的天注定

看了看自己的需求,发现:

  • 就自己用,稳定性要求没那么高,停机个几天也不是个事
  • 关键数据走冷备,其他的丢了问题也不大

就还是消费级硬件自组得了吧

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

graph TD
A[Hard] -->|Text| B(Round)
B --> C{Decision}
C -->|One| D[Result 1]
C -->|Two| E[Result 2]
0%