Skip to content

Cómo exponer tu servidor casero con Cloudflare Tunnel (ejemplo con Navidrome)

Si quieres escuchar tu música fuera de casa sin pelearte con el router, UPnP o certificados, esta guía es tu salvoconducto. He montado Cloudflare Tunnel para llevar el Navidrome (Docker en Linux) a Internet con SSL gestionado, cero puertos abiertos y control total. Pim, pam, toma lacasitos.

Llevaba tiempo dándole vueltas a cómo exponer mis servicios caseros sin montar el circo de los puertos abiertos, NAT, certificados caducados y demás dolores de cabeza. Ya os conté en esta entrada sobre mi homelab cómo tengo montado mi tinglado musical con Navidrome.

Pero claro, de poco sirve tener toda tu música bien organizada si no puedes escucharla cuando sales de casa. Ahí es donde entró en juego la charla con mi colega Rubén (también SRE y programador de los que se pelean con la máquina y ganan). Me soltó:

“Tío, deja de sufrir. Tira de Cloudflare Tunnel y lo tienes en dos patadas, con SSL y sin abrir ni un maldito puerto.”

Y dicho y hecho. Me lié la manta a la cabeza, monté el túnel y ahora escucho mi música desde cualquier sitio, como un señor. Aquí te dejo la receta completa, para que tú también te lo montes y dejes de llorar delante del router.

1. Preparar el dominio

C:\> Requisitos mínimos para no llorar más tarde:

      • Un dominio (ej.: ejemplo.com.es) dedicado a tus servicios caseros. Yo me he cogido un .com.es en dondominio pensando en tener algo económico.
      • El dominio debe estar gestionado por Cloudflare (nameservers apuntando a Cloudflare).
Ojocuidao: Cloudflare no acepta solo subdominios. Tiene que gestionar el dominio entero.

Para ello, debemos añadirlo desde la propia plataforma

Y pulsaremos en «incorporar un dominio», donde añadiremos el que toque. Yo he dejado ejemplo.com.es con la idea de que quede más visual.

2. Instalar cloudflared en el servidor

En el host donde corre Navidrome (Linux+ Docker):

sudo apt update && sudo apt install -y curl
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
sudo dpkg -i cloudflared.deb

3. Crear y autenticar el túnel

  1. Login contra tu cuenta de Cloudflare:
    cloudflared tunnel login

    Abre una URL en el navegador para seleccionar tu dominio gestionado.

  2. Crear el túnel:
    cloudflared tunnel create navidrome-tunnel
  3. Mover credenciales a la ruta del sistema:
    sudo mkdir -p /etc/cloudflared
    sudo mv ~/.cloudflared/*.json /etc/cloudflared/
    sudo chown root:root /etc/cloudflared/*.json
    

4. Configurar el túnel

Edita /etc/cloudflared/config.yml con tus datos. Placeholder everywhere:

tunnel: <ID_DEL_TUNEL>
credentials-file: /etc/cloudflared/<ID_DEL_TUNEL>.json

ingress:
  - hostname: subdominio.ejemplo.com.es
    service: http://localhost:4533
  - service: http_status:404

Navidrome por defecto expone en 4533. Ajusta si cambiaste el puerto o usas un reverse proxy local.

Valida la sintaxis antes de liarla:

sudo cloudflared --config /etc/cloudflared/config.yml tunnel ingress validate

5. Asociar el subdominio en Cloudflare (DNS)

Deja que cloudflared cree el CNAME mágico hacia el túnel:

cloudflared tunnel route dns navidrome-tunnel subdominio.ejemplo.com.es

Esto genera un CNAME que apunta a 123456789.cfargotunnel.com, por ejemplo, aunque será lo que realmente toque.  Tú no tocas más DNS. Esta es el magia que hará que aparzca el registro directamente en cloudflare sin que tengas que hacer nada.

6. Probar el túnel

Primero en primer plano para ver logs claros y enterarse bien de qué va la movida:

sudo cloudflared --config /etc/cloudflared/config.yml tunnel run navidrome-tunnel

Luego, abre el navegador y visita:

https://subdominio.ejemplo.com.es

Si aparece el login de Navidrome, vas bien:

¡Maaaaagic!

7. Arranque automático con systemd

sudo cloudflared service install
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
# Logs en vivo
journalctl -u cloudflared -f

Con esto, reinicias la máquina y el túnel se levanta solo como un campeón. Para que no haya más sufrimiento del necesario

Resultado rápido

Item Estado
Acceso externo https://subdominio.ejemplo.com.es
SSL Gestionado por Cloudflare
Puertos en router No hace falta abrir nada
Servicios extra Reutiliza túnel y añade ingress (ej.: ombi.ejemplo.com.es, jellyfin.ejemplo.com.es)
Tip: para añadir más servicios, duplica bloques ingress con hostname y service apuntando al puerto correspondiente y listo.

FAQ mínimas (porque te las vas a preguntar)

¿Hace falta IPv6 pública o abrir el 443? No. El túnel sale desde dentro hacia Cloudflare.

¿Y si el dominio no está en Cloudflare? Muévelo o no hay túnel con DNS gestionado.

¿Puedo proteger con Access (Zero Trust)? Sí. Añade políticas en Cloudflare Access por grupo/identidad.

¿Rinde para streaming? Sí. Para audio va sobrado. Latencia mínima y SSL incluido.

Resumen

Montar Navidrome expuesto con Cloudflare Tunnel es básicamente: dominio en Cloudflare, cloudflared, un config.yml de dos líneas y a volar. Sin abrir puertos, con certificados y con tu música sonando en cualquier sitio. Menos lloros, más temazos.

Comments (0)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Volver arriba