Solución Intermedia: Compilación Remota de PreTeXt vía Servidor Python y curl

Solución Intermedia: Compilación Remota de PreTeXt vía Servidor Python y curl

Esta guía documenta una solución práctica para compilar libros PreTeXt en un entorno mixto usando un servidor Python HTTP y curl como puente entre la laptop y la desktop.


🧩 1. Contexto

El entorno es el siguiente:

Laptop (HIROSHIMA)
│
├── Proyecto: C:\Proyectos\Libro_Generico_PreText
│
└── VS Code (cliente SSH)
       │
       └── Conectado a Desktop (192.168.0.241 con Docker Desktop)

La desktop tiene Docker, pero no ve las unidades SMB o el PATH del usuario al conectarse por SSH.
Para evitar dependencias complejas, se emplea un servidor Python local y transferencias HTTP con curl.


⚙️ 2. Iniciar un servidor Python en la laptop

Desde la laptop HIROSHIMA, abre una terminal y ejecuta:

cd "C:\Proyectos\Libro_Generico_PreText"
python -m http.server 8000

Esto inicia un servidor HTTP en:

http://192.168.0.XXX:8000/

(reemplaza XXX por la IP real de HIROSHIMA en tu red).

Cualquier dispositivo en la red local puede acceder a los archivos del proyecto.


🧠 3. Descargar archivos desde la Desktop con curl

Desde la desktop (192.168.0.241), abre PowerShell o VS Code remoto y ejecuta:

curl http://192.168.0.XXX:8000/project.ptx -o project.ptx

También puedes descargar carpetas comprimidas o scripts adicionales:

curl http://192.168.0.XXX:8000/source.zip -o source.zip
Expand-Archive source.zip -DestinationPath .

De esta forma, la desktop obtiene los archivos más recientes del proyecto sin depender de SMB o de unidades mapeadas.


🧩 4. Compilar en la Desktop con Docker

Una vez descargados los archivos, ejecuta la compilación con Docker (o dentro de WSL):

wsl -d docker-desktop docker run --rm `
  -v "//C/Users/rommel/Libro_Generico_PreText:/workspace" `
  -w /workspace `
  pretext-curso `
  pretext build web

Los resultados se generarán en la carpeta /output/web del proyecto.


⚙️ 5. Publicar los resultados con servidor Python en la Desktop

Para visualizar el libro compilado, puedes servirlo desde la desktop:

cd "C:\Users\rommel\Libro_Generico_PreText\output\web"
python -m http.server 8080

Desde la laptop, abre en tu navegador:

http://192.168.0.241:8080/

✅ Verás el libro PreTeXt compilado y servido directamente desde la desktop.


🔁 6. Flujo mixto completo

[Laptop HIROSHIMA]                               [Desktop 192.168.0.241]
──────────────────────────────────────────────────────────────────────────────
python -m http.server 8000  ←──  curl http://HIROSHIMA:8000/... (descarga fuentes)
                                     │
                                     ├── docker run ... pretext build web
                                     │
python -m http.server 8080  ───→  (sirve /output/web para laptop o navegador)

Este flujo es simple, reproducible y multiplataforma, sin configuraciones extra de SSH o Docker en PATH.


🧰 7. Scripts de automatización opcionales

serve-pretext.ps1 (para la laptop)

param([int]$port = 8000)
Write-Host "Levantando servidor HTTP en puerto $port..."
cd "C:\Proyectos\Libro_Generico_PreText"
python -m http.server $port

fetch-pretext.ps1 (para la desktop)

param(
  [string]$server = "192.168.0.XXX",
  [string]$file = "project.ptx"
)
Write-Host "Descargando $file desde $server..."
curl "http://$server:8000/$file" -o $file
Write-Host "Descarga completa. Listo para compilar."

✅ 8. Ventajas de esta solución

  • No depende de que SSH o Docker Desktop compartan el mismo entorno PATH.
  • Evita los conflictos con unidades de red mapeadas (Z:, X:, etc.).
  • Usa herramientas universales (python, curl) disponibles en cualquier entorno.
  • Permite visualización inmediata del build web desde cualquier dispositivo de la red.

Autor: Rommel Contreras
Última actualización: 11 de octubre de 2025