Cabecera Servidor Escolar

Cómo montar el servidor en la escuela

🏫 Escenario real · Escuela Primaria N.° 109 «Juan Chassaing»
Zona oeste de Rosario · Pública · Contexto de vulnerabilidad educativa y tecnológica.
  1. Disponer de una PC, notebook o netbook en la institución que pueda destinarse como servidor.
  2. Instalar un sistema operativo GNU/Linux estable (ej. Ubuntu Server o Debian).
  3. Configurar un entorno LAMP (Linux, Apache, MySQL/MariaDB, PHP).
  4. Colocar los recursos navegables en la carpeta /var/www/html/recursos/.
  5. Conectar los equipos de la escuela a la misma red local para acceder al servidor desde cualquier dispositivo.

Servicios disponibles

Moodle

Plataforma educativa local para cursos y seguimiento de estudiantes.

Chamilo

Espacio de red social escolar para compartir ideas y experiencias.

PhET

Colección de simulaciones interactivas para ciencias y matemáticas.

JClic

Actividades educativas interactivas listas para su uso en el aula.

Dokuwiki

Herramienta para documentar y archivar trabajos y proyectos de los estudiantes.

Wikipedia offline

Acceso a CDPedia o Kiwix para consultas sin necesidad de Internet.

OwnCloud

Almacenamiento y compartición de archivos de manera local y segura.

WordPress

Plataforma para la creación de un periódico escolar en red local.

Otros Servicios

Dependiendo de la infraestructura, se pueden montar servicios para comunicarse o compartir

Servicios desplegados en la Escuela 109

PhET

Simulaciones interactivas de ciencias y matemática, sin Internet.

JClic

Actividades educativas (crucigramas, sopas, asociaciones) en HTML5.

Pilas Engine

Entorno completo para desarrollo de videojuegos educativo.

Pilas Bloques

Programación visual por bloques para los más chicos.

CD7

Colección didáctica creada por docentes argentinos (REA).

DokuWiki

Escritura colaborativa y organización del aula (sin base de datos).

Kiwix

Enciclopedias offline (Vikidia, Wikipedia, Wikisource) en puerto 8080.

Recursos NTFS

Carpeta compartida con los materiales de Aprender Conectados (videos, PDF, cuentos).

⚙️ Anexo · Decisiones técnicas clave para hardware limitado

🔹 Sin base de datos (MariaDB/MySQL)

Ningún recurso seleccionado la requiere. DokuWiki funciona con archivos de texto plano. Esto ahorra RAM y simplifica el mantenimiento.

🔹 Apache con MPM event

Más simple que Nginx en un entorno escolar, con permisos más directos. Limitado a 30 workers para no agotar los 4GB de RAM.

🔹 Montaje NTFS con permisos para Apache

La partición de Windows se monta en /mnt/windows_data con uid=www-data y gid=www-data, y se enlaza simbólicamente a /var/www/html/recursos. Así se evita duplicar espacio y se sirven los archivos directamente.

🔹 ZRAM para ampliar memoria efectiva

Con 4GB de RAM y un HDD lento, ZRAM (50% de la RAM, algoritmo zstd) proporciona 2GB de swap comprimido con prioridad 100. Evita el uso del disco como swap y mejora el rendimiento con múltiples clientes.

🔹 Kiwix en lugar de CDPedia

Kiwix es más ligero, tiene mejor buscador y permite servir archivos .zim de Vikidia y Wikipedia de manera eficiente en el puerto 8080.

🔹 Nombres mDNS (servidor.local)

Como la IP es dinámica y no se puede configurar el router, se utiliza el nombre servidor.local (Avahi/Bonjour) para que los clientes siempre encuentren el servidor, sin importar la IP que asigne el DHCP.

📄 Código de la página de inicio (index.html)

Este es el HTML que ven los usuarios al acceder a http://servidor.local/. Diseño responsivo, accesible y sin efectos que fallen en navegadores antiguos.

