Novedades en mod_jitsi: Aprovisionamiento Automático de Servidores en Google Cloud
Una de las mayores barreras para implementar videoconferencias en Moodle ha sido la infraestructura. Con la nueva versión del plugin mod_jitsi, hemos revolucionado esto introduciendo el aprovisionamiento automático de servidores Jitsi en Google Cloud Platform.
El Problema que Resolvemos
Tradicionalmente, para tener tu propio servidor Jitsi necesitabas:
- Configurar manualmente un servidor Linux
- Instalar y configurar Jitsi Meet
- Configurar SSL con Let’s Encrypt
- Implementar autenticación JWT para control de moderadores
- Gestionar DNS y direcciones IP estáticas
- Mantener y escalar la infraestructura
Todo esto requería conocimientos técnicos avanzados y tiempo considerable. Ya no más.
La Solución: Aprovisionamiento Automático en GCP

Con la nueva funcionalidad BETA, ahora puedes crear un servidor Jitsi completamente funcional con un solo clic desde la interfaz de administración de Moodle.
¿Qué hace el plugin automáticamente?
- Provisiona una VM en Google Compute Engine con la configuración óptima
- Instala Jitsi Meet mediante script de inicio automatizado
- Configura autenticación JWT con appid y secret generados automáticamente
- Reserva una IP estática (reutiliza IPs disponibles para optimizar costos)
- Configura SSL con Let’s Encrypt si tienes DNS configurado
- Notifica cuando está listo mediante callback al servidor Moodle
Todo el proceso toma entre 5-10 minutos y es completamente automatizado.
Arquitectura de la Solución
Flujo de Aprovisionamiento
El diseño se centra en la visibilidad y la recuperación ante fallos:
1. Admin hace clic en "Crear servidor en Google Cloud"
↓
2. Se crea INMEDIATAMENTE un registro en jitsi_servers
- provisioningstatus: 'provisioning'
- provisioningtoken: token aleatorio de 64 caracteres
- gcpinstancename, gcpproject, gcpzone
↓
3. Se lanza la VM en Google Cloud
- Script de inicio instala Jitsi
- Configura JWT automáticamente
- Reserva IP estática
↓
4. La VM envía callback cuando está lista
- Autenticación mediante provisioningtoken
- Actualiza provisioningstatus a 'ready' o 'error'
- Guarda appid, secret, domain
↓
5. Servidor listo para usar en actividades Jitsi
Una característica importante del diseño es que el registro del servidor se crea ANTES de provisionar la VM. Esto permite:
- ✅ Servidores fallidos son visibles en la interfaz
- ✅ Puedes ver el estado en tiempo real: ‘provisioning’, ‘ready’ o ’error’
- ✅ Mensajes de error detallados en el campo
provisioningerror - ✅ Limpiar VMs fallidas directamente desde Moodle sin necesidad de acceder a GCP
Esquema de Base de Datos
La tabla jitsi_servers se ha extendido para soportar GCP:
1CREATE TABLE mdl_jitsi_servers (
2 id BIGINT PRIMARY KEY,
3 domain VARCHAR(255),
4 type TINYINT, -- 3 = GCP auto-managed
5
6 -- Campos GCP
7 gcpinstancename VARCHAR(255),
8 gcpstaticipname VARCHAR(255),
9 gcpproject VARCHAR(255),
10 gcpzone VARCHAR(255),
11
12 -- Control de estado
13 provisioningstatus VARCHAR(50), -- 'provisioning', 'ready', 'error'
14 provisioningtoken VARCHAR(255), -- Para autenticación del callback
15 provisioningerror TEXT, -- Mensajes de error
16
17 -- JWT autogenerado
18 appid VARCHAR(255),
19 secret TEXT,
20 ...
21);
Configuración Paso a Paso
1. Preparar Google Cloud Platform
Necesitarás:
- Un proyecto de GCP activo
- Una cuenta de servicio con los roles:
- Compute Admin
- Service Account User
- El archivo JSON de credenciales de la cuenta de servicio
2. Configurar el Plugin
En Moodle, ve a Administración del sitio > Plugins > Módulos de actividad > Jitsi:
1// Configuración GCP requerida:
2GCP Project ID: tu-proyecto-123456
3GCP Zone: europe-west1-b
4GCP Machine Type: e2-medium
5Service Account JSON: [Pegar contenido del archivo JSON]
3. Crear un Servidor
- Ve a Gestión de servidores en la configuración del plugin
- Haz clic en “Crear servidor en Google Cloud”
- Espera 5-10 minutos
- El servidor aparecerá con estado ‘ready’ cuando esté listo
4. Usar el Servidor
El servidor creado estará disponible automáticamente para todas las actividades Jitsi del sitio.
Ventajas Técnicas
Seguridad
- Autenticación JWT automática: Solo los moderadores autorizados pueden iniciar sesiones
- Token-based callbacks: Los callbacks de la VM usan tokens únicos por servidor
- Secrets seguros: Las claves JWT se generan automáticamente y se almacenan cifradas
Escalabilidad
- IPs estáticas reutilizables: El plugin reutiliza IPs disponibles para reducir costos
- Múltiples servidores: Crea tantos servidores como necesites
Monitorización
Consulta servidores por estado:
1-- Servidores aprovisionándose
2SELECT * FROM mdl_jitsi_servers
3WHERE provisioningstatus = 'provisioning';
4
5-- Servidores con errores
6SELECT domain, provisioningerror
7FROM mdl_jitsi_servers
8WHERE provisioningstatus = 'error';
9
10-- Servidores listos
11SELECT domain, gcpinstancename, gcpzone
12FROM mdl_jitsi_servers
13WHERE provisioningstatus = 'ready' AND type = 3;
Gestión de Costos
Optimizaciones Implementadas
- Reutilización de IPs: El plugin detecta IPs estáticas sin usar y las reasigna
- Machine types flexibles: Elige el tamaño de VM según tus necesidades
- Cleanup automático: Al borrar un servidor, se elimina la VM de GCP y la IP se libera para reutilización futura
Estimación de Costos (Europa Oeste 1)
VM e2-medium:
- vCPUs: 2
- RAM: 4 GB
- Costo aprox: $24/mes (uso continuo)
IP estática: $3/mes
Total por servidor: ~$27/mes
Tip: Usa preemptible VMs para entornos de desarrollo y ahorra hasta un 80%.
Casos de Uso
Instituciones Educativas
- Control total: Tu propia infraestructura, sin límites de terceros
- Privacidad: Los datos nunca salen de tu cuenta de GCP
- Cumplimiento GDPR: Elige regiones europeas (europe-west1, europe-west3)
Entornos Corporativos
- Branding: Usa tu propio dominio (meet.tuempresa.com)
- Integración: Conecta con tu infraestructura GCP existente
- SLA: Aprovecha las garantías de uptime de Google Cloud
Desarrollo y Testing
- Entornos efímeros: Crea y destruye servidores de prueba fácilmente
- Testing de carga: Provisiona múltiples servidores para tests
- CI/CD: Automatiza la creación de entornos de testing
Limitaciones Actuales (BETA)
⚠️ Esta funcionalidad está en BETA. Ten en cuenta:
- Requiere conocimientos básicos de GCP
- La configuración DNS debe hacerse manualmente
- No incluye monitorización automática de recursos
- El escalado horizontal es manual (no autoscaling)
Próximos Pasos
Estamos trabajando en:
- Soporte de grabaciones: Preparar automáticamente los servidores GCP para soportar grabaciones de sesiones
- Autoescalado: Crear/destruir VMs según demanda
- Métricas integradas: Monitorización de CPU/RAM desde Moodle
- Multi-región: Distribución geográfica de servidores
Código Abierto
Todo el código está disponible en GitHub. Las contribuciones son bienvenidas.
Archivos clave:
servermanagement.php- Gestión de servidores y provisioningapi/- Google API Client y lógica GCPdb/install.xml- Esquema de base de datos
Conclusión
El aprovisionamiento automático en GCP representa un salto cualitativo en la facilidad de despliegue de infraestructura de videoconferencia para Moodle. Lo que antes requería horas de trabajo manual ahora se hace con un clic.
¿Estás listo para probarlo? Clona el repositorio, configura tu proyecto GCP y crea tu primer servidor Jitsi en minutos.
Si tienes preguntas o necesitas ayuda con la configuración, no dudes en abrir un issue en GitHub o contactarme directamente.
Recursos: