Tailscale en tu homelab: acceso remoto sin puertos abiertos, sin proxys reversos, sin dramas

Tailscale en tu homelab: acceso remoto sin puertos abiertos, sin proxys reversos, sin dramas

En el apabullante universo de las redes y la conectividad remota, contar con herramientas que nos permitan simplificar la gestión y mejorar la seguridad de nuestras conexiones es fundamental. En artículos anteriores, hablamos sobre ZeroTier y sus capacidades para conectar dispositivos de forma segura, saltándose las desventajas de las VPN tradicionales. Hoy, vamos a profundizar en otra brillante solución: Tailscale.

Tailscale es una solución de red basada en WireGuard que permite conectar dispositivos de forma segura sin necesidad de abrir puertos, montar servidores VPN ni complicarse con firewalls. A diferencia de otras herramientas como ZeroTier, Tailscale destaca por su configuración casi automática y su enfoque “zero-config” & “zero-trust”. En pocos minutos puedes tener todos tus dispositivos —servidores, portátiles, Raspberry Pis o lo que sea— hablando entre sí como si estuvieran en la misma red local, incluso desde fuera de casa y de forma totalmente segura.

En este artículo, exploraremos cómo Tailscale se distingue de las VPN tradicionales, sus similitudes con ZeroTier y los reverse-proxy, y cómo podemos sacar provecho de sus capacidades dentro de un entorno Unraid. Desde el acceso remoto al servidor, hasta la configuración de contenedores y el uso de nodos de salida, cubriremos todo lo que necesitas saber para empezar.

Si quieres navegar de forma rápida, este es el TOC:

TOC

¿Qué es Tailscale y en qué se diferencia de una VPN tradicional?

Tailscale utiliza WireGuard como base para crear túneles cifrados entre nodos (dispositivos), aprovechando su ligereza y eficiencia. A diferencia del modelo tradicional de “hub-and-spoke” de las VPNs, donde todo el tráfico pasa por un punto central, Tailscale adopta un enfoque de red mesh directamente entre nodos, minimizando la latencia y mejorando el rendimiento.

Esquema VPN tradicional

Capas y Características de Tailscale:

  1. WireGuard y Mesh Network: Basado en WireGuard, Tailscale facilita la creación de conexiones ligeras entre todos los nodos, no solo entre un nodo central y los demás, permitiendo un diseño más eficiente y con menos retrasos.
Esquema red MESH
  1. Servidor de Coordinación: Aunque los datos viajan directamente entre nodos, el intercambio de claves se coordina mediante un servidor central que gestiona las políticas y claves sin convertirse en un cuello de botella. Esto asegura el cifrado total (un enfoque de “zero trust”).

  2. NAT trasversal: Tailscale utiliza técnicas avanzadas basadas en las normas STUN e ICE de Internet para atravesar NATs sin configuración manual de firewalls. Esto implica que no es neceario abrir ningun puerto ni exponer ningún servicio al exterior para que un nodo pueda hacer uso de el.

NAT
  1. Autenticación OAuth2: La autenticación se maneja mediante proveedores OAuth2, SAML u OIDC, integrándose con servicios como GSuite, Office365 o Keycloack, evitando así la administración de cuentas separadas. Esto es muy interesante para entornos empresariales.

  2. Registro y Políticas Centrales: Cada nodo tiene políticas de seguridad que se sincronizan desde un servidor central, garantizando el cumplimiento de políticas sin la necesidad de puntos de control centralizados.

Este enfoque híbrido entre control central y red distribuida permite una gestión sencilla, segura y escalable. Con Tailscale, la configuración de una red segura se vuelve algo que cualquier homelaber puede implementar sin dolores de cabeza.

Similitudes y diferencias con ZeroTier

Si ya has usado ZeroTier, encontrarás muchos paralelismos.

Ambos sistemas crean redes virtuales privadas sobre Internet, con conexiones directas entre los clientes para minimizar latencia y eliminar la necesidad de un servidor VPN tradicional. Tanto ZeroTier como Tailscale atraviesan NATs automáticamente (ZeroTier con hole punching UDP y Tailscale con STUN/ICE como mencionamos) y evitan tener que abrir puertos en tu router.

La principal diferencia técnica es que Tailscale se basa en el protocolo WireGuard para el cifrado de las comunicaciones, mientras que ZeroTier emplea su propia tecnología de virtualización de red (emulando incluso capa 2). Además, Tailscale apuesta por integrarse con identidades digitales existentes (inicio de sesión con cuentas de Google/Microsoft) y ofrece características adicionales como ACLs centralizadas y manejo de dispositivos efímeros, algo que en ZeroTier requiere más configuración manual.

Por otro lado, ZeroTier permite redes más “planas” a nivel de capa 2 e incluso bridging que puede ser útil en ciertos escenarios avanzados, mientras que Tailscale opera a nivel de IP (capa 3) utilizando WireGuard. En resumen, ambas son excelentes soluciones de VPN moderna; Tailscale brilla por su simplicidad de inicio (uso de OAuth2, cliente muy sencillo) y por características pensadas para facilitar la vida a usuarios y administradores, especialmente en entornos donde ya se usa GSuite/Office365 o donde se quiera exponer servicios web de forma fácil.

Tailscale en Unraid: Acceso Remoto y Servicios Docker

Ahora que entendemos qué ofrece Tailscale, veamos cómo sacarle provecho en un servidor Unraid y en entornos Docker de un homelab. Tailscale tiene integración nativa con Unraid (vía plugin oficial) y nos permite tanto acceder de forma remota a la interfaz de Unraid como publicar los servicios web de nuestros contenedores de manera segura sin exponer puertos al internet público.

A diferencia de lo que expliqué en el post sobre SaaS con reverse proxy y TLS, la idea de utilizar Tailscale es precisamente para evitar tener que publicar tus servicios a internet pero a su vez su uso sea igual de cómodo y fácil como con un reverse proxy.

A continuación, repasaremos varios casos de uso prácticos:

Acceso remoto seguro a tu servidor Unraid

Una de las formas más sencillas de comenzar con Tailscale en Unraid es usarlo para acceder remotamente a la propia interfaz web y recursos del servidor, eliminando la necesidad de soluciones VPN tradicionales o de exponer puertos de administración.

Para empezar, primero deberás regístrate para obtener una cuenta gratuita de Tailscale e instálalo en al menos una máquina cliente (está disponible para Windows/Mac/iOS/Android y más).

Una cuenta gratuita permite tres usuarios y 100 máquinas.

En el sitio web de Tailscale, ve a la pestaña DNS.

  1. Considera renombrar tu tailnet del estilo básico de nombre tail92ac42.ts.net a algo divertido como zebra-pancake.ts.net. Esto nos servirá para acceder a nuestras máquinas y/o servicios con una dirección web más amigable y fácil de memorizar.
  2. Habilita MagicDNS si no lo está ya-
  3. Habilita Certificados HTTPS. Esto permite que cada máquina y/o servicio tenga un nombre único y un certificado https para una comunicación segura de la misma forma que en un reverse proxy con TLS.

Ojo: Ten en cuenta que los detalles sobre los certificados HTTPS emitidos son públicos, incluso si sólo los usas en una red privada, así que asegúrate de que está de acuerdo con que los nombres de tus máquinas y/o servicios sean públicos antes de hacer esto.

Ahora podemos instalar el plugin oficial de Tailscale en Unraid (disponible vía Community Applications). Tras la instalación, simplemente debemos iniciar sesión con nuestra cuenta de Tailscale desde la configuración del plugin y conectar el servidor a nuestro Tailnet.

Unraid configurado con tailnet

Una vez autenticado y conectado, el servidor Unraid aparecerá como un dispositivo más en la red privada de Tailscale, con su propia IP virtual (del rango 100.x.x.x por defecto).

Unraid configurado con tailnet

Podrás acceder a la interfaz web de Unraid usando esta IP de Tailscale, o mejor aún, utilizando el nombre de máquina proporcionado por MagicDNS de Tailscale si lo tienes habilitado. Por ejemplo, si tu servidor se llama unraid-server y tu sufijo MagicDNS se llama zebra-pancake, podrás acceder desde cualquier otro dispositivo en tu Tailnet via https://unraid-server.zebra-pancake.ts.net. Este acceso se realiza con cifrado end-to-end, aprovechando WireGuard, y no requiere abrir el puerto 80/443 de Unraid al exterior. Solo los dispositivos con acceso a tu Tailnet (es decir, autenticados en tu cuenta Tailscale o a quienes les hayas compartido acceso) podrán resolver ese nombre y conectarse a tu servidor.

Además de la interfaz web, al estar el servidor en la Tailnet puedes acceder también a otros servicios internos de Unraid: compartir archivos vía SMB/NFS usando la IP de Tailscale, hacer SSH al servidor, etc., todo como si estuvieras en la misma red local.

En caso de necesitar acceder no solo al servidor sino a otros dispositivos de tu red doméstica a través de Tailscale, puedes configurar Unraid como router de subred (subnet router) anunciando la ruta de tu LAN al Tailnet. De esa forma, cualquier cliente en tu Tailnet podría alcanzar dispositivos en la red local del servidor (por ejemplo, tu impresora de red o cámaras IP), extendiendo efectivamente la red privada virtual a toda la LAN de casa. Sin embargo, con este método sólo podríamos acceder a los dispositivos a través de la IP local y no tal y como lo hacíamos con el reverse proxy.

Exponiendo aplicaciones de contenedores mediante Tailscale (Serve vs Funnel)

Como ya he comentado, uno de los aspectos más potentes de Tailscale es la posibilidad de actuar como un reverse proxy seguro para los servicios web que tengas corriendo en tus contenedores, todo ello sin necesidad de configurar proxy externos ni abrir puertos en tu router. En Unraid 7.0 se introdujo la integración nativa de Tailscale en la gestión de Docker, lo que nos permite añadir Tailscale a contenedores individuales con un simple interruptor. Veamos cómo funciona y las diferencias entre los modos Serve y Funnel de Tailscale para publicar servicios:

Integración nativa en Unraid: Si ya tienes el plugin de Tailscale funcionando en Unraid, puedes ir al apartado Docker en la interfaz de Unraid, editar cualquier contenedor y activar la opción “Use Tailscale”:

Contenedor docker en unraid configurado con tailscale

Al habilitar esto, Unraid incluirá el binario de Tailscale dentro del contenedor y lo conectará automáticamente a tu Tailnet. Se te pedirá que asignes un Tailscale Hostname para el contenedor (un nombre único dentro de tu Tailnet). Una vez aplicado el cambio y reiniciado el contenedor, verás en su log un mensaje tipo “To authenticate, visit: …” con un enlace de Tailscale para autorizar la incorporación de ese ontenedor como nuevo nodo. Siguiendo ese enlace y aprobando la solicitud, el contenedor quedará registrado en tu Tailnet igual que cualquier otro dispositivo.

Contenedor docker configurado con tailscale en la consola

