self-quote, “building systems is LEGO for adults”
TL;DR
I built a homelab server at home:
type | model |
---|---|
CPU | i5-3450 with PCI-E bifurcation hacking |
MB | ASUS Z77 |
DRAM | 4*8GB DDR3 1600 |
Storage | LSI 2308 SAS (OCP card) for: 2*Intel Optane M10 2*SSD 7*HDD (2~10TB, ~35TB in total) |
Network | ConnectX®-3: 10 GbE (OCP) RTL8125: 2.5 GbE RTL8111: 1 GbE |
Case | $2 case from trash cans |
Rack | IKEA LACK + 4 homemade casters |
OS | Ubuntu Server LTS |
Most of them are EXTREMELY CHEAP products retired from DCs.
This server hosts a number of services, including:
- Network-Attached Storage through seafile, webdav, samba, nfs, iscsi, …
- jellyfin: media streaming with ffmpeg
- transmission: download station and PT (Reseed-Puppy, *IYUU)
- clash: network proxy
home assistant: home automation with local control and privacy firstpCDN: pay my bill
To ensure data reliability, less intrusion, and high flexibility. A bunch of open-sourced tools are used to manage NAS:
- ZFS: a feature-rich filesystem (CoW, *snapshot, RAID, cache…)
- MergerFS: combine different file systems to provide a global view
- BorgBackup: backup with compression and dedup
- Open-CAS: the easiest way to deploy cache for block devices
- *hd-idle (golang): the silver bullet to standby idle disks
- scrutiny: monitor disk status
In conclusion, it can provide a global view across multiple disks and different protection for different types of files (backup with dedup, erasure coding and snapshots).
*Items marked with stars contain codes that I contributed.