|

Cfmux: múltiples túneles Cloudflare sin drama

Cfmux es una herramienta CLI escrita en Go que actúa como capa de gestión sobre cloudflared para resolver un problema concreto: gestionar múltiples túneles Cloudflare de distintas cuentas sin mezclar credenciales ni estado de runtime. No reemplaza a cloudflared, sino que organiza su uso cuando tenés más de una cuenta activa al mismo tiempo.

En 30 segundos

  • Cfmux es un wrapper CLI en Golang sobre cloudflared que gestiona múltiples cuentas de Cloudflare Tunnel mediante perfiles aislados.
  • Nació para resolver la confusión de credenciales al manejar infraestructura de clientes, entornos de test y despliegues temporales desde una sola máquina.
  • Cada perfil corre un proceso cloudflared independiente, con su propio estado de runtime y tokens de autenticación.
  • Incluye integración con systemd para gestionar los túneles como servicios del sistema, con inicio automático y reinicio ante fallos.
  • No inventa ningún protocolo de red nuevo: sigue usando el tooling oficial de Cloudflare debajo, sin magia.

Cloudflare es una plataforma de seguridad web y red de distribución de contenidos (CDN) que ofrece protección contra ataques DDoS, aceleración web, DNS gestionado y tunelización segura. Desarrollada por la compañía Cloudflare desde 2009, es utilizada por millones de sitios web.

¿Qué es Cfmux y por qué existe?

Cfmux es un CLI escrito en Go que envuelve a cloudflared para añadirle una capa de gestión de perfiles. La idea es simple: en vez de acordarte qué credenciales van con qué cuenta y qué config apunta a qué tunnel, le decís “dame el perfil cliente-A” y Cfmux se encarga del resto.

Según la publicación original del proyecto (mayo de 2026), la herramienta nació de la frustración del autor con el workflow de múltiples cuentas, no de una limitación técnica de cloudflared. Eso es un detalle importante: cloudflared ya es excelente. Es liviano, estable, fácil de desplegar. El problema aparece cuando querés manejar tres cuentas distintas desde la misma máquina y empezás a perder el hilo.

La definición que da el proyecto es clara: Cfmux es un wrapper liviano, no un reemplazo. Debajo sigue corriendo el tooling oficial de Cloudflare.

El problema real: confusión de credenciales

Ponele que sos una agencia o consultor y manejás estos tres escenarios en paralelo: la infraestructura de un cliente, entornos de testing aislados, y despliegues temporales para demos o prototipos. Al principio es manejable. Tenés un archivo de config por acá, un token guardado por allá, algo anotado en un sticky.

Después empieza el caos.

Usás las credenciales del cliente A para el tunnel del cliente B. El estado de runtime de un tunnel contamina el de otro. Tenés configs esparcidas por múltiples directorios sin ninguna convención. Y lo que debería ser “levantá un tunnel y terminaste” se convierte en un rato perdido verificando qué cuenta está activa.

¿Quién verificó esto de forma sistemática antes de construir Cfmux? El propio autor, que terminó construyendo su propia capa de gestión manual y decidió formalizarla en código. Más contexto en herramientas de CI/CD como GitHub Actions.

Características principales de Cfmux

Las tres columnas del proyecto son perfiles aislados, separación de runtime e integración con systemd. Veamos qué significa cada una en la práctica.

Perfiles aislados

Cada cuenta de Cloudflare vive en su propio perfil dentro de Cfmux. Las credenciales, los tokens de autenticación y las configuraciones no se mezclan entre perfiles. Si trabajás con tres clientes, tenés tres perfiles completamente independientes. Cuando ejecutás un tunnel, siempre partís desde el contexto de un perfil específico.

Separación de runtime

Cada perfil activo corre su propio proceso cloudflared. No hay un proceso compartido que gestione múltiples cuentas simultáneamente. Esto elimina la posibilidad de que el estado de un tunnel (conexión activa, logs, errores) contamine al de otro. Si el tunnel del cliente A se rompe, el del cliente B sigue andando sin enterarse.

Integración systemd

Cfmux puede generar units de systemd para cada perfil, lo que te permite gestionar los tunnels como servicios del sistema. Inicio automático al arrancar el servidor, reinicio ante fallos, logs centralizados con journalctl. Para un servidor de producción o un VPS en donweb.com, esto marca la diferencia entre un tunnel que hay que levantar a mano cada vez y uno que simplemente está siempre disponible.

Cloudflared manual vs Cfmux: ¿realmente lo necesitás?

Ojo, que esto no es para todos. Si manejás una sola cuenta de Cloudflare Tunnel, Cfmux no te agrega nada que ya no tengas. cloudflared soporta múltiples tunnels dentro de la misma cuenta sin problema.

El corte es claro: el valor de Cfmux aparece cuando tenés múltiples cuentas, no múltiples tunnels en la misma cuenta.

Featurecloudflared soloCfmux
Múltiples tunnels, misma cuentaSoportado nativamenteSoportado (sin ventaja extra)
Múltiples cuentas en paraleloManual, propenso a erroresPerfiles aislados automáticos
Separación de credencialesManual (vars de entorno, configs)Por perfil, automático
Estado de runtime aisladoNo (proceso compartido)Sí (proceso por perfil)
Integración systemdPosible, configuración manualGeneración automática de units
Curva de aprendizajeBajaBaja (wrapper, no reemplazo)
Use case idealUna cuenta, proyectos propiosAgencias, consultores, multi-cliente
gestionar múltiples túneles cloudflare diagrama explicativo

La tabla lo resume bien: si sos freelancer con una sola cuenta de Cloudflare, guardá el README y seguí con lo que tenés. Si gestionás infraestructura de varios clientes o tenés un setup con cuentas separadas por entorno, Cfmux te va a ahorrar tiempo real. Para más detalles técnicos, mirá distribuir infraestructura en múltiples regiones.

Cómo funciona Cfmux internamente

La arquitectura es directa: Cfmux mantiene un directorio de perfiles donde cada perfil guarda sus propias credenciales y configuración de tunnel. Cuando ejecutás un tunnel bajo un perfil, Cfmux invoca cloudflared pasándole el contexto de ese perfil específico, de modo que el binario de Cloudflare nunca sabe que hay otros perfiles activos en paralelo.

El mapeo es uno a uno: un perfil activo igual a un proceso cloudflared independiente, con sus propios tokens de autenticación cargados desde el directorio de ese perfil. No hay un proceso maestro que distribuya el tráfico ni nada parecido (spoiler: no hace falta, Cloudflare ya se encarga de eso en su infraestructura).

Lo que Cfmux no toca: el protocolo de tunneling de Cloudflare, la autenticación con los servidores de Cloudflare, el comportamiento de red de cloudflared. Todo eso queda intacto. Cfmux es pura gestión local de procesos y configuraciones.

Casos de uso reales

Agencias digitales con múltiples clientes

Tenés un cliente con su cuenta de Cloudflare en un plan Teams, otro cliente con una cuenta gratuita, y tu propia infraestructura interna. Con Cfmux, cada uno vive en su perfil. Cuando necesitás levantar el tunnel del cliente A, ejecutás el comando apuntando al perfil correspondiente. Sin tocar ninguna config global, sin acordarte qué variable de entorno activa qué cuenta.

Dev / staging / producción en cuentas separadas

Muchos equipos tienen cuentas de Cloudflare separadas por entorno por razones de seguridad o billing. Con Cfmux esto deja de ser un problema: un perfil por entorno, y el workflow de “levantá el tunnel de staging” no requiere cambiar configuración global ni acordarse de qué archivo editar.

Consultores con acceso delegado

Si trabajás como consultor con acceso a las cuentas de Cloudflare de tus clientes (no cuentas propias que creaste para ellos, sino acceso a las cuentas de ellos), el aislamiento de Cfmux evita que uses las credenciales equivocadas en el momento equivocado, que es exactamente el tipo de error que cuesta un cliente. Sobre eso hablamos en profundizar en la plataforma de Cloudflare.

Providers de servicios gestionados

Si gestionás infraestructura para varias empresas desde un mismo servidor de salto o bastion host, podés tener todos los tunnels activos simultáneamente bajo sus perfiles respectivos, gestionados como servicios systemd, sin que ninguno interfiera con los demás.

Integración con systemd

La integración con systemd es probablemente la feature más valiosa para entornos de producción. Cfmux puede generar las units necesarias para que cada tunnel arranque como servicio del sistema, lo que significa inicio automático al bootear el servidor y reinicio automático si el proceso de cloudflared muere por algún motivo.

Los logs de cada tunnel quedan en journalctl asociados a su unit, separados por perfil. Querés ver qué pasó con el tunnel del cliente B el jueves a las 3 AM: journalctl -u cfmux-cliente-b y listo, sin mezclar logs de todos los tunnels en un solo archivo.

Qué está confirmado / Qué no

Confirmado

  • Cfmux existe y fue publicado en mayo de 2026, según el anuncio en dev.to.
  • Es un wrapper en Go sobre el cloudflared oficial, sin protocolos de red propios.
  • Soporta perfiles aislados, separación de runtime e integración con systemd.
  • Está disponible como CLI para entornos Linux con systemd.

Pendiente de confirmar

  • Soporte oficial para macOS o Windows (la integración con systemd sugiere foco en Linux por ahora).
  • Historial de releases y versionado semántico: el proyecto es relativamente nuevo, habría que ver con qué frecuencia actualiza.
  • Compatibilidad con Cloudflare Tunnel en modo Zero Trust vs. cuentas gratuitas: el anuncio no especifica limitaciones por plan.
  • Si tiene tests de integración o CI configurado: tomalo con pinzas para un uso en producción crítica hasta revisar el repositorio.