¿Qué logramos con esto? Pues que cada contenedor puede aparecer como un dispositivo independiente en Tailscale, con su propia IP y nombre. Esto es útil por sí mismo para aislar accesos (puedes compartir sólo un contenedor específico con otra persona mediante Tailscale, sin darle acceso a todo el servidor o red). Pero además, si ese contenedor aloja un servicio web (como en el ejemplo, un media center Jellyfin, una interfaz de Home Assistant, Grafana, etc.), Tailscale nos da la opción de exponer ese servicio de dos maneras:

  • Tailscale Serve (Servicio interno al Tailnet): Al seleccionar “Serve” en el campo “Tailscale Serve:” al editar el contenedor en Unraid, Tailscale configurará un reverse proxy interno que hace accesible el puerto web del contenedor a través de una URL amigable por HTTPS dentro de la red Tailscale. Es decir, cualquier dispositivo de tu Tailnet podrá acceder al servicio en una dirección del estilo https://.tailnet.ts.net/ sin necesidad de saber la IP ni puerto, y con un certificado TLS válido automáticamente (sí, Tailscale gestiona los certificados por ti 😍 ). Por ejemplo, si tienes un contenedor Jellifyn con interfaz web en el puerto 8096, al activarle Serve podrías entrar desde cualquier equipo Tailscale a https://jellifyn.tailnet.ts.net (siendo tailnet tu sufijo MagicDNS) y ver la interfaz, sin configurar nada más. Importante: Este acceso Serve no permite el ingreso a usuarios fuera de tu Tailnet – es solo para equipos de tu red privada. Piensa en Serve como una forma de simplificar el acceso interno: no más recordar IP:puertos, ahora todos tus servicios tienen URLs consistentes. Sin embargo lo que sí puedes hacer es compartir el acceso a este servicio a personas concretas mediante una invitación que podrás lanzar a su correo electrónico simplemente haciendo click en “Share…” en tu consola de administración de Tailscale en la máquina que quieras compartir.
Compartir acceso a contenedor docker configurado con tailscale en la consola
  • Tailscale Funnel (Exposición pública opcional): Si en lugar de Serve seleccionas el modo Funnel en el contenedor en el campo “Tailscale Serve:”, entonces Tailscale irá un paso más allá y permitirá que dispositivos fuera de tu Tailnet accedan a ese servicio, de forma controlada, a través de Internet. Funnel básicamente abre un túnel desde los servidores de salida de Tailscale hacia tu contenedor cuando alguien accede a una URL especial. Por ejemplo, podrías compartir con un amigo un enlace tipo https://jellifyn.tailnet.ts.net (siendo tailnet tu sufijo MagicDNS) y Tailscale se encargará de enrutar a tu contenedor ese tráfico externo. Todo el tráfico sigue siendo cifrado y tu IP real permanece oculta; los servidores de Funnel hacen de proxy reverso pero no descifran los datos. Cabe mencionar que Funnel estuvo en beta durante 2023 y requiere habilitar la característica en tu cuenta (está disponible incluso en el plan gratuito personal, aunque con ciertos límites). Unraid facilita mucho esta configuración: seleccionas dicho modo y listo. En la práctica, Funnel te ahorra tener que montar un servidor VPN o abrir puertos para compartir temporalmente un servicio con alguien que no usa Tailscale. En cualquier caso, como ya he mencionado previamente, usar Tailscale tiene como objetivo precisamente evitar tener que publicar tus servicios a internet pero a su vez su uso sea igual de cómodo y fácil como con un reverse proxy. Por tanto, usa Funnel con precaución, pues al exponer un servicio al público podrías recibir visitas no deseadas (bots, intentos de intrusión, etc.). Asegúrate de que la aplicación que estás exponiendo tenga algún tipo de autenticación o control de acceso, ya que Tailscale Funnel en sí no añade autenticación adicional más allá del enlace en sí. En otras palabras, Serve es perfecto para tu uso personal dentro de la VPN de Tailscale, mientras que Funnel es para cuando necesitas compartir algo con el mundo exterior de forma rápida pero segura (por ejemplo, enseñar a un amigo una demo de tu servicio casero).

En resumen, con la integración nativa de Tailscale en Unraid, publicar las aplicaciones web de tus contenedores es sumamente sencillo. No necesitas configurar reverse proxies tradicionales ni preocuparte por certificados SSL o DNS dinámico: Tailscale se encarga de todo en segundo plano.

