Din homelab har en ytterdörr. Om du är som de flesta självhostare är den ytterdörren en portvidarebefordran på din router — och den är vidöppen.
Jag tillbringade veckor med att bygga om min. Resultatet: ett produktionsklart ingresslager som körs helt på en ZimaCube 2. Inga öppna portar på min router. Inga publikt nåbara ursprungsservrar. End-to-end TLS på varje anslutning. Allt sitter tyst bredvid min TV.
Här är exakt hur jag byggde det, vad som gick sönder på vägen och varför ZimaCube 2 visade sig vara den perfekta plattformen för jobbet.
Problemet med traditionell homelab-ingress
Många homelabs ser fortfarande ut så här:
- Port 443 vidarebefordrad på routern → pekar på en omvänd proxy
- Port 80 vidarebefordrad → omdirigerar till 443
- Tjänster är direktåtkomliga om du känner till IP-adressen
- Ursprungsinfrastrukturen är bara en portskanning från att upptäckas
Detta skapar verkliga problem. Publikt exponerade ingress-portar. Direktåtkomliga ursprungsservrar. Administrationsgränssnitt som svarar innan autentisering. Även med HTTPS förblir infrastrukturen synlig — och synlighet inbjuder till rekognosering.
Jag ville ha en helt annan modell. Något närmare hur modern molninfrastruktur hanterar ingress: endast utgående förtroende, noll inkommande exponering och krypterade tunnlar som döljer ursprunget.

Varför ZimaCube 2
Den här typen av arkitektur kräver en specifik uppsättning hårdvaruegenskaper. Inte rå kraft — utan tillförlitlighet, flexibilitet och tystnad.
ZimaCube 2 uppfyllde alla krav:
|
Alltid på: Tyst drift dygnet runt. Ingresslagret måste köras kontinuerligt — ZC2:s termiska design gör att det kan göra det utan att dominera rummet. |
Dubbel 2,5GbE: En gränssnitt för kantnätverket, en för internt. Trafiksegmentering börjar på den fysiska nivån, inte bara i Docker. | Docker Native: NVMe-lagring för snabb container-I/O. Flera bridge-nätverk överbelastar inte systemet. Plattformen är byggd för detta. |
Vid det här laget har ZimaCube 2 effektivt blivit fyra saker i en maskin: en Docker-värd, en omvänd proxyplattform, ett ingresslager och en centraliserad infrastrukturapparat. För modern självhosting är den kombinationen extremt praktisk.
Den nya arkitekturen
Istället för att öppna portar på min router fungerar den nya designen så här:
- Cloudflare Tunnel skapar utgående krypterade anslutningar till Cloudflares kant
- Nginx Proxy Manager hanterar routing, SSL-terminering och ACL:er
- Docker bridge-nätverk segmenterar kanttrafik från interna arbetsbelastningar
- Inga inkommande NAT-regler — routern har ingen aning om att något serveras
Det kändes genast närmare modern molningångsarkitektur än traditionell portvidarebefordrad självhostning.

