Publicado el Dejar un comentario

DNS dinámico con Dynu

DNS dinámico con Dynu

Si eres un entusiasta del software libre, te enseñaré a configurar un DNS dinámico con Dynu, un estupendo servicio que no tiene nada qué pedirle a viejos conocidos como no-ip.com o dyndns, por ejemplo ya que seguramente has tenido en algún momento la necesidad de montarte tu propio servidor web utilizando el servicio de Internet que tienes en casa; no obstante, es muy probable que seguramente tengas un servicio doméstico asimétrico que cambia de IP cada vez que se reinicia o según los periodos de “refresco” que haya determinado el proveedor.

Primero que nada, ¿qué es un DNS Dinámico?

Según la Wikipedia, el DNS dinámico (DDNS) es un servicio que permite la actualización en tiempo real de la información sobre nombres de dominio situada en un servidor de nombres. El uso más común que se le da es permitir la asignación de un nombre de dominio de Internet a un dispositivo con dirección IP variable (dinámica). Esto permite conectarse con la máquina en cuestión sin necesidad de tener conocimiento de que dirección IP posee en ese momento.

El DNS dinámico hace posible utilizar un software de servidor en un dispositivo con dirección IP dinámica (como la suelen facilitar muchos ISP) para, por ejemplo, alojar un sitio web en la PC de nuestra casa, sin necesidad de contratar un hosting de terceros; pero hay que tener en cuenta que las PC caseras posiblemente no estén tan bien dotadas como los servidores de un Datacenter, ni tengan toda la infraestructura que poseen estos lugares.

Manos a la obra

Como primer paso, deberás haberte creado una cuenta en Dynu.com, asegurarte de tener tu servidor Apache Ngix disponible, haber habilitado los puertos necesarios (http, https, etc.) en tu router y vale, tener técnicamente resuelta la accesabilidad a tu servidor web. En mi caso, dejé abierto el puerto 80 y 443 en mi router con UFW configurado y ya está visible al público mediante mi IP pública.

En este caso, en Dynu, he creado el subdominio keivinwedell.theworkpc.com dentro de un grupo llamado ToshibaLaptop para que cuando alguien consulte esta URL, sea redireccionado automáticamente al servidor con IP dinámica que tengo en casa.

DNS dinámico con Dynu
DNS dinámico con Dynu

Descargando el cliente Dynu para Linux

El cliente de actualización de IP del DNS Dinámico con Dynu, es una estupenda herramienta que en intervalos de tiempo regulares, realiza la consulta y actualización de la dirección IP pública de nuestro servidor para asociarla a un dominio o subdominio.

Para comenzar a hacer uso de la herramienta, solo tienes que estar logueado y descargar el cliente para Linux. En mi caso, suelo utilizar Debian por lo cual, descargué el archivo .DEB correspondiente desde https://www.dynu.com/en-US/Resources/Downloads:

En mi caso particular, lo obtuve ejecutando el siguiente comando:

su -
wget https://www.wiredblade.com/files/linux/dynuiuc_2.6.2-2ubuntu16_amd64.deb

Y para realizar la instalación del cliente DNS dinámico con Dynu, solo necesitas ejecutar el siguiente comando:

dpkg -i dynuiuc_2.6.2-2ubuntu16_amd64.deb

Con esto, ya habrá quedado instalado en nuestro sistema; ahora, vamos a configurarlo…

El archivo de configuración de mi DNS dinámico con Dynu

Este paso es muy simple, solo tienes que editar el archivo de configuración ubicado en la ruta /etc/dynuiuc/dynuiuc.conf de la siguiente manera:

nano /etc/dynuiuc/dynuiuc.conf

Y en su contenido, deberá tener algo como esto:

A continuación, te explico cada valor:

username YOURUSERNAME  # Tu nombre de usuario en Dynu.
password YOURPASSWORD # La contraseña de tu cuenta en Dynu.
location LOCATIONNAME # Puede quedar vacío; no obstante si tienes un grupo que aglutina varios servicios, pon el nombre del grupo asignado en el panel de control.
ipv4 true # Puede ser verdadero o falso, déjalo como está.
ipv6 true # Puede ser verdadero o falso, déjalo como está.
pollinterval 300 # El intervalo de actualización la IP en segundos; el mínimo es 120 (2 minutos).
debug false # Puede ser verdadero o falso, déjalo como está.
quiet true # Puede ser verdadero o falso, déjalo como está.

Si todo está listo, hacemos una primera prueba para verificar el estado del servicio:

systemctl status dynuiuc.service

Ahora, echamos a andar el servicio en segundo plano:

systemctl start dynuiuc.service