Un detalle adicional: al habilitar Tailscale en un contenedor, es posible que la URL local original (ej. http://IP-local:PUERTO) deje de estar accesible dependiendo de cómo esté la red del contenedor, especialmente si usas el modo userspace networking de Tailscale. Esto es normal, ya que el contenedor puede quedar aislado en la red de Tailscale únicamente para reforzar la seguridad. Simplemente acostúmbrate a acceder vía la URL de Tailscale a partir de ese momento. Si necesitas que siga accesible localmente y por Tailscale, podrías configurarlo usando ajustes avanzados (como —userspace-networking=false si fuera necesario), pero en la mayoría de casos no hace falta complicarse.

Contenedores que no funcionan con la integración nativa: TSD Proxy y Label Manager

Aunque la funcionalidad “Use Tailscale” integrada en Unraid es genial, en la práctica puede haber ciertos contenedores o situaciones donde esta integración no funcione perfectamente. Algunos contenedores podrían no llevarse bien con que Unraid inyecte el cliente Tailscale en su proceso de arranque (por ejemplo, imágenes de Docker muy minimalistas, contenedores con su propio init especial, etc.). Si te encuentras con que activar Tailscale en un contenedor causa problemas, existe una solución alternativa creada por la comunidad: TSDProxy (Tailscale Docker Proxy). Yo por ejemplo he tenido este problema con los contenedores de Guacamole y Grafana, entre otros.

TSDProxy es un contenedor especial que crea automáticamente “máquinas Tailscale” para tus contenedores, sin necesidad de modificar la imagen de esos contenedores.

En otras palabras, actúa como un sidecar o intermediario: por medio de etiquetas (labels) de Docker, le indicas qué contenedores deseas conectar a Tailscale, y TSDProxy se encarga de levantar un pequeño cliente Tailscale separado asociado a cada uno de ellos. Esto logra un efecto similar al de la integración nativa (“Use Tailscale”) pero evita los inconvenientes que ésta a veces ocasiona, ya que no interfiere con el proceso principal del contenedor (la integración nativa inyecta Tailscale dentro del contenedor, lo cual en algunos casos puede alterar el orden de inicio de servicios).

Para usar TSDProxy en Unraid, sigue estos pasos básicos:

  • Instala TSDProxy desde Community Applications (viene como contenedor Docker). Al lanzarlo, expondrá una interfaz web de control y detectará los contenedores configurados para usarlo.
Docker TSDProxy en unraid
  • Instala el plugin Label Manager (disponible también en Community Apps). Este plugin te permite gestionar etiquetas Docker a través de la GUI de Unraid de forma sencilla.
Plugin labelmanager en unraid
  • En la GUI de Unraid, ve a Settings -> Label Manager. Ahí podrás seleccionar un contenedor y asignarle etiquetas. Para habilitar TSDProxy en un contenedor, añade la etiqueta tsdproxy.enable con valor true. (Con Label Manager esto es tan fácil como marcar “Enable” y aplicar).
Listado de contenedores en plugin label manager en unraid Configuracion contenedor en label manager en unraid
  • Tras aplicar la etiqueta, el contenedor objetivo se reiniciará para que tome la nueva configuración. Ahora, ve al Dashboard de TSDProxy: en la pestaña Docker de Unraid, haz clic en el contenedor TSDProxy y luego en WebUI.

  • En el dashboard de TSDProxy deberías ver listado el contenedor al que acabas de habilitar. Haz click en él y sigue el flujo de autenticación para conectarlo a tu Tailnet (TSDProxy te presentará un botón o link para iniciar sesión en Tailscale, similar a cuando añadimos cualquier dispositivo).

  • ¡Listo! 🚀 Tu contenedor ahora aparecerá en Tailscale como un dispositivo independiente. Internamente, TSDProxy ha lanzado un proceso de Tailscale separado manejando ese contenedor.

La ventaja de TSDProxy es que evita los problemas conocidos de la función nativa “Use Tailscale” de Unraid, manteniendo las mismas posibilidades: tu contenedor tiene su IP de Tailscale, puedes acceder a su servicio web vía Serve/Funnel (TSDProxy soporta también Serve/Funnel porque en el fondo sigue usando el cliente oficial de Tailscale para ese contenedor) y puedes revocar o gestionar ese nodo por separado. En esencia, TSDProxy + Label Manager ofrecen un camino alternativo y más robusto para esos casos especiales. Vale la pena mencionar que esta solución proviene de la comunidad (desarrollada por @almeidapaulopt), pero ha ganado popularidad por su eficiencia.

¿Cuándo usar integración nativa vs TSDProxy? En general, intenta primero la integración nativa por comodidad. Si notas que un contenedor no inicia bien o deja de funcionar su WebUI tras activar “Use Tailscale”, entonces opta por TSDProxy para ese caso.

Nodo de salida: navegando a través de tu Unraid (Exit Node)

Otro uso interesante de Tailscale en homelab es aprovechar nuestro servidor como un nodo de salida (exit node). ¿Qué significa esto? Que podremos enrutar el tráfico de internet de nuestros dispositivos a través de la conexión de nuestro Unraid en casa, como si estuviésemos allí físicamente. Esto es similar a lo que se logra con una VPN tradicional al “salir” a Internet desde el servidor VPN, pero nuevamente, con la sencillez de un clic.

Configurar Unraid como nodo de salida es muy sencillo. En la configuración del plugin de Tailscale, habilitamos la opción de “Run as Exit Node”.

Unraid configurado como exit node

Esto hace que nuestro servidor anuncie a la Tailnet que ofrece la ruta 0.0.0.0/0 (todo internet) a través de él. En la administración web de Tailscale veremos aparecer esta ruta y tendremos que aprobarla (por seguridad, Tailscale requiere confirmar cuando un dispositivo se ofrece como salida). Una vez aprobada, cualquier cliente de nuestra Tailnet puede decidir utilizar el Unraid como salida: por ejemplo, en la app móvil de Tailscale o en otro PC, seleccionas Use Exit Node -> unraid-server. A partir de ese momento, todo el tráfico web de ese dispositivo será enrutado y salido por la conexión de tu casa.

¿Para qué querríamos hacer esto? Varios escenarios: cuando estás de viaje y deseas navegar como si estuvieras en tu país/origen (evitando bloqueos geográficos, usando tu IP doméstica), para aprovechar la protección de algún filtrado de tu red doméstica mientras estás fuera, o simplemente para cifrar tu tráfico saliente si estás en una WiFi pública pero confías más en tu red de casa. Es, en el fondo, como tener tu propio VPN servidor casero on-demand.

Al usar Unraid como nodo de salida, Tailscale se encarga de la configuración compleja automáticamente: establece las rutas, ajusta la tabla de enrutamiento del cliente, etc. Cabe destacar que el tráfico sigue cifrado end-to-end hasta tu Unraid, y de ahí sale a Internet. Asegúrate de que tu servidor tenga una conexión y ancho de banda suficiente si planeas hacer streaming o consumir mucho tráfico a través de él. También es recomendable activar algún tipo de limitación o monitoreo, ya que todo el tráfico de salida de los clientes remotos pasará por tu enlace (no querrás saturar la conexión de casa sin darte cuenta).

Otra función que podemos habilitar si usamos unraid como nodo de salida es la posibilidad de acceder a la red LAN a los clientes mientras estén usando el nodo de salida de unraid. De eta forma, evitamos el paso explicado en el punto [###Acceso_remoto_seguro_a_tu_servidor_Unraid] de anunciar las subredes ya que Tailscale lo hará por ti. Solo debemos activar la opción “Allow LAN Access while using Exit Node” en la configuración del plugin de Tailscale, como puedes ver en la imagen anterior.

En resumen, con Unraid + Tailscale, tienes tu propia “puerta de enlace” personal para Internet. Esto complementa las funcionalidades de acceso remoto: no solo puedes entrar a tu red, sino también salir a través de ella, todo con el mismo sistema unificado.

Docker Compose en Raspberry Pi: servicios auto-hosteados en tu Tailnet

No todo tu homelab va a girar en torno a Unraid. Quizá tengas una Raspberry Pi u otro mini-servidor corriendo servicios en contenedores mediante Docker Compose. La buena noticia es que también puedes integrar esos servicios con Tailscale fácilmente, logrando efectos similares: acceso privado sin puertos abiertos y posibilidad de URLs amigables con HTTPS dentro de tu Tailnet.

Supongamos que tienes un servicio web (por ejemplo, una Rasberry PI y un receptor ADS-B monitorizando el espacio aereo). Para “engancharlo” a Tailscale, podemos usar la imagen oficial tailscale/tailscale de Docker como contenedor auxiliar (sidecar). La idea básica es: ejecutamos un contenedor Tailscale en la RasPi que se una a nuestra Tailnet, y configuramos nuestro contenedor de la aplicación para que comparta la red con ese contenedor Tailscale. De esta forma, la aplicación estará accesible únicamente a través de la interfaz virtual de Tailscale.

¿Cómo hacerlo en la práctica? Aquí hay un ejemplo sencillo de un archivo docker-compose.yml:

services:
  mi-servicio:
    image: tu-imagen-web:latest
    network_mode: service:tailscale  # Usa la misma red que el servicio tailscale
    environment:
      - PORT=8080  # suponiendo que expone el puerto 8080 internamente
    depends_on:
      - tailscale

  tailscale:
    image: tailscale/tailscale:stable
    cap_add:
      - NET_ADMIN      # para permitir la creación de interfaz TUN
      - SYS_MODULE     # (posible que no sea necesario dependiendo de netstack)
    environment:
      - TS_AUTHKEY=${TS_AUTHKEY}     # auth key pre-generada para login automático
      - TS_HOSTNAME=raspi-servicio   # nombre deseado en Tailnet
      - TS_STATE_DIR=/var/lib/tailscale
      - TS_USERSPACE=false
    volumes:
      - tailscale-state:/var/lib/tailscale
    command: tailscaled
    restart: unless-stopped

En este ejemplo, creamos dos servicios: nuestra app “mi-servicio” y el servicio “tailscale”. Le damos al contenedor de Tailscale las capacidades necesarias para crear interfaces de red. Usamos una Auth Key de Tailscale (que puedes generar en la web de admin de Tailscale) para que el contenedor se una automáticamente a tu Tailnet al arrancar. También definimos un TS_HOSTNAME para que aparezca con un nombre reconocible (por ejemplo raspi-servicio) en la red. El contenedor de Tailscale ejecuta tailscaled (el demonio) en segundo plano.

La clave está en network_mode: service:tailscale en nuestro contenedor de la aplicación: esto hace que comparta la pila de red con el contenedor Tailscale. En otras palabras, el servicio web estará accesible únicamente a través de la IP de Tailscale asignada, y no expondrá puertos en la interfaz física de la Raspberry Pi. Así, si tu RasPi está en la red local 192.168.1.0/24, no habrá puerto accesible allí; pero desde cualquier cliente en tu Tailnet podrás llegar a http://raspi-servicio.tailnet.ts.net:8080 (o la IP 100.x.y.z:8080 correspondiente).

Al levantar el compose (docker-compose up -d), verás en los logs de Tailscale algo como “To authenticate, visit: …” si no usaste una auth key. Como usamos TS_AUTHKEY, idealmente se autoconectará sin intervención. En cualquier caso, una vez conectado, el contenedor aparece en tu Tailnet. Desde tu PC podrás hacer tailscale ping raspi-servicio para comprobar que está en línea, por ejemplo.

Con esto ya tienes el servicio accesible de forma privada. Pero ¿qué hay de obtener un certificado y evitar el :8080 en la URL? Aquí entra la función Serve de Tailscale mencionada antes. En un entorno con Docker Compose, una forma de usar Serve es añadiendo una variable enviroment:

- TS_SERVE_CONFIG=/config/serve-config.json

Este fichero debería ser algo como:

{
    "TCP": {
      "443": {
        "HTTPS": true
      }
    },
    "Web": {
      "${TS_CERT_DOMAIN}:443": {
        "Handlers": {
          "/": {
            "Proxy": "http://127.0.0.1:8080"
          }
        }
      }
    },
    "AllowFunnel": {
      "${TS_CERT_DOMAIN}:443": false
    }
}

Esto indicaría a Tailscale que sirva el puerto 8080 de mi-servicio a través de HTTPS en el puerto 443 de la interfaz tailscale. Tras eso, podrías acceder simplemente a https://raspi-servicio.tailnet.ts.net/ sin puerto, con certificado válido, dentro de tu Tailnet. Como puedes ver también podrías configurar el modo Funnel si así lo deseas.

En conclusión, ¡ningún servicio de tu homelab tiene por qué quedarse fuera! Ya sea mediante Unraid con su plugin, o con Docker Compose en una Raspberry Pi, Tailscale puede abarcarlo todo. Esto abre un abanico de posibilidades enorme: desde montar tu nube personal, hasta acceder de forma segura a Home Assistant o cualquier dashboard web de tu red, pasando por compartir un enlace temporal a un amigo para que vea esa app chula que has desplegado. Y todo ello sin complicarte con DNS dinámico, puertos, ni certificados manuales.

Conclusiones

Tailscale se posiciona como una solución revolucionaria en el ámbito del networking seguro para entornos domésticos y de homelab. Nos permite, con una simplicidad pasmosa, conectar dispositivos dispersos geográficamente como si estuvieran en la misma LAN, mantener nuestras comunicaciones cifradas y autenticadas, y exponer servicios de forma controlada tanto dentro de nuestra red privada virtual como hacia Internet cuando es necesario.

En este recorrido, hemos visto cómo difiere de las VPN tradicionales y sus similitudes con ZeroTier, para luego adentrarnos en aplicaciones prácticas en Unraid y Docker. Si has llegado hasta aquí, probablemente ya estés imaginando nuevas formas de simplificar tu infraestructura: ¿Conectar aquel servidor viejo que tienes en la oficina con tu red de casa? ¿Montar tu propio servicio accesible desde el móvil sin abrir ni un puerto? ¿Crear una VPN familiar para acceder al NAS y además navegar seguro cuando sales de viaje? Todo eso está al alcance de unos pocos clics con Tailscale.

Personalmente, después de haber usado ZeroTier y ahora Tailscale, me quedo impresionado con lo fácil que resulta todo con Tailscale. La integración con Unraid es de diez, y características como Funnel o el manejo de identidades vía OAuth llevan la experiencia a otro nivel. Por supuesto, cada herramienta tiene su caso de uso y nadie quita mérito a las VPN tradicionales en entornos corporativos complejos, pero para un homelaber o pequeña empresa que busca rapidez y seguridad, Tailscale es difícil de superar.

¿A qué esperas para probarlo en tu entorno? Como siempre, si te animas a implementarlo y te surge cualquier duda, ¡deja un comentario o escríbeme! Estaré encantado de ayudar y conocer también tus casos de uso con esta genial herramienta.

🥷Happy hacking!🥷


Suscríbete, que es gratis

Nota: algunos de los enlaces a productos o servicios pueden ser enlaces referidos con los que podemos obtener una comisión de venta.