Llegar al relay por un Cloudflare Tunnel
Un Cloudflare Tunnel le da a tu relay una dirección HTTPS pública sin un
servidor propio y sin abrir un puerto en tu router. OAR puede ejecutar el
programa cloudflared de Cloudflare por ti: lo arranca con el relay, lo
reinicia cuando se cae y muestra su estado en el punto de estado. Elígelo cuando
tengas un dominio en Cloudflare y quieras llegar al relay desde un teléfono u
otra red, o cuando necesites HTTPS para instalar la página como app
y para las notificaciones push.
cloudflared se conecta hacia fuera, a Cloudflare. El relay sigue escuchando
solo en esta máquina (localhost sigue en true), y Cloudflare lleva las
solicitudes a tu nombre de host por esa conexión hasta el puerto del relay.
Lo que necesitas #
- Una cuenta de Cloudflare con Zero Trust, y un dominio (una zona) en ella para el nombre de host público.
cloudflaredinstalado en la máquina que ejecuta el relay. OAR no lo incluye ni lo instala.- Un túnel que crees en Cloudflare. OAR lo ejecuta a partir del token del túnel.
El relay ejecuta el programa indicado en cloudflared o, si no, el
cloudflared que encuentre en su PATH. Instálalo con:
| Sistema | Instalación |
|---|---|
| Windows | winget install --id Cloudflare. |
| macOS | brew install cloudflared |
| Linux | El repositorio de paquetes de Cloudflare (Debian, Ubuntu, RHEL): pkg.cloudflare.com |
En Windows, un lanzador . o . no funciona. OAR arranca un archivo
. o ..
Un solo tipo de túnel
OAR admite un túnel que se ejecuta a partir de un token, el tipo que Cloudflare
llama túnel gestionado de forma remota. No hay ningún ajuste para un archivo de
credenciales ni para el nombre de un túnel, ni tampoco para un túnel rápido con
una dirección aleatoria. Si ejecutas un túnel así por tu cuenta, arranca
cloudflared fuera de OAR. OAR no sabrá nada de él.
Configurarlo #
- En tu cuenta de Cloudflare Zero Trust, crea un túnel. Copia su token.
- Dale al túnel un nombre de host público en tu zona, por ejemplo
relay., y apúntalo aexample. com http://. Si cambiastelocalhost: 3333 portenconfig., usa ese puerto. Este enrutamiento vive en Cloudflare, no en tu máquina.json - Añade el bloque
cloudflaredaTunnel config.con el token (consulta Claves de configuración).json - Reinicia el relay con
oar restart.
Abre https:// en un navegador. Inicias sesión con el token de acceso
como siempre.
El bloque de configuración #
{
"cloudflaredTunnel": {
"mode": "managed",
"required": false,
"token": "<tunnel token>",
"binary": "cloudflared",
"extraArgs": []
}
}
| Clave | Tipo | Valor predeterminado | Qué hace |
|---|---|---|---|
mode |
"disabled" o "managed" |
"disabled" |
managed hace que el relay ejecute cloudflared. |
token |
cadena | ninguno | El token del túnel. Obligatorio con managed; sin él, el túnel queda desactivado y el registro dice por qué. |
required |
booleano | false |
Mientras el túnel no está conectado, el relay deja de tomar mensajes de la queue. Consulta Túnel obligatorio. |
binary |
cadena | cloudflared |
El programa: una ruta absoluta o un nombre que se busca en PATH. Una ruta debe apuntar a un archivo ejecutable. Una ruta relativa que contiene una carpeta cuenta desde la carpeta del programa del relay, así que usa una absoluta. |
extra |
array de cadenas | [] |
Argumentos que se añaden después de cloudflared tunnel run --token <token>. Las entradas vacías se descartan. |
La forma antigua "enabled": true sigue funcionando para mode: "managed". Tres
variables de entorno sustituyen al archivo: COPILOT_,
COPILOT_ y COPILOT_. La
referencia de config.json lista
las claves junto con los demás ajustes del túnel, y la página de
variables de entorno lista las
variables.
El relay le pasa el token a cloudflared como argumento de la línea de comandos
(cloudflared tunnel run --token <token>), no a través del entorno. En una
máquina con otros usuarios, el token puede aparecer por tanto en la lista de
procesos en ejecución. El registro del relay lo muestra como <redacted>.
Cómo se comporta #
- Arranque y parada. El relay arranca
cloudflaredcuando arranca y lo detiene (con una señal de terminación) cuando se apaga. - Conectado. El túnel cuenta como conectado cuando
cloudflaredinforma de una conexión registrada o, a falta de eso, cuando lleva cinco segundos en ejecución. - Caídas. Cuando
cloudflaredtermina, el relay lo vuelve a arrancar tras una espera de unos 5, 10, 20, 40 y luego 60 segundos, cada una con hasta un 20 % añadido. Los pasos vuelven a empezar tras una conexión que duró más de 30 segundos. - Token incorrecto o túnel eliminado. Si
cloudflaredtermina en menos de 10 segundos tres veces seguidas, el relay informa del errorauth-y a partir de entonces solo lo reintenta aproximadamente una vez por minuto.or- config - Sin
cloudflared. El relay arranca como siempre y el túnel queda desactivado. Vuelve a mirar cada minuto y arranca el túnel en cuanto el programa está ahí. Si lo instalaste en una carpeta que no está en elPATHdel relay, reinicia el relay.
Túnel obligatorio #
Con required: true el relay no toma mensajes de la queue mientras el túnel no
está conectado. Eso incluye el tiempo hasta la primera conexión y la falta de
cloudflared o del token. Úsalo cuando el relay solo te sirva si puedes llegar
a él desde fuera. Los mensajes esperan en la queue y se ejecutan en cuanto el
túnel está conectado (consulta los turns y la queue).
Ver el estado #
| Dónde | Qué muestra |
|---|---|
| Punto de estado | Ámbar, con el tooltip Web relay reachable via Cloudflare Tunnel (Relay web accesible mediante Cloudflare Tunnel), mientras el túnel está conectado. Verde cuando está configurado pero no conectado: el tooltip dice Web relay reachable; Cloudflare tunnel disconnected (cloudflared. El relay sigue respondiendo. Consulta el menú y la apariencia. |
oar status |
Una línea Tunnel: cuando el túnel está activado: running, not connected, not connected (<reason>) u off: <reason>. Con el relay detenido, muestra el mismo texto que oar doctor. Consulta oar status. |
oar doctor |
disabled, managed (cloudflared: <path>) o managed, cannot start: <reason>. Solo lee la configuración y no cambia nada. Consulta oar doctor. |
| El registro | Líneas que empiezan por [cloudflared-: el comando (con el token mostrado como <redacted>), Tunnel connected, las salidas y los retrasos de reconexión, y la propia salida de cloudflared. |
El relay no conoce tu nombre de host público, porque el enrutamiento vive en Cloudflare, así que ninguno de estos lo muestra.
Distinguir el tráfico del túnel #
Cloudflare añade una cabecera cf- a cada solicitud que reenvía. El relay la
usa para distinguir una solicitud que llegó por el túnel de una hecha en esta
máquina. Para tratar también así las cabeceras que añade tu propio edge,
lístalas en tunnel. public lista los nombres de host
que llegan al relay, y trust indica de qué proxies se fía el relay en
cuanto a la dirección reenviada. El valor predeterminado, "loopback", sirve
para cloudflared en la misma máquina. Las tres están en la
referencia de config.json.
Un segundo nombre de host para las vistas previas #
Las vistas previas necesitan su propio nombre de host,
para que una app en vista previa nunca comparta una cookie de inicio de sesión
con el relay. Añádelo al mismo túnel como un segundo nombre de host público que
apunte al listener de las vistas previas (http:// de forma
predeterminada). La página de vistas previas
tiene el ejemplo de ingress y el bloque previews. Pon el nombre de host del
relay en public.
Cloudflare Access delante del relay #
Una aplicación de Cloudflare Access sobre el nombre de host del relay se aplica
a todos los visitantes, incluidos los espectadores de una
conversación compartida. Sin una excepción, se
les pide que inicien sesión y el enlace no funciona. Deja pasar / y
/ sin inicio de sesión.
No añadas una regla de caché de Cloudflare para /. Una página
compartida vuelve a cargar esa dirección para seguir la conversación, y una
respuesta en caché seguiría mostrando un estado antiguo. El relay marca cada
respuesta de la API con Cache-, y cada respuesta con
CDN- y Cloudflare- fijados a no-.
Cloudflare obedece esas dos antes que una regla de caché de tu zona.
Seguridad #
Un túnel pone el relay en internet. Lo que mantiene fuera a los demás es el token de acceso. Consulta El token de acceso y quién llega al relay y Qué expone OAR.
Los workers de sesión del relay se conectan por sockets que solo funcionan en
esta máquina. Como un túnel público reenvía todas las rutas, el relay responde
403 a una solicitud en esas rutas que lleve cf- o una de tus
tunnel, y el registro lo anota con [tunnel-. Los enlaces
compartidos, que llegan por el túnel sin inicio de sesión, no se ven afectados.
Solución de problemas #
| Lo que ves | Qué hacer |
|---|---|
El tooltip dice Cloudflare tunnel off: cloudflared is not installed (Túnel de Cloudflare desactivado: cloudflared no está instalado) (seguido de cómo instalarlo), o oar doctor dice cloudflared is not installed |
Instala cloudflared (consulta Lo que necesitas). El túnel arranca en menos de un minuto. |
cloudflared was not found as configured (<path>) |
cloudflared no apunta a nada. Corrige la ruta o borra la clave para usar cloudflared desde PATH. |
cloudflared |
Añade el token a la configuración o fija COPILOT_. |
Tunnel: not connected (auth- |
cloudflared termina una y otra vez nada más arrancar. Comprueba el token y que el túnel siga existiendo en Cloudflare. El registro tiene el propio mensaje de cloudflared. |
Tunnel: not connected (exit:<code>) |
cloudflared terminó con ese código de salida. El relay lo está reintentando; lee el registro. |
| El punto sigue verde aunque abriste el relay por el túnel | El túnel no está conectado desde el lado del relay. Lee el tooltip y oar status. |
| Los mensajes no se ejecutan y la queue está en pausa | required es true y el túnel no está conectado. Arregla el túnel o fija required a false. |
| Un enlace compartido le pide al espectador que inicie sesión | Cloudflare Access se interpone. Deja pasar / y /. |
| Una página compartida muestra un estado antiguo | Una regla de caché cubre /. Quítala. |
403 en una ruta del worker de sesión |
Es lo esperado: esas rutas están cerradas al tráfico del túnel. |
cloudflared está instalado, pero el túnel no arranca |
Puede que el relay no lo vea en su PATH. Fija binary a la ruta completa y ejecuta oar restart. |