Esporre Servizi Docker da Raspberry Pi con Cloudflare Tunnels e Zero Trust

Configurare Cloudflare Tunnels su Raspberry Pi è il modo migliore per esporre i servizi del tuo home server in sicurezza. Gestire un home server con molteplici servizi è fantastico—finché non vuoi accedervi da remoto. Senza un indirizzo IP statico, il tradizionale port forwarding diventa inaffidabile. Questa guida Cloudflare Tunnels Raspberry Pi completa mostra come configurare accesso sicuro e Zero Trust Access per esporre in sicurezza servizi Docker da un Raspberry Pi, con controllo granulare su accessi pubblici e privati.

Cloudflare Tunnels Raspberry Pi: Perché Usarlo

Le connessioni internet domestiche tipicamente hanno indirizzi IP dinamici che cambiano periodicamente. Le soluzioni tradizionali includono:

  • Servizi Dynamic DNS (DDNS) con port forwarding
  • Server VPN che richiedono configurazione client
  • Esposizione diretta dei servizi su internet (rischioso)

Ogni approccio ha svantaggi: DDNS richiede porte aperte e regole firewall, le VPN aggiungono complessità per accessi rapidi, e l’esposizione diretta crea vulnerabilità di sicurezza. Cloudflare Tunnels Raspberry Pi risolve questi problemi elegantemente.

Architettura Cloudflare Tunnels Raspberry Pi

La soluzione Cloudflare Tunnels Raspberry Pi crea una connessione solo in uscita dal tuo server alla rete edge di Cloudflare. Questo significa:

  • Nessun port forwarding richiesto – il router rimane blindato
  • Nessun IP statico necessario – cloudflared mantiene la connessione
  • Protezione DDoS inclusa – il traffico passa attraverso la rete Cloudflare
  • SSL/TLS automatico – HTTPS per tutti i servizi senza gestione certificati
Cloudflare Tunnels Raspberry Pi Dashboard che mostra tunnel healthy
Dashboard Cloudflare Tunnels: Il tunnel “raspberrypi” mostra stato HEALTHY con connessioni attive

Configurare cloudflared su Raspberry Pi

Il daemon cloudflared gira sul tuo Raspberry Pi e stabilisce il tunnel. L’installazione è semplice:

# Installa cloudflared su Raspberry Pi (ARM64)
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64 -o cloudflared
sudo mv cloudflared /usr/local/bin/
sudo chmod +x /usr/local/bin/cloudflared

# Autenticati con Cloudflare
cloudflared tunnel login

# Crea un tunnel
cloudflared tunnel create raspberrypi

# Esegui come servizio
sudo cloudflared service install
Installazione Cloudflare Tunnels Raspberry Pi con cloudflared
Pagina di configurazione tunnel con opzioni di installazione cloudflared per diverse piattaforme

Per ambienti Docker, eseguire cloudflared come container semplifica il deployment:

# docker-compose.yml
services:
  cloudflared:
    image: cloudflare/cloudflared:latest
    container_name: cloudflared
    restart: unless-stopped
    command: tunnel run
    environment:
      - TUNNEL_TOKEN=your_tunnel_token_here
    networks:
      - your_network

Esporre Servizi Docker

Ogni servizio Docker può essere esposto attraverso il proprio sottodominio. La configurazione del tunnel mappa hostname pubblici a servizi interni:

Route delle applicazioni pubblicate su Cloudflare Tunnel
17 route applicazioni pubblicate inclusi Portainer, n8n, Kafka UI, Home Assistant e altri

La configurazione sopra mostra servizi come:

  • portainer.raffaello.uk → localhost:9000 (gestione Docker)
  • raffaello.uk → localhost:8080 (WordPress)
  • n8n.raffaello.uk → localhost:5678 (automazione workflow n8n)
  • kafka.raffaello.uk → localhost:8090 (Kafka UI)
  • home.raffaello.uk → localhost:8123 (Home Assistant)
  • firefox.raffaello.uk → localhost:3000 (browser remoto Firefox Docker)