Verificamos nuevamente su estado:

systemctl status dynuiuc.service

Y ahora, finalmente, configuramos el cliente de DNS dinámico con Dynu para que se cargue en segundo plano al inicio:

systemctl enable dynuiuc.service

¡Y es todo! Ya tienes tu cliente configurado y funcionando. Si entras a tu panel de control, observarás que la IP habrá cambiado junto con la fecha y hora de la última actualización:

Más información en: https://www.dynu.com/DynamicDNS/IPUpdateClient/Linux

Publicado el Dejar un comentario

¿Cuántos usuarios soporta Moodle?

Si eres administrador de plataformas de e-learning, director de una escuela, administrador de sistemas o profesor, seguramente te habrás preguntado en alguna ocasión cuántos usuarios soporta Moodle. No hay una respuesta simple o sencilla para ello ya que depende de varios factores por lo que en este artículo, te ayudaré a tener una mayor comprensión del tema para que evalúes y elijas correctamente lo que se ajuste a tu presupuesto.

Servidores y Servidores Web

Un servidor, tradicionalmente definido, es un equipo de cómputo conectado a una red de computadoras, con software configurado para tal propósito que tiene la capacidad de atender o dar respuesta a todas y cada una de las peticiones que recibe a través de la misma, según las especificaciones o protocolo utilizado y configurado para ello.

¿Cuántos usuarios soporta Moodle?
El primer servidor web de la historia

Por ejemplo, cuando Tim Berners Lee creó las especificaciones del protocolo HTTP para dar paso a la World Wide Web, configuró una computadora NeXT para desplegar y servir páginas web o “de hipertexto” a sus compañeros científicos en el CERN de Suiza, algo novedoso y completamente revolucionario.

En este sentido, el puerto asignado al protocolo HTTP fue el puerto 80. No obstante lo anterior, previo a esto, ya existía el puerto 20 para conexiones mediante consola a través de Telnet, puerto 21 para transferencia de archivos mediante FTP, puerto 22 para conexiones cifradas mediante consola mediante SSH, puerto 25 para correo electrónico y así sucesivamente. Para que un servidor o equipo de cómputo permitiese la conexión a estos puertos en una red, era necesario configurar en dicho equipo cada uno de ellos mediante programas que se ejecutan en memoria como “servicios”.

