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

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
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_networkEsporre Servizi Docker
Ogni servizio Docker può essere esposto attraverso il proprio sottodominio. La configurazione del tunnel mappa hostname pubblici a servizi interni:

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.

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:

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

Tre tipi di policy gestiscono scenari differenti:
- ALLOW con Autenticazione: L’utente deve loggarsi via identity provider (usato per dashboard, pannelli admin)
- BYPASS: Salta l’autenticazione per path specifici (utile per webhook, endpoint API che necessitano accesso programmatico)
- 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.