wsl port suite
Volver a proyectos

wsl port suite

python windows wsl2 networking ssh netsh devops rest-api mcp cybersecurity automation

Publica cualquier servicio de tu WSL en Internet con 1 clic. wsl-port-unified gestiona tus distros WSL2 y expone sus servicios al mundo (tu laptop → un VPS → Internet) en una sola acción, desde una ventana, un comando, un panel web, una API REST o un agente de IA.

Python 3.11+ Windows MCP MIT

El objetivo: tu propia “nube” en una computadora local

Los proveedores de VPS y de máquinas virtuales ofrecen algo que toda laptop con WSL2 ya tiene por dentro: múltiples máquinas Linux aisladas, con sus IPs, sus recursos y sus servicios escuchando en puertos. Lo que falta en una máquina local es el resto del paquete: que esas “máquinas” se administren fácil, que sus servicios puedan quedar publicados en Internet como en la nube, y que sigan accesibles aunque la IP interna cambie o el túnel caiga.

wsl-port-unified construye exactamente ese puente: convierte una computadora con WSL2 en un mini-proveedor de VPS personal — cada distro es una “máquina virtual”, y cualquier puerto de cualquiera de ellas puede quedar visible en Internet a través de un VPS, con la misma experiencia de “levantar un servicio y que se vea desde fuera” que dan los proveedores cloud, pero sin desplegar nada ni pagar instancias extra.

El problema que resuelve

Un desarrollador con WSL2 necesita, con frecuencia, que algo que corre en su laptop esté visible desde fuera: una API que revisa un compañero, una demo en una entrevista, un webhook de Stripe que golpea su servidor local. Lo que en la nube es encender una VM y abrir un puerto, en local es un ritual manual de cinco pasos, cada uno con su propia forma de romperse:

Paso tradicional Cómo falla
1. Iniciar la distro WSL Hay que acordarse; la distro “duerme” y su estado se pierde.
2. Averiguar la IP interna de WSL Cambia en cada reinicio → cualquier configuración anterior queda obsoleta.
3. Crear el reenvío netsh + regla de firewall Comandos largos, propensos a errores, que hay que rehacer a mano tras reiniciar.
4. Configurar el VPS (SSH, GatewayPorts) Un detalle mal puesto y el puerto público no escucha.
5. Levantar el túnel SSH Muere en silencio: NAT, cortes de Wi‑Fi, laptop suspendida — el servicio sigue vivo pero nadie lo ve.

Además, dos dominios que siempre van juntos (la distro y su exposición en red) vivían en dos herramientas separadas con configuraciones duplicadas.

En resumen: el flujo completo de “publicar mi servicio local como si fuera una VM en la nube” no existía como una sola cosa, y cada eslabón se rompía por separado.

La solución

wsl-port-unified convierte esos cinco pasos en una acción atómica y reversible:

  • Publicar en Internet en 1 clic: eliges distro, puerto local, VPS y puerto público — la app asegura que la distro esté corriendo, obtiene su IP actual, crea el forward netsh con su regla de firewall y levanta el túnel SSH reverse. Un solo clic, un solo comando. unpublish revierte todo sin dejar huellas de red.
  • Autocuración: un supervisor compara constantemente lo que debería estar vivo con lo que está vivo. Si la IP de WSL cambió, reaplica el forward; si el túnel cayó, lo reinicia con backoff exponencial; si el servicio de fondo murió, hace health gate y pausa la exposición en lugar de publicar un error 502.
  • Un solo lugar para los dos dominios: integra gestión de distros WSL2 (ciclo de vida, IPs, snapshots, límites de recursos, autoarranque) y port forwarding (forwards, túneles, VPS, tráfico, latencia) en una sola aplicación con configuración unificada.
  • Seis formas de operarla, mismo resultado: GUI de 6 pestañas, CLI, panel web, API REST y servidor MCP para agentes de IA — todas comparten el mismo núcleo, así que una automatización puede operar la app sin interfaz gráfica.
  • Arranque cero fricción: la app vive en la bandeja del sistema y puede iniciar con Windows; al encender el equipo, tus distros, forwards y túneles se restauran solos.
sequenceDiagram
    actor U as Usuario
    participant P as wsl-port-unified
    participant D as Distro WSL
    participant N as netsh + firewall
    participant V as VPS (SSH)
    U->>P: publicar servicio (1 clic)
    P->>D: ¿distro viva? obtiene IP actual
    D-->>P: IP de la distribución
    P->>N: crea forward + regla de firewall
    N-->>P: reenvío activo
    P->>V: abre túnel SSH reverse con keepalive
    V-->>P: túnel activo
    P-->>U: "Tu servicio está en http://TU_VPS:puerto"
    Note over P,V: y lo mantiene vivo: si la IP cambia o el túnel cae,<br/>el supervisor lo reconcilia solo

