Guía Interactiva de Configuración de Moodle

I. Introducción a Moodle y su Configuración

Moodle, un Sistema de Gestión del Aprendizaje (LMS) de código abierto, se ha consolidado como una plataforma robusta que permite a los educadores crear entornos de aprendizaje en línea dinámicos y privados, accesibles en cualquier momento y lugar. Su versatilidad lo hace adaptable a las necesidades de profesores, estudiantes y administradores por igual. Sin embargo, para maximizar su potencial y garantizar una experiencia fluida y segura, una configuración adecuada es un paso fundamental.

Esta sección introductoria establece la importancia de una configuración meticulosa de Moodle, destacando cómo influye en la estabilidad, seguridad, rendimiento y escalabilidad. Proporciona el contexto para comprender por qué una gestión informada es crucial para el éxito de la plataforma en cualquier entorno educativo.

II. Requisitos del Sistema e Instalación Inicial

Para una implementación exitosa de Moodle, es imperativo comprender y cumplir con los requisitos de hardware y software. Esta sección detalla las especificaciones necesarias para el servidor web, la base de datos y PHP, además de guiarlo a través de la preparación del entorno y el proceso de instalación. Cubre desde la creación de la base de datos y el directorio `moodledata` hasta la correcta asignación de permisos, sentando las bases para una plataforma estable y segura.

Hardware:

Las especificaciones varían según la escala. Mínimo 200MB de espacio en disco para el código base, más espacio para contenido (realista: 5GB+). Procesador mínimo 1 GHz (recomendado: dual core 2 GHz+). RAM mínima 512MB (recomendado: 1GB+, producción grande: 8GB+). Para instalaciones grandes, considerar servidores separados para web y base de datos.

Escalabilidad: Planificar para crecimiento futuro, escalando horizontal (más servidores) y verticalmente (más RAM, CPU, SSDs).

Visualización: Requisitos de Hardware Clave (Mínimos vs. Recomendados)

Nota: Estos valores son representativos y pueden variar. Consulte el texto para detalles completos.

Software:

Principalmente Linux (pila LAMP: Linux, Apache, PostgreSQL/MySQL/MariaDB, PHP). Compatible con Windows, Mac OS X, Netware 6. Servidor web recomendado: Apache. Otros: Nginx, OpenLiteSpeed, IIS. Base de datos recomendada: MySQL, MariaDB, PostgreSQL (NO SQL Server 2005 u Oracle). Versión de PHP compatible con la versión de Moodle (ej. Moodle 5.0 requiere PHP 8.2-8.4).

Configuraciones PHP importantes (php.ini): memory_limit (mín. 96M, rec. 128M+), session.save_handler (FILES), file_uploads (ON), session.auto_start (OFF), carpeta temp escribible. post_max_size y upload_max_filesize son críticos para el tamaño de subida.

Consideración clave: Priorizar estabilidad y compatibilidad probada sobre familiaridad personal.

Base de Datos:

Información requerida: dbhost (ej. `localhost`), dbname (ej. `moodle`), dbuser (ej. `moodleuser`, no root), dbpass.

Configuración UTF-8: Esencial. Recomendado: utf8mb4 y utf8mb4_unicode_ci para MySQL/MariaDB *antes* de la instalación. Editar my.cnf o my.ini. Hacer copia de seguridad antes.

Comando SQL con soporte UTF-8 completo:

CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Sin soporte completo (alternativa):

CREATE DATABASE moodle DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Crear usuario de base de datos (evitar GRANT ALL):

CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO 'moodleuser'@'localhost';

Consideración clave: Una configuración UTF-8 incorrecta al inicio puede causar problemas de codificación difíciles de solucionar después.

Directorio de Datos (moodledata):

Almacena archivos subidos, datos temporales, caché, sesiones. No debe ser accesible directamente vía web. El servidor web necesita permisos de escritura en él.

Consideración clave: La separación y seguridad de `moodledata` (fuera del raíz web, no accesible por URL pero escribible por el servidor) es una medida de seguridad fundamental.

Descarga: Desde download.moodle.org (versión estándar recomendada).

Copia y Descompresión: Crea carpeta "moodle". Ubicar en directorio de documentos del servidor (ej. yourwebserver.com/moodle) o copiar contenido a raíz (yourwebserver.com).

Configuración de `config.php`: No incluido en descarga, se crea durante instalación (web o CLI). Alternativa: copiar config-dist.php a config.php y editar. $CFG->wwwroot debe ser URL fija.

