Skip to content

S4M73l09/ProyectoServer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

148 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Proyecto propio: Servidor Jellyfin usando diferentes tecnologias🖥️

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 ⚠️ Este codigo utiliza infraestuctura y credenciales personales, se puede clonar el repositorio pero la creacion de secrets y credenciales personales debes añadirlo tu, nunca subas tus credenciales a tu repositorio por seguridad

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.

2º: Conexion de la maquina virtual🛜

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.

    image

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.

    image

  • Activar la interfaz

    image

  • Y para que se inicie automatico

    image

  • Y dicha configuracion puesta en windows

    image

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.

6º: Jellyfin🐬

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.

configuracion Jellyfin

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.

image

Utilice este pequeño .yml para copiar dicho video y pegarlo en la carpeta donde Jellyfin ve el contenido multimedia.

image

Vemos si esta el video y si lo reconoce.

image

7º: Grafana - Prometheus📊⚡

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.

Prometheus

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.

image

Podemos ver justamente tambien los servicios que se estan monitorizando y cuales no.

image

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.

image

Grafana

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.

inicio de grafana image

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

image image image

Y despues de añadirlo, ya estaria dicho dashboard.

image

Creacion de alertas

Para la creacion de la Alerta, debemos crearla en nuestro dashboard.

image image image

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

image

o si usamos Ansible, montarlo como volumen como se hizo con custom.ini por ejemplo.

image

igualmente con esto seria mas que suficiente.

image

y la alerta esta creada.

image

Final

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

About

Proyecto Servidor (Terminado)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors