Acceso por Tailscale
Llega a purplemux desde el móvil sobre HTTPS vía Tailscale Serve — sin redireccionar puertos, sin malabares con certificados.
Por defecto purplemux solo escucha localmente. Tailscale Serve es la forma más limpia de exponerlo a tus otros dispositivos: cifrado WireGuard, certificados Let's Encrypt automáticos y cero cambios en el firewall.
Por qué Tailscale
- WireGuard — cada conexión está cifrada de dispositivo a dispositivo.
- HTTPS automático — Tailscale provisiona un certificado real para
*.<tailnet>.ts.net. - Sin redirección de puertos — tu máquina nunca abre un puerto al internet público.
- HTTPS es obligatorio para iOS — la instalación de PWA y Web Push se niegan a funcionar sin él. Consulta Configuración de PWA y Web Push.
Requisitos previos
- Una cuenta de Tailscale, con el demonio
tailscaleinstalado y con sesión iniciada en la máquina que ejecuta purplemux. - HTTPS activado en el tailnet (Admin console → DNS → activar HTTPS Certificates, si no lo está ya).
- purplemux corriendo en el puerto por defecto
8022(o donde hayas puestoPORT).
Ejecutarlo
Una línea:
tailscale serve --bg 8022
Tailscale envuelve tu http://localhost:8022 local en HTTPS y lo expone dentro del tailnet en:
https://<machine>.<tailnet>.ts.net
<machine> es el hostname de la máquina; <tailnet> es el sufijo MagicDNS de tu tailnet. Abre esa URL en cualquier otro dispositivo con sesión iniciada en el mismo tailnet y estás dentro.
Para parar el serve:
tailscale serve --bg off 8022
Qué puedes hacer cuando funciona
- Abrir la URL en el móvil, tocar Compartir → Añadir a pantalla de inicio, y seguir Configuración de PWA.
- Activar el push desde dentro de la PWA standalone: Web Push.
- Llegar al mismo panel desde una tablet, un portátil u otro escritorio — el estado del espacio de trabajo se sincroniza en tiempo real.
Reverse-proxy como alternativa
Si Tailscale no es una opción, cualquier reverse proxy con un certificado TLS real sirve. Lo único que tienes que hacer bien son las mejoras WebSocket — purplemux las usa para E/S de terminal, sincronización de estado y la línea de tiempo en directo.
Nginx (esbozo):
location / {
proxy_pass http://127.0.0.1:8022;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400;
}
Caddy es más simple — reverse_proxy 127.0.0.1:8022 se encarga de las cabeceras de upgrade automáticamente.
Sin reenvío de Upgrade / Connection el panel se renderiza, pero los terminales nunca conectan y el estado se queda atascado. Si algo va a medias, sospecha de esas cabeceras primero.
Solución de problemas
- HTTPS aún no provisionado — el primer certificado puede tardar un minuto. Volver a ejecutar
tailscale serve --bg 8022tras esperar un poco suele resolverlo. - El navegador avisa del certificado — asegúrate de estar accediendo a la URL
<machine>.<tailnet>.ts.netexacta, no a la IP de la LAN. - El móvil dice "no accesible" — confirma que el móvil tiene sesión iniciada en el mismo tailnet y que Tailscale está activo en los ajustes del SO.
- Certificados autofirmados — Web Push no se registrará. Usa Tailscale Serve o un certificado ACME real vía tu reverse proxy.
Siguientes pasos
- Configuración de PWA — instala en la pantalla de inicio ahora que tienes HTTPS.
- Notificaciones Web Push — activa las alertas en segundo plano.
- Seguridad y autenticación — contraseña, hashing y qué implica la exposición al tailnet.