Academia Deltamontero · Documentación
Arquitectura

Vista general

Cómo está construida la Academia Deltamontero (DELTA-APP), de la red pública a los contenedores, en una sola página.

La Academia Deltamontero es una instalación de Moodle 4.5 LTS empaquetada en una imagen Docker propia, con todos sus plugins (de terceros y propios) incluidos en la imagen. Se despliega con Coolify dentro de un contenedor LXC de Proxmox de la empresa (172246) y hoy se usa desde la red interna en http://192.168.0.192. La publicación en Internet a través de Cloudflare con el dominio learning.deltamontero.net está planificada; todavía no está publicada.

Esta sección está pensada para el equipo de TI y para desarrolladores. Explica qué piezas existen, dónde vive cada dato, cómo se configura sola la plataforma en cada arranque y qué servicios externos usa.

Diagrama general

                 Usuarios (navegador, desde la red interna de la empresa)
                                      │  hoy: HTTP, http://192.168.0.192
                                      │  planificado: HTTPS por Cloudflare
                                      │  (learning.deltamontero.net)
                                      │
┌─────────────────────────────────────▼───────────────────────────────────────┐
│ Servidor de producción: contenedor LXC de Proxmox 172246 · Docker + Coolify │
│                                                                             │
│   Traefik (proxy inverso que administra Coolify; TLS, enrutamiento)         │
│        │ HTTP :80                                                           │
│        ▼                                                                    │
│   ┌──────────────────┐   ┌──────────────────┐   ┌──────────────────────┐    │
│   │ moodle           │   │ moodle-cron      │   │ mariadb              │    │
│   │ Apache + PHP 8.3 │   │ cron.php c/60 s  │   │ MariaDB 11.4         │    │
│   │ Moodle 4.5 LTS   │   │ (misma imagen)   │   │                      │    │
│   └───────┬──────────┘   └───────┬──────────┘   └──────────┬───────────┘    │
│           │  volumen moodledata  │                         │ volumen        │
│           └──────────┬───────────┘                         │ mariadb_data   │
│                      ▼                                     ▼                │
│              archivos subidos, cachés           base de datos de Moodle     │
│                                                                             │
│   Respaldo diario del host (cron 2:00 Ecuador) → /var/backups/delta-lms     │
└─────────────────────────────────────────────────────────────────────────────┘
          │ salida a Internet desde el contenedor moodle / moodle-cron
          ├──► Office 365 (SMTP 587, STARTTLS): correos de la Academia
          ├──► Groq (API compatible con OpenAI): chat de IA
          └──► YouTube: videos embebidos y comprobación de disponibilidad

Los tres contenedores comparten una red Docker interna (delta_network). Solo el contenedor moodle recibe tráfico web, y lo recibe del proxy de Coolify; la base de datos no se publica fuera de esa red.

Piezas principales

CapaTecnologíaDetalle
AccesoRed interna (hoy) y Cloudflare (planificado)Hoy se entra desde la red interna de la empresa en http://192.168.0.192. Planificado: DNS y proxy de Cloudflare para el dominio learning.deltamontero.net.
DespliegueCoolify + TraefikCoolify construye la imagen desde el repositorio, inyecta las variables de entorno y genera la ruta de Traefik a partir de la configuración de dominios.
AplicaciónMoodle 4.5 LTS sobre moodlehq/moodle-php-apache:8.3Moodle y plugins fijados a un commit exacto, incluidos en la imagen.
Tareas programadasContenedor moodle-cronMisma imagen; ejecuta admin/cli/cron.php cada 60 segundos.
Base de datosMariaDB 11.4 LTSutf8mb4 / utf8mb4_unicode_ci, 1 GB de memoria para InnoDB.
ArchivosVolumen moodledataArchivos subidos, cachés y sesiones de Moodle.
CorreoOffice 365 por SMTPCola propia con límites por minuto y por día.
IAlocal_ai_manager + block_ai_chat → GroqModelo openai/gpt-oss-20b para conversar; openai/gpt-oss-120b para el agente de acciones.
VideosYouTube (y Cloudflare R2)Fuera del servidor; no forman parte del respaldo.

Principio de diseño: configuración como código, datos como respaldo

La plataforma separa con claridad dos cosas:

ConfiguraciónDatos
Qué esAjustes de Moodle, tema, plugins, parches, roles, reglas de la Academia, textosUsuarios, matrículas, avances, notas, intentos, certificados emitidos, archivos subidos, registro de correos
Dónde viveEn el repositorio: Dockerfile, moodle-config.sh y los scripts PHP de infrastructure/moodle/En MariaDB (mariadb_data) y en moodledata
Cómo se aplicaSe reaplica sola, de forma idempotente, en cada arranque del contenedor moodleSe recupera con restore.sh desde el último respaldo

Por eso un servidor nuevo se reconstruye con el repositorio más el último respaldo: la imagen trae el código y la configuración, y el respaldo trae lo que generaron las personas. El detalle está en Configuración automática y en Datos y almacenamiento.

Mapa de esta sección

Dónde seguir

En esta página