Así, en nuestra comprensión de qué es un “servidor”, podemos decir que cada puerto o protocolo tiene como misión y propósito proveer un “servicio” o conjunto de “servicios” a nuestros “clientes” según el protocolo que utilice. Así, un servidor web, puede ser entendido como un programa (el servidor web más popular es Apache seguido de Nginx mediante el puerto 80 (HTTP) o puerto 443 (HTTPS), el cual provee a nuestros usuarios del acceso a páginas web planas o de hipertexto (HTML) o bien, páginas generadas a través de procesadores de páginas de hipertexto como PHP, Phyton, etc.

Si un cliente (usuario, visitante, cibernauta, etc.) realiza una petición a nuestro servidor, de manera técnica lo que podemos decir es que solicita una respuesta a un servicio previamente configurado (servidor web Apache o servidor web Nginx) que está funcionando en ese momento en memoria para responder y dar respuesta a ello.

Con esto en consideración, y gracias a la generosidad de los entusiastas del software libre, hoy en día un servidor web puede cubrir múltiples funciones y satisfacer múltiples demandas.

¿Qué recursos necesito para implementar un servidor web?

Por ello, es importante mencionar que para que un sitio web complejo pueda funcionar basado en GNU/Linux, Apache, PHP y MySQL o MaríaDB (un servidor LAMP), a grandes rasgos, necesitarás de:

  • Un servidor físico o virtual con conexión a Internet, espacio en disco duro suficiente, memoria RAM y otros recursos de misión crítica como procesador, sistema operativo, etc.
  • Una dirección IP pública estática (o dinámica, más complejo de usar, pero no imposible de configurar) para tu servidor físico o virtual.
  • Un software que actúe como servicio de servidor web como Apache o Nginx para el procesamiento e interpretación de páginas HTML mediante el protocolo HTTP.
  • Un procesador o intérprete como PHP que facilite la generación dinámica de páginas de hipertexto.
  • Un servicio que actúe como servidor de base de datos como MariaDB, PostgreSQL o MySQL.

Adicionalmente, si quieres tener URLs amigables para tu sitio web, requerirás de:

  • Un nombre de dominio contratado del tipo misitioweb.com.
  • Un servidor DNS que redireccione tu dominio contratado a la dirección IP pública estática (o dinámica) de tu servidor física o virtual.

Todo esto, en conjunto, requiere de una adecuada instalación instalación y configuración de paquetes y librerías que permitan optimizar y garantizar la disponibilidad de tus servicios, así como una correcta resolución de peticiones de los clientes, usuarios o visitantes de tu sitio web.

Un servidor LAMP (Linux, Apache, MySQL y PHP) es una alternativa simple, económica y eficiente para instalar Moodle.

Con todo, ¿cuántos usuarios soporta Moodle?

En este punto, vamos a resolver tu duda y tratar de responder lo más objetivamente: antes de preguntarte cuántos usuarios soporta Moodle, debes tratar de encuadrar y definir primero tu problemática o escenario deseado en los siguientes términos:

  1. ¿Qué experiencia de usuario deseas brindar a tus alumnos y profesores?
  2. ¿Cuántos usuarios en total tienes programado atender?
  3. ¿Cuántos de estos usuarios serán concurrentes o se conectarán simultáneamente? ¿En qué momentos podrías tener alta demanda que derive en cuellos de botella?
  4. ¿Qué tanta tolerancia tendrías a respuestas lentas del servidor en horas pico?
  5. ¿Cuáles son tus perspectivas de crecimiento en el corto, mediano y largo plazo?

Con lo anterior en consideración, te daré un dato: Moodle es un LMS (Learning Management System) súmamente robusto que ofrece una gran cantidad de recursos para diseñar y programar nuestros cursos. Para que te des una idea, el código fuente o paquete comprimido de la versión de Moodle 4.2+, tiene un tamaño de archivo de 62.2 MB en formato tar.gz. Estos datos son determinantes para calcular cuántos usuarios soporta Moodle.

Última versión de Moodle en https://download.moodle.org/releases/latest/.
Este es el LMS de CulturaLibre.ent.

Ello no quiere decir que esos recursos ya descomprimidos estarán simultáneamente procesándose completa y enteramente en la memoria RAM del servidor; sin embargo, es un dato de referencia que no debemos perder de vista.

Con ello, más o menos desde la versión 1.x de Moodle, surgió una recomendación sobre la cantidad de memoria RAM que debe tener un servidor web para atender N número de usuarios: por cada 10 – 20 usuarios concurrentes, se recomienda tener disponibles 1 GB de memoria RAM.

A grandes rasgos, si tienes una escuela con 100 alumnos y esperas que los 100 se conecten al mismo tiempo (concurrencia), deberías de tener 5 GB de memoria RAM + unos 2 o 4 GB adicionales para al sistema operativo de tu servidor web Apache o Ngix.

Ahora bien, es probable que tus usuarios no estarán conectados las 24 hrs. del día de manera concurrente o simultánea sino que existan “eventos” más o menos “dispersos” a lo largo del tiempo por lo que, a manera de “riesgo calculado” podrías decidir decir: voy a destinar 2 GB de memoria RAM para Moodle + 2 GB para mi sistema operativo con los cuales atenderé a 100 usuarios en total, pero entiendo y comprendo que 40 usuarios concurrentes están garantizados.

Este es un escenario o panorama con riesgos calculados y tolerados.

¿Cuál es el escenario que te resulta ideal? ¿Qué tanta tolerancia tienes a probables demoras, fallos o errores?

En ambientes GNU/Linux, existen múltiples formas, si no tienes memoria RAM física pero sí un disco duro de estado sólido, para conseguir “memoria” adicional pero eso, será motivo de otro artículo.

Calcular el número de usuarios que soporta Moodle

Te dejo aquí un par de calculadoras en línea que he elaborado para que pueda obtener un estimado de:

  • Cantidad de usuarios concurrentes en Moodle que soporta un servidor web en función de la cantidad de memoria RAM disponible.
  • Cantidad de memoria RAM que necesitas para atender a N número de usuarios de Moodle de manera concurrente.

¡Utiliza las barras de desplazamiento!

{{ thankYouPage.title }} {{ thankYouPage.description }}
{{ thankYouPage.order_title }} {{ getOrder.orderId }}
Two columns
Vertical
Horizontal
Calcular memoria RAM necesaria para el número de usuarios recurrentes que necesito
Resumen
Name Total
"{{getWooProductName}}" has been added to your cart
{{ thankYouPage.title }} {{ thankYouPage.description }}
{{ thankYouPage.order_title }} {{ getOrder.orderId }}
Two columns
Vertical
Horizontal
Calcular cantidad de usuarios concurrentes de Moodle que soporta mi memoria RAM disponible
Resumen
Name Total
"{{getWooProductName}}" has been added to your cart

Conclusiones

Como has podido observar, el performance o desempeño esperado de un servidor web y, sobre todo, de una instalación de Moodle, depende de una gran cantidad de factores como la cantidad de dinero que estás dispuesto a invertir en los recursos necesarios de servidor (memoria, disco, ancho de banda), riesgos tolerados, concurrencia de usuarios estimada, etc.

Ahora bien, cada instalación de Moodle es distinta así como el comportamiento de los usuarios.

Generalmente la concurrencia de usuarios suele darse en periodos de exámenes, por ejemplo, en las noches (un hábito que he observado sobre las nuevas generaciones o personas que trabajan en mi experiencia), etc.

Por lo anterior, en casi la totalidad de casos no es necesario destinar y garantizar el 100% de cumplimiento en recursos del servidor. Al final del día, la decisión es tuya; tú decides cuánto estás dispuesto a invertir y determinar qué calidad en la experiencia de usuario deseas brindar a tus usuarios.

Si deseas profundizar más sobre el tema, te recomiendo los siguientes artículos de Moodle:

Publicado el Dejar un comentario

Mi primer esquema de servidor Web

Hace ya algunos años, creo que por ahí del 2003, intentando encontrar la manera de aprovechar mi “nueva” conexión a Prodigy Infinitum de 512 mb, me puse a estudiar el proceso de configuración e instalación de servidores. Mi primer experimento, fue con el IIS que viene por defecto con Windows XP Professional, pero no me gustó. Entonces, decidí migrar a Apache, MySQL y PHP ¡sobre Windows!, y lo logré. No obstante, sentía que hacía falta algo, hacía falta automatizar, y otros detalles más, por lo que experimenté con CDMon para jugar con los DNS´s por primera vez (o cuando menos, de manera más formal) y mi primer panel de control 100% Open Source para Windows: The Z Panel. El resto es historia. Aquí te comparto la fotografía del esquema de servidor web para la organización de sus recursos, requerimientos y tecnología.

esquema de servidor web
Esquema de servidor web con panel de control open source o de código abierto.

Actualización 23 de mayo de 2021: Hoy en día, realizamos instalaciones a nuestros clientes de un servidor web con un panel de control completo para que puedan disponer de esa autonomía institucional en la administración de sus recursos, como la facilidad de uso y configuración de sus recursos disponibles. Por ejemplo: podemos realizar una integración completa de Google Workspace for Education (antes conocido como GSuite for Education y después como G Suite for Education) en el nombre de dominio *.edu de tu escuela, ya sea en una instancia de servidor VPS contratado en Digital Ocean o bien, utilizando una PC en desuso con GNU/Linux Debian o Ubuntu instalado tras una conexión doméstica o empresarial de Prodigy Infinitum de Telmex o TotalPlay con el propósito de que puedas disponer de:

  • Servidor Web Apache
  • Bases de datos MySQL
  • PHP 7.x o superior
  • Panel de control ISPConfig
  • Administración de DNS en ISPConfig o con Dynu
  • Servidor de correo electrónico
  • Acceso remoto
  • Aplicaciones en la nube como: Moodle, WordPress, WooCommerce, OSTicketSupport, etc.

¡Tú eliges! ¡Tenemos experiencia!

Publicado el Dejar un comentario

El primer servidor web de la historia

En 1989, Tim Berners-Lee le presentaba a su jefe en el CERN, Mike Sendall, una propuesta “vaga, pero interesante” para el desarrollo de un sistema de comunicación basado en hipertextos (HTML) y comunicación entre redes de computadoras a través de un protocolo de Internet (HTTP) con el fin de permitir a la comunidad científica del mundo, poder trabajar de manera colaborativa, compartir e intercambiar información en sus actividades de investigación, por lo que el 6 de agosto de 1991, fue puesto en funcionamiento el primer Servidor Web de la historia en el CERN, el cual fue instalado en una computadora NeXT Cube de la emprese de Steve Jobs (el fundador de Apple, quien después de su despido, se había aventurado a fundar otra compañía llamada NeXT Computer Inc.)

Este servidor Web recibió el nombre de httpd, que corresponde a las siglas de “hypertext protocol daemon”, un nombre que hoy se sigue usando en algunas distribuciones linux para lanzar el servidor web Apache como Fedora o CentOS. Como dato curioso, se puede leer aún en una pegatina sobre la carcasa que dice “THIS MACHINE IS A SERVER. DO NOT POWER IT DOWN!!”

primer servidor web de la historia
Do not power down!

También, este año, Tim Berners-Lee publicó las especificaciones finales para la construcción de documentos HTML (HyperText Markup Language) mediante 22 elementos (en la versión 1.0), de los cuales hoy en día (en la versión 4.x), todavía son usados trece.