Saltar al contenido

Infraestructura

Moodle™ en Docker después de Bitnami: el relevo cabe en una línea

Las imágenes gratuitas de Moodle de Bitnami dejaron de actualizarse en agosto de 2025. Así se pasa un campus a una imagen mantenida sin exportar nada: mismo compose, mismos volúmenes, misma base de datos y una línea distinta.

Publicada el 6 min de lectura

Durante años, la forma más rápida de levantar un Moodle™ en Docker fue la imagen de Bitnami. Tenía buena documentación, variables claras y un compose de ejemplo que funcionaba a la primera. Se descargó más de 28 millones de veces y sostiene campus de colegios, academias y empresas en medio mundo.

En agosto de 2025 eso cambió. Bitnami dejó de actualizar sus imágenes gratuitas: bitnami/moodle se congeló el 19 de agosto y bitnamilegacy/moodle, el repositorio al que se trasladaron, el 23. Los sitios siguen arrancando, pero se quedan para siempre en la versión que tenían ese día.

  1. bitnami/moodle deja de actualizarse

  2. bitnamilegacy/moodle, también

  3. Moodle 5.0 se queda sin parches de seguridad

  4. Moodle 5.3, la nueva LTS, en oksigenia/moodle

Qué supone quedarse en una imagen congelada

Una imagen de Docker es mucho más que Moodle. Lleva un sistema operativo, PHP, Apache y decenas de librerías, y todas reciben parches de seguridad cada semana. En una imagen congelada, ninguno llega.

Un pasillo de racks de servidores cubiertos de carámbanos y, al fondo, uno solo encendido, en cian, al que caen partículas de luz desde el techo.
Una imagen congelada sigue arrancando. Lo que deja de llegar son los parches.

A eso se suma el propio Moodle. Cada rama tiene una fecha de fin de soporte, y la 5.0 dejó de recibir parches de seguridad el 5 de octubre de 2026. Un campus en bitnamilegacy/moodle:5.0.2 queda expuesto en dos frentes: el del sistema que lo rodea y el de la aplicación.

Lo habitual en estos casos es plantear una migración completa: exportar cursos, montar un servidor nuevo, importar y cruzar los dedos. No hace falta.

¿Prefieres no ocuparte? Te lo hacemos todo Instalamos tu Moodle o migramos el que ya tienes, con copia previa y sin cortar las clases. Lo alojamos, con el servidor incluido, y lo mantenemos al día.

Encárganos tu Moodle

El relevo: cambiar una línea

Hemos publicado oksigenia/moodle, una imagen libre (GPL-3.0) pensada para sustituir a la de Bitnami sin tocar nada más. Acepta las mismas variables, usa los mismos volúmenes (/bitnami/moodle y /bitnami/moodledata) y escucha en los mismos puertos, el 8080 y el 8443. En tu docker-compose.yml, el cambio es este:

   moodle:-    image: bitnamilegacy/moodle:5.0.2+    image: oksigenia/moodle:5.3

Después, lo de siempre:

docker compose pull moodle
docker compose up -d moodle
docker compose logs -f moodle

Qué hace la imagen al arrancar

Cuando el contenedor encuentra una instalación de Bitnami, sigue cinco pasos en orden:

  1. Lee tu configuración de config.php, como Bitnami, y guarda el original.

  2. Hace copia de la base de datos y del código, antes de tocar nada.

  3. Cambia el núcleo y conserva tus plugins: temas, actividades, bloques.

  4. Actualiza la base de datos y ajusta lo que piden las versiones nuevas.

  5. Arranca Apache y el cron, en los mismos puertos.

Cinco estaciones en fila unidas por un haz de luz cian, cada una con un símbolo: un documento, unos discos, una base de datos, un anillo a medio cerrar y un anillo dorado encendido.
Cinco pasos y ninguno destructivo: la copia va antes que el cambio.

Así queda el log de una migración de prueba, de la 5.0.2 a la 5.3:

[moodle] Giving www-data ownership of the code in /bitnami/moodle
[moodle] Using bitnami/moodle variable names (they keep working; the native names are:
  MOODLE_DATABASE_HOST -> MOODLE_DB_HOST, MOODLE_DATABASE_PORT_NUMBER -> MOODLE_DB_PORT, …
[moodle] oksigenia/moodle: Moodle 5.3.0, role all, bitnami layout
[moodle] Updating Moodle code: 5.0.2 (Build: 20250811) -> 5.3 (Build: 20261005)
[moodle] Using the existing config.php (database settings come from it)
[moodle] Backing up the current code to …/backups/20261005T085146Z/code.tar.gz
[moodle] Backing up the database to …/backups/20261005T085146Z/database.sql.gz
[moodle] Keeping add-on local_oksitest (local/oksitest -> public/local/oksitest)
[moodle] Not carried over, Moodle removed them from core: qtype_random
  block_activity_modules block_section_links tool_moodlenet theme_classic h5plib_v127
[moodle] Upgrading the Moodle database
…
Command line upgrade from 5.0.2 (Build: 20250811) (2025041402) to 5.3 (Build: 20261005)
  (2026100500) completed successfully.
[moodle] Database upgrade finished
[moodle] Moodle is ready at the address in config.php
Migración de prueba del 5 de octubre de 2026, de bitnamilegacy/moodle:5.0.2 a oksigenia/moodle:5.3, con un plugin de prueba. Solo se han quitado líneas intermedias (…) y partido las más largas. En este sitio, pequeño, pasaron 87 segundos desde el arranque hasta «Moodle is ready», copias incluidas.

En producción

  • 92 GBde datos
  • 605tablas
  • 213 shasta quedar listo
  • 12 de 12plugins de terceros conservados

El campus de un colegio pasó de la 4.5 a la 5.2 con la imagen, la noche del 4 al 5 de octubre de 2026. Los recuentos de antes y después coincidieron uno a uno: usuarios, cursos, matrículas, notas, ficheros y 30.668 intentos de cuestionario.

Si algo no encaja, la imagen se detiene antes de actualizar y explica en el log qué pasa y cómo seguir. Nunca deja el sitio a medias.

Qué etiqueta elegir

  • Si tienes 4.5.xoksigenia/moodle:4.5El paso más seguro: misma rama.
  • Si tienes 5.0.xoksigenia/moodle:5.3O :5.2.
  • Si tienes 4.4 o anterioroksigenia/moodle:4.5Primero la 4.5 y después la 5.x.

La 5.3 es la nueva versión LTS de Moodle, la de soporte largo. La 4.5, la LTS anterior, sigue publicada mientras Moodle la mantenga.

Antes de cambiar, cinco comprobaciones

Hemos migrado campus reales con esta imagen, y estos son los puntos que conviene mirar antes:

  • La base de datos. Moodle 5.3 pide MariaDB 11.4 o posterior, MySQL 8.4 o PostgreSQL 17. La imagen de MariaDB de Bitnami también está congelada, pero puedes cambiarla después, como un paso aparte.
  • Los plugins. Comprueba en moodle.org/plugins que cada uno tiene versión para el Moodle al que vas. Algunos fallan sin que el servidor diga nada: Moodle 5.2 retiró el módulo de JavaScript core/modal_factory, y los plugins que aún lo usan pierden sus ventanas emergentes en silencio.
  • El tema Classic. Moodle 5.3 lo retira del núcleo. Si tu sitio lo usa, la imagen se para antes de actualizar para que decidas; con MOODLE_ALLOW_REMOVED_PLUGINS=yes sigue adelante.
  • Chat y Encuesta. Moodle 5.0 los sacó del núcleo y su actualización borra esas actividades. Si las tienes, la imagen se para y te indica cómo conservarlas con la versión que Moodle HQ publica aparte.
  • El sitio cerrado. Ponlo en mantenimiento antes del cambio:
docker compose exec -u daemon moodle php /opt/bitnami/moodle/admin/cli/maintenance.php --enable

La imagen lo mantiene cerrado después de actualizar, para que lo revises antes de que vuelva a entrar nadie.

Si vienes de la 4.5, las primeras ejecuciones del cron tardan: Moodle 5 convierte cada banco de preguntas en una actividad propia y crea cursos para guardar los compartidos. Es normal y termina solo.

¿Muchos plugins, un tema a medida o una base de datos antigua? Lo revisamos antes y lo migramos contigo.

Hablemos

Qué lleva la imagen

  • Las ramas con soporte: 5.3, 5.2 y 4.5, reconstruidas cada semana para recoger los parches de Debian y de PHP.
  • Seguridad comprobable: cada imagen se analiza con Trivy antes de publicarse, se firma con cosign y lleva su SBOM, la lista de todo lo que contiene.
  • amd64 y arm64, para servidores x86 y ARM.
  • Oksigenia Access, nuestro panel de accesibilidad, incluido y desactivado. Se enciende con OKSIGENIA_ACCESS=on.

«Comprobable» quiere decir que no tienes que fiarte de nosotros. Con cosign, verificas que la imagen que te bajas es la que publicó nuestro repositorio:

cosign verify oksigenia/moodle:5.3 \
  --certificate-identity-regexp '^https://github.com/OksigeniaSL/docker-moodle/\.github/workflows/release\.yml@' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

El código y la guía completa de migración están en GitHub.

Si prefieres que lo hagamos nosotros

La imagen es libre y la guía está escrita para que cualquiera pueda seguirla. Si prefieres no ocuparte, migramos, alojamos y mantenemos campus Moodle: actualizaciones, copias que se restauran de prueba y formación para tu equipo.

Moodle con OksigeniaVer la imagen en Docker Hub


The word Moodle and associated Moodle logos are trademarks or registered trademarks of Moodle Pty Ltd or its related affiliates. Oksigenia no está afiliada a Moodle HQ ni es Moodle Certified Partner.