Docker-nätverkssegmentering: Edge ≠ Intern
En av de viktigaste förändringarna var att separera trafiken med Docker bridge-nätverk.
docker network create \
--subnet 172.x.x.x/24 \
edge
Edge-nätverket bär exakt två containrar: Cloudflare Tunnel och Nginx Proxy Manager. Det är allt. Applikationer finns på separata interna Docker-nätverk — helt isolerade från ingresslagret.
ZimaCube 2 hanterar denna segmentering smidigt. Flera bridge-nätverk skapar ingen prestandabelastning på plattformen, och NVMe-lagringen säkerställer att containerstart och nätverks-I/O förblir snabba även när nätverkstopologin blir mer komplex.
TLS-problemet som nästan knäckte mig
Det här blev den mest intressanta ingenjörslärdomen i hela projektet.
Installationen verkade enkel till en början. HTTP mellan Cloudflare Tunnel och Nginx Proxy Manager fungerade omedelbart:
http://reverse-proxy → ✅ Fungerar
Så jag aktiverade HTTPS.
https://reverse-proxy → ❌ Misslyckas
Certifikatet var giltigt. Utgångsdatumet var okej. Tillitskedjan kontrollerades. Allt såg korrekt ut — och ändå vägrade HTTPS att ansluta.
Det verkliga problemet var TLS-värdnamnsvalideringen.
Certifikatet utfärdades för mina publika domäner (example.com, app.example.com). Men Cloudflare Tunnel anslöt internt till reverse-proxy — ett Docker-värdnamn som inte matchade något på certifikatet. Värdnamnsavvikelsen orsakade att TLS-valideringen tyst misslyckades.
Lösningen: konfigurera Cloudflare Tunnel med Origin Server Name: example.com samtidigt som den fortfarande dirigerar internt till https://reverse-proxy:443. Det bevarade krypterad transport, korrekt värdnamnsvalidering och full TLS-verifiering — utan att inaktivera några säkerhetskontroller.
Det här är den typ av lärdom man bara får genom att bygga.

