přeskočit na obsah
[JJ]
zpět na články
cloudflarenetworkingtunnelsecurity4. 5. 2026 6 min

Cloudflare Tunnel k 17 serverům: setup guide

Step-by-step nasazení Cloudflare Tunnel na celou síť. Žádné public IP, žádný port forwarding, žádný VPN. HTTPS zdarma.

Mám doma 17 serverů, ale doma žádný public port nemám. Žádný router-forward, žádná NAT brána pro každou službu, žádný kus hardwaru, který by mohl umřít. Cloudflare Tunnel mi dal HTTPS na všechno, transparentně, zdarma.

Architektura

text
internet → cloudflare edge → tunnel daemon na ai-dev → reverse proxy → 17 backendů

cloudflared běží na jednom serveru (ai-dev, LXC 120). Tunnel udržuje outbound HTTPS connection na Cloudflare edge. Když uživatel přijde na terminal.ajtak.it, edge ho přes tunnel pošle na ai-dev, který přepošle na backend.

Setup

1. Vytvoř tunnel v Cloudflare dashboardu

Zero Trust → Networks → Tunnels → Create Tunnel. Pojmenuj. Zkopíruj token.

2. Nainstaluj cloudflared

Detailní step-by-step v snippet/cloudflare-tunnel-systemd.

3. Config

yaml
# /etc/cloudflared/config.yml
tunnel: 731d9362-404f-4428-b2de-1087b2921f57
credentials-file: /etc/cloudflared/cert.json

ingress:
  - hostname: terminal.ajtak.it
    service: ssh://localhost:22

  - hostname: vikunja.ajtak.it
    service: http://10.10.10.106:3456

  - hostname: gitea.ajtak.it
    service: http://10.10.10.103:3000

  - hostname: grafana.ajtak.it
    service: http://10.10.10.104:3000

  # catch-all
  - service: http_status:404

4. DNS records

bash
cloudflared tunnel route dns <tunnel-id> terminal.ajtak.it
cloudflared tunnel route dns <tunnel-id> vikunja.ajtak.it
# ...

Vytvoří CNAME na <tunnel-id>.cfargotunnel.com. Žádný A record.

Cloudflare Access

Pro SSH a admin paneli přidávám Cloudflare Access — buď email OTP, nebo Google SSO. Bezpečnostně víc než Tailscale, protože každý request je autorizovaný.

Application policy:

  • Application type: Self-hosted
  • Domain: terminal.ajtak.it
  • Identity provider: One-time PIN (email OTP)
  • Policy: email_domain == "protonmail.com" AND email == "[email protected]"

Výsledek

  • 17 serverů dostupných z internetu přes HTTPS
  • 0 otevřených portů na routeru
  • 0 public IP adres
  • automatický HTTPS, žádné Let's Encrypt rotace
  • 0 EUR/měsíc

Nevýhody:

  • single point of failure na cloudflared daemon (mitiguju healthcheck + systemd restart)
  • závislost na Cloudflare jako CA
  • Cloudflare vidí veškerý traffic (end-to-end TLS by řešil, ale ne pro web traffic)

Nevadí. Pohoda.