Este proyecto fue pensado para usar Jellyfin y poder montar una infrestructura tocando todo lo necesario de un perfil Devops como el mio, como estaba cansado de tener mis peliculas y series en mi disco duro decidi montar usando mis conocimientos y de paso tocando todo tipo de tecnologias y implementaciones un servidor en la nube usando Azure como herramienta principal, para asi yo poder ver series y peliculas cuando quiera y donde quiera.
Atencion
Archivos de ejemplo puestos directamente en una carpeta especial, tanto archivo de terraform como archivos de configuracion de Ansible y wireguard
Indice de tecnologias usadas en mi proyecto
-
Github Actions🔥
-
Terraform🗿
-
Conexion a la mquina virtual🛜
-
Wireguard🌐
-
Ansible🅰
-
Docker🖥️
-
Jellyfin🐬
-
Grafana - Prometheus📊⚡
Carpetas y plantillas para que puedas hacer tu propio servidor📁
1º: Creacion de archivo Terraform y añadiendolo al workflow🗿
-
Añadiendo el archivo de Terraform al workflow para el uso de Github Actions.
-
Dentro del workflow, esta el deploy.yml necesario para el despliegue en Azure.
Github Actions🔥
Este apartado lo puedes ver en la documentacion explicado correctamente, tambien puedes verlo en el workflow para que puedas ver como esta relacionado aparte de tener una carpeta con las plantillas para quien quiera hacerlo.
La conexion de la maquina virtual debido a la VPN esta solo se conectara si tenemos activo wireguard en nuestro cliente, asi lo tenemos asegurado, este punto se vera reforzado en el siguiente apartado.
-
Archivo de prueba para la conexion de la Maquina virtual creada mediante terraform y automatizada por github Action.
3º: Wireguard🌐
El uso de la VPN, me ayudara a gestionar de mejor manera y aplicar una capa de seguridad mas sofisticada para mejorar la infraestructura. Ademas de añadir dicha VPN para que el tunel SSH de la maquina virtual sea seguro.
-
Como uso de VPN y por temas de seguridad, Wireguard nos ayudara.
-
Activar la interfaz
-
Y para que se inicie automatico
-
Y dicha configuracion puesta en windows
4º: Ansible🅰
Ansible es una poderosa herramienta para la automatizacion y despliegue general en el sector DevOps, ya que nos permite simplificar y agilizar la administracion de infraestructura. Funciona automatizando tareas cotidianas, desde la configuracion de servidores y la instalacion de software hasta el despliegue de aplicacion y la orquestacion de flujos de trabajo complejos, elegi dicha herramiena porque es indispensable aprender a usarla y saber como funciona ya que como dije, es extremadamente util para la facilidad y automatizacion.
Toda la explicacion y documentacion de Ansible, estara en su propia carpeta, puedes pinchar en el icono para ir a su ubicacion.
5º: Docker🖥️
Docker es una plataforma de codigo abierto que permite crear, probar e implementar aplicaciones rapidamente. Esto se hace empaquetando software en unidades estandarizadas llamadas contenedores que incluyen todo lo necesario para que el software se ejecute, incluidas bibliotecas, herramientas de sistema, codigo y version ejecutable. Esto nos permite un mayor control y facilidad para crear infraestructuras y querer controlarlas de mejor manera.
Toda la documentacion de Docker estara en su respectiva carpeta, puedes pinchar en el icono para ir a su ubicacion.
Jellyfin es un servidor multimedia gratuito y de código abierto que permite organizar, gestionar y compartir contenido multimedia digitales, como peliculas, series, musica y fotos, en dispositivos conectados en red. Es una solucion inteligente por si quieres guardar formato multimedia sin necesidad de un disco duro externo y con la facilidad de que es en la nube.
Debido a la facilidad de Jellyfin a la hora de no solo de instalarlo el cual se uso dentro del docker-compose, mostrare la configuracion de este, normalmente jellyfin usa el puerto 8096, con poner la ip de la VPN y seguida del puerto es mas que suficiente para acceder.
Seguimos su instalacion y configuramos todo, es super sencillo solo se tiene que seguir las instrucciones de jellyfin y ya. Para probarlo decidi añadir en la carpeta puesta donde jellyfin normalmente lee contenido multimedia el cual esta puesta en mi docker-compose, copiar un video de mi equipo local y añadirlo a la biblioteca creada.
Utilice este pequeño .yml para copiar dicho video y pegarlo en la carpeta donde Jellyfin ve el contenido multimedia.
Vemos si esta el video y si lo reconoce.
Son dos herramientas de código abierto ampliamente utilizadas en conjunto para el monitoreo y la visualizacion de métricas de sistemas y aplicaciones. Prometheus se especializa en la recolección y almacenamiento de métricas de rendimiento, utilizando un modelo de bases de datos basados en series temporales. Tambien este cuenta con un sistema de alertas que permite configurar reglas basadas en expresiones PromQL para detectar condiciones anómalas y enviar notificaciones.
Grafana en todo caso es una plataforma de visualizacion de datos de tambien código abierto que se enfoca en la creación, exploracion y análisis de paneles (dashboards) para comprender los datos, sin importar su origen.
Y esto hace que Prometheus se encargue de la recoleccion de metricas y grafana de la visualizacion de este.
Primero, Grafana y Prometheus se instalan a la vez en el mismo archivo del docker-compose.yml por lo cual podemos ver es una isntalacion sencilla dentro del contenedor. Lo unico que necesitamos como tal es configurarlo cada uno, para ello primero entraremos en Prometheus el cual es el que se encarga de las metricas.
Accedemos a prometheus con el puerto 9090, por lo cual accedemos usando la misma terminologia que la de Jellyfin, una vez accedido a esta nos mostrara un despliegue el cual necesitamos configurar tambien.
Podemos ver justamente tambien los servicios que se estan monitorizando y cuales no.
Aqui existe un problema como se muestra, cadvisor necesita el uso de cgroups, los cuales estan bloqueados en algunas distribuciones de linux en nubes como Azure, AWS o Google cloud, asi que desgraciadamente este problema no se puede solucionar al menos hasta que no se cambie de maquina virtual a una que aloje dicho requerimiento.
Pero aqui vemos, que por ejemplo, funciona registrando las metricas sin problemas.
Accedemos a Grafana tambien usando su puerto por defecto el cual esta puesto en el docker-compose pero igualmente lo pongo, en el puerto 3000. Grafana nos pide credenciales los cuales estan puestos tambien usando el archivo de variables de docker-compose, vuelvo a recordar que todo esto esta justamente en las respectiva carpeta.
Ahora para añadir dicho dashboard, debemos dirigirnos al menu de la izquierda y darle al apartado de connections, y añadir Prometheus como data sources.
Siguiente ya podemos crear el dashboard.
Configuramos dicho dashboard eligiendo el data sources de Prometheus
Y despues de añadirlo, ya estaria dicho dashboard.
Para la creacion de la Alerta, debemos crearla en nuestro dashboard.
Esta alerta se encargara de medir el uso de CPU, cuando este sobrepase el 85%, Grafana alertara usando el correo que añadimos, se puede usar por supuesto en el docker-compose la opcion para que Grafana tenga servicio SMTP. Añdiendo esta linea al grafana.ini
o si usamos Ansible, montarlo como volumen como se hizo con custom.ini por ejemplo.
igualmente con esto seria mas que suficiente.
y la alerta esta creada.
Con eso el proyecto estarai finalizado, automatizado, escalable y totalmente monitorizado. Me sirvio para poder aprender de manera mas correcta las futuras tecnologias a la hora de crear una infraestructura profesional, por supuesto esto es solo un proyecto de ejemplo escogido para mejorar la visualizacion de mis habilidades tecnicas, si deseas ver de mejor manera una documentacion mas tecnica y avanzada pero tambien mas larga, te dejo el enlace de descargar de la documentacion tecnica del proyecto: aqui👉Hola