Qué hace, concretamente

Capacidad Qué obtienes
Publicar en Internet (1 clic) ⭐ Cualquier puerto de cualquier distro WSL queda accesible vía tu VPS, con acción inversa limpia.
Gestión de distros WSL2 Estado, IPs, iniciar/detener/reiniciar, métricas (RAM, CPUs, uptime), snapshots, clones, export/import, crear/eliminar distros.
Forwards Windows → WSL Redirecciones netsh portproxy + firewall administradas: alta, edición, test TCP, detección de conflictos de puerto y limpieza.
Túneles SSH al VPS Reverse multi-puerto con keepalive, health gate, latencia, tráfico por túnel, reinicio automático con backoff y gestión de servidores VPS.
Supervisor autónomo Detección de drift (config vs realidad), circuit breaker ante fallos de WSL y reconciliación sin intervención.
Automatización Scheduler por días/hora, perfiles de exposición (capturar/aplicar en otra máquina), modo mantenimiento, autoarranque con delay.
Observabilidad Logs en vivo, alertas, journal SQLite de eventos, uptime, diagnóstico (doctor) y eventos en streaming (watch).
Recursos del subsistema Límites .wslconfig (RAM, CPUs, swap) con validación y rollback seguro.
API + MCP API REST con tokens y scopes; 29 tools MCP para que Claude Code, Cursor o Zed operen tu infra local.

Cómo está construido

Interfaces → servicio de dominio → providers que hablan con el SO o con servicios remotos. La pieza nueva es el PublishService, que orquesta los tres dominios (distro, forward, túnel) como una sola operación.

flowchart TB
    subgraph Interfaces["5 superficies, un mismo núcleo"]
        GUI["GUI · bandeja"]
        CLI["CLI"]
        WEB["Panel web"]
        API["API REST · scopes"]
        MCP["MCP · agentes IA"]
    end
    subgraph Core["Core"]
        PUB["PublishService\npublicar / despublicar"]
        SUP["Supervisor\nloop de reconciliación"]
        SCHED["Scheduler · perfiles · mantenimiento"]
        OBS[("Alertas, métricas\ny journal SQLite")]
        SEC["Secretos cifrados\n(DPAPI)"]
    end
    subgraph Providers["Providers"]
        NETSH["netsh + firewall"]
        WSLIP["IP dinámica de WSL"]
        SSH["túneles SSH"]
        EDGE["Tailscale · Cloudflare"]
    end
    GUI & CLI & WEB & API & MCP --> PUB & SUP
    PUB --> SUP
    SUP --> NETSH & WSLIP & SSH & EDGE
    SUP --> OBS
    Core --> SEC

La app integra por dentro (vendoriza) dos herramientas previas —gestión WSL y port forwarding— en lugar de llamarlas por fuera: el resultado es un producto autosuficiente, sin dependencias externas ni configuraciones duplicadas.

Impacto

  • De 5 pasos propensos a error a 1 acción reversible: publicar deja de requerir memoria muscular y terminal.
  • De “¿por qué mi demo dejó de funcionar?” a autocuración: la caída del túnel o el cambio de IP dejan de ser incidencias; el sistema las resuelve y las registra.
  • De dos apps con configs duplicadas a un producto unificado con paridad total entre interfaces y explicable a agentes de IA vía MCP.
  • Una laptop se comporta como un mini-VPS personal: máquinas Linux aisladas, administrables y publicables en Internet, sin desplegar en la nube.

Instalar

El proyecto es open source (MIT) y se instala desde el repositorio de GitHub, donde están el inicio rápido, el CLI completo y la documentación:

👉 github.com/gilmanpro/wsl-port-unified

Requisitos: Windows 10/11 con WSL2, Python 3.11+ y un VPS con SSH. Tras la instalación, la forma más simple de arrancarla es doble clic en su lanzador: todo queda en segundo plano en la bandeja del sistema.

Proyectos relacionados

Este proyecto es el principal de la familia; los demás solo se mencionan por su vínculo con él:

Repo Relación
wsl-distro-manager Base de gestión WSL2 · integrada en wsl-port-unified
portforward-tunnels Base de puertos y túneles · integrada en wsl-port-unified
portrelay Variante headless multiplataforma extraída de la auditoría de seguridad

Repositorio: github.com/gilmanpro/wsl-port-unified

Autor: Gilberto Castillo · LinkedIn · Portafolio

Volver a proyectos