Errores comunes al gestionar múltiples túneles Cloudflare

Usar variables de entorno globales para las credenciales. Si exportás CLOUDFLARE_API_TOKEN en tu .bashrc o .zshrc, ese token queda activo en toda la sesión. Cuando abrís otra terminal y corrés un tunnel pensando que usás las credenciales del cliente B, estás usando las del cliente A. El tunnel levanta, no hay error, y te enterás del problema mucho después.

Compartir un archivo config.yml entre tunnels de distintas cuentas. cloudflared tiene un archivo de configuración por defecto en ~/.cloudflared/config.yml. Si lo sobreescribís cada vez que cambiás de cuenta, estás un descuido de distancia de mandar el tunnel equivocado al tunnel equivocado. Cfmux elimina este problema por diseño.

No separar el estado de runtime. Cuando un proceso cloudflared escribe información de estado (métricas, health checks, pid file), lo hace en una ubicación que por defecto no está aislada por cuenta. Con múltiples instancias manuales podés tener colisiones de archivos de estado que dan errores difíciles de diagnosticar. La separación de runtime de Cfmux resuelve esto antes de que sea un problema. Cubrimos ese tema en detalle en sobre el ecosistema de Cloudflare.

No usar systemd para tunnels de larga duración. Levantar cloudflared en una sesión de terminal o con nohup es válido para pruebas. Para producción, sin systemd perdés reinicio automático, logs centralizados y gestión del ciclo de vida del proceso. Usar Cfmux sin aprovechar su integración con systemd es dejar la mitad del valor sobre la mesa.

Preguntas Frecuentes

¿Qué es Cfmux exactamente?

Cfmux es una CLI escrita en Go que envuelve a cloudflared, el cliente oficial de Cloudflare Tunnel, para permitir gestionar múltiples cuentas de Cloudflare desde una sola máquina mediante perfiles aislados. No modifica el comportamiento de red ni el protocolo de tunneling: solo organiza las credenciales, el estado de runtime y la configuración por perfil.

¿Cómo gestiono múltiples cuentas de Cloudflare Tunnel sin mezclar credenciales?

Con Cfmux creás un perfil por cuenta. Cada perfil almacena sus propios tokens de autenticación y archivos de configuración en un directorio aislado. Cuando ejecutás un tunnel, siempre lo hacés bajo un perfil específico, y Cfmux pasa las credenciales correspondientes a ese proceso de cloudflared sin tocar el estado global de la máquina.

¿Cloudflared ya soporta múltiples tunnels? ¿Para qué necesito Cfmux?

cloudflared soporta múltiples tunnels dentro de la misma cuenta sin ningún problema. Cfmux es útil cuando tenés múltiples cuentas, no múltiples tunnels en la misma cuenta. Si usás una sola cuenta de Cloudflare, Cfmux no te agrega valor. Si manejás varias cuentas (clientes distintos, entornos separados por billing), ahí aparece el beneficio real.

¿Cuáles son las ventajas de Cfmux sobre usar cloudflared directamente con varios configs?

Las ventajas principales son tres: aislamiento automático de credenciales sin depender de variables de entorno manuales, separación de runtime (cada cuenta corre su propio proceso sin interferir con las demás), y generación de units de systemd para gestionar los tunnels como servicios del sistema con inicio automático y logs centralizados.

¿Cómo integro Cfmux con systemd?

Cfmux genera las units de systemd correspondientes a cada perfil configurado. Una vez generadas, las instalás con los comandos estándar de systemd (systemctl enable, systemctl start) y los tunnels quedan gestionados como servicios del sistema. Los logs van a journalctl separados por perfil, y el reinicio automático ante fallos queda delegado al init system.

Conclusión

Cfmux no resuelve un problema técnico de Cloudflare Tunnel, porque Cloudflare Tunnel no tiene ese problema. Resuelve el problema humano de gestionar múltiples cuentas sin un sistema que las organice. La diferencia entre manejarlo a mano (con variables de entorno, configs dispersas y mucho depender de la memoria) y tener perfiles aislados con systemd integrado es la diferencia entre algo que “funciona si no me olvido” y algo que simplemente funciona.

Para consultores, agencias o cualquier equipo que opere infraestructura de múltiples clientes o cuentas separadas por entorno, vale la pena mirarlo. El riesgo de mezclar credenciales en un tunnel mal configurado, enviando tráfico del cliente A por la cuenta del cliente B, es real y el costo de ese error es alto.

Dicho esto, el proyecto es nuevo (mayo 2026) y habría que revisar el repositorio antes de meterlo en producción crítica. Un wrapper bien diseñado con pocos commits todavía no es lo mismo que uno battle-tested.

Fuentes

Te puede interesar...