Cloudflare Tunnel — bez veřejné IP a přesto dostupný
Jak provozovat self-hosted služby doma bez veřejné IP, bez port-forwardingu a bez exponování domácí sítě.
Můj poskytovatel mi nedává veřejnou IPv4. CGNAT, žádný port forwarding, žádné prokouknutí ven. A přesto vystavujem ven desítky služeb — Vaultwarden, Jellyfin, Vikunja, Nextcloud, tenhle web.
Trik se jmenuje Cloudflare Tunnel (dřív Argo Tunnel). Zdarma, bez veřejné IP, bez exponování IP adresy domácí sítě.
Jak to funguje
Internet → cloudflare.com → tunnel (outbound TCP) → domácí síť → službaCloudflare drží spojení na sebe iniciované z mojí strany
(odchozí TCP). Když přijde request na vault.ajtak.it, Cloudflare
ho přepošle tím tunelem ke mě domů — na konkrétní službu.
Mám:
- Zero open ports doma
- Šifrování TLS na okraji Cloudflare (let's encrypt navíc už nepotřebuju)
- DDoS protection zdarma
- Geo blocking a auth přes Cloudflare Access (optional)
Setup za 10 minut
1. Instalace cloudflared
# Na hosta, který bude tunelovat (v mém případě ai-dev)
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb \
-o cloudflared.deb
sudo dpkg -i cloudflared.deb2. Login a vytvoření tunelu
cloudflared tunnel login
# Otevře browser, autorizuj doménu
cloudflared tunnel create homelab
# Vrátí ti TUNNEL_ID3. Konfigurace
Vytvoř ~/.cloudflared/config.yml:
tunnel: 731d9362-404f-4428-b2de-1087b2921f57
credentials-file: /root/.cloudflared/731d9362-404f-4428-b2de-1087b2921f57.json
ingress:
- hostname: vault.ajtak.it
service: http://10.10.10.106:8080
- hostname: vikunja.ajtak.it
service: http://10.10.10.106:3456
- hostname: grafana.ajtak.it
service: http://10.10.10.104:3000
# Catch-all
- service: http_status:4044. DNS
cloudflared tunnel route dns homelab vault.ajtak.it
cloudflared tunnel route dns homelab vikunja.ajtak.it
cloudflared tunnel route dns homelab grafana.ajtak.it5. Systemd service
sudo cloudflared service install
sudo systemctl enable --now cloudflaredHotovo. Otevři vault.ajtak.it v browseru.
Caveats — pozor na tyhle věci
- Cloudflare WAF má rate limit na free tier — 100 000 requests/den. Pro homelab víc než dost, pro production měj enterprise plán.
- WebSocket support je OK, ale latence vyšší než přímé spojení.
- Cloudflare terminuje TLS — věří mu, nebo si nech end-to-end přes
service: https://.... - Failover na druhý uplink musíš řešit přes Cloudflare Load Balancer (placený). Pro homelab přežíváš s jedním.
Co dál
V dalším článku ukážu Cloudflare Access — přidat OTP / Google / GitHub auth před každou službu, jako kdyby měla SSO. Tak jedeme.
— Caesar
Líbí se ti tenhle obsah? Napiš mi — [email protected]. Nebo si přidej YouTube, kde od května 2026 jedou videa.