Ejecución del Instalador:

  • Web: Acceder a URL de Moodle (ej. www.yourdomain.com/moodle). Sigue asistente (idioma, rutas, BD, cuenta admin).
  • CLI: /usr/bin/php /path/to/moodle/admin/cli/install.php. Útil para automatización, no se ejecuta si config.php existe.

Consideración clave: La CLI es preferible para administradores experimentados y despliegues a gran escala.

Directorio de código Moodle (`moodle/`): Archivos no escribibles por el usuario del servidor web. Propietario: `root`. Grupo: `root` o grupo del servidor web.

  • Directorios: `755` (rwx r-x r-x)
  • Archivos: `644` (rw- r-- r--)

Directorio de datos (`moodledata/`): Servidor web necesita permisos de escritura. Debe estar fuera del raíz web y no accesible por URL. Propietario: usuario del servidor web (ej. `www-data`). Grupo: grupo del servidor web.

  • Directorios: `700` (rwx --- ---)
  • Archivos: `600` (rw- --- ---)
(Verificar documentación para casos de hosting compartido).

Consideración clave: Permisos incorrectos son una causa común de sitios hackeados. Auditoría regular es importante.

Tabla: Permisos de Archivos Recomendados (Unix/Linux)

Componente Propietario (Owner) Grupo (Group) Permisos de Directorio (CHMOD) Permisos de Archivo (CHMOD) Notas Clave
Código Moodle (/moodle/) root (o admin) root (o grupo del servidor web) 755 (rwx r-x r-x) 644 (rw- r-- r--) No escribible por el servidor web. Crucial para la seguridad.
Directorio de Datos (/moodledata/) Usuario del Servidor Web (ej. apache, www-data) Grupo del Servidor Web (ej. apache, www-data) 700 (rwx --- ---) 600 (rw- --- ---) Escribible por el servidor web. Debe estar fuera del directorio raíz web y no ser accesible directamente vía URL.

III. Configuración Esencial del Sitio

Una vez instalado Moodle, la configuración esencial del sitio es el siguiente paso crítico. Esta sección le guiará a través de la definición de la identidad de su plataforma (nombre, página principal), la gestión de idiomas para un entorno multilingüe, el establecimiento correcto de la zona horaria para la precisión de los eventos, y la configuración del correo electrónico saliente, fundamental para las comunicaciones del sistema.

Gestionar en Administración del sitio > General > Ajustes de portada.

  • Nombre completo y corto del sitio: Identidad principal y abreviada.
  • Contenido de la página principal: Noticias, listas de cursos, categorías. Diferente para usuarios logueados/no logueados.
  • Forzar inicio de sesión: Si la página principal no debe mostrar contenido general (Administración del sitio > General > Seguridad > Ajustes de seguridad del sitio).

Consideración clave: La página principal es la primera impresión; su configuración afecta la usabilidad.

  • Instalación de paquetes de idioma: Administración del sitio > Idioma > Paquetes de idioma.
  • Idioma predeterminado del sitio: Administración del sitio > Idioma > Ajustes de idioma. No afecta a usuarios existentes.
  • Autodetectar idioma: Por defecto, basado en navegador. Puede deshabilitarse.
  • Gestión de visualización: Ocultar menú de idioma, limitar idiomas disponibles (lista de códigos, ej. en_us,es_mx).
  • Locale del sitio: Anula formato de fechas. Recomendado dejar en blanco (usa locale del servidor).
  • Fuentes PDF: Habilitar para idiomas como chino, japonés, etc. ($CFG->pdfexportfont en config.php).
  • Mensajes de error localizados (BD): Añadir $CFG->lang="yourlangcode"; a config.php.
  • Personalización de cadenas de idioma: Administración del sitio > Idioma > Personalización de idioma (ej. "Course" a "Unit"). Activar modo depuración para identificar cadenas. Guardadas en moodledata/lang/xx_local/, no se sobrescriben en actualizaciones.

Consideración clave: Una gestión de idioma deficiente puede generar inconsistencias y mala experiencia de usuario.

  • Nivel de sitio: Administración del sitio > Ubicación > Ajustes de ubicación (zona horaria y país predeterminados). Ejecutar actualización de zonas horarias.
  • Servidor: Zona horaria local del servidor correcta en php.ini.
  • Usuario: Puede ajustar su zona horaria en Preferencias > Editar perfil > Zona horaria.

