miércoles, 22 de abril de 2026

Configurar SMTP gmail en moodle

En config.php:


$CFG->smtphosts = 'smtp.gmail.com:587';

$CFG->smtpuser = 'mai@mail.es';

$CFG->smtppass = ''; // tu app password  https://myaccount.google.com/apppasswords (es necesario tener la cuenta con 2fa https://myaccount.google.com/security )

$CFG->smtpsecure = 'tls';

$CFG->smtpauthtype = 'LOGIN'; 

Configuración Google Meet en Moodle

Para implementar la integración de Google Meet con Moodle mediante OAuth 2, sigue estos pasos:

  1. Creación del proyecto en Google Cloud
    • Se crea un proyecto en Google Cloud Console.
  2. Configuración de credenciales OAuth 2
    • Se genera:
      • Client ID
      • Client Secret
  3. Configuración en Moodle
    • Se accedió a:
      👉 Administración del sitio → Servidor → Servicios OAuth 2
    • Se creó el servicio de Google utilizando:
      • Client ID
      • Client Secret
  4. Configuración de URI de redirección
    • Se configura correctamente en Google Cloud:

      https://tudominio.com/admin/oauth2callback.php
    • Esto resuelve el error redirect_uri_mismatch
  5. Activación de APIs necesarias
    • Se habilita:
      • Google Drive API (necesaria para sincronizar grabaciones)
  6. Validación de conexión
    • Se logra conectar la cuenta de Google con Moodle
    • Se habilita la opción de sincronización de grabaciones

 Resultado

  • Moodle puede:
    • Crear sesiones de Google Meet
    • Conectar con Google Drive
    • Sincronizar grabaciones (tras ejecutar la sincronización)

Subir archivos grandes en Moodle

 Servidor web (NGINX o Apache)

En NGINX

Parámetro clave:

client_max_body_size 512M;
  • Esto define el tamaño máximo de subida
  • Valor típico por defecto: 1M o 2M (muy bajo)
  • Tú puedes subirlo a:
    • 128M (normal)
    • 256M (recomendado)
    • 512M (archivos grandes como videos)

 Se coloca en:

  • /etc/nginx/nginx.conf
  • o en config del sitio

Luego:

sudo systemctl reload nginx

PHP (MUY IMPORTANTE)

En php.ini debes ajustar:

upload_max_filesize = 512M
post_max_size = 512M
max_execution_time = 300
max_input_time = 300
memory_limit = 512M

post_max_size debe ser ≥ upload_max_filesize

Luego reinicia:

sudo systemctl restart php-fpm

(o apache si usas Apache)


Moodle (dentro del sistema)

Ir a:

Administración del sitio → Seguridad → Políticas del sitio

Configurar:

  • Tamaño máximo de archivo → 512MB (o el que quieras)

También en:

  • Curso → Configuración → Tamaño máximo de subida

Resumen rápido

Para subir archivos grandes:

NivelParámetroEjemplo
NGINXclient_max_body_size512M
PHPupload_max_filesize512M
PHPpost_max_size512M
MoodleTamaño máximo archivo512MB

Error típico

Si uno de estos es menor → falla la subida
(Moodle muestra error aunque tengas todo lo demás bien)

Configurar SMTP en Moodle (no gmail)

Si Moodle no envía correos, puedes configurar el SMTP directamente en el archivo config.php. 

1. Editar archivo

Ubica y abre:

/config.php

2. Añadir configuración SMTP

Agrega al final del archivo:

$CFG->directorypermissions = 0777;
$CFG->smtphosts = 'ssl://smtp.serviciodecorreo.es:465';
$CFG->smtpuser = 'tu_correo@tudominio.com';
$CFG->smtppass = 'tu_contraseña';
$CFG->smtpsecure = 'ssl';
$CFG->smtpauthtype = 'LOGIN';


3. Datos necesarios
  • Servidor SMTP: smtp.serviciodecorreo.es
  • Puerto: 465 (SSL)
  • Usuario: correo completo
  • Contraseña: la del correo

Notas importantes

  • Asegúrate de que el servidor permita conexiones SMTP (puerto 465 o 587)
  • Si no funciona con SSL, prueba:
    • tls con puerto 587
  • Verifica que el correo existe y la contraseña es correcta

Resultado

Con esta configuración, Moodle podrá enviar correos correctamente .

domingo, 12 de abril de 2026

Notas: Framework ACHIEVE para el uso de IA

