Už delší dobu jsem chtěl snížit závislost na cloudových službách (Google Photos, Google Disk a další) a přesunout svá data zpět pod vlastní střechu. Loni jsem na starém mini PC (GIGABYTE GB-BLCE-4105, Intel Celeron J4105) začal experimentovat se selfhostingem a současně objevil skvělé open-source aplikace, které dokázaly splnit můj původní cíl.

Mini PC bylo skvělé na experimenty, dokonce jsem si do něj dokoupil 2TB M.2 NVMe disk, ale pro opravdové nasazení vlastních služeb pro celou rodinu to chtělo něco lepšího, a tak jsem se letos pustil do stavby vlastního NAS serveru.

Fotografie otevřeného NAS serveru během instalace vnitřních komponent.
Fotografie otevřeného NAS serveru během instalace vnitřních komponent.

Výběr hardware pro NAS

Mohl jsem si koupit už hotový NAS server, ale to by nebyla zábava a navíc by to vyšlo draze. Já chtěl jít vlastní cestou a alespoň zčásti využít/recyklovat starší HW. Začal jsem tedy na bazarech hledat vhodný základ (Mini ITX, rozumné CPU, M.2 slot a alespoň čtyři SATA konektory).

Fastfetch výpis na mém NAS serveru s přehledem základních parametrů.
Fastfetch výpis na mém NAS serveru s přehledem základních parametrů.

Po nějaké době jsem na Aukru objevil set Mini ITX základní desky s Intel i3-7100 CPU, 8GB DDR4 a 120GB SSD za 1 300 Kč. K tomu jsem dokoupil novou skříň Fractal Design Node 304 a zdroj GIGABYTE P550SS. Z vlastních zásob jsem použil 256GB SATA SSD pro systém a dříve zakoupené 2TB M.2 NVMe. To mi ovšem nestačilo, chtěl jsem mít také RAID 1 diskové pole s větší kapacitou. Bohužel, nové HDD jsou v poslední době velmi drahé, a tak jsem našel 2 ks 8TB bazarových HDD v dobrém stavu za 3 700 Kč za kus. Celá sestava NAS serveru vypadá takto:

  • Základní deska: MSI H110I PRO
  • CPU: Intel i3-7100
  • RAM: 2x4GB DDR4
  • Skříň: Fractal Design Node 304 Black
  • Zdroj: GIGABYTE P550SS
  • Systémový disk: Samsung 850 EVO 256GB SATA SSD
  • Rychlý disk: Samsung 990 EVO Plus 2TB NVMe
  • Diskové pole: 2x8TB 3.5" SATA HDD Hitachi Ultrastar He8

Když nebudu počítat již dříve koupené SSD disky, tak mě celý NAS server stál 11 748 Kč. Spotřeba celé sestavy je v průměru 22,3 W, což je méně, než jsem čekal. Pro srovnání, spotřeba zmíněného mini PC byla v průměru 7 W. Mini PC je obecně super volba na vlastní server, pokud nepotřebujete víc HDD.

Spotřeba NAS serveru za 7 dnů. Měřeno pomocí chytré zásuvky Shelly Plug S.
Spotřeba NAS serveru za 7 dnů. Měřeno pomocí chytré zásuvky Shelly Plug S.

Linux a selfhosted aplikace

V případě SW jsem nepoužil OS vytvořené na míru selfhostingu (YunoHost) nebo NAS aplikacím (TrueNAS), ale použil jsem obyčejný AlmaLinux 10, na kterém jsem si připravil prostředí pro Docker Compose aplikace. A které aplikace na mém NAS serveru běží?

  • Immich - Perfektní náhrada za Google Photos, která vypadá velice podobně, ale funguje ještě líp.
  • OpenCloud - Náhrada za Google Disk/Dropbox, na rozdíl od NextCloudu je napsaná v Go, takže běží velice rychle. Lze provozovat také s Collabora Office, ale to jsem zatím nezkoušel.
  • Navidrome - Server na streaming lokální hudební sbírky, podporuje řadu klientů skrze OpenSubsonic API.
  • Jellyfin - Server na streaming lokální video sbírky, opět je k dispozici řada klientů pro různé typy zařízení i pro většinu běžných TV.

