WSL2 es una plataforma ideal para desarrollo distribuido y remoto gracias a su entorno Linux real y la capacidad de integrarse con herramientas modernas como VS Code Dev Tunnels y Tailscale. Estas soluciones permiten exponer servicios en desarrollo de forma segura a través de túneles públicos o redes privadas virtuales, sin abrir puertos en el router o usar VPNs corporativas complejas.
Este artículo explica cómo configurar y usar ambas herramientas desde WSL2 para exponer APIs, servidores locales, entornos de testing o aplicaciones completas a otros miembros del equipo o entornos externos.
¿Qué son VS Code Dev Tunnels y Tailscale?
- Dev Tunnels: una funcionalidad integrada en Visual Studio Code que permite exponer un puerto local a internet de forma segura, ideal para compartir un servidor local en segundos.
- Tailscale: una VPN mesh que conecta dispositivos mediante WireGuard en una red privada segura, ideal para exponer servicios a otros dispositivos del equipo sin necesidad de configuración de red avanzada.
Paso 1: Requisitos previos
- Windows 11 con WSL2 activo
- VS Code y la extensión Remote - WSL
- Cuenta de GitHub o Microsoft para autenticación en Dev Tunnels
- Cuenta de Tailscale gratuita (https://tailscale.com)
- Distro Ubuntu actualizada
Paso 2: Usar Dev Tunnels en VS Code con WSL2
- Abrir el proyecto en VS Code usando
Remote - WSL
. - Iniciar un servidor local en WSL2, por ejemplo:
python3 -m http.server 8000
- Desde la paleta de comandos (
Ctrl+Shift+P
), ejecutar:
Dev Tunnels: Create Tunnel...
- Elegir el puerto (ej. 8000) y tipo de acceso (authenticated/public).
- Copiar la URL generada (ej.
https://<hash>.dev.tunnels.api.visualstudio.com
) y compartirla.
El túnel redirige tráfico HTTPS desde internet hacia tu entorno WSL2 local sin configuraciones de firewall ni puertos.
Paso 3: Instalar Tailscale en WSL2
En la terminal de Ubuntu en WSL2:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
Esto abrirá una URL de autenticación en el navegador. Una vez aceptado, tu máquina WSL2 estará conectada a la red privada de Tailscale.
Ver dispositivos conectados:
tailscale status
Paso 4: Exponer un servicio local vía Tailscale
Ejecutar un servidor dentro de WSL2:
uvicorn main:app --host 0.0.0.0 --port 5000
Compartir la dirección http://<tailscale-ip>:5000
con otro miembro del equipo en la misma red Tailscale.
Opcionalmente, habilitar el proxy MagicDNS de Tailscale para usar nombres como ubuntu-wsl2.tailnet-name.ts.net
.
Paso 5: Casos de uso combinados
- Exponer una API en desarrollo a un tester sin acceso al repositorio
- Probar una interfaz frontend desde una app móvil real vía Tailscale
- Compartir un notebook Jupyter ejecutado desde WSL2 con Dev Tunnels
- Simular múltiples entornos conectados entre sí (ej. base de datos + backend)
Seguridad
- Dev Tunnels usa TLS y autenticación con tu cuenta GitHub o Microsoft
- Tailscale cifra todo el tráfico entre dispositivos con WireGuard
- Recomendado usar entornos virtuales o contenedores con puertos limitados
- Evitar exposición de
/mnt/c
y no ejecutar como root innecesariamente
Conclusión
WSL2, combinado con VS Code Dev Tunnels y Tailscale, proporciona un entorno flexible y seguro para desarrollo distribuido. Permite exponer servicios en segundos, colaborar con otros sin complejidad de red y trabajar desde Windows con las ventajas de un entorno Linux real. Esta integración es clave para flujos modernos, equipos remotos y testing distribuido.
Ver también
- Construcción de un asistente contextual para escritorio usando IA local con acceso al sistema
- Integración de inferencia local ONNX con Windows ML en apps modernas
- Integración con servicios locales vía App Services y extensión de funcionalidades entre apps
- Implementación de Background Tasks persistentes en apps modernas
- Empaquetado de apps modernas con MSIX y configuración avanzada del manifiesto