FENCODE
Infraestructura & DevOps
Self-Hosted
Servidor Propio

Coolify + Tailscale: cómo conectar tus servidores de forma segura sin IP pública

Aprende a integrar Tailscale con Coolify para conectar múltiples servidores de forma privada y segura, sin abrir puertos ni necesitar IP pública. Tutorial práctico con el caso real de Fencode.

Jesús Blanco

Jesús Blanco

Autor

13 min
Coolify + Tailscale: cómo conectar tus servidores de forma segura sin IP pública

Si ya usas Coolify para gestionar tus servicios self-hosted, en algún momento te vas a encontrar con el mismo problema que nosotros: tienes más de un servidor y necesitas que se comuniquen entre sí de forma segura, pero no quieres exponer puertos al internet ni pagar por una IP pública.

La combinación de Coolify y Tailscale resuelve exactamente eso. Y lo hace de una forma tan limpia que, una vez que la configuras, te preguntas por qué no lo hiciste antes.

En Fencode usamos esta arquitectura para conectar nuestro servidor principal de Coolify con una mini PC adicional, para que un cliente externo pueda depositar archivos en nuestro servidor SFTP sin tener acceso a internet directo, y para que todo el equipo pueda acceder al dashboard de Coolify desde cualquier lugar sin abrir ningún puerto. Este tutorial explica cómo lo hicimos y cómo puedes replicarlo.


Por qué Coolify y Tailscale se complementan tan bien

Coolify es una plataforma self-hosted para desplegar aplicaciones y servicios con Docker. Lo que hace bien es gestionar tus servicios, manejar los deploys y centralizar la administración en un panel. Lo que no hace es gestionar cómo se comunican tus servidores entre sí de forma segura.

Tailscale llena exactamente ese hueco. Crea una red privada cifrada entre todos tus dispositivos y servidores, basada en WireGuard, sin necesidad de configurar firewalls ni abrir puertos. Cada dispositivo recibe una IP estable en el rango 100.x.x.x que funciona desde cualquier red, en cualquier ubicación.

Juntos forman una arquitectura que es a la vez segura, simple de mantener y completamente libre de costos adicionales si ya tienes el servidor.


Los tres casos de uso más comunes

Antes de entrar al tutorial, vale la pena entender para qué sirve esta combinación en la práctica, porque dependiendo de tu caso la configuración varía ligeramente.

Caso 1: Acceder al dashboard de Coolify desde cualquier lugar. Por defecto, el dashboard de Coolify corre en el puerto 8000 de tu servidor. Si no tienes IP pública o no quieres exponer ese puerto, con Tailscale puedes acceder a él usando la IP de Tailscale de tu servidor directamente desde cualquier dispositivo de tu equipo.

Caso 2: Conectar un segundo servidor a Coolify. Coolify permite gestionar servicios en múltiples servidores desde un solo panel. Para que el servidor principal pueda comunicarse con el servidor secundario, ambos necesitan estar en la misma red privada. Tailscale es la forma más limpia de lograr eso sin configuración de firewall.

Caso 3: Dar acceso externo a un servicio sin exponer puertos. Si tienes un cliente o un sistema externo que necesita conectarse a un servicio en tu servidor, por ejemplo un servidor SFTP, puedes instalarlo en tu Tailscale network y darle acceso solo a él. El servicio nunca queda expuesto al internet público.


Lo que necesitas antes de empezar

  • Un servidor corriendo Coolify (Ubuntu 22.04 o superior recomendado)
  • Acceso SSH al servidor
  • Una cuenta gratuita en tailscale.com
  • Opcionalmente, un segundo servidor si quieres el Caso 2

El plan gratuito de Tailscale incluye hasta 100 dispositivos y 3 usuarios, más que suficiente para la mayoría de equipos pequeños.


Paso 1: instalar Tailscale en tu servidor principal

Conéctate al servidor por SSH y ejecuta el instalador oficial:

bash
      curl -fsSL https://tailscale.com/install.sh | sh
    

Una vez instalado, autentica el servidor con tu cuenta de Tailscale:

