self-quote, “building systems is LEGO for adults”
TL;DR
I built a homelab server at home:
type | model |
---|---|
CPU | i5-3450 |
MB | ASUS Z77 with PCI-E bifurcation hacking |
DRAM | 4*8GB DDR3 1600 |
Storage | 2*Optane M10 2*SSD 7*HDD (from 2TB to 10TB, ~35TB in total) |
HBA | LSI 2308 SAS (OCP Card) |
Network | ConnectX®-3: 10 GbE (OCP Card) RTL8125: 2.5 GbE * 2 RTL8111: 1 GbE |
Case | $2 case from Recycle Bin |
Rack | IKEA LACK + 4 homemade casters |
OS | Ubuntu Server 22 LTS |
Most of them are USED products. (CHEAP)
This server hosts a number of services, including:
- Network-attached Storage
- clash: networking proxy
- jellyfin: media streaming
- transmission: download station
- home assistant: Open source home automation that puts local control and privacy first
- pCDN: pay my bill
- etc: VMs, alist, media encoding/transcoding, …
To ensure enough data reliability, less intrusion, and high flexibility. I used a bunch of open-source tools to manage NAS, including:
- OpenZFS: a featureful filesystem (CoW, snapshot, RAID, cache…)
- MergerFS: integrate different file systems to provide a global view
- BorgBackup: backup data with compression and dedup
- Open-CAS: the easiest way to deploy cache for block devices
- hd-idle (Go version): the silver bullet to make idle disks standby
- scrutiny: monitor SMART info
In conclusion, it can provide a global view among multi-disks for different types of files with different fault-tolerance levels (replication, erasure-coding and snapshot).