Exponera hemservern säkert med Cloudflare Tunnel
Att öppna upp access från internet till hemmaservern utan att exponera ip-adressen och öppna portar i routern fungerar. Jag använder Cloudflare tunnel för maximal säkerhet.
Att driva egna tjänster hemifrån har alltid varit en balansgång mellan tillgänglighet och säkerhet. För oss som har ett vanligt privat internetabonnemang tillkommer dessutom utmaningen med en dynamiskt tilldelad IP-adress. Tidigare innebar detta ofta att man behövde krångla med DDNS-tjänster som hela tiden behövde uppdateras för att peka rätt när operatören bytte ens IP.
Med en Cloudflare Tunnel blir detta bekymmer ett minne blott. Eftersom tunneln upprättas inifrån ditt nätverk och ut, spelar det ingen roll om din externa IP-adress ändras; tunneln hittar alltid "hem" till Cloudflares nätverk ändå. Det är en robust och smidig lösning som gör att din server alltid förblir nåbar, oavsett vad din internetleverantör hittar på.
Bakgrund: Vad är en Cloudflare Tunnel?
Enkelt förklarat är en Cloudflare Tunnel en krypterad "pipe" mellan din lokala server och Cloudflares globala nätverk. Istället för att internet anropar din router, så skapar din server en utgående connection till Cloudflare. Det gör att du kan exponera tjänster mot en publik domän utan att någonsin behöva röra inställningarna i din router eller avslöja din hem-IP.
Min miljö
Hjärtat i min setup är en Raspberry Pi 5 (rasp5). Den är konfigurerad som en robust servermiljö med:
- Ubuntu/Debian som operativsystem.
- Nginx som reverse proxy för att styra trafiken rätt.
- PostgreSQL för datalagring.
- Fail2Ban för automatisk blockering av skadliga besökare.
Tjänsterna jag har öppnat
Just nu körs två huvudsakliga tjänster via tunneln:
- Min blogg: En ghost-instans som nås på
blogg.thomasbjork.net. - ChargeMaster: En egenutvecklad .NET-applikation placerad under
thomasbjork.net/ChargeMaster.
Min Roadmap: Så här gjorde vi
Att gå från en stängd server till en publik tjänst krävde ett par strategiska steg:
- Domän och konto: Först behövdes ett gratiskonto hos Cloudflare och en registrerad domän (en .net-domän kostar bara runt en hundralapp per år).
- Installation av
cloudflared: Vi installerade tunnel-klienten som en tjänst (systemd) på min rasp5 så att den alltid startar automatiskt. - Koppling utan portöppning: Vi skapade den krypterade tunneln. Ingen trafik går direkt till min router – allt går via tunneln.
- Nginx-integration: Nginx konfigurerades för att ta emot trafiken från tunneln och skicka den vidare till rätt intern port beroende på om besökaren vill läsa bloggen eller använda ChargeMaster.
- Identitetskontroll (Real-IP): En viktig detalj! Vi aktiverade
real_ip_headerså att Nginx ser besökarens riktiga IP istället för att tro att all trafik kommer från tunneln lokalt. - Säkerhet i molnet: Vi aktiverade Cloudflare Bot Fight Mode. Det stoppar de flesta bottar och skannrar redan på Cloudflares servrar, långt innan de ens når min Raspberry Pi.
- Logghantering: Vi anpassade loggningen så att jag kan övervaka trafiken och se till att allt flyter på som det ska.
För- och nackdelar: Är det värt det?
Efter att ha kört detta ett tag har jag landat i följande analys:
Fördelarna är tunga
- Säkerhet: Det största pluset är att slippa Port Forwarding och dölja min hem-IP, vilket ger en enorm sinnesro.
- SSL/HTTPS: Cloudflare sköter certifikaten mellan besökaren och tunneln, vilket förenklar HTTPS-hanteringen betydligt.
- Dynamisk IP: Som nämnt fungerar det klockrent oavsett om operatören byter ens IP-adress.
- Gratis skydd: Man får tillgång till Cloudflares kraftfulla WAF och DDoS-skydd utan extra kostnad.
Men det finns utmaningar
- Beroende: Man blir beroende av Cloudflare som tredje part; om de har driftstörningar går sidan ner.
- Brandväggsbypass: Traditionell IP-blockering via
iptables/fail2banfungerar inte direkt på nätverksnivå lokalt, eftersom trafiken ser ut att komma inifrån maskinen via tunneln. - Integritet: Cloudflare kan i teorin se trafiken mellan deras servrar och tunneln om man inte har strikt end-to-end-kryptering.
- Latency: Tunneln kan lägga till några millisekunder i svarstid, även om det sällan märks på en vanlig webbsida.
Sammanfattning
Att använda Cloudflare Tunnel till min rasp5 är ett av de bästa besluten jag tagit för min hemmalabb. Det är en modern, säker och framför allt stabil lösning som helt eliminerar problemen med dynamiska IP-adresser och riskfyllda portöppningar.