<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Servidor Escolar · Escuela 109 Juan Chassaing</title> <style> /* ── Base sólida y sin efectos pesados ── */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Segoe UI', 'Liberation Sans', Tahoma, sans-serif; background: #f2f4f5; color: #1e2a36; line-height: 1.5; font-size: 1.1rem; padding: 1rem; } .container { max-width: 1200px; margin: 0 auto; background: white; border-radius: 16px; overflow: hidden; box-shadow: 0 2px 5px rgba(0,0,0,0.08); } header { background: #1a4b6e; color: white; padding: 1.8rem 1.5rem; text-align: center; } header h1 { font-size: 2rem; font-weight: 600; margin-bottom: 0.5rem; } header p { font-size: 1.1rem; opacity: 0.9; } .grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 1.2rem; padding: 2rem; } .card { display: flex; align-items: center; gap: 1rem; background: #ffffff; border-left: 6px solid; padding: 1.2rem; text-decoration: none; color: #1e2a36; border-radius: 12px; border: 1px solid #e2e8f0; transition: background 0.1s ease; } .card:hover { background: #f8fafc; } .card-azul { border-left-color: #2c7da0; } .card-verde { border-left-color: #2e7d32; } .card-naranja { border-left-color: #e67e22; } .card-violeta { border-left-color: #8e44ad; } .card-rojo { border-left-color: #c0392b; } .card-amarillo { border-left-color: #f1c40f; } .card-icon { font-size: 2.2rem; min-width: 55px; text-align: center; } .card-content { flex: 1; } .card-content h3 { font-size: 1.3rem; margin-bottom: 0.25rem; } .card-content p { font-size: 0.95rem; color: #2c3e50; } footer { text-align: center; padding: 1.2rem; font-size: 0.85rem; background: #e9ecef; border-top: 1px solid #ced4da; } @media (max-width: 700px) { body { padding: 0.5rem; font-size: 1rem; } header h1 { font-size: 1.5rem; } .grid { padding: 1rem; gap: 0.8rem; } .card { flex-direction: column; text-align: center; border-left: none; border-top: 5px solid; } } </style> </head> <body> <div class="container"> <header> <h1>📚 Servidor Escolar · Aulas Libres</h1> <p>Escuela Primaria N.° 109 «Juan Chassaing» · Red local sin internet</p> </header> <div class="grid"> <a href="/PHET/" class="card card-azul"> <div class="card-icon">🧪</div> <div class="card-content"> <h3>Simulaciones PhET</h3> <p>Ciencias y Matemática · Experimentos interactivos</p> </div> </a> <a href="/JClic/" class="card card-verde"> <div class="card-icon">🧩</div> <div class="card-content"> <h3>Actividades JClic</h3> <p>Crucigramas, sopas de letras, asociaciones</p> </div> </a> <a href="/bloques/" class="card card-naranja"> <div class="card-icon">🧩</div> <div class="card-content"> <h3>Pilas Bloques</h3> <p>Programación con bloques visuales · Creá tu propio juego</p> </div> </a> <a href="/pilas/" class="card card-naranja"> <div class="card-icon">⚙️</div> <div class="card-content"> <h3>Pilas Engine</h3> <p>Entorno completo de desarrollo de videojuegos</p> </div> </a> <a href="/cd7/actividades/coleccion.educ.ar/coleccion/CD7/index.html" target="_blank" class="card card-rojo"> <div class="card-icon">🎓</div> <div class="card-content"> <h3>Colección CD7</h3> <p>Material didáctico · Proyecto que hicimos con cariño</p> </div> </a> <a href="/wiki/" class="card card-verde"> <div class="card-icon">📝</div> <div class="card-content"> <h3>DokuWiki</h3> <p>Escritura colaborativa · Organizador del aula</p> </div> </a> <a href="/recursos/" class="card card-amarillo"> <div class="card-icon">📂</div> <div class="card-content"> <h3>Carpeta compartida</h3> <p>Materiales del docente · Trabajos del aula</p> </div> </a> </div> <div style="text-align: center; margin: 0 2rem 2rem 2rem; padding: 1rem; background: #f1f5f9; border-radius: 16px; border: 1px solid #cbd5e1;"> <a href="http://servidor.local:8080" target="_blank" style="display: inline-flex; align-items: center; gap: 12px; text-decoration: none; color: #1e2a36; font-size: 1.2rem; font-weight: bold;"> <span style="font-size: 2rem;">📖</span> <span>Enciclopedias offline (Vikidia · Wikipedia · Biblioteca)</span> <span style="font-size: 1.2rem;">🔗</span> </a> <p style="margin-top: 8px; font-size: 0.85rem; color: #2c3e50;">Abre en nueva ventana · Puerto especial 8080</p> </div> <footer> <p>📡 Red interna · Sin conexión a internet · <a href="/">Servidor escolar</a></p> <p>📖 Recursos educativos libres · <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">CC BY-SA 4.0</a></p> </footer> </div> </body> </html>

Recomendaciones

Asignar un responsable técnico-docente para mantener actualizado el servidor, realizar copias de seguridad y capacitar al equipo en el uso de las plataformas. Promover el uso pedagógico y colaborativo, integrando a toda la comunidad educativa.

📖 Este proyecto demuestra que con hardware modesto, decisiones técnicas acertadas y compromiso docente, se puede garantizar el derecho a la educación incluso en contextos de conectividad limitada.