Consideración clave: Esencial para precisión de eventos, entregas y registros. Configuración incorrecta causa confusión.

  • Servidor SMTP y autenticación: Administración del sitio > Servidor > Correo electrónico > Configuración de correo saliente.
  • Dirección "no responder": En la misma página, para comunicaciones automáticas.
  • Contacto de soporte: Administración del sitio > Servidor > Servidor > Contacto de soporte.

Consideración clave: Fiabilidad del correo es vital para notificaciones, restablecimiento de contraseñas y otras funciones clave.

IV. Gestión de Usuarios y Autenticación

La gestión de usuarios y los métodos de autenticación son cruciales para la seguridad y operatividad de Moodle. Esta sección explora los diversos plugins de autenticación estándar, desde cuentas manuales hasta integraciones con LDAP y OAuth2. También se adentra en el sistema granular de roles y permisos, explicando cómo definir y personalizar roles para controlar las acciones de los usuarios. Finalmente, se abordan las políticas de usuario, incluyendo el acceso de invitados y la visibilidad de la información del perfil.

Configurar en Administración del sitio > Plugins > Autenticación > Gestionar autenticación.

Tabla: Métodos de Autenticación Estándar en Moodle

Método de Autenticación Descripción Breve Casos de Uso Típicos Notas Clave
Cuentas ManualesCuentas creadas directamente por un administrador.Pequeñas instalaciones, usuarios con roles específicos.Control total del administrador.
Email-based self-registrationUsuarios crean sus cuentas vía verificación por correo.Sitios públicos, universidades.Puede generar spam; requiere CAPTCHA, etc.
External databaseAutenticación contra BD externa.Integración con SIS o CRMs.Requiere config. de conexión a BD externa.
LDAP serverAutenticación contra servidor LDAP (ej. Active Directory).Entornos corporativos/educativos con directorios centralizados.Simplifica gestión en grandes organizaciones.
OAuth 2Autenticación vía servicio OAuth 2 (ej. Google, Microsoft).Integración con servicios de identidad populares.Mejora UX, reduce gestión de contraseñas.
ShibbolethAutenticación contra servidor Shibboleth.Instituciones educativas con federaciones de identidad.Autenticación segura y federada.
LTIFunciona con matriculación "Publish as LTI tool".Conexión con herramientas externas LTI.Integración de contenido/actividades de terceros.
No loginSuspende acceso de un usuario.Deshabilitar cuentas.Política de cuenta, no método de auth.
No authenticationPara pruebas o sitios sin acceso a Internet.Desarrollo/pruebas offline.No usar en servidores públicos.

Configuraciones Comunes:

  • Permitir inicio de sesión por correo electrónico: Usar email o nombre de usuario.
  • Botón de inicio de sesión de invitado: Ocultar/mostrar. Ocultarlo deshabilita acceso de invitado al sitio.
  • Limitar inicios de sesión concurrentes: Especifica cuántos. No compatible con SSO.
  • URL de inicio de sesión alternativa: Usar con precaución, riesgo de bloqueo.

Consideración clave: Seleccionar métodos alineados con políticas de seguridad y infraestructura. Implementación de SSO requiere configuración precisa.

Configurar en Administración del sitio > Usuarios > Permisos > Definir roles.

Capacidad: Aspecto configurable del comportamiento (ej. mod/forum:rate). Cientos de capacidades.

Permiso: "Permitir", "Prevenir", "Prohibir", "No establecido/Heredar".

Roles estándar: Administrador, Creador de cursos, Profesor (con/sin edición), Estudiante, Invitado, Usuario autenticado.

Gestión de Roles:

  • Edición: Modificar permisos de un rol.
  • Restablecimiento: Revertir a permisos predeterminados (elimina permisos a nivel curso/actividad).
  • Localización del Nombre: Cadenas de idioma o sintaxis multilingüe para roles personalizados.

Creación de Roles Personalizados:

  1. Clic en "Agregar un nuevo rol".
  2. Usar plantilla o preset opcional.
  3. Nombre corto (obligatorio), nombre completo, descripción.
  4. Arquetipo de rol (Manager, Teacher, Student) - define predeterminados en actualizaciones/restablecimientos.
  5. Contextos de asignación (ej. 'Usuario' para rol de Padre).
  6. Configurar permisos y guardar.

Nuevo rol no listado en descripciones de curso automáticamente (configurar en Administración del sitio > Apariencia > Cursos > Contactos del curso).

Asignación, Anulación y Cambios de Rol:

  • Permitir asignaciones de roles: Qué roles pueden asignar otros roles.
  • Permitir anulaciones de roles (Overrides): Qué roles pueden anular otros (requiere capacidades moodle/role:override o moodle/role:safeoverride).
  • Permitir cambios de rol (Switches): Cambiar temporalmente a otro rol (requiere capacidad moodle/role:switchroles).

Consideración clave: La granularidad es poderosa pero compleja. Una mala gestión puede llevar a brechas de seguridad o problemas de usabilidad.

Configurar en Administración del sitio > Usuarios > Permisos > Políticas de usuario.

  • Rol para visitantes (no logueados): Por defecto "Invitado". Aún necesitan iniciar sesión para participar.
  • Rol para invitado: Asignado a usuario invitado y temporalmente a usuarios no matriculados en cursos con acceso de invitado.
  • Rol predeterminado para todos los usuarios: Recomendado "Usuario autenticado". No "estudiante".
  • Rol del creador en nuevos cursos: Rol con el que se matricula al creador del curso.
  • Auto-inicio de sesión de invitado: Loguea automáticamente a visitantes en cursos con acceso de invitado.
  • Ocultar campos de usuario: Para privacidad (descripción, email, ciudad, etc.) en perfiles y lista de participantes.
  • Mostrar identidad de usuario: Mostrar campos (ID, email, teléfono) a usuarios con capacidad moodle/site:viewuseridentity (profesores, gestores) para diferenciar usuarios.
  • Habilitar Gravatar: Usar Gravatar como foto de perfil si no hay imagen personalizada.

Consideración clave: Esencial para privacidad (GDPR), confianza del usuario y equilibrio con usabilidad.

V. Configuración de Cursos y Categorías

La organización de cursos mediante categorías es fundamental para la navegación y usabilidad en Moodle. Esta sección detalla cómo crear y gestionar estas categorías, así como los pasos para crear nuevos cursos, incluyendo sus ajustes básicos como visibilidad y fechas. Además, se exploran los diversos métodos de matriculación disponibles, desde la manual hasta la sincronización de cohortes y la integración LTI, ofreciendo flexibilidad para diferentes modelos educativos.

Organizan cursos lógicamente. En sitio nuevo, categoría predeterminada "Categoría 1".

  • Agregar categoría: Administración del sitio > Cursos > Crear nueva categoría o desde Gestionar cursos y categorías.
  • Editar/Mover: Desde Gestionar cursos y categorías, usar icono de acciones o flechas/menú para mover.
  • Subcategorías: Crear desde icono de acciones de categoría principal.
  • Ocultar/Mostrar: Con icono "ojo". Categorías ocultas visibles solo para admin o con capacidad "ver cursos ocultos".
  • Ordenar: Por nombre o ID.

Consideración clave: Una buena estructura de categorías es crucial para la navegación y eficiencia, especialmente en sitios grandes.

Requiere derechos de Admin, Creador de Cursos o Gestor.

  1. Administración del sitio > Cursos > Gestionar cursos y categorías.
  2. Seleccionar categoría.
  3. Clic "Crear nuevo curso".
  4. Introducir ajustes del curso.
  5. "Guardar y volver" o "Guardar y mostrar" (para asignar usuarios).

Ajustes Básicos del Curso:

  • Nombre Completo del Curso: Principal, visible en listas, tablero, informes.
  • Nombre Corto: Abreviado, para navegación, etc.
  • Categoría del Curso: Asignar a categoría existente.
  • Visibilidad del Curso: Ocultar de listas (solo visible para gestores, creadores, profes).
  • Fecha de Inicio del Curso: Afecta logs y formato semanal.
  • Fecha de Finalización del Curso: Para lista de cursos activos y retención de datos.

Consideración clave: Ajustes iniciales (visibilidad, fechas) tienen implicaciones funcionales y de gestión de datos.

Gestionar/habilitar en Administración del sitio > Plugins > Matriculaciones > Gestionar plugins de matriculación.

Tabla: Métodos de Matriculación en Moodle

Método de Matriculación Descripción Ventajas Desventajas/Consideraciones
Manual enrolmentAdmin/profes matriculan uno por uno.Control preciso.Intensivo en mano de obra.
Self enrolmentUsuarios se matriculan (opc. con clave).Reduce carga admin, auto-servicio.Riesgo de spam, gestión de claves.
Cohort syncSincroniza con pertenencia a cohorte.Automatización para grupos grandes.Requiere gestión de cohortes.
Guest accessUsuarios no matriculados ven contenido.Vista previa, marketing.Invitados no participan, riesgo exposición.
Course meta linkVincula matriculación a otro curso.Cursos "paraguas", programas.Desmatr. en principal afecta vinculados.
LTIMatriculación vía herramienta LTI externa.Integración con sistemas externos.Dependencia de config/seguridad LTI.
External databaseMatriculación basada en BD externa.Automatización con SIS.Config. compleja de BD externa.
Enrolment on paymentUsuarios pagan para matricularse.Monetización, pagos integrados.Requiere pasarela de pago (ej. PayPal).

Consideración clave: Comprender implicaciones de cada método (carga admin, seguridad, UX) y alinear con modelo pedagógico/operativo.

VI. Plugins, Temas e Integraciones

La extensibilidad es una fortaleza clave de Moodle. Esta sección cubre la instalación de plugins (módulos de actividad, bloques) para añadir funcionalidades, la gestión y configuración de temas para personalizar la apariencia visual, y la integración LTI que permite a Moodle interactuar con herramientas de aprendizaje externas, actuando tanto como proveedor de herramientas como consumidor.

Extienden funcionalidad (actividades, preguntas, informes, etc.).

Métodos de Instalación:

  • Directorio de Plugins de Moodle: El más sencillo. Administración del sitio > Plugins > Instalar plugins. Buscar e instalar.
  • Carga de Archivo ZIP: Descargar ZIP, subir en Administración del sitio > Plugins > Instalar plugins.
  • Manual (Copia de Archivos): Descargar ZIP, descomprimir, copiar carpeta a ubicación correcta (ej. /mod/, /theme/, /blocks/). Visitar Notificaciones para completar.

Asegurar permisos de archivo correctos (755) para legibilidad por servidor web.

Gestión de módulos de actividad: Administración del sitio > Plugins > Módulos de actividad > Gestionar actividades (ver instancias, versión, ocultar/eliminar, ajustes predeterminados).

Consideración clave: Investigar compatibilidad, mantenimiento y seguridad de plugins. Un plugin desactualizado/mal configurado puede causar fallos o vulnerabilidades.

Personalizan diseño y apariencia.

Instalación de Temas:

  1. Descargar ZIP de tema compatible desde Directorio de Plugins.
  2. Descomprimir.
  3. Subir carpeta a /moodle/theme/.
  4. Permisos de archivo 755.
  5. Seleccionar y activar en Administración del sitio > Apariencia > Temas. "Limpiar cachés de tema".

Ajustes Avanzados de Tema (Administración del sitio > Apariencia > Ajustes avanzados de tema):

  • Lista de temas: Restringir temas disponibles.
  • Modo diseñador de temas: Activar para diseño/pruebas (evita caché).
  • Permitir Temas de Usuario/Curso/Categoría/Cohorte: Habilitar selección individual. Temas de curso tienen mayor prioridad.
  • Permitir Cambios de Tema en la URL: Para resolución de problemas (?theme=theme_name).
  • Jerarquía de contextos: Curso > Categoría > Sesión > Usuario > Cohorte > Sitio.

Consideración clave: Equilibrar personalización visual con impacto en rendimiento. Probar después de cambios.

Interoperabilidad con herramientas externas (contenido, calificaciones, datos de usuario). Relevante para LTI Advantage (Moodle 4.3+).

Habilitar 'Publicar como herramienta LTI':

  1. Habilitar autenticación LTI: Administración del sitio > Plugins > Autenticación > Gestionar autenticación.
  2. Habilitar plugin matriculación 'Publicar como herramienta LTI': Administración del sitio > Plugins > Matriculaciones > Gestionar plugins de matriculación.
  3. Permitir incrustación de marcos (recomendado): Administración del sitio > Seguridad > Seguridad HTTP.

Moodle como Herramienta (Proveedor):

  1. Administración del sitio > Plugins > Matriculaciones > Publicar como herramienta LTI > Registro de herramienta.
  2. "Registrar una plataforma".
  3. Introducir nombre de plataforma consumidora.
  4. Copiar URL de registro dinámico.

Moodle como Plataforma (Consumidor):

  1. En instancia consumidora: Administración del sitio > Plugins > Módulos de actividad > Herramienta externa > Gestionar herramientas.
  2. Pegar URL de registro en "URL de la herramienta", clic "Añadir LTI Advantage".
  3. "Activar" la herramienta.

Compartir Acceso y Aprovisionamiento de Usuarios:

Para compartir curso/actividad desde Moodle Herramienta: Navegación del curso > Publicado como herramientas LTI > LTI Advantage > Añadir. Seleccionar curso/actividad, opciones de sincronización.