Cloudflare Tunnels Raspberry Pi: Zero Trust Access

Non tutti i servizi dovrebbero essere accessibili pubblicamente. Cloudflare Zero Trust Access aggiunge layer di autenticazione prima che gli utenti raggiungano le tue applicazioni. Questo crea due categorie:

Servizi Pubblici

Servizi come un blog non necessitano autenticazione—chiunque dovrebbe poter leggere gli articoli. Questi bypassano completamente la policy di accesso.

Servizi Protetti

Interfacce amministrative, dashboard e servizi sensibili richiedono autenticazione. Zero Trust impone il login prima dell’accesso.

Applicazioni Cloudflare Zero Trust Access Control
10 applicazioni configurate con Zero Trust Access: Portainer, n8n, Kafka, Home Assistant e altri

Configurare le Policy di Accesso

Le policy di accesso definiscono chi può raggiungere i servizi protetti. Una configurazione tipica usa l’autenticazione tramite identity provider:

Policy di accesso Cloudflare Zero Trust con login GitHub
La policy “protect” richiede autenticazione GitHub con durata sessione di 24 ore

La configurazione della policy include:

  • Identity Provider: GitHub, Google o altri provider OAuth
  • Durata Sessione: Quanto tempo prima della ri-autenticazione (24 ore consigliato)
  • Regole Email/Gruppo: Limitare a utenti o organizzazioni specifiche

Tipi di Policy

Panoramica policy Cloudflare Zero Trust
Tre policy: “protect” (ALLOW con auth), “n8n bypass” (BYPASS per webhook), “blog” (ALLOW pubblico)

Tre tipi di policy gestiscono scenari differenti:

  1. ALLOW con Autenticazione: L’utente deve loggarsi via identity provider (usato per dashboard, pannelli admin)
  2. BYPASS: Salta l’autenticazione per path specifici (utile per webhook, endpoint API che necessitano accesso programmatico)
  3. ALLOW senza Autenticazione: Accesso pubblico (per blog, API pubbliche)

Esempio Pratico: n8n Workflow Automation

n8n presenta un caso interessante. La dashboard necessita autenticazione, ma gli endpoint webhook devono essere accessibili pubblicamente per trigger esterni. La soluzione usa due regole:

# Applicazione: n8n.raffaello.uk
# Policy 1: Bypass per webhook
Path: /webhook/*
Action: BYPASS

# Policy 2: Proteggi tutto il resto
Path: /*
Action: ALLOW (richiede login GitHub)

Questa configurazione permette a n8n di ricevere trigger webhook da servizi esterni mantenendo l’interfaccia di amministrazione protetta.

Benefici di Sicurezza con Cloudflare Tunnels Raspberry Pi

Questa architettura Cloudflare Tunnels Raspberry Pi fornisce defense-in-depth:

  • Nessuna porta esposta: Il firewall del router rimane completamente chiuso
  • Verifica identità: I provider OAuth gestiscono l’autenticazione in sicurezza
  • Audit logging: Cloudflare logga tutti i tentativi di accesso
  • SSL automatico: Nessuna gestione certificati o preoccupazioni di rinnovo
  • Protezione bot: Il WAF di Cloudflare filtra traffico malevolo

Conclusione: Cloudflare Tunnels Raspberry Pi

Cloudflare Tunnels combinato con Zero Trust Access trasforma un Raspberry Pi in un’infrastruttura sicura e professionalmente ospitata. Senza IP statici, port forwarding o complesse configurazioni VPN, puoi esporre servizi Docker su internet con sicurezza enterprise-grade. Il sistema granulare di policy assicura che i contenuti pubblici rimangano accessibili mentre le interfacce amministrative restano protette da autenticazione forte.


Approfondimenti

Questo articolo è stato scritto con Claude Code CLI di Anthropic.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Torna in alto