RAID pole a zálohování

Oba 8TB HDD jsou zapojené do btrfs RAID 1 (mirror) a slouží jako hlavní diskové pole. Btrfs jsem zvolil z důvodu podpory moderních funkcí (copy-on-write, snapshoty, kontrolní součty) a také proto, že je výchozí součástí zvoleného OS.

Data hlavních aplikací Immich a OpenCloud (to je to nejcennější, co potřebuji bezpečně uchovat) jsou ukládána na 2TB NVMe disk, což zajišťuje vysokou rychlost. Až jednou nebude pro Immich + OpenCloud stačit 2TB NVMe disk, tak vše půjde do RAID pole, které možná rozšířím o SSD cache.

Výpis stavu btrfs RAID pole, které tvoří dva 8TB SATA HDD Hitachi Ultrastar He8.
Výpis stavu btrfs RAID pole, které tvoří dva 8TB SATA HDD Hitachi Ultrastar He8.

Pomocí BorgBackup jsou tato data zálohována jednou denně na RAID pole. Odtud si šifrované zálohy pomocí rsync stahují dva starší PC (stahování se aktivuje po každém zapnutí těchto PC), z toho jeden je v úplně jiné lokalitě. Kromě toho občas udělám zálohu na externí disk. To snad zajišťuje dostatečné zálohování nejdůležitějších dat. U zbylých velkých dat, které lze v nouzi obětovat, spoléhám pouze na schopnosti RAID 1 pole.

Vzdálený přístup a VPS server

Pro aplikace Immich a OpenCloud byl pro mě klíčový vzdálený přístup z internetu. Veřejná IP za 250 Kč měsíčně opravdu není ta správná cesta, takže jsem hledal jiné možnosti. Vyzkoušel jsem VPN Tailscale, která fungovala velmi dobře a pro omezený počet zařízení je dokonce zdarma. Ale já nechtěl zůstat závislý na cizí službě, která zítra už nemusí být zdarma, a navíc nebylo ideální být stále připojený k VPN. Nikdo z rodiny opravdu nebude chtít používat Immich, pokud bude muset neustále zapínat VPN.

Nakonec jsem se rozhodl pořídit vlastní VPS server s veřejnou IP a na něm rozjet vlastní WireGuard VPN server a velmi snadno konfigurovatelný proxy server Caddy. Tohle řešení umožňuje mít mé vybrané aplikace přístupné odkudkoliv z internetu skrze VPS server, který zajišťuje přesměrování komunikace na můj server doma skrze šifrovaný WireGuard tunel.

Skvělé je, že na takové použití stačí i základní VPS server s 1 CPU vláknem a 1GB RAM. Konkrétně jsem zvolil VPS pico G11s od netcup za 1,87 € měsíčně (výrazně levnější než veřejná IP k domácí přípojce). Na VPS serveru (také AlmaLinux 10) tedy běží WireGuard server, Caddy proxy server, fail2ban a nakonec i tento můj statický web, takže ušetřím i za webhosting.

Fotografie zadní části NAS serveru s velkým ventilátorem a konektory základní desky.
Fotografie zadní části NAS serveru s velkým ventilátorem a konektory základní desky.

Závěr

Na svém NAS serveru můžete neustále něco zkoušet nebo vylepšovat. Myslím, že po HW stránce jsem na tom dobře (cable management nepočítám). Více se chci zaměřit na SW. Chtěl bych ještě rozjet Collabora Office a časem třeba i další aplikace. Také bych chtěl mít více automatizovanou instalaci a případnou obnovu celého serveru (Ansible?), ideálně dle konfigurace někde v Gitu.

NAS server běží už cca měsíc a funguje na jedničku. Pokud vás baví počítače, určitě si zkuste rozjet vlastní server a na něm nějakou aplikaci, je to zábava a za těch pár nočních hodin to stojí. Na Mastodonu je #selfhosting oblíbené téma (například zde, zde, zde a třeba zde). Pokud máte své zkušenosti, nebo o tom přemýšlíte, určitě se zapojte do diskuze.


Líbil se ti tento text a chceš mě podpořit? Kup mi Kofolu! Díky.