bash
      sudo tailscale up
    

El comando te va a mostrar un enlace. Ábrelo en el navegador, inicia sesión con tu cuenta de Tailscale y aprueba el dispositivo. En segundos el servidor va a aparecer en tu panel de administración de Tailscale con una IP asignada en el rango 100.x.x.x.

Para confirmar que todo funcionó y ver la IP asignada:

bash
      tailscale ip -4
    

Guarda esa IP. La vas a usar en los pasos siguientes.


Paso 2: instalar Tailscale en los dispositivos del equipo

Para que los miembros del equipo puedan acceder al dashboard de Coolify a través de Tailscale, cada uno necesita tener Tailscale instalado en su dispositivo.

En macOS e iOS se instala desde la App Store. En Windows desde el instalador oficial en tailscale.com/download. En Linux con el mismo comando del paso anterior.

Una vez instalado en cada dispositivo y autenticado con la misma cuenta de Tailscale, todos quedan conectados automáticamente en la misma red privada.


Paso 3: acceder al dashboard de Coolify por Tailscale

Con Tailscale corriendo en tu servidor y en tu dispositivo, ya puedes acceder al dashboard de Coolify usando la IP de Tailscale del servidor:

text
      http://100.x.x.x:8000
    

Reemplaza 100.x.x.x con la IP real de Tailscale de tu servidor. Si activaste MagicDNS en el panel de administración de Tailscale, también puedes usar el nombre del dispositivo directamente:

text
      http://nombre-del-servidor:8000
    

MagicDNS se activa en el panel de Tailscale en la sección DNS. No requiere ninguna configuración adicional en el servidor.

A partir de este momento puedes cerrar el puerto 8000 en tu firewall si lo tenías abierto. Coolify solo necesita ser accesible a través de Tailscale.


Paso 4: conectar un segundo servidor a Coolify (opcional)

Si quieres gestionar servicios en un segundo servidor desde el mismo panel de Coolify, el proceso es directo.

Primero, instala Tailscale en el segundo servidor siguiendo el mismo proceso del Paso 1:

bash
      curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
    

Autentica con la misma cuenta de Tailscale. El segundo servidor va a aparecer en tu tailnet con su propia IP.

Luego, en el dashboard de Coolify, ve a Servers y agrega el servidor secundario. En el campo de IP o hostname, usa la IP de Tailscale del segundo servidor, no su IP pública ni su IP local:

text
      100.x.x.x
    

Coolify va a conectarse al segundo servidor a través de la red privada de Tailscale. No necesitas abrir ningún puerto adicional en ninguno de los dos servidores.

Para que Coolify pueda gestionar el servidor secundario también necesita acceso SSH. Si ya tienes configurado el acceso SSH en tu servidor principal, puedes crear una clave SSH específica para Coolify y agregarla en el servidor secundario:

bash
      # En el servidor principal
ssh-keygen -t ed25519 -C "coolify" -f ~/.ssh/coolify_key
 
# Copia la clave pública al servidor secundario
ssh-copy-id -i ~/.ssh/coolify_key.pub usuario@100.x.x.x
    

En Coolify, agrega esa clave privada en Settings > SSH Keys y asóciala al servidor secundario.


Paso 5: dar acceso a un cliente externo (el caso del FTP)

Este fue el caso que nos llevó a descubrir la combinación en Fencode. Teníamos un servidor SFTP corriendo en Coolify y un cliente que necesitaba depositar archivos en él, pero nuestro servidor no tiene IP pública.

La solución es instalar Tailscale en el servidor del cliente y agregarlo a tu tailnet. Una vez que está en la misma red privada, puede conectarse a tu servidor SFTP usando la IP de Tailscale, exactamente igual que si estuvieran en la misma red local.

bash
      # En el servidor del cliente
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
    

Al autenticar, el servidor del cliente va a aparecer en tu panel de Tailscale. Desde ese momento puede conectarse a cualquier servicio en tu servidor usando su IP de Tailscale.

