Místo placeného úložiště u Googlu jsem si postavil vlastní cloud pro sebe a rodinu. Nextcloud běží na stejném domácím serveru s Proxmoxem jako moje weby, je dostupný z internetu i přes CGNAT a zálohuje se na NAS. Celé řešení je bez měsíčních poplatků a od první instalace po ověřenou obnovu ze zálohy zabralo jeden den.
Proč vlastní cloud
Bezplatné úložiště Google má 15 GB, které sdílí Gmail, Disk Google i Fotky Google. Na účtu, přes který odesílám poštu z webů, bylo obsazeno 13 GB: 6 GB fotky, 2 GB Disk a 5 GB pošta. Kdyby se úložiště zaplnilo, přestala by chodit i odchozí pošta z kontaktních formulářů. Místo placeného tarifu jsem chtěl data přesunout k sobě.
Požadavky byly jednoduché:
- přístup z PC, mobilu i prohlížeče, doma i venku,
- účty pro rodinu (do 10 lidí), zatím jednotky GB dat,
- soubory, později kalendář a kontakty,
- zálohy na domácí NAS,
- žádné měsíční poplatky.
Server už doma běžel. Popsal jsem ho v sérii Migrace pěti webů z VPS na vlastní server. Proxmox měl volný celý druhý SSD disk, takže nový hardware nebyl potřeba.
Co jsem postavil

| Část | Řešení |
|---|---|
| Aplikace | Nextcloud 35 (soubory, sdílení, verze souborů, koš, 2FA) |
| Kde běží | samostatný LXC kontejner na Proxmoxu, Debian 13, 2 CPU, 4 GB RAM |
| Data | vlastní disk 100 GB na druhém SSD, oddělený od systému i od webů |
| Software | Apache, PHP-FPM 8.4, MariaDB 11.8, Redis a APCu |
| Přístup zvenku | subdoména přes Cloudflare proxy a IPv6, firewall MikroTik pouští jen Cloudflare |
| Zabezpečení | HTTPS (Let's Encrypt), dvoufázové ověření, hesla pro aplikace, SSH jen klíčem |
| Klienti | Nextcloud pro Windows (virtuální soubory) a Android |
| Zálohy | kontejnery na NAS TrueNAS přes NFS, NAS se zálohuje sám a jeho konfigurace se kopíruje na Proxmox |
Klíčová rozhodnutí
Samostatný kontejner a samostatný datový disk
Cloud jsem nedal do kontejneru s weby. Případný problém nebo aktualizace jedné služby tak neovlivní druhou. Data uživatelů jsou na samostatném disku (mount point), který jde kdykoli zvětšit a zálohuje se spolu s kontejnerem.
Přístup přes Cloudflare, ne přes VPN
Doma mám IPv4 jen za CGNAT, takže port forwarding nejde. Stejně jako u webů jsem cloud zpřístupnil přes IPv6 a Cloudflare proxy. Pro rodinu je to nejjednodušší: obyčejná adresa https a žádná VPN na každém telefonu. Cloudflare má ve free tarifu limit 100 MB na jeden požadavek, ale Nextcloud velké soubory nahrává po částech, takže to nevadí.
Vlastní poštovní server ne
Zvažoval jsem i vlastní poštovní server, ale v mých podmínkách nedává smysl. Cloudflare nepropouští port 25. Na IPv4 jsem za CGNAT a pošta jen přes IPv6 by z části serverů nedorazila. Domácí adresa nemá reverzní záznam a dobrou pověst, takže by odchozí pošta končila ve spamu. Notifikace z Nextcloudu proto posílám přes Gmail SMTP, stejně jako weby. Postup je v článku Domény .cz na Cloudflare: DNSSEC a e-mail.
Bez šifrování na straně serveru
Šifrování souborů v Nextcloudu jsem záměrně nezapnul. Server stojí doma, šifrování by zpomalovalo a komplikovalo zálohy i obnovu. Citlivé údaje (hesla) mám v zašifrované databázi KeePass a Nextcloud ji jen přenáší.
NAS jako záloha, cloud pro aktivní soubory
NAS doma nezapínám nonstop. Aktivní soubory proto budou v Nextcloudu, NAS slouží pro zálohy, archiv a média. Zálohování jsem musel navrhnout tak, aby fungovalo i se strojem, který běží pár hodin měsíčně.
Jak projekt probíhal
Podrobnosti jsem rozepsal do pěti navazujících článků:
- Nextcloud 35 v LXC kontejneru na Proxmoxu: instalace, ladění PHP a databáze, klienti pro Windows a Android.
- Nextcloud za Cloudflare a CGNAT: důvěryhodné proxy, 2FA, hesla pro aplikace a zabezpečení kontejneru.
- Zálohy Proxmoxu na TrueNAS přes NFS: jedno tlačítko pro všechny kontejnery i konfiguraci hostitele a zkouška obnovy.
- Zálohování NASu, který běží jen občas: replikace po startu, scrub a klíče mimo NAS.
- KeePass přes vlastní Nextcloud: databáze hesel na PC i Androidu.
Co se nepovedlo napoprvé
- Prohlížeč ukazoval zdrojový kód PHP místo přihlašovací stránky. Při instalaci se přeskočilo zapnutí konfigurace PHP-FPM v Apache.
- Přihlášení mobilní aplikace přes prohlížeč se na telefonu nedokončilo. Spolehlivě fungovalo až přihlášení QR kódem.
- Replikace na NASu neběžela přes rok. Chyběla úloha pro snapshoty a naplánované úlohy se nespouštěly, protože byl NAS v danou dobu vypnutý.
- Reload SSH skončil chybou, protože v kontejneru byly zapnuté dva způsoby spouštění SSH současně.
Všechny tyto pasti a jejich řešení najdete v jednotlivých dílech.
Výsledek
Cloud je dostupný přes vlastní subdoménu z PC, mobilu i prohlížeče. Přihlášení chrání dvoufázové ověření a ochrana proti hádání hesel vidí skutečnou adresu návštěvníka, ne adresu Cloudflare. Zálohu kontejnerů spouštím jedním tlačítkem a obnovu jsem ověřil na kopii kontejneru. NAS si při každém zapnutí sám udělá snapshot a replikaci. Měsíční náklady jsou nulové a místo v Gmailu se uvolní přesunem Fotek a Disku Google do Nextcloudu.
Shrnutí
- Nextcloud běží v samostatném LXC kontejneru s datovým diskem na druhém SSD.
- Přístup za CGNAT zajišťuje IPv6 a Cloudflare proxy. Firewall pouští jen Cloudflare.
- Účet chrání 2FA a hesla pro aplikace, server SSH jen klíčem a automatické bezpečnostní aktualizace.
- Zálohy fungují i s NASem, který běží jen občas, a obnova je ověřená.
- Provoz je bez měsíčních poplatků.
Na infrastrukturu, na které cloud stojí, navazuje série Migrace pěti webů z VPS na vlastní server a článek Domácí server za CGNAT přes IPv6 a Cloudflare.