Domácí severovna
Moje serverová historie
Již před více jak 10 lety jsem přišel s tím, že bych měl rád svůj vlastní fyzický server. Poprvé se mi splnilo asi v 8. třídě, když naše základní škola vyřazovala staré IT vybavení. Zástupce ředitelky jednou o prázdninách zavolal mým rodičům, s tím, že jestli si nechci odnést nějaké staré počítače. Tenkrát jsem si odtáhl asi 10 počítačů od Dellu (různé Pentium 4HT a Pentium D) a hlavně také velký server od IBM. Konkrétně to byla 2U obluda IBM xSeries 346.
Nějaký ten čas ještě trvalo, než jsem do serveru sehnal disky, server neměl SAS/SATA, ale 80. pinové SCSI. Když jsem disk sehnal, nainstaloval jsem Ubuntu Server (nejspíše) 14.04. Pokud se nepletu, tak server měl osazený jen jeden Xeon (odvozený z P4) a 2 GB RAM. Na moje pokusy s Apache a PHP to byla zcela zbytečná mašina, která navíc neskutečně hučela (myslím, že nefungovalo nějaké čidlo a větráky stále jeli na plno, server zněl, jak malé letadlo) a žrala elektřinu. Server nakonec nebyl doma, ale dostal se k mámě do práce, kde dělal interní webserver a já výměnou za to mohl využívat jejich veřejnou IP a provozovat server v Internetu. Mělo to jen drobný háček, nešel na můj server promapovat port 80, protože ho to WISP používal ke správě svého Ubiquity na střeše. Tehdy mi to nevadilo, protože jsem stejně ještě neměl vlastní doménu.
Po roce se však všechno změnilo, podařilo se mi rodiče přesvědčit k placení veřejné IP a já mohl mít svůj server rovnou doma. Tehdy už jsem IBMko odložil a nahradil ho standardním PCčkem, které každý rok procházelo postupnými upgrady, ze zbytků, co jsem kde dostal (C2D->C2Q->i5 4. gen-> Pentium G3220). Po nějakém čase, když už jsem byl na střední, jsem k serveru dokoupil doménu kocourovo.eu.
Poslední verze serveru nezměněna běžela od roku 2019 až do letošního května, kdy začal vykazovat problémy disk a já se celý server rozhodl zmigrovat do VPS na svém Proxmoxu.
Někdy právě kolem roku 2020 jsem ještě totiž začal experimentovat s Proxmoxem (místo vmware Exsi a HyperV, se kterými jsem přicházel do styku v práci). Postupně jsem se dostal k docela výkonnému serveru. Bohužel jsem si ho kvůli své hlučnosti nemohl dovolit mít v malém bytě, a tedy našel svoje místo v domku u rodičů.
Tenkrát jsem bydlel už druhým rokem v Praze, kde jsem měl hned od začátku rychlé připojení přes optiku od místního ISP. Bylo mi líto, že onen pořádný server leží u rodičů, navíc připojen jen přes 5 Ghz WIFI připojení. Začal jsem se pachtit po úsporném domácím mini serveru, který nebude hlučet. Tahle cesta již trvá čtvrtým rokem a každým den se vyvíjí.
Současná serverovna
Hardware
Moji současnou serverovnu momentálně tvoří tři počítače. Jeden virtualizační Tower, jeden mini PC pro zálohy a jedno Raspberry PI pro monitoring. O chod sítě se stará Router od Mikrotiku. Počítače nemám kvůli místu v žádném pěkném racku, ale jen položené a zastrčené u stropu na velké skříní. Vzhledem k velmi dobré stabilitě pražské el. sítě jsem zatím ani nepořídil UPS (nepostihl mě, ani velký červencoví blackout). Celkově se svoji celou serverovnu snažím držet pod 100W odběru elektřiny v idle.
Virtualizační Tower
Hlavní server tvoří asi 4 roky starý kancelářský server Dell PowerEdge T40 v následující konfiguraci. Server je v idlu naprosto tichý a vůbec o něm nevím, ozve se jen, když provádí nějaký video transcoding.
Procesor | Intel Xeon E-2224G |
---|---|
RAM | 32 GB ECC DD4 (musím už navýšit) |
Storage | 1 TB NVME SSD, 2x 6TB SATA HDD |
Ostatní | PCIe síťová karta od Intelu, Sonoff Zigbee 3.0 USB Dongle (pro HomeAssistenta) |
Systém | Promox |
Backup počítač
Pro zálohy používám malý poskládaný počítač se základní deskou, která obsahuje integrovaný procesor a je napájena z PicoPSU. Počítač je kompletně pasivně chlazený.
Procesor | Intel Celeron N3050 |
---|---|
RAM | 8 GB DDR3L |
Storage | 256 GB SATA 2.5 SSD, 2 TB SATA HDD |
Systém | Proxmox Backup Server |
Další hardware
Jak jsem popsal dříve, “serverovnu” ještě tvoří router, konkrétně Mikrotik RB1100AHx4 a jedno Raspberry PI 3 s 8 GB SD kartou. Připojení do internetu je od místního optického poskytovatele 1Gbit/1Gbit.
Software
Kdysi jsem svůj domácí server využíval jen jako webový a SSH server. Nyní však svoji serverovnu považuji za svůj osobní „cloud“, který poskytuje vše od správy chytré domácnosti, DNS, osobní náhradu Netflixu, NAS až po náhradu Dropboxu. Postupně rozeberu jednotlivé stavební kameny svého „cloudu".
Hypervizor + VPS + kontejnery a jejich OS
Jak jsem zmínil, hlavním systémem na serveru je Proxmox. Momentálně na něm běží 7 virtuálních počítačů a 6 kontejnerů. Jak VPS, tak kontejnery jsou založené na Debianu. Některé VPS jsou určeny specificky pro jednu službu a některé zase pomocí Dockeru spravují služeb několik. Vybrané VPS mají do sebe i přímo připojený fyzický hardware - HA má Sonoff dongle, Jellyfin má předanou grafickou kartu pro encoding videa a NAS má celý SATA řadič a síťovou kartu v PCIe slotu.
NAS
Dříve jsem provozoval pro svojí nas celý vyhrazený server s OpenMediaValut, nyní však díky ECC pamětím jsem se rozhodl, svojí NAS virtualizovat. Přešel jsem z OVM na TrueNAS a tím, i z ext4 na ZFS. NAS má do sebe předaný celý řadič SATA disků a nad dvěma 6 TB HDD je vytvořený ZFS Mirror. Nad tímto poolem jsou vytvořeny jednotlivé struktury, některé slouží jen přes SMB, některé jsou pomocí NFS namountované přímo do virtuálů.
Síť + DNS + Proxy + VPN
Většina mých služeb je jen interních. Není důvod je dávat na obdiv celému světu a nechat si testovat sílu svých přihlašovacích hesel. Abych doma na své služby nemusel přistupovat přes IP adresy + různé porty využívám PiHole jako DNS (a také jako primitivní blokovač reklam). K celé síti mám jednu skutečnou doménu a následně si na PiHole vytvářím interní subdomény. Skutečná doména mi umožňuje si generovat přes Letʼs Encrypt hvězdičkový certifikát, který mohu používat i s interními IP adresami.
Všechny přístupy na služby jdou přes reverzní proxy (Nginx Proxy Manager). Síť je také segmentována pomocí VLAN, mezi kterými jsou na Mikrotiku nastavená příslušná firewallová pravidla.
K přístupu do interní sítě a ke službám využívám WireGuard, ten nahradil mnou dlouho používanou OpenVPN. Hlavně díky své rychlosti a jednoduchosti.
Monitoring + Notifikace
Nad svými servery se snažím držet neustálý dohled. Nemám propracovaný složitý monitoring, jen takový, který mi umožňuje hlídat dostupnost služeb a základní přehled nad využitím hardwarových zdrojů. Monitoring je oddělený a běží na Raspberry Pi, aby mohl informovat v případě úplné havárie hlavního serveru.
Základ monitoringu tvoří Beszel, poměrně nový nástroj. Jedná se o formu klientské binárky a centrálního serveru s webovým rozhraním. Baszel umožňuje hlídat dostupnost, disky, paměť, využití procesoru a teplotu. Při překročení nastavených tresholdů zasílá notifikace.
Druhý nástroj, který využívám, je Uptime Kuma. Ta umožňuje hlídat služby pomocí pingů/requestů. Má jednoduché a efektivní webové rozhraní. Využívám ji především k hlídání stavu, jestli je prvek/počítač offline/online a následně, zda web. rozhraní je aktivní. Také mi hlídá, zda se neblíží propadnutí mého hvězdičkového certifikátu.
Notifikace mám řešené pomocí nástroje ntfy.sh, který také hostuji u sebe. Ntfy umožňuje notifikace posílat pomocí HTTP requestů, takže integrace do jakéhokoliv nástroje je velmi jednoduchá. Kromě notifikací z monitoringů ntfy využívám i ve svých skriptech, třeba na hlídání Bazoše.
Aplikace
Konečně se dostávám k využití své domácí serverovny. Překvapivě toho přes onen složitý setup není mnoho. Primárně bych rozdělil svoje využití na tři části: hosting, multimédia a náhrada cloudových řešeních.
Hosting
Mít stabilní server s rychlím internetem mi, dovoluje se vyhnout tomu platit někde za nějakou VPS pro své různé weby. Celkově mi jich běží na serveru něco přes 8, některé jsou řešeny jen jednoduchým dockerovýcm kontejnerem, některé zase přes LXC kontejnery přímo nad Proxmoxem. Jde vždy hlavně o to, jestli se jedná jen o statický HTML web nebo případně i nějakou web. aplikaci třeba v PHP (ty právě často dostávají svůj LXC kontejner).
Multimédia
Tady jednoznačně kraluje Jellyfin, byla to jedna z prvních interních věcí, které jsem začal selfhostovat. Jedná se vlastně o takovou osobní verzi Netflixu (či jiné streamovací platformy). Prostě do jedné složky nasypete všechny svoje filmy a seriály a Jellyfin se vám stará o přístup k nim. Má vlastní web. rozhraní, které vám video servíruje s vlastním přehrávacím rozhraním, spravuje knihovnu (dohledává popis, thumbnail, herce, zařazení žánru, navrhuje podobné filmy z vaší knihovny, stahuje titulky) a hlavně Jellyfin umí na serveru i vaše videa pomocí GPU/CPU transkódovat do různých formátů (tedy i u obří 4K mkv dokáže výrazně snížit nutný datový tok pro přehrávání). Tohle transkódování člověk spíše využije na cestách – i přes nízkou rychlost připojení (stačí pár Mbit/s) si tak může pohodlně pustit svoje seriály kdekoliv. Budovat svoji vlastní knihovnu má tu výhodu, že Vám nikdo žádný seriál a film nesebere z důvodu vypření práv. Ještě dodám, že Jellyfin má skvělou aplikaci pro chytré televize či pro mobilní zařízení.
Druhý skvělý nástroj, je jednoznačně Immich. Jedná se o náhradu cloudovou aplikace Google Photos. Immich se snaží být přímou náhradou a i GUI je celé vyvedené právě jako G. Photos. Immich má přehledné web. rozhraní, které umožňuje spravovat fotky, vyhledávat v nich (má vlastní rozpoznávání) a i automaticky třídit (pozná třeba osoby, místa a podobně). Tedy pokud uživatelům iCloudu či G. Photos závidíte je Immich řešením přímo pro Vás. Má opět mobilní aplikaci, která se stará o synchronizaci fotek z telefonu na server.
Dále ještě provozuji třeba Torrentový klient s web. rozhraním Transmission (připojený k NAS) a vlastní audioknihovnu - AudioBookshelf.
Cloud
Poslední zastávkou na mém serveru je náhrada Dropboxu. Dlouhá léta jsem používal Nextcloud, ale co se objevil oCIS - ownCloud Infinite Scale tak už po Nextcloudu ani neštěknu. Přece jen, Nextcloud se snažil dělat více věcí dohromady a jeho upgrady byly někdy peklo. Navíc já vždy nakonec využíval jen aplikaci pro desktopový sync a do web. rozhraní jsem lezl jen, když jsem potřeboval udělat public link pro nějakou složku. oCIS právě všechny šílenosti zahazuje a je to jen malá binárka, která řeší všechno, navíc pekelně rychle.
oCIS ještě doplňuji aplikací Baïkal, která mi poskytuje CalDAV pro moje kanendáře.
Závěrem
Na konec už mohu jen říct, že selfhostování a provozování domácího serveru je super, ale člověk musí něco obětovat. Nejsou to nutně finance (takový domácí setup není úplně nejlevnější, však začít se dá i se starým notebookem), ale je to hlavně čas! Odměnou je ale sladká v podobě jisté digitální svobody a nezávislosti a také pokud se pohybujete pracovně v IT světě, může pro Vás být homelabováním způsobem, jak se přiučit spoustě novým věcem.