Acceso remoto
ThreadCells prioriza loopback: el servidor debe escuchar en 127.0.0.1, no en una interfaz pública. La Web UI habitual es una consola de operador y no ofrece un límite general de inicio de sesión.
No expongas directamente el puerto sin procesar de ThreadCells a Internet pública.
Elige un túnel SSH para acceso ocasional. Usa un proxy inverso HTTPS autenticado cuando necesites una URL permanente y el propietario del host haya aprobado explícitamente ese límite de autenticación/proxy.
Opción A: túnel SSH
Desde tu portátil, conéctate al host de ThreadCells y reenvía un puerto local:
ssh -L 9889:127.0.0.1:9889 user@serverMantén abierta esa sesión SSH y visita:
http://127.0.0.1:9889El navegador se conecta al puerto 9889 de tu portátil. SSH cifra el tráfico y lo envía a 127.0.0.1:9889 del servidor. ThreadCells sigue escuchando solo en la interfaz loopback del servidor.
Si el puerto local 9889 está ocupado, usa otro puerto local:
ssh -L 19889:127.0.0.1:9889 user@serverDespués abre http://127.0.0.1:19889. El túnel termina cuando SSH se desconecta; vuelve a conectarte con el mismo comando. OpenSSH ofrece la misma sintaxis -L en instalaciones actuales de Linux, macOS y Windows.
Opción B: Caddy y Authelia
Para una URL permanente práctica, coloca autenticación y HTTPS delante de ThreadCells:
Browser
↓ HTTPS
Caddy reverse proxy
↓ forward-auth
Authelia login and second factor
↓ approved request
ThreadCells at 127.0.0.1:9889Caddy termina TLS y actúa de proxy para tráfico HTTP/WebSocket. Authelia proporciona el límite de autenticación de usuario. ThreadCells permanece como upstream local; esta configuración no inventa un segundo sistema de autorización de ThreadCells.
Requisitos previos
- Registros DNS para
threadcells.example.comyauth.example.comque apunten al host; - puertos TCP entrantes 80 y 443 disponibles para Caddy;
- ThreadCells en buen estado en
127.0.0.1:9889; - Caddy y Authelia instalados según sus instrucciones oficiales;
- almacenamiento de Authelia, secretos de sesión, notificador y al menos un usuario configurados de forma segura.
THREADCELLS_TRUSTED_PROXY_ORIGINS=https://threadcells.example.comestablecido en el entorno de servicio ThreadCells existente.
Usa la guía oficial de instalación de Caddy y la guía oficial de primeros pasos de Authelia. Authelia documenta despliegues tanto bare-metal como en contenedores.
Conecta Caddy con Authelia
Sigue la guía actual de integración de Caddy de Authelia. Una forma compacta de Caddyfile es:
auth.example.com {
reverse_proxy 127.0.0.1:9091
}
threadcells.example.com {
forward_auth 127.0.0.1:9091 {
uri /api/authz/forward-auth
copy_headers Remote-User Remote-Groups Remote-Email Remote-Name
}
reverse_proxy 127.0.0.1:9889 {
header_up Host 127.0.0.1:9889
}
}Trata esto como la conexión entre los servicios, no como una configuración completa de Authelia. En Authelia, configura las URL públicas, el dominio de cookies, la política de control de acceso, usuarios, notificador, almacenamiento y un segundo factor usando sus guías oficiales. Guarda los secretos generados fuera del repositorio. Reinicia ThreadCells después de añadir o cambiar THREADCELLS_TRUSTED_PROXY_ORIGINS; el valor es una lista de permitidos exacta de orígenes HTTPS separada por comas, sin ruta. Permite que las mutaciones del operador autenticadas con cookies acepten el origen público del navegador sin confiar en cabeceras arbitrarias de proxy.
forward_auth de Caddy comprueba cada solicitud antes de que llegue a ThreadCells. La sustitución upstream de Host conserva el límite Trusted Host solo-loopback de ThreadCells mientras Caddy posee el nombre de host externo y el límite de autenticación. reverse_proxy de Caddy admite actualizaciones WebSocket, que utiliza el terminal en vivo.
Inicia y valida
Valida la configuración antes de recargar servicios:
caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy
sudo systemctl status caddy authelia --no-pagerDespués verifica todo lo siguiente:
https://auth.example.compresenta la página esperada de Authelia;- visitar
https://threadcells.example.comsin iniciar sesión se deniega o redirige; - iniciar sesión y completar el segundo factor configurado abre ThreadCells;
- un terminal de agente transmite salida y se reconecta tras actualizar el navegador;
curl http://127.0.0.1:9889/healthsigue funcionando en el host;- el puerto 9889 no es accesible públicamente.
Problemas comunes
- Bucle de redirección: la URL pública de Authelia, el dominio de cookies o el host de control de acceso no coincide con DNS. Compáralos exactamente.
- 502 Bad Gateway: Caddy no puede alcanzar el listener local de ThreadCells o Authelia. Comprueba ambos servicios y sus puertos loopback.
- El inicio de sesión funciona pero el terminal no transmite: confirma que la solicitud llega al
reverse_proxyde Caddy sin otro proxy que elimine las cabeceras de actualización WebSocket. - Falla la emisión del certificado: comprueba el DNS público y los puertos entrantes 80/443. La documentación de HTTPS automático de Caddy explica los requisitos.
Mantén disponible el reenvío SSH como ruta de emergencia. Sigue siendo útil cuando se reparan DNS, TLS o la capa de autenticación externa.