ACL:er och lärdomen om infrastrukturens trafikvägar
En operativ lärdom jag snabbt insåg: omvända proxys ser ofta Docker bridge-IP:er, tunnel-IP:er och interna proxy-IP:er istället för den ursprungliga klient-IP:n.
Jag lärde mig detta på det hårda sättet när jag av misstag låste ute mig själv från Nginx Proxy Manager.
Jag konfigurerade en ACL för att endast tillåta mitt LAN-subnät (192.168.x.x/24). Logiken verkade rimlig — endast enheter i mitt hemnätverk skulle få åtkomst till adminpanelen.
NPM såg faktiskt trafik från Docker bridge-nätverket. Inte från mitt LAN. Åtkomstkontrollen blockerade allt, inklusive mig.
Att lägga till Docker-subnätet i tillåtlistan löste det omedelbart. Men det var en mycket verklig påminnelse om att infrastrukturens trafikvägar ofta skiljer sig från vad vi antar på papper.
Varför denna arkitektur är viktig på ZimaCube 2
Det finns en anledning till att denna stack fungerar så bra just på ZC2:
- Dubbel 2.5GbE betyder att ingresslagret har dedikerad bandbredd — din interna nätverkstrafik konkurrerar inte med internetvända tjänster
- NVMe-lagring säkerställer snabb container-nätverkning — bridge-nätverkets genomströmning begränsas inte av långsam disk-I/O
- Tyst alltid-på-drift betyder att ingresslagret körs dygnet runt i ett bostadsutrymme — inte i ett källarrack
- Docker-native plattform med tillräckligt med kapacitet för att köra tunneln, omvänd proxy, ACL-motor och alla dina tjänster samtidigt
- Utbyggbarhet betyder att du kan lägga till ett dedikerat nätverkskort eller accelerator senare om dina nätverksbehov växer
ZimaCube 2 är inte bara värd för dessa tjänster. Det är den rätta plattformen för dem.
Den slutgiltiga stacken
Vad som körs på ZimaCube 2 nu:
- Cloudflare Tunnel — utgående krypterade anslutningar, inga öppna portar
- Nginx Proxy Manager — omvänd proxy, SSL, ACL:er
- Docker bridge-nätverk — segmenterad kant- vs. intern trafik
- End-to-end TLS — krypterat från klient till ursprung, ingen klartext någonstans
- Gömd ursprung — inget svarar på en publik IP
Det är fortfarande ett homelab. Men driftsmodellen liknar nu modern ingress-engineering mycket mer än traditionell port-forwardad självhostning.
Den största insikten från detta projekt: modern självhosting kräver i allt högre grad samma ingress-, nätverks- och förtroendegränstänk som finns i produktionsinfrastruktur. Och hårdvaran måste hänga med — tyst, pålitlig, nätverksansluten och alltid på.
ZimaCube 2 levererar precis det.
Bygg din egen zero-trust homelab med ZimaCube 2 →
Vanliga frågor
Vad är en Cloudflare Tunnel och varför skulle jag använda den på min ZimaCube 2?
En Cloudflare Tunnel skapar en krypterad anslutning som endast är utgående från din ZimaCube 2 till Cloudflares edge-nätverk. Istället för att öppna portar på din router (vilket exponerar din infrastruktur mot internet) går all trafik genom denna krypterade tunnel. Din origin-server — ZimaCube 2 — förblir helt dold från allmänheten.
Behöver jag öppna några portar på min router för denna setup?
Nej. Det är poängen. Cloudflare Tunnel gör endast utgående anslutningar. Din router behöver inte någon portvidarebefordringsregel. Detta eliminerar den vanligaste attackvektorn i homelab-nätverk.
Kan ZimaCube 2 hantera att köra en reverse proxy och alla mina tjänster samtidigt?
Ja. Michael ZC2 kör Cloudflare Tunnel, Nginx Proxy Manager och över 10 Docker-containrar samtidigt — allt medan den är tyst och sval. De dubbla 2,5GbE-portarna och NVMe-lagringen säkerställer att nätverk och container-I/O inte blir flaskhalsar.
Varför är Docker-nätverkssegmentering viktig?
Om alla containrar delar samma nätverk ger en komprometterad tjänst en angripare tillgång till allt annat. Genom att placera endast Cloudflare Tunnel och Nginx Proxy Manager på ett "edge"-nätverk (och hålla applikationer på separata interna nätverk) skapar du en kontrollerad gräns mellan publik trafik och dina privata tjänster.
Vad var problemet med TLS-värdnamnsmismatchen?
När Cloudflare Tunnel anslöt till Nginx Proxy Manager internt med ett Docker-värdnamn som reverse-proxy, stämde inte TLS-certifikatet — som utfärdats för en offentlig domän som example.com — överens. Lösningen var att konfigurera Cloudflare Tunnel att använda rätt Origin Server Name samtidigt som trafiken fortfarande dirigerades till det interna Docker-värdnamnet. Detta bevarade full kryptering utan att inaktivera valideringen.
Hur står sig ZimaCube 2:s nätverkshårdvara jämfört med en standard-NAS för detta användningsområde?
De flesta konsument-NAS-enheter levereras med en enda gigabit Ethernet-port. ZimaCube 2 har dubbla 2,5GbE — vilket innebär att du kan dedikera en gränssnitt till edge-trafik (Cloudflare + reverse proxy) och den andra till interna tjänster. Denna separation på fysisk nivå är något du inte kan uppnå med hårdvara som har en enda nätverkskort.
Zima Kampanjnav
Mer att läsa

ZimaCube 2 Pro Unboxing — Den första NAS-enheten som känns som ett designobjekt
Upptäck ZimaCube 2 Pro: en premium, kompakt NAS som omdefinierar homelab-hårdvara. Utrustad med en Intel i5, 10GbE, Thunderbolt 4 och ett elegant chassi i...

Varför jag bytte ut rackservrar mot en ZimaCube 2 — En berättelse om homelab-utveckling
ZimaCube 2 ersätter bullriga rackservrar och begränsade mini-PC-lösningar med en tyst allt-i-ett homelab för Docker, ZFS-lagring, NVMe, säkerhetskopiering, självhosting och infrastrukturuppgifter dygnet runt.

Köra Docker, CI/CD och 10+ självhostade tjänster på ZimaCube 2
Det här community-spotlightet visar ZimaCube 2-pionjären Michael Luckenbills fullständiga självhostade infrastrukturtest. Med över 10 Docker-containrar, lokal GitHub Actions CI/CD, dubbla ZFS HDD/NVMe-lagringspooler, dubbla 2,5GbE-nätverk...

