Alemán Sin Miedo
← Volver a los documentos

Publicación en aleman.brunobohm.com

Estado: web estática preparada; subdominio y alojamiento pendientes de configurar. No se ha realizado un despliegue en el servidor del usuario ni se ha comprobado esa URL.

Flujo acordado

Codex modifica el proyecto, genera los HTML, ejecuta comprobaciones y hace git push a GitHub. En el servidor se descarga la actualización mediante git pull --ff-only por SSH. Los HTML generados se incluyen en Git: el servidor no necesita Python, Node ni compilación para esta primera web.

La primera entrega es una web de seguimiento y documentación. La WebApp de aprendizaje sigue contemplada y se desarrollará por fases; no hay todavía cuentas, ejercicios ni evaluación oral operativa. Esta web no solicita micrófono ni recopila grabaciones.

Preparación del alojamiento

  1. Crear aleman.brunobohm.com en el panel o configuración del servidor.
  2. Configurar su DNS con el destino que indique el alojamiento. No se puede fijar una IP sin conocer el servidor. En algunos paneles este paso es automático.
  3. Instalar o activar certificado HTTPS para el subdominio.
  4. Clonar el repositorio en una carpeta de proyecto fuera de la raíz pública general. El destino exacto se elegirá según el alojamiento.
  5. Apuntar la raíz pública del subdominio únicamente a la subcarpeta `aleman-sin-miedo/` del checkout. No servir la raíz del repositorio ni .git/.
  6. Usar acceso de lectura a GitHub desde el servidor si el repositorio es privado, preferiblemente una deploy key de solo lectura. No introducir credenciales en HTML, en Git ni en comandos compartidos por chat.

No se presupone que Codex tenga acceso al servidor, al DNS o al panel por disponer de acceso a GitHub. El usuario realiza el despliegue por SSH según el flujo solicitado.

Primera descarga por SSH

Estos comandos son una plantilla: sustituir la ruta por una carpeta nueva y disponible de tu alojamiento. No sobrescribir una web o un checkout existente. Configurar la autenticación de lectura GitHub en el servidor si es necesaria.

# /ruta/privada/AlemanSinMiedo es un ejemplo, no una ruta ya configurada.
git clone --branch main https://github.com/brunobohm82/AlemanSinMiedo.git /ruta/privada/AlemanSinMiedo

En el panel del alojamiento, raíz pública del subdominio:

/ruta/privada/AlemanSinMiedo/aleman-sin-miedo

Si el alojamiento impide elegir esa raíz pública, hay que adaptar la publicación conociendo sus restricciones. No mover todo el repositorio a una carpeta pública para sortearlo.

Actualizaciones posteriores por SSH

cd /ruta/privada/AlemanSinMiedo
git status --short
git pull --ff-only origin main

Si hay cambios locales o Git informa de un conflicto, conservarlos y resolver la situación; no usar reset --hard ni clean como rutina de despliegue. El pull no modifica DNS ni instala HTTPS.

Después, abrir https://aleman.brunobohm.com, comprobar la fecha editorial, la navegación a documentos y recargar. La fecha editorial indica actualización del estado del proyecto, no garantiza cuándo se desplegó. Si se usa CDN o caché de alojamiento, purgarla tras actualizar. No configurar caché prolongada para los HTML durante el desarrollo.

Verificar también que /.git/HEAD, /AGENTS.md y /docs/project-status.json no expongan el checkout: deben devolver 403 o 404 al servir únicamente aleman-sin-miedo/. La documentación editorial enlazada en la web sí es pública deliberadamente; no añadir a esos documentos secretos o información privada.

Trabajo local y generación

Desde la raíz del proyecto:

python3 tools/build_site.py
python3 tools/check_project.py
python3 -m unittest discover -s tests -v
python3 -m http.server 8000 --directory aleman-sin-miedo --bind 127.0.0.1

El último comando sirve para verificación interna y se detiene con Ctrl+C. La publicación real usa el servidor web del alojamiento.

docs/project-status.json contiene el estado editorial de la portada. Los documentos Markdown son la fuente de las páginas de lectura. Tras modificar cualquiera, regenerar la web y añadir tanto las fuentes como los HTML al commit. No editar manualmente los HTML de documentos: el generador los reemplaza. Los estilos se mantienen en aleman-sin-miedo/assets/site.css.

Evolución a WebApp

Mantener esta portada como punto de acceso. Más adelante, elegir backend, persistencia, cuentas y servicios de audio según requisitos aprobados. Si esos componentes necesitan procesos o dependencias del servidor, documentar el cambio de despliegue antes de incorporarlos. La actual publicación estática no demuestra que el alojamiento sea apto para todos esos componentes futuros.

Stack comunicado

El servidor dispone de nginx, PHP, MySQL, Docker y Node sobre Ubuntu según la información del usuario. La web estática actual se publica con nginx. Consultar la guía específica para nginx y Ubuntu; sigue pendiente confirmar nginx nativo frente a contenedor y la gestión mediante panel.

Estado confirmado — 2026-10-25

El usuario confirmó que la portada y la especificación abren por HTTPS en el subdominio. DNS apunta a 2.28.40.150; se aportó respuesta HTTP 200 del VPS, renovación simulada exitosa y temporizador Certbot activo. No volver a ejecutar la instalación inicial para actualizar HTML. La configuración activa de HTTPS fue modificada por Certbot en el VPS: no reemplazarla por la plantilla HTTP del repositorio. Las actualizaciones habituales siguen siendo git pull --ff-only origin main desde /srv/aleman/AlemanSinMiedo.