| Versiones | SAIPA 0.5.1 / EVAL-IA 0.4.8 |
| Moodle requerido | 4.4+ o 5.0+ (autodetectado) |
| Fecha | Abril 2026 |
| Soporte | soporte@schaller-ponce.com.ar |
| Licencia | Propietaria — uso institucional |
El instalador verifica estos requisitos automáticamente al iniciarse. Asegurate de que el servidor cumple con todos antes de comenzar.
| Componente | Mínimo | Recomendado | Notas |
|---|---|---|---|
| Sistema Operativo | Linux (cualquier distro) | Ubuntu 22.04 LTS | No compatible con Windows ni macOS |
| RAM | 8 GB | 16 GB o más | Ver tabla de modelos LLM en §2.5 |
| CPU | 4 núcleos | 8 núcleos | Más núcleos = menor latencia en modo CPU |
| Disco | 40 GB libres | 80 GB libres | Los modelos LLM ocupan 5–15 GB c/u |
| Docker | 24.0+ | Última versión | docker --version |
| Docker Compose | v2.0+ | Última versión | docker compose version |
| Python | 3.10 | 3.11 o 3.12 | Para ejecutar el installer |
| Ollama | 0.3+ | Última versión | Opcional si se usa API externa (Groq/OpenAI) |
| Moodle | 4.4 | 4.5 o 5.0 | Ya instalado y funcionando |
| GPU (opcional) | — | VRAM ≥ 8 GB | Sin GPU funciona, con mayor latencia |
Antes de ejecutar el instalador, realizá los siguientes pasos en el panel de administración de Moodle:
local_saipa manualmente desde Moodle antes de ejecutar el wizard. El installer también puede instalarlo automáticamente si seleccionás el método de configuración B o C.
Descargá el instalador desde schaller-ponce.com.ar/descargas ingresando tu código de acceso. Una vez descargado el ZIP:
unzip saipa-installer.zip cd saipa-installer pip install -r requirements.txt
Si el servidor no tiene Ollama instalado y vas a usar un modelo LLM local, instalalo antes de continuar:
curl -fsSL https://ollama.com/install.sh | sh
Iniciá el wizard con:
python3 installer.py install
El wizard es interactivo. Podés presionar Enter para aceptar los valores por defecto (mostrados entre corchetes).
El wizard detecta y muestra una tabla con el estado del entorno:
No hay nada que ingresar en este paso. Si algún requisito falla, el wizard lo señala con ❌ y sugiere la acción correctiva antes de continuar.
sudo usermod -aG docker $USER y reiniciar sesión.
Ambos plugins comparten el mismo motor de IA (saipa-engine). Instalarlos juntos no requiere recursos adicionales.
El wizard valida la licencia contra el servidor de Schaller & Ponce en tiempo real. Una licencia válida muestra el nombre del cliente y el plan contratado.
El wizard recomienda automáticamente el mejor modelo según el hardware detectado. La tabla siguiente muestra los tiers disponibles:
| Tier | Condición | Modelo | Latencia aprox. |
|---|---|---|---|
| GPU-L | GPU con VRAM ≥ 16 GB | qwen2.5:14b | 2–4 seg/resp |
| GPU-M | GPU con VRAM ≥ 8 GB | qwen2.5:7b | 3–6 seg/resp |
| CPU-L | RAM ≥ 32 GB, sin GPU | qwen2.5:7b-q4_K_M | 15–30 seg/resp |
| CPU-M | RAM ≥ 16 GB, sin GPU | gemma3:4b | 20–40 seg/resp |
| API | Cualquier hardware | Groq / OpenAI (externo) | 1–3 seg/resp |
Podés aceptar el tier recomendado o ingresar cualquier nombre de modelo Ollama disponible.
Con Telegram configurado, los alumnos reciben notificaciones de riesgo y pueden interactuar con el asistente directamente desde la app. Altamente recomendado para producción.
Para crear un bot de Telegram: buscar @BotFather en Telegram → /newbot → seguir las instrucciones → copiar el token.
saipa. Usá un nombre único si instalás varias instancias en el mismo servidor.El wizard puede configurar automáticamente los parámetros del plugin en Moodle. Elegir el método según el acceso disponible:
| Opción | Descripción | Requisito |
|---|---|---|
| A — PHP nativo | Ejecuta admin/cli/cfg.php directamente en el servidor |
Acceso SSH con php en el PATH y ruta al directorio Moodle |
| B — Docker | Ejecuta el comando dentro del contenedor Moodle via docker exec |
Moodle debe estar en un contenedor Docker accesible |
| C — Manual | El wizard muestra los valores al final para configurarlos a mano | Ninguno — siempre disponible como fallback |
saipa-moodle).
Una vez confirmada la configuración, el wizard ejecuta automáticamente:
docker-compose.yml y .env en el directorio de despliegue (~/saipa-deploy/)docker compose pull para descargar las imágenesdocker compose up -d para iniciar los serviciosSi elegiste el método de configuración C (manual), o si el paso automático falló, completá la configuración desde el panel de administración de Moodle.
http://localhost:8052 (o el puerto configurado)~/saipa-deploy/.saipa-install.jsonAl finalizar la instalación, el wizard muestra una tabla de verificación. Cada check puede tener tres estados:
┌─────────────────────────────┬────────┬──────────────────────────────┐ │ Check │ Estado │ Detalle │ ├─────────────────────────────┼────────┼──────────────────────────────┤ │ saipa-engine /health │ ✅ │ 200 OK │ │ Moodle WS (SAIPA) │ ✅ │ OK │ │ Ollama modelo qwen2.5:14b │ ✅ │ disponible │ │ Telegram bot │ ✅ │ activo │ └─────────────────────────────┴────────┴──────────────────────────────┘
| Check | Qué verifica | Si falla |
|---|---|---|
| saipa-engine /health | Que el motor de IA esté corriendo y responda con autenticación | Ver §5 — error 1 o error 2 |
| Moodle WS (SAIPA) | Que el token WS sea válido y el plugin esté instalado en Moodle | Ver §5 — error 3 |
| Ollama modelo X | Que el modelo LLM esté descargado y disponible en Ollama | Ver §5 — error 4 |
| Telegram bot | Que el bot responda correctamente (solo si Telegram fue configurado) | Ver §5 — error 5 |
Podés ejecutar el health check en cualquier momento sin reinstalar:
python3 installer.py doctor
Para especificar un directorio de instalación distinto al predeterminado:
python3 installer.py doctor --dir /ruta/al/deploy
docker ps | grep saipacd ~/saipa-deploy && docker compose up -ddocker logs saipa-engine --tail 50ss -tlnp | grep 8052cat ~/saipa-deploy/.saipa-install.json | grep saipa_api_token~/saipa-deploy/.saipa-install.json con el nuevo tokenpython3 installer.py doctor para verificarollama listollama serve &ollama pull qwen2.5:14b (reemplazar con el modelo elegido)curl http://localhost:11434/api/tagsdocker logs saipa-engine --tail 30 | grep telegram~/saipa-deploy/.env: campo TELEGRAM_BOT_TOKENcd ~/saipa-deploy && docker compose restart saipa-engineTELEGRAM_WEBHOOK_URL debe estar vacíodocker pull ghcr.io/krl05op11/saipa-engine:latestecho TOKEN | docker login ghcr.io -u USUARIO --password-stdin| Comando | Descripción |
|---|---|
python3 installer.py install | Instalación completa guiada desde cero |
python3 installer.py doctor | Health check de la instalación existente |
python3 installer.py upgrade | Actualiza imágenes Docker y plugins a la última versión |
python3 installer.py --help | Muestra todos los comandos disponibles |
python3 installer.py install --dir /ruta | Especifica directorio de despliegue (default: ~/saipa-deploy) |
| Comando | Descripción |
|---|---|
cd ~/saipa-deploy && docker compose up -d | Inicia todos los servicios |
docker compose down | Detiene todos los servicios (datos persistentes) |
docker compose restart saipa-engine | Reinicia solo el motor de IA |
docker logs saipa-engine --tail 50 -f | Ver logs del engine en tiempo real |
docker logs saipa-postgres --tail 30 | Ver logs de la base de datos |
docker ps | Estado de todos los contenedores |
| Archivo | Contenido |
|---|---|
~/saipa-deploy/.saipa-install.json | Estado completo de la instalación (tokens, puertos, modelo) |
~/saipa-deploy/.env | Variables de entorno del engine (tokens, Telegram, licencia) |
~/saipa-deploy/docker-compose.yml | Configuración de todos los servicios Docker |
~/saipa-installer/installer_config.yaml | Configuración del installer (URLs de descarga, versión mínima) |
| Panel | URL |
|---|---|
| Panel docente SAIPA | https://[moodle-url]/local/saipa/teacher.php |
| Panel asesor institucional | https://[moodle-url]/local/saipa/advisor.php |
| Panel EVAL-IA (docente) | https://[moodle-url]/local/evalia/teacher.php |
| Installation Status | https://[moodle-url]/local/saipa/status.php |
| Engine health check | http://[servidor]:8052/health |
saipa-YYYYMMDD-HHMMSS). Ese ID permite al equipo de soporte revisar los logs de tu instalación en tiempo real.
Schaller & Ponce — Soluciones Educativas con Inteligencia Artificial
soporte@schaller-ponce.com.ar · schaller-ponce.com.ar