Si quieres restringir qué puede acceder el servidor del cliente dentro de tu red, Tailscale permite configurar ACLs (listas de control de acceso) en el panel de administración. Por ejemplo, puedes permitir que solo acceda al puerto 22 de tu servidor SFTP y nada más:

json
      {
  "acls": [
    {
      "action": "accept",
      "src": ["tag:cliente-externo"],
      "dst": ["tag:servidor-sftp:22"]
    }
  ]
}
    

Las ACLs se configuran en el panel de Tailscale en la sección Access Controls y aplican a toda tu tailnet sin necesidad de cambiar nada en los servidores.


Activar MagicDNS para no memorizar IPs

Una vez que tienes varios dispositivos en tu tailnet, recordar las IPs se vuelve incómodo. MagicDNS resuelve esto asignando nombres DNS automáticos a cada dispositivo.

Para activarlo, ve a tu panel de Tailscale en login.tailscale.com, entra a la sección DNS y activa MagicDNS. No requiere ningún cambio en los servidores.

A partir de ese momento puedes acceder a tus servicios por nombre:

text
      http://servidor-principal:8000      # Dashboard de Coolify
http://servidor-secundario:3000     # Un servicio en el segundo servidor
    

Los nombres que Tailscale asigna son los hostnames de cada dispositivo. Puedes cambiarlos desde el panel de administración en la sección Machines.


Mantener Tailscale corriendo como servicio

Para que Tailscale se inicie automáticamente cada vez que el servidor reinicie, necesitas habilitarlo como servicio de systemd:

bash
      sudo systemctl enable tailscaled
sudo systemctl start tailscaled
    

En la mayoría de distribuciones modernas esto se configura automáticamente durante la instalación. Puedes verificarlo con:

bash
      sudo systemctl status tailscaled
    

Si el servicio está activo y habilitado, Tailscale va a estar corriendo cada vez que el servidor arranque sin que tengas que hacer nada.


Verificar que la conexión funciona correctamente

Una vez que tienes todo configurado, estos son los comandos para verificar que todo está bien:

bash
      # Ver todos los dispositivos de tu tailnet y su estado
tailscale status
 
# Hacer ping a otro dispositivo de tu tailnet
tailscale ping nombre-del-dispositivo
 
# Ver la IP de Tailscale del dispositivo actual
tailscale ip -4
 
# Ver los logs de conexión
sudo journalctl -u tailscaled -f
    

Si tailscale ping responde con tiempos de latencia bajos, la conexión directa entre dispositivos está funcionando correctamente. Si ves mensajes de relay en lugar de conexión directa, revisa que los dos dispositivos puedan alcanzarse por UDP (Tailscale usa el puerto 41641 por defecto).


Lo que esta arquitectura te da en la práctica

Después de varios meses usando esta combinación en Fencode, estas son las ventajas concretas:

Cero puertos abiertos al internet. Nuestro servidor de producción no tiene ningún puerto expuesto públicamente. Coolify, el servidor SFTP y los agentes de IA son accesibles solo desde dentro de la tailnet.

Acceso desde cualquier lugar sin fricción. Cualquier miembro del equipo puede acceder al dashboard de Coolify desde su laptop o móvil, independientemente de la red en la que esté, sin conectarse a ninguna VPN adicional.

Integración con clientes externos limpia y controlada. El cliente que deposita archivos en nuestro servidor SFTP está en nuestra tailnet con acceso restringido exactamente a lo que necesita. No tiene visibilidad de nada más.

Costo adicional: cero. Tailscale en el plan gratuito cubre perfectamente esta arquitectura. El único costo es el servidor, que ya tienes si usas Coolify.


Artículos relacionados

Si llegaste hasta aquí, estos artículos te van a ser útiles para completar tu stack de infraestructura propia:

Tags:

#Coolify
#Tailscale
#DevOPS
#Self-hosted
#Seguridad en red

¿Listo para Transformar tu Proyecto?

Si este artículo te ha sido útil y buscas llevar tu presencia digital al siguiente nivel, nuestro equipo de expertos está preparado para ayudarte.

Preguntas Frecuentes del Artículo

Resolvemos las dudas específicas sobre este tema.

Artículos relacionados