Aprovisionamiento de usuarios: Controla creación/vinculación de cuentas en primer acceso LTI. Modos para estudiantes/profesores.

Consideración clave: LTI transforma Moodle en hub interoperable. Seguridad es compleja (confianza entre sistemas); requiere implementación meticulosa.

VII. Optimización del Rendimiento

La optimización del rendimiento es vital para una experiencia de usuario fluida en Moodle. Esta sección ofrece recomendaciones sobre hardware y sistema operativo, explora la configuración de caché (incluyendo almacenes externos como Redis/Memcached), detalla la optimización del servidor web (PHP, Apache/Nginx) y de la base de datos (MySQL/PostgreSQL), y subraya la importancia de la configuración adecuada de tareas programadas (Cron).

Objetivo: Maximizar uso de RAM (caché), reducir actividad de disco, evitar swap.

Hardware:

  • RAM: Aumentar RAM es el cambio más efectivo (4GB+).
  • Procesador: Dual/Dual-core mejor. Hyperthreading puede ayudar.
  • Discos Duros: SCSI > SATA. SSDs (grado empresarial) superan a discos giratorios. SATA con NCQ. Bajo tiempo de búsqueda.
  • Swap: 4x RAM física.
  • RAID: Controlador hardware. SO/Swap en RAID-1. Moodle/web/BD en RAID-5. Si `moodledata` en NFS lento, usar Redis para caché.
  • Red: Gigabit Ethernet vital, esp. si web y BD están separados.

Sistema Operativo:

Linux recomendado. Unix-based requieren menos memoria. SO optimizado (Solaris) para muchos procesadores SMP.

Consideración clave: No hay "bala de plata"; es sinergia de componentes. RAM ofrece retorno más rápido.

Moodle Universal Cache (MUC) desde 2.4. Control granular. Instalaciones grandes benefician de Memcached, MongoDB, Redis.

Tipos de Caché:

  • Caché de Solicitud (Request): Dura por solicitud, no compartida.
  • Caché de Sesión (Session): Dura por sesión de usuario, no compartida (mantenida para un usuario).
  • Caché de Aplicación (Application): Compartida, accesible por cada solicitud, puede persistir. Debe ser compartida en sistemas multisevidor.

Backends y Almacenes de Caché:

Backends (dónde se guarda: sistema archivos, sesión PHP, Memcached, memoria). Almacenes (plugins Moodle para conectar a backends). Moodle incluye plugins para Memcached, MongoDB, APCu, Redis. Redis altamente recomendado.

Configurar almacenes: Administración del sitio > Plugins > Caché > Configuración. Añadir instancias (ej. Memcached requiere servidor Memcached y extensión PHP). Purgar caché Memcached en Moodle elimina *todas* las entradas del servidor; usar servidores dedicados.

Para balanceo de carga, usar Memcached. Configurar $CFG->localcachedir a directorio local en config.php por nodo (Moodle 2.6+) acelera caché de disco fuera de MUC.

Consideración clave: Caché distribuida (Redis/Memcached) es crucial para escalabilidad horizontal y evitar cuellos de botella de E/S.

Rendimiento PHP:

  • Habilitar acelerador PHP (OpCache).
  • memory_limit (php.ini): mín. 96M, rec. 128M+.
  • PHP-FPM con Apache puede mejorar.
  • IIS: PHP como módulo ISAPI (IIS6) o FastCGI (IIS 7+) mejor que CGI.

Rendimiento Apache:

  • Ajustar MaxRequestWorkers (o MaxClients): Memoria disponible * 80% / Uso máx. memoria proceso apache. Regla conservadora: memoria (MB) / 100.
  • Reducir módulos Apache cargados.
  • KeepAlive Off o KeepAliveTimeout bajo (2-5s).
  • Instalar/habilitar mod_deflate (compresión HTTP).
  • Usar MPM event preferible a Prefork/Worker.

Otros Servidores Web:

  • IIS: Ajustar ListenBackLog, MemCacheSize, etc.
  • OpenLiteSpeed: LSCache, PHP OpCache.
  • Lighttpd, NginX, Cherokee: Con PHP FastCGI, pueden ser superiores y actuar como balanceadores/proxies.

Configurar módulos X-Sendfile para mejorar envío de archivos grandes.

Consideración clave: Configuración del servidor web impacta concurrencia y eficiencia de entrega. Mal configurado limita usuarios.

MariaDB/MySQL:

  • Innodb Buffer Pool: innodb_buffer_pool_size al 80% memoria en máquina MySQL dedicada. innodb_buffer_pool_instances = #núcleos/vCPUs.
  • Query Cache: Habilitar query_cache_type = 1, ajustar query_cache_size (ej. 36M).
  • Max Connections: Límite para evitar "Demasiadas conexiones". Servidor cargado puede necesitar >200.
  • Optimizar Tablas: Semanalmente y tras actualizaciones/grandes borrados (OPTIMIZE TABLE mdl_tablename). Comunes: mdl_course_sections, mdl_forum_posts, mdl_log, mdl_sessions.
  • MySQLTuner: Ayuda a calcular valores de config.

PostgreSQL:

  • Habilitar autovacuum.
  • Ajustar shared_buffers (ej. 1-2% RAM para 8.2+).
  • Configurar effective_cache_size.
  • Ajustar work_mem, maintenance_work_mem.

Réplicas de Lectura (gran escala): Moodle 3.9+ permite descargar 80-90% carga de lectura del primario.

Consideración clave: Base de datos no optimizada es cuello de botella principal. Réplicas de lectura para escalar.

Crucial ("latido" del sistema). Envío de correos, actualizaciones, copias de seguridad, feeds RSS. Si no se ejecuta regularmente, Moodle no funcionará bien.

Configuración: Ejecutar cada minuto. Método preferido: script CLI /path/to/moodle/admin/cli/cron.php.

Entrada cron Unix típica:

* * * * * /usr/bin/php /path/to/moodle/admin/cli/cron.php >/dev/null

Verificar versión PHP de línea de comandos (puede ser diferente a la del servidor web).

Script web (.../admin/cron.php) obsoleto, podría eliminarse. Deshabilitado por defecto por seguridad.

Consideración clave: Supervisión del cron es tan importante como configuración inicial. Fallo impacta funcionalidad y UX.

VIII. Seguridad y Mantenimiento

La seguridad y el mantenimiento continuo son vitales para la fiabilidad de Moodle. Esta sección detalla las mejores prácticas de seguridad, incluyendo permisos de archivos, políticas de contraseña y actualizaciones. Se abordan las estrategias de copias de seguridad y recuperación ante desastres, tanto para cursos individuales como para el sitio completo. Finalmente, se explican las tareas de mantenimiento de la base de datos y el servidor, como el uso del modo de mantenimiento y las herramientas de depuración.

Permisos de Archivos (Linux/Unix):

  • moodledata/: Directorios 700, archivos 600. Propietario/grupo: usuario/grupo del servidor web. Fuera del raíz web, no accesible por URL.
  • moodle/ (código): Directorios 755, archivos 644. Propietario/grupo: `root`. No escribible por servidor web.

Políticas de Contraseña:

Ajustes > Administración del sitio > Seguridad > Políticas del sitio. Forzar complejidad (longitud, dígitos, mayús/minús, no alfanuméricos). Equilibrar con usabilidad.

Actualizaciones Regulares:

Moodle, PHP, Apache actualizados. Auto-actualización SO (apt-get, yum). Considerar automatización actualizaciones Moodle vía cron.

Endurecimiento General del Sistema:

  • Copias de seguridad: Estrategia robusta, practicar restauración.
  • Minimización de software: Instalar solo lo necesario.
  • HTTPS: Proteger todo el tráfico. $CFG->httpslogin=yes; en config.php.
  • Deshabilitar register_globals: Prevenir XSS.
  • Contraseñas fuertes: Para admin/profesor.
  • Separación de sistemas: Contraseñas diferentes, máquinas separadas.
  • Firewalls: Doble firewall, deshabilitar servicios no usados.
  • Alertas de seguridad: Registrar sitio en Moodle.org, revisar página de alertas.
  • Misceláneas: Deshabilitar acceso invitado si no es necesario, usar claves de matriculación, deshabilitar pista de clave.

Copias de Seguridad de Cursos:

Guardar curso con todas/algunas partes. Admin configuran programa automatizado, profes pueden crear/descargar. Navegación del curso > Más > Reutilización del curso > Backup. Seleccionar elementos (usuarios, anonimizar, roles, grupos, etc.). Archivos .mbz.

Copias de Seguridad de Sitio Completo:

Respaldar código Moodle, moodledata/filedir/, base de datos. Asume copia de seguridad completa del servidor ya existe. Verificar espacio disco (df -h).

  • DB Dump (MySQL/MariaDB): mysqldump --default-character-set=utf8mb4 -u [usuario] -p[contraseña] [nombre_db] > moodle-[version]-$(date +%Y%m%d%-H%M).sql
  • Código Moodle: tar -cvf moodle-code-backup-$(date +%Y%m%d).tar /path/to/moodle/
  • Directorio `moodledata`: tar -cvf moodledata-backup-$(date +%Y%m%d).tar /path/to/moodledata/

Guardar en unidad externa. "Copias de seguridad de cursos automatizadas" no reemplazan "copia de seguridad de recuperación ante desastres".

Modo Mantenimiento:

Prevenir acceso no admin. Administración del sitio > Servidor > Modo de mantenimiento. Mensaje personalizado opcional. Modo CLI bloquea todo acceso web (útil para actualizaciones CLI).

Actualizaciones:

Verificar requisitos (Administración del sitio > Servidor > Entorno). Copias de seguridad (software Moodle, `moodledata`, BD). Verificar actualizaciones de plugins. Poner sitio en modo mantenimiento.

Depuración:

Administración del sitio > Desarrollo > Depuración. Opciones: NONE, MINIMAL, NORMAL, ALL, DEVELOPER. Registrar errores en logs del servidor (no mostrar en navegador en producción). Mostrar info de rendimiento en pie de página.

Mantenimiento BD:

Limitar tamaño tablas (Administración del sitio > Servidor > Limpieza). Eliminar usuarios no configurados, gestionar historial calificaciones. Mantenimiento regular (índices, claves foráneas). Usar MySQLTuner.

Conclusiones del Informe Original

La configuración de Moodle es un proceso integral que abarca desde la planificación inicial de los recursos hasta la implementación de estrategias avanzadas de optimización y seguridad. El análisis detallado de los requisitos de hardware y software, la preparación del entorno, los ajustes esenciales del sitio, la gestión de usuarios y autenticación, la configuración de cursos y categorías, la integración de plugins y temas, y las prácticas de optimización y mantenimiento revelan que el éxito de una plataforma Moodle depende de una aproximación holística y estratégica.

Se ha demostrado que la planificación de recursos es dinámica, requiriendo que los administradores anticipen el crecimiento y escalen la infraestructura en consecuencia, priorizando la RAM como el factor de rendimiento más impactante. La elección del software de base es crítica para la estabilidad a largo plazo, con un fuerte énfasis en las configuraciones recomendadas para evitar problemas de compatibilidad y soporte. La configuración UTF-8 de la base de datos es una decisión fundamental que previene problemas de codificación de caracteres a futuro, y la separación y seguridad del directorio moodledata es un pilar innegociable para la integridad del sistema.

En la gestión operativa, la configuración de la página principal es crucial para la usabilidad y la primera impresión, mientras que la gestión de idiomas va más allá de la traducción, afectando la coherencia y la experiencia global. La gestión precisa de zonas horarias es vital para la exactitud de eventos y registros, y la fiabilidad del correo electrónico es un facilitador crítico para la comunicación y funcionalidad de Moodle.

La flexibilidad de autenticación permite la integración con infraestructuras existentes, pero exige un conocimiento profundo de las implicaciones de seguridad. La granularidad de roles y permisos es una herramienta poderosa para el control de acceso, aunque su complejidad requiere una gestión meticulosa para evitar brechas de seguridad o frustraciones de usabilidad. Las políticas de usuario son esenciales para la privacidad y la experiencia del usuario, y la estructura de categorías de cursos impacta directamente la encontrabilidad y la usabilidad. La configuración inicial del curso es fundamental para su ciclo de vida y la gestión de datos. La diversidad de métodos de matriculación refleja la complejidad de los modelos de aprendizaje modernos, y la instalación de plugins es una extensión poderosa que requiere diligencia en la compatibilidad y seguridad. La personalización visual a través de temas es estratégica, pero debe equilibrarse con el rendimiento del servidor. Finalmente, la integración LTI transforma Moodle en un hub de ecosistema educativo, mejorando la interoperabilidad pero añadiendo capas de complejidad de seguridad.

En resumen, una configuración de Moodle exitosa no es un evento único, sino un ciclo continuo de planificación, implementación, monitoreo y ajuste. Requiere una comprensión profunda de las interconexiones entre el hardware, el software, la configuración del sistema y las políticas de usuario. Al abordar cada uno de estos aspectos con diligencia y una visión estratégica, las organizaciones pueden asegurar que su plataforma Moodle no solo cumpla con sus necesidades actuales, sino que también esté preparada para el crecimiento futuro y los desafíos de un entorno educativo en constante evolución.