No todos los problemas deben resolverse con IA. El framework ACHIEVE ayuda a identificar cuándo la Inteligencia Artificial es la herramienta correcta, con el fin de aumentar nuestra propia inteligencia y capacidad crítica, en lugar de solo depender de la tecnología.

Los 5 Pilares de ACHIEVE:

  1. A – Aid Human Coordination (Coordinación Humana): La IA como facilitadora entre personas.

    • Ejemplo: Resúmenes de reuniones, agendas compartidas o alineación de equipos.

  2. C – Cut Out Tedious Tasks (Eliminar lo Tedioso): Automatizar tareas repetitivas que no aportan valor creativo.

    • Ejemplo: Clasificar correos masivos o reformatear grandes bases de datos.

  3. H – Help Provide a Safety Net (Red de Seguridad): Usar la IA para revisar, verificar y detectar riesgos.

    • Ejemplo: Auditoría de contratos, detección de errores en código o análisis de "qué podría salir mal".

  4. I-E-V – Inspire bEtter problem solving and creatiVity (Inspiración y Creatividad): Salir de nuestra zona de confort mental.

    • Uso: Evitar resolver todo de la misma forma (sesgo) usando la IA para brainstorming, analogías y ángulos de resolución que no habíamos considerado.

  5. E – Enable Great Ideas to Scale Faster (Escalabilidad): Llevar una buena idea a un impacto mayor rápidamente.

    • Ejemplo: Traducir contenido a varios idiomas o adaptar un solo concepto a múltiples formatos (blog, redes sociales, video)

    • Conclusión: Antes de lanzar un prompt, haz una pausa y pregunta: ¿Este problema encaja en ACHIEVE? El objetivo real de la IA no es reemplazarnos, sino servir de palanca para elevar nuestro pensamiento crítico y nuestra creatividad.

viernes, 13 de febrero de 2026

Consultas SQL valiosas para moodle

 SELECT 

    table_name,

    ROUND((data_length + index_length) / 1024 / 1024 / 1024, 2) AS size_gb

FROM information_schema.TABLES

WHERE table_schema = 'campus'

ORDER BY size_gb DESC;


SELECT

   ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS total_gb

FROM information_schema.TABLES

WHERE table_schema = 'campus';


SELECT table_name,

       ROUND((data_length + index_length) / 1024 / 1024, 2) AS size_mb

FROM information_schema.TABLES

WHERE table_schema = 'mdlsimb'

ORDER BY size_mb DESC


Borrar logs de antes del 2025

SELECT COUNT(*) AS registros_a_borrar

FROM mdl_logstore_standard_log

WHERE timecreated < UNIX_TIMESTAMP('2025-01-01');


DELETE FROM mdl_logstore_standard_log

WHERE timecreated < UNIX_TIMESTAMP('2025-01-01')

LIMIT 50000;



OPTIMIZE TABLE mdl_logstore_standard_log;

SHOW VARIABLES LIKE 'innodb_file_per_table';

ANALYZE TABLE mdl_logstore_standard_log;


martes, 10 de febrero de 2026

Como bloquear dominio y apuntar a un subdominio con usuario y clave en Cloud Panel AWS

Pasos para  bloquear Dominio y apuntar a un subdominio con usuario y clave en Cloud Panel AWS

1️⃣ DNS (SiteGround)

  • Crear subdominio nuevo (ej: subdominio.abc.com)

  • Apuntarlo a la misma IP del servidor AWS

2️⃣ CloudPanel / Nginx

En security activar basic authentication y crear el usuario con contraseña encriptada

En el mismo site:

  • server_name incluye:

    dominio.abc.com subdominio.abc.com
  • Bloquear dominio viejo:

    if ($host = "dominio.abc.com") { return 403; }
  • Proteger acceso (Basic Auth):

    auth_basic "Acceso restringido"; auth_basic_user_file /etc/nginx/.htpasswd;
  • Añadir noindex:

    add_header X-Robots-Tag "noindex, nofollow" always;

3️⃣ Dónde va la app

  • Ambos dominios apuntan a la misma carpeta del proyecto

  • No duplicar archivos

  • No crear otra instancia

4️⃣ Probar

  • Dominio viejo → 403

  • Subdominio nuevo → pide usuario/clave

  • Sin login → no se carga nada

  • Google → no indexa

RECORDATORIO IMPORTANTE

  • Esto protege el acceso, no el código del front

  • Un usuario autorizado siempre puede ver el JS

  • Para proteger el producto, es necesario crear backend

Blogs Colombia