Skip to content
Leon Achata
Todos los proyectos
Web

Enaki

Escuela de formación docente intercultural bilingüe en la Amazonía peruana

Todo el ecosistema web de una institución de formación docente: un sitio público con carreras, cursos y novedades, una API para contacto y reclamos, y un aula virtual en Moodle, sobre infraestructura que monté y mantengo.

Rol
Diseño, frontend, backend, infraestructura y operación
Año
2026
Estado
En producción· enaki.edu.pe
enaki.edu.pe
Enaki

De dónde partimos

Antes

  • Sitio y dominio en un hosting compartido de Punto.pe
  • Nada delante del servidor: sin CDN ni filtrado de DDoS o bots
  • Sin aula virtual ni backend propio

Ahora

  • DNS y proxy en Cloudflare: CDN, mitigación de DDoS, protección contra bots y HTTPS forzado con TLS 1.2+
  • Frontend estático en Hostinger; API y Moodle en una VPS endurecida con Docker
  • El servidor solo acepta tráfico de Cloudflare: su IP nunca queda expuesta
  • Respaldos diarios cifrados fuera del servidor

Arquitectura

El camino de una petición, desde el navegador hasta la base de datos.

  1. 01

    Hostinger · enaki.edu.pe

    El sitio que carga el visitante: archivos estáticos, sin servidor de aplicaciones que atacar. Cuando alguien envía un formulario o entra al aula virtual, la petición sale hacia la VPS.

  2. 02

    Cloudflare

    DNS, CDN y proxy delante de todo. Absorbe ataques DDoS, filtra bots y fuerza HTTPS antes de que una petición llegue a la VPS.

  3. 03

    Caddy en la VPS

    La única puerta de entrada a la VPS. Solo atiende rangos de IP de Cloudflare, con certificado Origin de Cloudflare (Full strict) y cabeceras de seguridad.

  4. 04

    FastAPI · Moodle

    api.enaki.edu.pe atiende contacto y reclamos; aula.enaki.edu.pe es el aula virtual. Cada uno en su propio contenedor.

  5. 05

    PostgreSQL · MariaDB

    En redes Docker privadas: sin puerto publicado ni salida a internet. Solo su propia aplicación llega a ellas.

Seguridad

  • Origen oculto detrás de Cloudflare

    Un firewall en la cadena DOCKER-USER (Docker se salta UFW) y el propio Caddy cortan cualquier conexión que no venga de Cloudflare. Dos capas, por si una falla.

  • Rate limiting por IP real

    Los límites usan la IP real del visitante (CF-Connecting-IP), no la del proxy: 5 mensajes por minuto en contacto y 3 reclamos cada 10 minutos.

  • Validación estricta

    Pydantic valida cada campo con formatos peruanos (DNI, celular) y el envío de correos rechaza la inyección de cabeceras.

  • Superficie mínima

    La API solo acepta POST desde los dominios del sitio, oculta su documentación en producción y no anuncia versiones del servidor. Sus respuestas no se pueden incrustar.

  • Acceso al servidor blindado

    Sin login de root ni contraseñas: solo llaves SSH Ed25519, un usuario administrador con mínimos privilegios y un firewall que niega todo por defecto.

Operación

  • Respaldos diarios cifrados

    La base y los archivos de Moodle más el PostgreSQL del sitio, cifrados con rclone crypt y subidos a Google Drive con 30 días de retención. Los pasos para restaurar están documentados junto al script.

  • Privacidad programada

    Los mensajes de contacto se borran solos a los dos años, tal como promete la política de privacidad según la Ley de Protección de Datos Personales.

  • Despliegues reproducibles

    Un solo Docker Compose describe todo el servidor, con versiones de imagen fijadas, health checks, logs rotados y migraciones al arrancar. La CI compila el sitio y prueba la API contra un PostgreSQL real.

Lo que construí

  • Aula virtual en Moodle

    Imagen propia de Moodle 5 sobre PHP 8.4: raíz movida a /public como exige Moodle, las extensiones PHP que pide y su cron corriendo cada minuto.

  • Libro de Reclamaciones virtual

    El libro que exige la ley peruana, con numeración correlativa anual protegida por un bloqueo de fila y la copia obligatoria enviada al consumidor.

  • Sitio público

    Carreras, plan de estudios de 10 ciclos, cursos y novedades, con fuentes alojadas en el propio sitio y contenido en archivos de datos versionados en lugar de un CMS.

  • Correo institucional

    Correo en el dominio enaki.edu.pe con SPF, DKIM y DMARC, para que los mensajes del sitio lleguen a la bandeja de entrada y no a spam.

Stack

React 19ViteTailwindFastAPIPostgreSQLMoodleMariaDBDockerCaddyCloudflare

¿Tu organización necesita un sitio así?

Diseño, construyo y opero sitios con su propio backend, seguridad e infraestructura.

Servicio relacionado: Páginas web y aplicaciones

Contáctame