Advertisement · 728 × 90

Posts by Ru 🍀

Preview
Sincroniza tus imágenes com Immich Cuando tenemos nuestro NAS DIY, una de las primeras cosas que solemos querer es poder sincronizar las fotos de nuestro móvil, aquí es donde entra en juego Immich. Se trata de una aplicación de código abierto y gratuita, con una gran comunidad detrás. Es prácticamente como un "google fotos" online, con una aplicación para móviles que se encarga de sincronizar nuestras fotos. Adicionalmente nos permite ahorrar espacio detectando fotos duplicadas o eliminando si lo deseamos las fotos de nuestro móvil que ya se hayan subido. Y una de las funcionalidades más cómodas: Detección de rostros o texto. Este proceso se hace totalmente en local, por lo que no tienes por qué preocuparte de tu información privada. # Requisitos Para poder instalar este servicio necesitaremos lo siguiente: * Un servidor con Docker con: * Al menos dos núcleos. * Recomendable con 6GB de RAM. * Suficiente espacio de almacenamiento para nuestra galería de fotos: * O acceso a una unidad compartida de nuestro NAS. * Recomendable tener acceso por VPN o similar a tu red, para que la sincronización no se interrumpa si estás fuera de casa. # Instalación Siguiendo la guía oficial de Immich, lo primero que tendremos que hacer será descargar unos ficheros de ejemplo, para luego adaptarlos y finalmente lanzar los contenedores. ## Descarga de ficheros Aquí recomiendo que generemos un directorio específico para Immich: mkdir ./immich cd immich Dentro de esta carpeta, será donde descarguemos los ficheros, usando `wget`, empezando por el `docker-compose.yml: wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml Y terminando con el `.env`: wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env ## Adaptar las variables de entorno En el fichero `.env` que nos hemos descargado vienen una serie de variables de entorno que son necesarias para el funcionamiento de nuestra instancia de _Immich_. Es bastante explicativo, ya que tiene comentarios por cada una de las variables. De todas formas, cubriremos las más importantes. Nada mas descargarlo, el fichero debería ser tal que así: # You can find documentation for all the supported env variables at https://docs.immich.app/install/environment-variables # The location where your uploaded files are stored UPLOAD_LOCATION=./library # The location where your database files are stored. Network shares are not supported for the database DB_DATA_LOCATION=./postgres # To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List # TZ=Etc/UTC # The Immich version to use. You can pin this to a specific version like "v2.1.0" IMMICH_VERSION=v2 # Connection secret for postgres. You should change it to a random password # Please use only the characters `A-Za-z0-9`, without special characters or spaces DB_PASSWORD=postgres # The values below this line do not need to be changed ################################################################################### DB_USERNAME=postgres DB_DATABASE_NAME=immich ### UPLOAD_LOCATION La primera variable que nos encontramos es `UPLOAD_LOCATION`, que almacena la ruta donde se almacenarán todas las imágenes que gestione _Immich_ y sus ficheros. Si estamos realizando la instalación en nuestro propio NAS, deberemos poner la ruta en el pool de almacenamiento que queramos destinar. Por otro lado, si estamos ejecutando _Immich_ en otro servidor, deberemos darle a este acceso a nuestra unidad del NAS mediante NFS montándolo en nuestro `/etc/fsmount`, y posteriormente apuntar a esta ruta montada en la variable de entorno. ### DB_DATA_LOCATION La variable `DB_DATA_LOCATION` indicará la ruta de la base de datos de PostgreSQL. Aquí se recomienda que se haga sobre un disco SSD o NVMe, y preferiblemente que no se haga sobre una unidad compartida por red (NFS/SAMBA). ### TZ Esta variable está comentada, pero por tener una mejor línea de tiempo de nuestras fotos, te recomiendo buscar tu zona horaria aquí, y ponerla en esta variable, des-comentándola. ## Lanzar la aplicación El paso más sencillo de todos. Haremos uso de `docker compose` para lanzar nuestra aplicación, estando en la ruta que hemos creado en el paso 1: sudo docker compose up -d Y veremos que se lanza lo siguiente: Output del `docker compose up` # Interfaz WEB Ahora que tenemos lanzada la aplicación, es momento de acceder a la interfaz WEB que nos proporciona. Estará con la IP de nuestro servidor, seguida del puerto `2283`. Si entramos, veremos esto: Página de inicio de Immich Si le damos a comenzar, nos pedirá que registremos el usuario administrador: Registro de adminstrador de Immich Le damos a registrar, y nos saldrá ahora sí un login, donde deberemos introducir los datos de la cuenta que acabamos de dar de alta: Inicio de sesión de Immich Y empezará el proceso de configuración inicial, algunas preguntas serán sobre el propio usuario, y otras por la instalación. Aquí solo le damos a **Tema**. Mensaje de bienvenida de Immich Elegiremos nuestro tema de preferencia. Este puede ser cambiado posteriormente, y le damos a **Idioma**. Selector de temas En función de nuestro navegador habrá elegido un idioma por defecto, pero lo podremos cambiar si queremos, y le damos a **Privacidad del servidor**. Selector de idiomas Aquí en mi caso he dejado las dos opciones como vienen, activadas. El mapa es una interfaz que personalmente me resulta muy cómoda. Le damos a **Privacidad del usuario** : Opciones de privacidad del servidor Y aquí lo he dejado sin activar, que es como viene por defecto. Le damos a **Plantilla de almacenamiento**. Opciones de privacidad del usuario En este punto podríamos configurar nuestra plantilla para almacenar las fotos, pero también puede ser configurada posteriormente. Por defecto sigue la estructura `AÑO/AÑO-MES-DÍA`, por ejemplo: `2026/2026-04-01/image.png`. Le damos a **Copias de seguridad**. Motor de plantillas de almacenamiento Este panel es meramente informativo, donde nos explican el sistema ideal de copias de seguridad, siguiendo la clásica estrategia **3-2-1**. Le damos a **Aplicación móvil**. Mensaje informándonos de un sistema ideal de backup siguiendo la estrategia 3 2 1. Aquí se nos informa de la aplicación móvil, que instalaremos más adelante. Le damos a **Hecho**. Aplicaciones móviles Y ya estará finalizada la configuración inicial. Con esto ya tenemos nuestro _Immich_ funcional y activo. Como apreciaréis, se parece mucho a algunos proveedores como _Google Photos_. Página principal de Immich Podemos subir fotos desde nuestro PC directamente, a través de esta web, o como veremos en el siguiente punto, mediante la sincronización de nuestro móvil. # Aplicación móvil En mi caso uso _Android_ , pero la podéis encontrar también para _Iphone_. Tan solo hay que buscar en la tienda correspondiente _Immich_ y descargarla. Lo primero que hará es pedirnos la dirección de conexión de nuestro servidor, se la introducimos y le damos a **Siguiente**. Introducir el servidor de Immich Ahora necesitaremos iniciar sesión, con la cuenta que hemos creado previamente, y darle a **Inicio de sesión**. Inicio de sesión en el servidor Este punto es importante, ya que _Immich_ nos pedirá permisos para acceder a nuestras fotos. Depende de lo que desees elige uno u otro, en mi caso tiene permisos para todos los ficheros, si no, nuevas fotos no podrían salir: Selector de permisos para Immich Con esto, nos saldrá el panel principal de _Immich_ , aún sin fotos. Deberemos darle arriba a la derecha, al botón de la nube. Página principal de la app Y se nos abrirá el menú para configurar nuestra copia de seguridad, donde le daremos a **Seleccionar**. Copia de seguridad Aquí ya podremos elegir qué álbumes queremos sincronizar. Seleccionaremos los que deseemos, y luego iremos atrás. Selector de álbumes a sincronizar En este punto, la aplicación nos irá preparando las imágenes que hay que subir, comprobando si ya estaban previamente o no. Solo nos quedará activar la copia dándole a **Habilitar copia de seguridad** en la parte inferior. Copia de seguridad preparada Si nos fijamos, veremos que el número de **Copia de seguridad** aumenta, y el de **Restante** disminuye, indicando que se están sincronizando. Si le diésemos a **Ver detalles** en la parte inferior, veríamos cómo van subiéndose. Activando la copia de seguridad Por último, si volvemos atrás, al panel principal, ya veremos cómo nos sale nuestra galería, al estilo _Google Photos_ de nuestro móvil, con pequeños iconos en la esquina inferior derecha de nuestras imágenes, indicándonos si esa foto está subida o no. Galería de Immich ## Backup en segundo plano Es importante destacar que, al igual que con otras muchas aplicaciones, necesitará permisos para estar funcionando en _background_ , y esto dependerá del sistema operativo de tu dispositivo móvil, marca, modelo, etc. En mi caso os puedo hablar de cómo hacerlo en _Android_. Lo primero será acceder a la configuración y buscar _Immich_ , para acceder a la **Información de la aplicación**. Información de la aplicación de Immich Ahí le daremos a **Batería** , y seleccionaremos **No restringido**. Permisos de batería de Immich Ahora abrimos la aplicación de _Immich_ y en el apartado de **Backup** , deseleccionaremos nuestros álbumes y desactivamos la copia de seguridad. Por último seleccionamos nuevamente nuestros álbumes deseados y activamos la copia. Ahora sí que tendríamos funcionando la copia de seguridad en segundo plano en nuestro móvil _Android_. Es algo enrevesado pero necesario. # Conclusión Con esto ya podríamos estar tranquilos con que nuestras fotos están sincronizadas en nuestro servidor NAS. Además contamos con una interfaz web cómoda que, junto a una VPN, podremos acceder desde donde deseemos, manteniendo la copia de seguridad del álbum. También podremos buscar a nuestros familiares gracias a la detección de rostros que incorpora, o ahorrar espacio en nuestro dispositivo eliminando las imágenes que se hayan subido o aquellas que estén duplicadas. # Referencias * Guía de inicio rápido de _Immich_ : Quick start | Immich * Instalaciones previas realizadas por mi. # Vídeo 0:00 /2:13 1×

Ten tu propio Google Photos en tu homelab, pudiendo sincronizar tu galería del móvil en tu NAS.

3 weeks ago 1 1 0 0
Preview
Servidor de Virtualización con Proxmox Tener un servidor donde poder virtualizar todas las aplicaciones que necesitemos en nuestro homelab es, junto con el NAS, de las primeras cosas que se busca conseguir. Lo habitual es hacer uso de un sistema operativo Hypervisor, y en este ámbito el que más abarca es Proxmox, sobre todo porque su uso es gratuito para lo que lo necesitamos. # Requisitos Para poder seguir esta guía e instalar Proxmox, necesitarás lo siguiente: * Un PC o servidor funcional, en el que instalar el sistema operativo. * Tu PC personal, para preparar los medios de instalación y posterior configuración. * Un USB para grabar la ISO e instalar el Sistema Operativo. # Preparar los medios de instalación Antes de realizar lo que es la instalación en sí, tenemos que preparar un dispositivo USB en el que grabaremos la ISO de Proxmox para su instalación. ## Descargar la ISO Accederemos a la web oficial de descargas de Proxmox, y desde ahí elegiremos la última release disponible de **Proxmox VE ISO Installer**. Tened en cuenta que la versión puede diferir con respecto a la mostrada en esta guía: Le damos a descargar y esperamos a que finalice. # Grabar la ISO Para este proceso, recomiendo hacer uso de Rufus, un programa que lleva años entre nosotros precisamente para esta tarea, y que ya hemos cubierto en anteriores posts, pero centrado más en el proceso para Windows 11. Lo descargamos, seleccionando la versión que más nos convenga: Y luego lo ejecutamos. Nos aparecerá una sencilla pantalla en la que nos dirá de seleccionar el dispositivo USB y la ISO. Aquí, si no has introducido el USB, es el momento de hacerlo, para así seleccionarlo en el desplegable, y posteriormente elegir la ISO que acabamos de descargar. Al seleccionar la ISO de Proxmox, es probable que te salte esta advertencia. Tan solo debes darle a _Aceptar_ y ya podrás darle a _Empezar_. Tan solo tendremos que esperar a que el proceso finalice, para poder extraer el USB con nuestro sistema operativo ya grabado en él. # Instalar Proxmox Empezaremos por introducir el USB en nuestro servidor y encenderlo. Luego, dependiendo del fabricante de la placa base, deberemos pulsar un conjunto de teclas u otro, pero el objetivo es el mismo: Abrir la configuración de arranque para que cargue nuestro USB. Cuando lo consigamos, nos aparecerá una pantalla para elegir el modo de instalación que queremos seguir: En mi caso, me moveré sobre _Install Proxmox VE (Terminal UI)_ , y le daré a la tecla `E` para editar los parámetros de lanzamiento. Vamos a la línea que comienza por `linux`, y al final le agregaremos, separado de un espacio, el parámetro `nomodeset`, para evitarnos conflictos de drivers al iniciar la instalación. Esto puede ser muy relevante si hacemos uso de hardware bastante antiguo, o incluso demasiado reciente. Una vez introducido el parámetro, le damos a `F10` para aplicar los cambios y salir, y nos mostrará el EULA, que deberemos aceptar si queremos instalar el sistema operativo dándole a `Enter` sobre el texto de _I agree_. Con esto comienza lo que es el proceso de instalación en sí, y lo primero será seleccionar el dispositivo sobre el que se va a realizar. Recordad seleccionar el que os interese en vuestro caso y tras eso darle a _Next_. En esta segunda pantalla, crearemos nuestro usuario administrador, asignándole una contraseña y una dirección de correo electrónico. Cuando lo tengamos le daremos nuevamente a _Next_. Ahora es momento de elegir nuestro país, zona horaria y distribución de teclado. Y finalmente el nombre de nuestro host, además de unos parámetros de red, que, en caso de estar usando DHCP, ya vendrán rellenos y tan solo le tendremos que dar a _Next_. Esta última pantalla es un resumen de las opciones que hemos ido eligiendo, para confirmar que todo esté correcto antes de comenzar la instalación. Si es el caso, le daremos a _Install_. Y comenzará a instalarse Proxmox. Esto puede tardar un rato, y dependerá de nuestro hardware que sea más o menos tiempo. Una vez finalizado, nos saltará un mensaje para reiniciar. En caso de que se nos pase por alto no importará mucho, puesto que el reinicio se ejecutará automáticamente. Y ya tendremos nuestro Proxmox instalado, lo veremos en nuestro listado de Grub, que por defecto lanzará nuestro nuevo sistema operativo. Que al iniciarse, nos mostrará este mensaje por pantalla antes de iniciar sesión, indicando la dirección y puerto a la que deberemos acceder para poder hacer uso de la interfaz web que proporciona Proxmox. # Interfaz web de Proxmox Una vez accedamos a la URL que se nos ha proporcionado al final del paso anterior, que suele ser `https://ip.de.nuestro.server:8006`, veremos la pantalla de inicio de sesión: Aquí introduciremos _root_ como nombre de usuario, y de contraseña la que hemos rellenado durante el proceso de instalación. Si queremos también podemos modificar el idioma antes de iniciar sesión. Una vez dentro, veremos que se nos salta un mensaje avisándonos de que no tenemos una suscripción válida para este servidor. Esto es normal al estar utilizando la versión gratuita de Proxmox, tan solo le tendremos que dar a _OK_ y podremos empezar a crear nuestras máquinas virtuales y contenedores. Pero antes, para poder tener actualizado nuestro servidor, deberíamos ir a nuestro nodo en el menú lateral, y acceder al apartado de _Updates > Repositories_, ahí le damos a _Add_ , seleccionando esta opción: De esta manera, podremos disponer de las actualizaciones de Proxmox si hiciese falta. # Conclusión Ahora tenemos nuestro propio servidor de virtualización y contenerización con Proxmox, lo cual nos va a permitir lanzar todas las aplicaciones que necesitemos, o poder incluso tener máquinas virtuales para streaming de juegos, servidores, etc. Junto con el NAS, el servidor de Virtualización es de lo primero que se suele tener en un homelab, así que con esto hemos dado un paso importante, y ya podremos tener bastante más autonomía. # Referencias * Guía oficial de instalación: Installation - Proxmox VE * Parámetro `nomodeset`: Proxmox VE Administration Guide # Vídeo 0:00 /2:26 1×

Proxmox es el hipervisor más extendido en el mundo del homelabing, y nos permite desplegar prácticamente todo lo que necesitemos. Hoy cubrimos los pasos para instalarlo.

1 week ago 1 1 0 0

Y del rol, se acerca el fin de la campaña tras más de tres años. Mira que no pensaba que fuese a durar tanto pero aquí estamos, y con la siguiente campaña en preparación desde hace meses, que esta sí que viene fuerte. 😎

2 weeks ago 0 0 0 0

¡Buenos días por la mañana! Últimamente el trabajo no me deja ni respirar, a ver si acaba ya de una vez todo esto y puedo estar algo más tranquilo... Que de verdad hasta pesadillas he tenido en estas semanas. 😢

2 weeks ago 0 0 0 0
Preview
Docker 101 - Comandos de utilidad En anteriores post de esta serie de Docker 101, hemos visto cómo lanzar nuestro primer contenedor. Ahora que sabemos esto, es momento de aprender a gestionar los contenedores de nuestra instancia Docker. Por lo que en este post, veremos una serie de comandos de utilidad bastante comunes, que se utilizan en el día a día a la hora de gestionar nuestros contenedores. # Importante Docker 101 Este post forma parte de una serie de publicaciones formativas respecto a Docker, echa un ojo al resto aquí: Docker 101Como la mayoría de aplicaciones que cubrimos en los vídeos y posts funcionan en contenedores Docker, he decidido hacer una serie de publicaciones enseñando lo que sé sobre Docker de forma instructiva, para que aprendáis lo que es, cómo funciona y a utlizar esta herramienta tan comoda. A continuación osRunesoftRubén Morchón # Requisitos Para seguir cómodamente este post, recomiendo lo siguiente: * Tener un entorno con Docker, lo cual puedes obtener siguiendo este post (inglés): https://blog.runesoft.net/install-docker-and-portainer-ce/ * Haber repasado el post anterior, para entender mejor lo que es: Docker 101 - Lanzando nuestro primer contenedor * Lanzar el siguiente comando para tener un contenedor activo para las pruebas que hagamos en este post. Es posible que este paso se repita en algún punto: sudo docker run -d --name it-tools-1 --restart unless-stopped -p 8080:80 corentinth/it-tools:latest sudo docker run -d --name it-tools-2 --restart unless-stopped -p 8090:80 corentinth/it-tools:latest # Comandos de utilidad A continuación, os enumero brevemente los comandos que vamos a ver, con una breve descripción de lo que hacen. Guardaos esta lista ya que puede resultar bastante útil. * `docker container ls` * `docker container start/stop/restart` * `docker container rm` * `docker ps` + `docker ps -a` * `docker container logs` * `docker container inspect` * `docker container stats` * `docker container top` Comando | Descripción ---|--- `docker container ls` | Lista los contenedores. `docker container start` | Lanza uno o más contenedores detenidos. `docker container stop` | Detiene uno o más contenedores lanzados. `docker container restart` | Reinicia uno o más contenedores. `docker container logs` | Muestra los logs de un contenedor. `docker container stats` | Muestra en tiempo real el uso de recursos de los contenedores. `docker container top` | Muestra los procesos que hay funcionando en un contenedor. `docker container inspect` | Muestra la información detallada de uno o más contenedores. `docker container exec -it` | Abre una terminal interactiva en el contenedor. `docker container cp` | Copia ficheros entre el anfitrión y el contenedor. `docker container rm` | Elimina uno o más contenedores. ℹ️ Tenéis una lista más amplia en su documentación oficial: docker container | Docker Docs ## docker container ls Como hemos podido apreciar en la tabla, este comando va a devolvernos un listado de nuestros contenedores, con información bastante útil. estos son los campos que nos informa: * ID del contenedor. * Imagen utilizada en el momento de creación. * Comando de lanzamiento. Esto lo veremos más en detalle cuando tratemos las imágenes. * Momento de creación. * Estado actual del contenedor. * Puertos en uso y su mapeo correspondiente. * Nombres del contenedor. Como podemos apreciar, si lanzamos el comando: sudo docker container ls Nos saldría algo como esto: ### docker container ls -a Con el parámetro `-a` nos va a mostrar incluso los que tenemos parados. Para ello, ejecutaremos el siguiente comando, que veremos en detalle más adelante en este post: sudo docker container stop it-tools-1 Si ahora ejecutamos el listado de contenedores sin el nuevo parámetro, sólo veríamos uno: sudo docker container ls Obtendríamos esto por pantalla: Si ahora lo ejecutamos con el nuevo parámetro de `-a`: sudo docker container ls -a Veríamos los dos, o más, si teníamos otros contenedores parados, como en mi caso: ## docker container start | stop | restart Como bien podemos intuir de estos comandos, y con la descripción de la tabla principal, nos permiten iniciar, detener, o reiniciar uno o varios contenedores. ### docker container start Para verlo en acción, tan solo deberemos ejecutar este comando, que nos iniciará de nuevo nuestro contenedor `it-tools-1` que habíamos detenido en el paso anterior: sudo docker container start it-tools-1 Nos dará un output con los nombres de los contenedores lanzados: Y lo podremos comprobar listando los contenedores activos, ahora que ya sabemos: sudo docker container ls Si nos fijamos, podemos ver que en el caso de `it-tools-1` es `Up 39 seconds`, indicando que se ha iniciado hace relativamente poco: ### docker container stop En este caso, vamos a probar a detener ambos contenedores. Para ello, es tan sencillo como lanzar esto en nuestra terminal: sudo docker container stop it-tools-1 it-tools-2 Y como antes, veremos que se nos pinta por pantalla los nombres de ambos contenedores detenidos: Y podremos comprobarlo ejecutando el listado de activos, que se nos quedaría vacío: sudo docker container ls Pero si ejecutamos el listado completo, veremos que si aparecen: sudo docker container ls -a Y su estado es `Exited (137)` e indicando el tiempo que llevan en dicho estado, como podremos ver en la siguiente imagen: ### docker container restart Este nos va a permitir reiniciar contenedores activos, o iniciarlos en caso de estar detenidos. Lo podremos comprobar ejecutando: sudo docker container restart it-tools-1 it-tools-2 Ya que nos devolverá los nombres de ambos, y si ahora ejecutamos: sudo docker container ls -a Podremos apreciar que ambos están con estado `Up` seguido de un tiempo: Si ahora lanzamos de nuevo el reinicio de contenedores, pero solo en uno de ellos: sudo docker container restart it-tools-1 Y los listamos nuevamente: sudo docker container ls Veremos una diferencia de tiempos en sus estados, indicando que el contenedor `it-tools-1` es más reciente: ## docker container logs Uno de los comandos más útiles y prácticos, ya que nos permite ver qué está sucediendo en nuestro contenedor. Como todo, atiende a la salida de dicho contenedor, por lo que los logs que veamos, dependerán de la imagen. En nuestro caso, vamos a ejecutarlo con una serie de parámetros por hacerlo más cómodo, y ahora los veremos mas en detalle: sudo docker container logs -n 20 -t it-tools-1 Deberíamos tener una salida por consola similar a esta: Si nos fijamos en la línea de tiempo, podremos ver cuándo se reinició nuestro contenedor en el paso anterior. Respecto a los parámetros utilizados, han sido estos dos: * `-n 20`: Mostrar solo las últimas 20 líneas de logs. * `-t`: Mostrar las marcas de tiempo de los logs. Hay otros también muy útiles, como el `-f`, que nos permite ver en tiempo real los logs de nuestro contenedor. sudo docker container logs -f it-tools-2 Se nos quedará esperando, y para dejar de monitorizar los logs, deberemos presionar las teclas `CTRL + C`. ## docker container stats Permite visualizar las estadísticas de consumo de recursos de los contenedores, y lo mantiene actualizado.. Su uso es muy sencillo, ya que podemos lanzarlo sin parametría: sudo docker container stats Pudiendo ver el consumo de recursos de nuestros contenedores activos actualmente: Como también ver el de los contenedores que deseemos en concreto. Para ello, cerramos pulsando `CTRL + C` y ejecutamos lo siguiente: sudo docker container stats it-tools-1 Y con ello veremos que ahora sólo se visualiza el consumo de recursos del contenedor especificado para este caso, `it-tools-1`: ## docker container top Siguiendo un poco la línea del anterior comando, este permite visualizar los procesos en activo que tiene un contenedor en sí. Para ello tan solo tenemos que lanzar el comando seguido del contenedor que deseemos: sudo docker container top it-tools-1 Y se nos devolverán los procesos en ejecución dentro del contenedor: Esto nos puede venir bien para ver si, en caso de tratarse de una imagen o aplicación propia, se ha lanzado el comando que queríamos. ## docker container inspect Este comando nos va a mostrar todo el detalle de un contenedor: Sus redes, volúmenes, parámetros, estado, imagen y otras propiedades. Es muy práctico para poder tener toda la información de un contenedor, e incluso detectar errores de configuración. Lo lanzamos en nuestra terminal de la siguiente manera: sudo docker container inspect it-tools-2 | more Lo canalizamos mediante `| more` para poder ver más cómodamente la configuración en este caso. Si queremos cerrarlo rápidamente tan solo tendremos que pulsar la tecla `Q` de _quit_. ## docker container exec -it Esta simple línea de consola, seguida del contenedor que deseamos, nos va a permitir abrir una línea de terminal directa contra nuestro contenedor, permitiendo hacer pruebas de conexión o incluso de API mediante CURL si fuese necesario. Muy cómodo para hacer otras comprobaciones de red, como verificar si el contenedor resuelve la dirección o DNS de otro en caso de compartir una red. Lo lanzamos de la siguiente manera: sudo docker container exec -it it-tools-1 sh Y una vez dentro, podremos recuperar el `hostname` de nuestro contenedor, e incluso hacer un ping: Si nos fijamos, por defecto el _hostname_ de un contenedor coincidirá con su ID del listado de `docker container ls`. Para desconectarnos, tan solo tendremos que pulsar las teclas `CTRL + D`. ## docker container cp Otro de los más prácticos, ya que permite copiar ficheros entre el anfitrión y el contenedor, o vice versa. Con comandos como este, podríamos copiar el código fuente de nuestra aplicación en un contenedor con Node.js, para posteriormente ejecutarlo, por ejemplo, aunque ya os aviso que este no es el mejor, ya que hay muchas mejores formas (y más prácticas y seguras) de hacerlo. Pero para nuestro caso, vamos a crear un fichero nuevo `hola.txt` que contenga el _hostname_ de donde se ha creado: echo Hola desde $HOSTNAME >> hola.txt Y lo copiamos a nuestro contenedor: sudo docker container cp ./hola.txt it-tools-1:/hola.txt Nos informará de que se ha copiado correctamente: Ahora, si retomamos el comando del apartado anterior y nos conectamos al contenedor directamente, listamos los archivos y mostramos el contenido del copiado: Veremos que efectivamente tiene el contenido del creado desde el anfitrión, ya que contiene su hostname. Ahora lo modificamos agregando una línea adicional: echo Saludos desde $HOSTNAME >> hola.txt Y lo copiamos de vuelta al anfitrión: sudo docker container cp it-tools-1:/hola.txt ./hola_container.txt Si lo abrimos, veremos que efectivamente contiene ambas líneas: Con esto hemos aprendido a mover ficheros entre nuestro anfitrión y nuestro contenedor. ## docker container rm Para finalizar, vamos a eliminar nuestros contenedores, ya que no vamos a hacer más uso de ellos. Para esto, como en otros muchos más comandos de Linux, contamos con la terminología `rm` o _remove_ : sudo docker container rm it-tools-1 Al lanzarlo, habrá dado un error, avisando de que el contenedor está en uso actualmente. Para eliminarlo tenemos dos maneras: O bien paramos primero el contenedor, y luego lo eliminamos; o forzamos su eliminación con el uso del parámetro `-f` de _force_. Vamos a ver los dos casos, primero paramos nuestro contenedor: sudo docker container stop it-tools-1 Y ahora lo eliminamos: sudo docker container rm it-tools-1 Veremos que, como otros comandos anteriores, nos devuelve el nombre del contenedor si finaliza correctamente. Podemos comprobar que no está activo si listamos los contenedores activos: Si ahora lanzamos el borrado del segundo contenedor, pero esta vez con el `-f`: sudo docker container rm -f it-tools-2 Veremos que este se ha eliminado en un único paso, listando los contenedores nuevamente: # Conclusión Siguiendo los anteriores post de la serie hasta ahora, hemos aprendido tanto a instalar nuestro propio entorno con Docker, conocer un poco lo qué es y cómo funciona, y hasta a lanzar nuestros contenedores y gestionarlos sin mucho problema. En los siguientes ya empezamos con temas algo más complejos, como pueden ser los volúmenes, las redes, las imágenes customizadas o los docker compose que tanto hemos usado para instalar algunas herramientas en nuestro homelab. # Referencias Para la realización del post, se han utilizado las siguientes referencias: * Documentación oficial de Docker: docker container | Docker Docs * Mi propia experiencia personal y profesional en el sector. * Formación obtenida del curso: https://www.udemy.com/course/docker-mastery * Formación obtenida del curso: https://www.udemy.com/course/dive-into-cloud-native-containers-kubernetes-and-the-kcna # Vídeo 0:00 /2:14 1×

Hoy veremos múltiples comandos de utilidad, para gestionar los contenedores docker que tenemos funcionando en nuestro día a día.

3 weeks ago 2 1 0 0

Cómo necesitaba unas vacaciones, madre mía. 😭

3 weeks ago 0 0 0 0

Últimamente estoy a tope con lo de los vídeos y el blog y siento que me falta tiempo. Encima no paran de pasarme cosas cada cual más complicada de lidiar. 😔

1 month ago 0 1 0 0
Preview
Docker 101 - Lanzando nuestro primer contenedor En el anterior post sobre Docker, vimos qué es, qué papel cumple y un poco su historia. Ahora en este post podemos dar el siguiente paso y empezar a lanzar nuestros primeros contenedores. # Importante Docker 101 Este post forma parte de una serie de publicaciones formativas respecto a Docker, echa un ojo al resto aquí: Docker 101Como la mayoría de aplicaciones que cubrimos en los vídeos y posts funcionan en contenedores Docker, he decidido hacer una serie de publicaciones enseñando lo que sé sobre Docker de forma instructiva, para que aprendáis lo que es, cómo funciona y a utlizar esta herramienta tan comoda. A continuación osRunesoftRubén Morchón # Requisitos Para seguir cómodamente este post, recomiendo lo siguiente: * Tener un entorno con Docker, lo cual puedes obtener siguiendo este post (inglés): https://blog.runesoft.net/install-docker-and-portainer-ce/ * Haber repasado el post anterior, para entender mejor lo que es: https://blog.runesoft.net/docker-101-introduccion-a-docker ℹ️ Durante este post verás otros comandos de docker (como `docker container ls`, o `docker stop`) que serán explicados en futuros posts, pero son necesarios para poder ejecutar el ejemplo de este post. ****No son necesarios conocerlos en profundidad**** , pero como acabo de indicar, no tienes por qué preocuparte que ****los veremos más en detalle en el siguiente Docker 101****. # ¿Qué es un contenedor? Por ampliar un poco más lo que hemos aprendido hasta ahora, veremos algo más en detalle lo que es un contenedor en si. Se trata de un proceso aislado para cada uno de los componentes de una aplicación. Por ejemplo: Si tenemos una aplicación web, podríamos tener un contenedor por cada uno de estos elementos: * Front con React. * Back con Java. * Base de datos con PostgreSQL. * Caché con REDIS. * Sistema de colas con Kafka. Estos recursos estarían individualmente aislados en sus respectivos contenedores, de forma que podamos gestionarlos de forma independiente, sin afectar a nivel de dependencias al resto de contenedores. Esto facilita mucho los despliegues y la gestión de aplicaciones, con una mayor comodidad de actualización, seguridad y control. Y sin contar con que al funcionar sobre Docker, como hablamos en el post anterior, no dependeremos de un sistema operativo anfitrión concreto, y consumiremos muchos menos recursos que con máquinas virtuales tradicionales. # Lanzar un contenedor Para ello, haremos uso de uno de los comandos más básicos: `docker run`. Si habéis seguido la guía de instalación que os recomiendo del punto anterior, ya habréis lanzado uno de prueba, el clásico _Hello World_ de Docker, pero ese comando es demasiado simple para servir de ejemplo real, así que haré uso de una de las aplicaciones que ya tenemos cubiertas en este blog: IT Tools. ## Ejemplo de docker run Os dejo el comando que deberíamos ejecutar para desplegar esta aplicación, y luego veremos más en detalle los diferentes parámetros que se han usado: sudo docker run -d --name it-tools --restart unless-stopped -p 8080:80 corentinth/it-tools:latest Si lo lanzamos tal cual, nos saldrá lo siguiente en nuestra terminal: Podemos ver que está activo con este comando (_que lo veremos más adelante con más detalle junto a otros comandos de utilidad_): sudo docker container ls -a Obtendremos esta salida en pantalla: Y si accedemos a la URL correspondiente, veremos que IT Tools está lanzado sin problemas. Vamos a parar nuestro contenedor con otro comando de utilidad, `stop`, junto al comando `rm` para eliminarlo. Ambos los detallaremos en el próximo post, pero que por ahora nos basta con poder ejecutarlos: sudo docker container stop it-tools sudo docker container rm it-tools Lo comprobamos ejecutando nuevamente: sudo docker container ls -a Y veremos que no hay rastro, ya que se ha eliminado. ## Parámetros del ejemplo Ahora, si nos fijamos en el comando en sí, veremos que es algo extenso y tiene unos cuantos parámetros: * `-d` * `--name it-tools` * `--restart unless-stopped` * `-p 8080:80` * `corentinth/it-tools:latest` ℹ️ Adicionalmente veremos el comando `--rm`. Así que vamos a ir viendo uno a uno qué son y para qué sirven, y así hacernos una idea general del funcionamiento del comando `docker run`. # Parámetro --rm Aunque no sale en el comando inicial debido a incompatibilidad con `--restart`su funcionalidad es muy sencilla: Elimina el contenedor automáticamente si este es parado. Viene de `remove`, como se puede intuir, y resulta muy práctico para las pruebas, pero no es habitual ejecutarlo en las aplicaciones. Lo verás en próximos ejemplos ya que es muy conveniente para poder mostrar y ejecutar cómodamente las diferentes versiones del comando `docker run` a lo largo de este post. ## Ejemplo parámetro --rm Ejecutamos lo siguiente: sudo docker run --rm -d --name it-tools-rm corentinth/it-tools:latest Veremos que se nos da un output por pantalla: Si ahora revisamos los contenedores que tenemos activos: sudo docker container ls Tendremos listado nuestro contenedor, funcionando: Si ahora lo mandamos parar: sudo docker container stop it-tools-rm Veremos que el contenedor se para, y podremos comprobar que el contenedor se ha eliminado sin necesidad del `docker container rm`: docker container ls -a No deberíamos obtener el contenedor. # Imagen corentinth/it-tools:latest Dentro de toda la parametría que se emplea en el comando, la imagen es diría que la más importante, ya que sin esto, no tenemos referencia de qué queremos lanzar, ya que es la manera que tenemos de indicar qué aplicación queremos desplegar en nuestro contenedor. En este caso, estamos desplegando `corentinth/it-tools:latest`. Para entenderlo mejor, vamos a dividir sus partes: * `corentinth`: Autor de la imagen. * `it-tools`: Nombre de la imagen. * `latest`: Versión de la imagen. Siempre lo veremos de esa misma manera: `autor/imagen:version`. Estas imágenes son alojadas en repositorios dedicados, como puede ser Docker Hub, aunque hay de otros proveedores, este es de los más extendidos. ## Ejemplo de imagen Para este caso, con la imagen de ejemplo, tenemos lo mínimo indispensable para lanzar el contenedor. Esto no significa ni garantiza que esté lo que se necesita realmente para que nuestra aplicación funcione adecuadamente, pero Docker es capaz de lanzarlo salvo requerimientos de la propia imagen. sudo docker container run --rm corentinth/it-tools:latest Veremos que se lanza: Y que al pulsar `CTRL + C` el contenedor se para y se elimina, pudiendo comprobarlo mediante: sudo docker container ls -a ## Ejemplo diferentes imágenes Podemos desplegar una imagen concreta, ya que la `latest` es asignada por el autor a la versión (usualmente LTS) que considera como estable o última. En este caso, podríamos elegir desplegar la versión `nightly`, y para ello ejecutaríamos: sudo docker container run --rm -d corentinth/it-tools:nightly Veremos que se lanza, y que ha descargado una nueva imagen: Ahora si lo listamos, veremos que aparece en ejecución: sudo docker container ls -a Si ahora lo paramos mediante este comando, poniendo el nombre del contenedor del listado anterior (recuerda cambiarlo por el que te corresponda): sudo docker container stop practical_boyd Veremos que se ha parado y eliminado, listando nuevamente los contenedores: sudo docker container ls -a # Parámetro -d Es una abreviatura de `detached`, y se emplea para indicara a nuestro contenedor que queremos que se ejecute en background. Es uno de los que más utilizaremos, ya que sirve para dejar una aplicación activa, independientemente de nuestra sesión de terminal, como si de un servicio se tratase, en combinación con otros parámetros como el `--restart` que veremos más adelante. ## Ejemplo parámetro -d Entonces, aislándolo para este caso, podríamos lanzar por ejemplo: sudo docker run --rm -d corentinth/it-tools:latest Veremos que el contenedor se lanza, volviendo a ejecutar lo siguiente: sudo docker container ls -a Procedemos a pararlo, y por tanto, al haber indicado `-rm`, eliminarlo. **El nombre deberemos obtenerlo del listado del comando anterior, bajo la columna`name`**: sudo docker container stop confident_northcutt # Parámetro --name Bastante auto explicativo. Sirve, como se puede intuir, para asignar el nombre a nuestro contenedor, en este caso `it-tools`. Este nombre nos sirve para facilitar el uso de otros comandos de utilidad que veremos en el próximo post y vídeo, como para parar el contenedor, reiniciarlo, lanzarlo nuevamente o revisar sus logs. También nos permite identificar rápidamente nuestro despliegue sin necesidad de memorizar su ID, ya que este ID es aleatorio. ℹ️ En caso de no especificarle un nombre, se le asignará uno automáticamente, siguiendo una nomenclatura __snake_case.__ ## Ejemplo parámetro --name Como hemos podido comprobar, si ejecutamos lo siguiente: sudo docker container run --rm -d --name it-tools corentinth/it-tools:latest Se nos lanzará el contenedor, que podremos ver ejecutando: sudo docker container ls -a Ahora, a diferencia del apartado anterior, podremos pararlo indicando el nombre que le hemos asignado nosotros mismos, y que adicionalmente se elimine ya que lo hemos lanzado como ejemplo: sudo docker container stop it-tools Y veremos que si listamos nuevamente, no sale dentro de los contenedores que tenemos: sudo docker container ls -a # Parámetro --restart Nos va a permitir configurar la política de reinicio de nuestro contenedor. Esta política es lo que se le indica justo tras el parámetro, siendo en este caso `unless-stopped`. Hay otras políticas diferentes, que podemos elegir indicando solo una de ellas después del `--restart`: Política | Descripción ---|--- `no` | El contenedor no se reiniciará automáticamente en ningún caso. Es la opción por defecto en caso de no indicar un parámetro `--restart`. `on-failure[:max-retries]` | El contenedor se reiniciará si se ha finalizado con algún código de error. Adicionalmente se le puede indicar un número máximo de reintentos como `on-failure:3`. Si el servidor en sí se reinicia, el contenedor no se reiniciará. `always` | El contenedor se reinicia en cualquiera de estas circunstancias. Si lo paramos manualmente y reiniciamos el servicio de Docker (o el servidor de Docker en si) el contenedor se volverá a lanzar. `unless-stopped` | Similar al `always`, exceptuando que si el contenedor es parado manualmente, no se reiniciará hasta que lo lances nuevamente. Esto nos viene genial para poder configurar nuestros contenedores para que se reinicien en función de nuestras necesidades, llegando a actuar como si de servicios nativos de _Unix_ se trataran. ## Ejemplo parámetro restart unless-stopped Siguiendo con el ejemplo anterior, ejecutamos: sudo docker run -d --name it-tools --restart unless-stopped -p 8080:80 corentinth/it-tools:latest Comprobamos que se ha lanzado mediante: sudo docker container ls -a Ahora lo paramos: sudo docker stop it-tools Vemos que ha parado: sudo docker container ls -a Reiniciamos el servicio de Docker: sudo service docker restart Esperamos unos segundos a se haga efectivo el reinicio anterior, y ejecutamos: sudo docker container ls -a Podremos apreciar que nuestro contenedor **NO** se ha reiniciado automáticamente: Eliminamos nuestro contenedor para dejar el entorno limpio: sudo docker container rm it-tools ## Ejemplo parámetro --restart always Con esta flag, como se indica en la tabla anterior, nuestro contenedor debería reiniciarse en cualquier circunstancia. Para comprobarlo lanzamos lo siguiente: sudo docker run -d --name it-tools-restart --restart always corentinth/it-tools:latest Como con cada paso, comprobamos la ejecución del contenedor: sudo docker container ls -a Lo paramos haciendo uso de este comando: sudo docker stop it-tools-restart Y comprobamos nuevamente su estado, verificando que se ha parado: sudo docker container ls -a Si ahora reiniciamos nuestro servicio de Docker: sudo service docker restart Y como antes esperamos a que termine de reiniciarse, y luego listamos nuestros contenedores: sudo docker container ls -a Podremos apreciar que nuestro contenedor esta ves **SI** se ha reiniciado automáticamente: # Parámetro -p Este viene de abreviar el término `ports`, y es con el que indicaremos el mapeo de puertos que deseamos para nuestro contenedor. En el ejemplo dado de `it-tools` estamos señalando que el puerto `8080` de nuestro anfitrión tiene una conexión con el puerto `80` de nuestro contenedor. Están siendo mapeados. Siempre se sigue el mismo orden, siendo `anfitrión:contenedor`. ## Ejemplo parámetro -p multi puerto Si tuviéramos que indicar múltiples puertos, tendríamos que concatenar varios comandos `-p`, por ejemplo: docker run -d --name it-tools-multiport -p 8080:80 -p 8443:443 corentinth/it-tools:latest Si ahora ejecutamos lo siguiente: docker container ls -a Veremos que nuestro contenedor ahora nos indica que tiene varios puertos abiertos: Paramos y eliminamos este contenedor: sudo docker container stop it-tools-multiport sudo docker container rm it-tools-multiport ## Otras configuraciones de puertos Adicionalmente, podemos indicar IPs concretas de anfitrión, que nos viene genial en caso de tener múltiples interfaces en nuestro servidor; y también los protocolos (`TCP/UDP`). Por ejemplo (probablemente no te funcione ya que dependes de tener esas mismas IPs): docker run -d --name it-tools-multiport -p 192.168.10.5:8080:80 -p 192.168.20:5:8443:443 corentinth/it-tools:latest Con este comando le estaremos indicando lo siguiente: * El puerto `80` de nuestro contenedor es accesible desde el puerto `8080` de la IP `192.168.10.5` de nuestro anfitrión. * El puerto `443` de nuestro contenedor es accesible desde el puerto `8443` de la IP `192.168.20.5` de nuestro anfitrión. # Referencias Lista de documentación, vídeos, cursos y referencias utilizadas: * Qué es un contenedor: What is a container? | Docker Docs * Políticas de reinicio: Start containers automatically | Docker Docs * Mapeo de puertos: Port publishing and mapping | Docker Docs

Ahora que sabemos qué es Docker, toca aprender a lanzar nuestro primer contenedor, usando docker run.

1 month ago 1 2 0 0
Preview
Docker 101 - Introducción a Docker En este post cubriremos una de las primeras cuestiones más relevantes: ¿Qué es Docker? Aunque de forma más teórica, considero importante conocer bien el espacio que ocupa Docker, y de dónde viene. En posteriores publicaciones iremos profundizando en los aspectos más técnicos, como los siguientes: 1. Lanzar nuestro primer contenedor. 2. Crear y comprender el funcionamiento de los volúmenes. 3. Generar nuestras imágenes, entender las _layers_ y optimizaciones. 4. Comprender el funcionamiento de los repositorios de imágenes. 5. Crear nuestra aplicación compuesta con Docker Compose. 6. Configurar un clúster de Docker usando Swarm. > Así que este será el primero de un total de ocho publicaciones, con los que, al finalizar, habremos comprendido las bases de Docker, y nos permitirá sacarle el mejor provecho. Pero ahora, ¡vamos a lo importante de este post! # ¿Qué es Docker? Docker es un sistema que nos va a permitir desplegar nuestras aplicaciones de forma más cómoda y sencilla, consumiendo menos recursos que anteriores métodos como el uso de máquinas virtuales. Otra gran ventaja de Docker, es que no entiende de sistemas operativos, por lo que, si tenemos un sistema de contenedores funcionando en nuestro servidor, no nos importará que tipo de Linux esté utilizando, o si es incluso un Windows. # Máquinas Virtuales VS Contenedores Las máquinas virtuales han estado presentes mucho tiempo, permitiendo generar entornos _sandbox_ en los que podíamos tener nuestras aplicaciones aisladas e independientes del sistema operativo anfitrión. De esta manera se simplificaba la generación de copias de seguridad y la restauración en ciertos puntos o estados de las aplicaciones. Adicionalmente aportaban una capa más de seguridad. Pero con la llegada de la _contenerización_ esto se nos ha simplificado, ya que atomiza más si cabe la forma en la que se despliegan las aplicaciones. ## Máquinas Virtuales Las máquinas virtuales hasta ahora, requieren funcionar sobre un sistema de virtualización, como VirtualBox; y sobre esto instalar un sistema operativo nuevamente, conocido como Sistema Operativo Virtual, el cual podía ser el que deseásemos. Por lo que las diferentes capas involucradas se pueden visualizar de la siguiente manera: * Los recursos hardware son gestionados por el sistema operativo anfitrión. * Este le permite el acceso en función de lo que necesite a la aplicación de virtualización. * La aplicación de virtualización gestiona los sistemas operativos virtualizados. * Y a su vez estos tienen sobre ellos las aplicaciones finales. ## Hipervisores Posteriormente surgieron sistemas operativos dedicados a la virtualización, conocidos como _hipervisores_ (como el caso de Proxmox). De esta forma se simplifica el esquema, quitando una de las capas, quedando así. Ahora las anteriores capas de **Sistema Operativo** y **Aplicación de Virtualización** se reúnen en una sola: **Sistema Operativo Hipervisor**. ## Contenedores El sistema de contenedores permite abstraer aún más, de forma que delega ciertos recursos que terminarían siendo redundantes al sistema operativo anfitrión. De esta manera, la red, por ejemplo, en el caso de Docker, es compartida con el sistema operativo en el que se encuentra. El esquema quedaría de esta manera: Ahora nos hemos quitado de golpe el sistema operativo virtual, de forma que es la aplicación contra el proceso de _contenerización_ , y posteriormente este el que solicita los recursos hardware necesarios al sistema operativo anfitrión. ¡Se nos quedan muchas menos capas que con las máquinas virtuales inicialmente! # ¿Qué uso se le da hoy día? Si te dedicas al mundo de la informática, y, sobre todo, en los ámbitos de sistemas y programación, verás contenedores por todos lados, ya sea con Docker, como Kubernetes; hasta en proveedores en _Cloud_ como Amazon ECS u Openshift. El principal punto de estos contenedores, es la facilidad de despliegue de nuevas aplicaciones, y su comodidad de gestión. La mayoría de empresas optan por empaquetar sus productos en contenedores para que puedan ser desplegados donde vean más convenientes, ya que, como hemos mencionado, no dependen de un sistema operativo. Además, estos sistemas de contenedores tienen una muy fácil integración con aplicaciones de Integración contínua, que simplifica aún más los despliegues. En el ámbito laboral, en lo que más uso le he dado, ha sido a la hora de poder tener mis entornos locales de prueba, como bases de datos, o incluso poder desplegar mis aplicaciones para probarlas antes de subirlas. Por otro lado, en el aspecto personal, en el _homelab_ , el uso es para poder desplegar y gestionar cómodamente los servicios que quiero tener funcionando, como los que vemos aquí en el blog, o en los diferentes vídeos del canal. # ¿Quién está detrás del proyecto? Ahora, un poco de historia. Los contenedores llevan tiempo existiendo, y han habido diferentes intentos de estandarizarlos, pero quién logró llevar esto a su punto más conocido actualmente fue **Docker**. De ahí que hoy día casi todo el mundo se refiera a los contenedores como Docker, pero **no son lo mismo**. De hecho, actualmente el proyecto en sí de contenedores, conocido como Container.d, es gestionado por la Fundación Linux. Como se puede apreciar en este artículo, en en año 2017 fue cuando se traspasó el proyecto a la Fundación Linux. Gracias a esto, el estándar de contenedores está protegido y es de código abierto. Eso si, no lo son las adaptaciones e interfaces que muchos conocemos, como puede ser **Docker Desktop**. # ¿Y si quiero certificarme? Hay multitud de certificaciones hoy día, y cuesta saber cuáles son realmente reconocidas. Pero en este caso no tenemos ninguna duda, ya que los contenedores son un estándar en la mayoría de trabajos en nuestro campo, por lo que una certificación podría aportarte. A día de hoy, recomiendo que una vez finalices con Docker, te metas en el mundo de _Kubernetes_ , y entonces te prepares para la certificación del KCNA. ⚠️ Aunque sigas todos los post que vaya publicando, te aconsejo que hagas un curso más reconocido y enfocado en ayudarte a formarte para los exámenes, como el que menciono a continuación. * Curso recomendado (inglés): https://www.udemy.com/course/dive-into-cloud-native-containers-kubernetes-and-the-kcna * Certificación KCNA: https://training.linuxfoundation.org/certification/kubernetes-cloud-native-associate/ # Referencias Listado de fuentes de información a la hora de realizar este post: * Mi propia experiencia personal y profesional en el sector. * Formación obtenida del curso: https://www.udemy.com/course/docker-mastery * Formación obtenida del curso: https://www.udemy.com/course/dive-into-cloud-native-containers-kubernetes-and-the-kcna * Web de la Fundación Linux. * Referencia del proyecto de Container.d]([containerd – An industry-standard container runtime with an emphasis on simplicity, robustness and portability)

Docker es una de las herramientas más extendidas hoy día. Conoce qué es y de dónde viene, y más adelante nos adentraremos en su parte más técnica.

1 month ago 2 1 0 0
Advertisement
Preview
Cómo mejorar tu conectividad en casa Cada lugar es un mundo. Hay hogares en los que podemos pasar cable sin problemas y otros en los que no. Habitaciones en las que nos llega el WiFi y otras que parecen un búnker aislado totalmente. Además de los problemas de cobertura de nuestro WiFi, también se nos plantean otros como: * **La latencia:** A veces los dispositivos que tenemos para nuestra red no son tan óptimos haciendo su trabajo, haciendo que, aunque tengamos altas velocidades, tarden mucho en respondernos. * **La privacidad** : Desde luego, dependiendo de nuestros dispositivos, principalmente del router, podremos tener más opciones de privacidad. * **Posibilidades de configuración** : Y finalmente, las limitaciones que se puede sufrir a la hora de configurar y adaptar la red a nuestras necesidades. Así que os voy a dar cinco opciones que os pueden ayudar mucho en este aspecto. # Cambiar el router del proveedor Sustituir (o aislar) el router que te instala la operadora es, en muchos casos, el primer paso que recomendaría. ¿Por qué? ## Ventajas * **Más control** : firmware más completo, reglas de firewall finas, VLANs, QoS y monitorización. * **Mejores opciones de seguridad** : actualizaciones, cortafuegos avanzados, políticas de enrutamiento, filtrados de aplicaciones y otras más. * **Funcionalidades extra** : clientes/servidores VPN, servidores DHCP avanzados, segmentación de la red para IoT, etc. * **Rendimiento y cobertura** : dependiendo del equipo que montes, puedes obtener mejor radio Wi‑Fi, más antenas o más potencia de CPU para NAT. * **Mayor privacidad** : Todas las opciones anteriores usualmente no son posibles en el router que proporciona la operadora, por lo que son conscientes de todo nuestro tráfico. Con los puntos anteriores podríamos evitar esto. ## Inconvenientes * Antes de hacer el cambio, hay que asegurarse de configurar bien el router de la operadora en modo _bridge_ , o hacer las configuraciones necesarias. * Aunque ambién está la opción de retirarlo por completo haciendo uso de una ONT propia, para esto algunas operadoras son reacias. Recuerda que en España estás en todo tu derecho de tener control sobre tu router. * Conocimientos más avanzados para su correcta configuración. ## Recomendaciones Como para todo, hay muchísimas marcas y modelos. Están incluso marcas gaming como Asus, como marcas tradicionales de redes como Linksys, o algunas más modernas y que ya hemos visto por aquí como Ubiquiti con su gama Unifi. Y la opción para los que les gusta trastear aún más: Un router custom con PFSense. En mi caso, siempre he trabajado con Unifi para el aspecto de red, os dejo el dispositivo que tengo actualmente en mi _homelab_ : #### ****Dream Machine Pro**** Switch empresarial con sistema de NVR (cámaras), controles de acceso, VoIP y otros. Hasta 10Gbps y 3.5Gbps con IPS. Ver más Como otras recomendaciones dentro de la misma marca, os dejo la siguiente lista. Algunos no tienen WiFi integrado y habría que complementarlos con puntos de acceso, en tal caso estos routers actuarían como **controlador**. Modelo y link | Precio | Velocidad máxima | Velocidad con IPS | WiFi | Otras características ---|---|---|---|---|--- Dream Machine Pro Max | 652,19 € | 10 Gb/s | 5 Gb/s | -- | Sistema empresarial. Sistema NVR. Dos discos. Dream Machine Special Edition | 543,29 € | 10 Gb/s | 3.5 Gb/s | -- | Sistema empresarial. Sistema NVR. Un disco. Puertos PoE. Dream Machine Pro | 411,40 € | 10 Gb/s | 3.5 Gb/s | -- | Sistema empresarial. Sistema NVR. Un disco. Cloud Gateway Fiber | 302,50 € | 10 Gb/s | 5 Gb/s | -- | Altas velocidades. Sistema NVR. Disco NVMe. Puertos PoE. Dream Router 7 | 302,50 € | 10 Gb/s | 2.3 Gb/s | WiFi 7 | Todo en uno potente. Sistema NVR. WiFi 7 integrado. Puertos PoE. UniFi Express 7 | 216,59 € | 10 Gb/s | 2.3 Gb/s | WiFi 7 | Sencillo. Ideal para hogares. Cloud Gateway Max NS | 216,59 € | 2.5 Gb/s | 2.3 Gb/s | -- | Todo en uno sencillo. Sistema NVR. Disco NVMe. Cloud Gateway Ultra | 108,90 € | 2.5 Gb/s | 1 Gb/s | -- | Buen precio ideal para redes simples. # Instalar un sistema Wi‑Fi en malla (Mesh) El Wi‑Fi mesh es la opción ideal cuando no puedes pasar cable y necesitas cubrir una casa con varios puntos de acceso que se coordinan entre sí. ## Ventajas: * Instalación sencilla y cobertura extendida. * Roaming más transparente para dispositivos móviles. * Muchos sistemas tienen gestión centralizada y apps que simplifican su instalación inicial. ## Inconvenientes: * Si la comunicación entre los dispositivos de acceso es totalmente inalámbrica, puede significar una mayor latencia y una posible pérdida de velocidad. * Menos control avanzado que los puntos de acceso empresariales gestionados por controlador. Algunos permiten ser conectados entre sí por cable. Si tienes esa opción, mejorará bastante el roaming, velocidades y latencias. 💡 El "roaming" es el cambio de un dispositivo de un punto de acceso a otro: el salto que da nuestro móvil al pasar del dormitorio al salón. No todos los sistemas gestionan este proceso igual, así que, para roaming mas fluido a nivel profesional se suele utilizar un controlador. ## Recomendaciones En este ámbito hay multitud de marcas reconocidas: TP-Link, Linsys, Asus, Xiaomi... E incluso las operadoras empiezan a ofrecer los suyos propios. Desde mi experiencia, como en muchas ocasiones, mi recomendación personal es Unifi. Os dejo un listado de opciones con su estándar WiFi, precio, cobertura y demás características de interés: Modelo y link | Precio | Estándar | Cobertura | Objetivo ---|---|---|---|--- Access Point U7 Mesh | 214,80 € | WiFi 7 | 140 m² | Modelo de alta gama ideal para múltiples dispositivos y alta velocidad con WiFi 7. Access Point U6 Mesh | 192,00 € | WiFi 6 | 140 m² | Modelo de alta gama ideal para múltiples dispositivos. Access Point U6 Extender | 162,00 € | WiFi 6 | 115 m² | Dispositivo sencillo para ampliar nuestra cobertura WiFi. # Powerline (PLC) Los adaptadores PLC usan la red eléctrica de la casa para transmitir datos, y son una buena alternativa cuando no puedes tirar cable y tampoco utilizar malla WiFi. ## Ventajas: * Muy fácil de instalar: enchufar en ambos puntos, emparejarlos ¡y listo! * Útil para conectar TV, consolas o APs donde el Wi‑Fi llega mal y no tenemos cableado ethernet. ## Inconvenientes: * Rendimiento muy dependiente del estado y la configuración de la instalación eléctrica. * Susceptible a interferencias de electrodomésticos (horno, microondas...) * No lo enchufes enchufes en regletas o similares, ya que puede generar aún más pérdidas. * Latencia variable; no siempre ideal para juegos competitivos. ⚠️ A nivel de seguridad, la mayoría de PLC modernos incorporan cifrado entre los adaptadores, pero no es recomendable usarse si compartes el circuito o la instalación eléctrica con vecinos u otros. ## Recomendaciones Como con anterioridad, os dejo mi recomendación personal que he podido utilizar, pero como siempre, investigad bien qué otros dispositivos hay para encontrar el que más se acople a vuestras necesidades: #### TP-Link TL-PA7017P PLC de conexión Gigabit y fácil instalación. Ver más # Cableado Ethernet (la opción más estable) Si buscas máxima estabilidad y menor latencia, el cable es la mejor elección. Ideal para servidores, NAS, equipos de teletrabajo o tu PC Gaming o consola. Y por supuesto, la mejor de las opciones para interconectar tus dispositivos en tu _homelab_. ## Ventajas * Menor latencia. * Mayor fiabilidad y menor pérdidas de paquetes. * Mayor ancho de banda. * Permite alimentar dispositivos mediante PoE, como cámaras de seguridad, puntos de acceso, o incluso servidores pequeños como la Raspberry Pi. ## Inconvenientes * Requiere mayor planificación previa. * La instalación en sí del dableado es más tediosa y compleja. * No es sencillo revertirla o no es posible de aplicar en todos los lugares. ## Recomendaciones Los cables ethernet tienen una categorización. En función de esta aceptan unas velocidades y distancias. Esto se debe a las diferentes calidades en su fabricación y aislamiento. Al final se componen de ocho pequeños cables en su interior. Os resumo dichas categorías, para que sepáis cuál os viene mejor: Categoría | Abreviatura | Velocidad | Distancia | Otras características ---|---|---|---|--- Categoría 5e | Cat5e | `1Gb/s` | 100m | Habitual en hogares. Categoría 6 | Cat6 | `10Gb/s` | 55m | Ideal para altas velocidades en casa. Categoría 6a | Cat6a | `10Gb/s` | 100m | Mejora la distancia respecto a Cat6. Categoría 7 | Cat7 | `10Gb/s` | 100m | Mejor aislamiento ante interferencias. Categoría 8 | Cat8 | `25-40 Gb/s` | 30m | Ideal para conexiones rápidas entre servidores. # Puntos de acceso profesionales (APs) Colocar puntos de acceso dedicados y alimentarlos por cable transforma la experiencia WiFi respecto a depender sólo del router. Esto lo hace ideal para casi cualquier situación en la que necesites ampliar la cobertura y tengas cableado disponible. ## Ventajas * Mejores radios, antenas y rendimiento, sobre todo con muchos dispositivos.. * Configuración avanzada: VLANs, SSID múltiples, control de potencia, canales, band-steering. * Escalabilidad: varios APs gestionados centralmente funcionan mucho mejor que los repetidores. ## Inconvenientes * Suele ser necesario tener un dispositivo controlador, que se encargue de gestionar bien el roaming y otras opciones necesarias. * Dependes de tener cableado Ethernet, como el del punto anterior. ## Recomendaciones Hay multitud de marcas y modelos, pero os dejo los que tengo a mi disposición y he podido probar. Como lo que muestro en el vídeo y muchos ya sabréis, son de Unifi, la marca de dispositivos de red de Ubiquiti: #### U7 Pro XG Modelo de alta gama con WiFi 7 pensado para empresas con muchos dispositivos conectados. Ver más Aquí tenéis otras opciones de la misma marca, con su estándar WiFi, precio, cobertura y demás características de interés: Modelo y link | Precio | Estándar | Cobertura | Conector | Objetivo ---|---|---|---|---|--- Access Point U7 Pro XG | 216,59 € | WiFi 7 | 140 m² | 10 GbE PoE+ | Modelo de alta gama pensado para empresas con muchos dispositivos conectados. Access Point U7 Pro | 193,60 € | WiFi 7 | 140 m² | 2.5 GbE PoE+ | Modelo de alta gama pensado para empresas con muchos dispositivos conectados. Access Point U7 Lite | 107,69 € | WiFi 7 | 115 m² | 2.5 GbE PoE | Modelo ideal para hogares donde se quiera una alta velocidad y WiFi 7. Access Point U6 Pro | 175,45 € | WiFi 6 | 140 m² | 1 GbE PoE | Modelo de alta gama pensado para empresas con muchos dispositivos conectados. Access Point U6 Plus | 107,69 € | WiFi 6 | 140 m² | 1 GbE PoE | Modelo ideal para hogares donde se quiera una gran cobertura. # Cómo elegir entre estas opciones Muchas de ellas son compatibles entre sí, pero por resumir las opciones en función del caso: * Máxima estabilidad y rendimiento: Cable Ethernet + APs profesionales. * Comodidad sin obra ni cableado: Sistema WiFi mesh. * Sin posibilidad de cableado ni WiFi: PLC puede ser una solución práctica, aunque con limitaciones. * Control y privacidad desde el inicio: sustituir o poner en bridge el router del ISP y usar tu propio equipo. # Resumen rápido * Cambiar el router del proveedor: Suele ser el primer paso recomendado por control y privacidad. * Mesh: Comodidad y cobertura; mejor si los interconectas por cable. * PLC: Rápida solución si no puedes cablear, pero cuidado con las regletas. * Cableado: La opción más estable y con menor latencia. * APs profesionales + controlador: Mejor roaming y gestión en instalaciones con varios puntos. # Otras recomendaciones y aportaciones La intención de este post es que sirva de guía para todos los que lo necesiten. Sentíos libres de aportar mediante los comentarios, otros dispositivos y marcas que os hayan servido, o incluso otros métodos que no se hayan contemplado, para ir complementando y ampliando este post con vuestros aportes. No reparéis en hacerlo. ¡Muchas gracias!

Hoy veremos cinco formas prácticas para mejorar nuestra conectividad en casa, tanto velocidades, como latencias y privacidad.

1 month ago 1 1 0 0
Preview
LaLiga y Telefónica cortan el acceso a las VPNs Proton y Nord VPN durante los partidos gracias a una nueva resolución judicial

⚽️ LaLiga y 🟦 Telefónica cortan el acceso a las 🔒 VPNs Proton y Nord VPN durante los partidos gracias a una nueva 👨‍⚖️ resolución judicial

👇

bandaancha.eu/articulos/la...

2 months ago 52 67 19 304

Pero de qué va el puto viejales este de mierda??????

2 months ago 2 1 1 0

Siento que todo es bastante caótico últimamente. :(

2 months ago 0 0 0 0

Buenos días por la mañana. 🙂‍↕️

2 months ago 1 0 0 0

No se es persona hasta que se toma el primer sorbo de café. 😭

2 months ago 1 0 0 0

Últimamente le estoy dando más caña al blog... Creo que el hecho de hacerlo ahora en español en vez de inglés me lo pone más fácil, antes me daba bastante pereza ponerme, no lo voy a negar. 😅

2 months ago 1 0 0 0
Preview
SAI en línea con NUT <p>A la hora de tener un SAI, todos estamos de acuerdo que su principal función es proteger nuestros sistemas ante caídas o picos de tensión.</p><p>Pero un paso importante es saber la información de nuestro SAI, de forma que podamos conocer el consumo en tiempo real, la capacidad restante de batería y el tiempo que tenemos en caso de irse la corriente.</p><p>Para ello instalaremos <a href="https://networkupstools.org/">NUT</a></p><h1 id="requisitos">Requisitos</h1><p>Estos son los requisitos para poder continuar con esta guía:</p><ul><li>Un servidor que actuará como monitor NUT. En mi caso una Raspberry Pi 5.</li><li>Tener Linux instalado en el servidor. Prácticamente cualquier distro servirá.</li><li>Un servidor con Docker (opcionalmente con Portainer). Si tienes dudas puedes seguir <a href="https://blog.runesoft.net/install-docker-and-portainer-ce/">esta guía</a>.</li><li>Un SAI/UPS compatible con NUT, puedes comprobarlo <a href="https://networkupstools.org/stable-hcl.html.">en esta lista</a>.</li></ul><h1 id="preparando-el-servidor">Preparando el servidor</h1><p>Lo primero que tenemos que saber, es qué tipo de driver va a utilizar nuestro SAI, y qué conexión va a tener. La mayoría de SAI de precio razonable para <em>homelabs</em> y hogares, van a ir conectados mediante USB, así que con conectarlos a nuestro servidor sería suficiente.</p><h1 id="instalando-nut">Instalando NUT</h1><p>Es el paso más sencillo, puesto que en la mayoría de distribuciones Linux es un paquete. En mi caso uso Raspbian (Debian), así que lo primero, al tratarse de una nueva instalación, he actualizado el repositorio:</p><pre><code class="language-bash">sudo apt update sudo apt upgrade </code></pre><p>Y posteriormente he instalado el paquete de NUT:</p><pre><code class="language-bash">sudo apt install nut nut-client nut-server </code></pre><p>Comprobamos que se ha instalado correctamente usando este comando:</p><pre><code class="language-bash">sudo nut-scanner -U </code></pre><p>Debería darnos una información similar a esta:</p><figure class="kg-card kg-image-card"><img src="https://blog.runesoft.net/content/images/2026/01/NUT---nut-scanner.png" class="kg-image" alt="" loading="lazy" width="1271" height="495" srcset="https://blog.runesoft.net/content/images/size/w600/2026/01/NUT---nut-scanner.png 600w, https://blog.runesoft.net/content/images/size/w1000/2026/01/NUT---nut-scanner.png 1000w, https://blog.runesoft.net/content/images/2026/01/NUT---nut-scanner.png 1271w" /></figure><p>Con esto deberíamos estar más que servidos, ya solo tendremos que empezar con la configuración.</p><h1 id="configurando-nut">Configurando NUT</h1><p>Para configurarlo, necesitaremos modificar una serie de ficheros, así que iremos cubriendo cada uno de ellos, y explicando para qué sirven las modificaciones que hacemos.</p><div class="kg-card kg-callout-card kg-callout-card-yellow"><div class="kg-callout-emoji">⚠️</div><div class="kg-callout-text">Verás que los ficheros que pongo <b><strong style="white-space:pre-wrap">de ejemplo</strong></b> son nuevos, siempre haré una copia de seguridad de los ficheros de configuración originales.</div></div><h2 id="dando-de-alta-nuestro-ups">Dando de alta nuestro UPS</h2><p>Para ello, deberemos editar el fichero <code>ups.conf</code>, así que ejecutamos este comando:</p><pre><code class="language-bash">sudo mv /etc/nut/ups.conf /etc/nut/ups.conf.bk sudo nano /etc/nut/ups.conf </code></pre><p>Aquí deberemos dar de alta los datos de nuestro SAI, siguiendo el ejemplo que adjunto. En mi caso se trata de un SAI de Cyberpower.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text">Los datos que necesitáis son los que el comando <code style="white-space:pre-wrap">sudo nut-scanner -U</code> nos ha aportado</div></div><p>Podéis modificar lo que está entre corchetes ("[SAI]") por el nombre que le queráis dar a vuestro UPS dentro del sistema de NUT. Adaptad el resto con vuestra información.</p><pre><code class="language-conf">pollinterval = 1 maxretry = 3 [sai] driver = usbhid-ups port = auto desc = "Cyberpower 1200VA" vendorid = 0764 productid = 0601 serial = ABCDEFHI123456 </code></pre><p>Ahora, guardamos pulsando <code>CTRL + O</code>, le damos a <code>ENTER</code> y cerramos con <code>CTRL + X</code>.</p><h2 id="creando-el-monitor-de-ups">Creando el monitor de UPS</h2><p>Será el encargado de monitorizar nuestro UPS como tal, ejecutamos:</p><pre><code class="language-bash">sudo mv /etc/nut/upsmon.conf /etc/nut/upsmon.conf.bk sudo nano /etc/nut/upsmon.conf </code></pre><p>Aquí deberemos poner una línea por cada UPS que monitoricemos, en mi caso solo es uno. Además, definiremos el usuario y contraseña para conectarse posteriormente, recuerda adaptarlo a tus necesidades:</p><pre><code class="language-conf">MONITOR sai@localhost 1 admin secret master </code></pre><p>Igual que antes, guardamos y cerramos. Ahora configuraremos el usuario para el monitor, por lo que introducimos el siguiente comando:</p><pre><code class="language-bash">sudo mv /etc/nut/upsd.users /etc/nut/upsd.users.bk sudo nano /etc/nut/upsd.users </code></pre><p>Y damos de alta lo siguiente, al igual que en el archivo anterior, modificando el usuario o contraseña si lo vemos conveniente, pero siempre que sean los mismos datos:</p><pre><code class="language-conf">[monuser] password = secret admin master </code></pre><p>Como antes, guardamos y cerramos.</p><h2 id="activando-el-modo-servidor">Activando el modo servidor</h2><p>Con los pasos anteriores, estamos listos para hacer que NUT sea accesible como un servidor, de forma que podamos conectar otras aplicaciones como PeaNUT (lo veremos en siguientes pasos en esta guía) para obtener la información.</p><p>Lo primero aquí es establecer desde qué red o IP vamos a permitir conectarse, para ello ejecutamos:</p><pre><code class="language-bash">sudo mv /etc/nut/upsd.conf /etc/nut/upsd.conf.bk sudo nano /etc/nut/upsd.conf </code></pre><p>Y en el fichero veremos que hay una línea que está apuntando a la IP <code>127.0.0.1</code>. Si vamos a instalar PeaNUT en este mismo servidor, no es necesario, pero si queremos permitir conexiones desde cualquier IP, siempre podemos indicar:</p><pre><code class="language-conf">LISTEN 0.0.0.0 3493 </code></pre><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><code style="white-space:pre-wrap">3493</code> es el puerto por defecto que usa NUT, pero puedes modificarlo si lo deseas.</div></div><p>Como ya sabemos toca guardar el fichero con <code>CTRL + O</code>, darle a <code>ENTER</code> y cerrar con <code>CTRL + X</code>. Ahora vamos al otro fichero implicado en este paso, donde activaremos el modo servidor:</p><pre><code class="language-bash">sudo mv /etc/nut/nut.conf /etc/nut/nut.conf.bk sudo nano /etc/nut/nut.conf </code></pre><p>Aquí tan solo tendremos que introducir:</p><pre><code class="language-conf">MODE=netserver </code></pre><p>Y con esto ya lo tendríamos, tan solo hay que guardar y salir como ya sabemos.</p><h2 id="aplicar-los-cambios-y-comprobar">Aplicar los cambios y comprobar</h2><p>Ahora toca aplicar los cambios, tenemos dos opciones, reiniciar los servicios con:</p><pre><code class="language-bash">sudo service nut-server restart sudo service nut-client restart sudo systemctl restart nut-monitor sudo upsdrvctl stop sudo upsdrvctl start </code></pre><p>O reiniciar todo el sistema entero con:</p><pre><code class="language-bahs">sudo reboot now </code></pre><p>En cualquiera de los casos, al reiniciar, podremos listar los USBs que tenemos disponibles:</p><pre><code class="language-bash">lsusb </code></pre><p>Y de ahí sacar el que tiene el nombre de nuestro SAI, para listar su información detallada</p><figure class="kg-card kg-image-card"><img src="https://blog.runesoft.net/content/images/2026/01/NUT---lsusb.png" class="kg-image" alt="" loading="lazy" width="1142" height="198" srcset="https://blog.runesoft.net/content/images/size/w600/2026/01/NUT---lsusb.png 600w, https://blog.runesoft.net/content/images/size/w1000/2026/01/NUT---lsusb.png 1000w, https://blog.runesoft.net/content/images/2026/01/NUT---lsusb.png 1142w" /></figure><p>Recuerda modificar mi ejemplo con los datos del BUS y Dispositivo.</p><pre><code>lsusb -D /dev/bus/usb/003/002 </code></pre><p>Y ahora sí nos dará los detalles de nuestro UPS:</p><figure class="kg-card kg-image-card"><img src="https://blog.runesoft.net/content/images/2026/01/NUT---lusb--d.png" class="kg-image" alt="" loading="lazy" width="975" height="562" srcset="https://blog.runesoft.net/content/images/size/w600/2026/01/NUT---lusb--d.png 600w, https://blog.runesoft.net/content/images/2026/01/NUT---lusb--d.png 975w" /></figure><h1 id="instalar-peanut">Instalar PeaNUT</h1><p>PeaNUT es una interfaz web que nos permite conectarnos a nuestro NUT server, y así poder visualizar de manera cómoda los datos, consumo real y tiempo restante de nuestro SAI.<br />Lo instalaremos usando Docker. Este sería su fichero <code>docker-compose.yaml</code>:</p><pre><code class="language-yaml">services: peanut: image: brandawg93/peanut:latest container_name: PeaNUT restart: unless-stopped volumes: - peanut-config:/config ports: - 9080:8080 environment: - WEB_PORT=8080 volumes: peanut-config: </code></pre><p>Si utilizamos interfaces como <a href="https://www.portainer.io/">Portainer</a>, solo tendremos que darlo de alta como un <em>stack</em>.</p><p>Una vez arranque, accederemos a su web y puerto, que <strong>en este caso he utilizado el <code>9080</code></strong> para evitar conflictos con otras apps. Nos saldrá lo siguiente, indicando que no hay configurado ningún dispositivo:</p><figure class="kg-card kg-image-card"><img src="https://blog.runesoft.net/content/images/2026/01/PeaNUT---Sin-dispositivos.png" class="kg-image" alt="" loading="lazy" width="2000" height="799" srcset="https://blog.runesoft.net/content/images/size/w600/2026/01/PeaNUT---Sin-dispositivos.png 600w, https://blog.runesoft.net/content/images/size/w1000/2026/01/PeaNUT---Sin-dispositivos.png 1000w, https://blog.runesoft.net/content/images/size/w1600/2026/01/PeaNUT---Sin-dispositivos.png 1600w, https://blog.runesoft.net/content/images/2026/01/PeaNUT---Sin-dispositivos.png 2320w" /></figure><p>Le daremos al icono del engranaje. Nos llevará a la ventana de administración.</p><figure class="kg-card kg-image-card"><img src="https://blog.runesoft.net/content/images/2026/01/PeaNUT---Configuraciones.png" class="kg-image" alt="" loading="lazy" width="1433" height="452" srcset="https://blog.runesoft.net/content/images/size/w600/2026/01/PeaNUT---Configuraciones.png 600w, https://blog.runesoft.net/content/images/size/w1000/2026/01/PeaNUT---Configuraciones.png 1000w, https://blog.runesoft.net/content/images/2026/01/PeaNUT---Configuraciones.png 1433w" /></figure><p>Donde dándole al icono del <strong>+</strong> nos aparecerá el formulario para dar de alta un UPS. Recuerda modificar los campos con los valores que hayas ido configurando, como el puerto, el servidor, o el nombre y contraseña del usuario:</p><figure class="kg-card kg-image-card"><img src="https://blog.runesoft.net/content/images/2026/01/PeaNUT---Administrar-Servidores.png" class="kg-image" alt="" loading="lazy" width="1865" height="1067" srcset="https://blog.runesoft.net/content/images/size/w600/2026/01/PeaNUT---Administrar-Servidores.png 600w, https://blog.runesoft.net/content/images/size/w1000/2026/01/PeaNUT---Administrar-Servidores.png 1000w, https://blog.runesoft.net/content/images/size/w1600/2026/01/PeaNUT---Administrar-Servidores.png 1600w, https://blog.runesoft.net/content/images/2026/01/PeaNUT---Administrar-Servidores.png 1865w" /></figure><p>Una vez finalices, sólo hay que darle al botón de <strong>Aplicar</strong> en la esquina inferior derecha. Volveremos a la ventana principal, y tendremos nuestro SAI dado de alta:</p><figure class="kg-card kg-image-card"><img src="https://blog.runesoft.net/content/images/2026/01/PeaNUT---Con-Dispositivos.png" class="kg-image" alt="" loading="lazy" width="2000" height="357" srcset="https://blog.runesoft.net/content/images/size/w600/2026/01/PeaNUT---Con-Dispositivos.png 600w, https://blog.runesoft.net/content/images/size/w1000/2026/01/PeaNUT---Con-Dispositivos.png 1000w, https://blog.runesoft.net/content/images/size/w1600/2026/01/PeaNUT---Con-Dispositivos.png 1600w, https://blog.runesoft.net/content/images/2026/01/PeaNUT---Con-Dispositivos.png 2309w" /></figure><p>Si queremos ver más información, podemos darle al botón de detalles que aparece a la derecha, y nos saldrán una serie de gráficas, donde podremos ver hasta el consumo real de los dispositivos conectados a nuestro SAI, o el tiempo de respuesta:</p><figure class="kg-card kg-image-card"><img src="https://blog.runesoft.net/content/images/2026/01/PeaNUT---Detalles-de-SAI.png" class="kg-image" alt="" loading="lazy" width="1389" height="623" srcset="https://blog.runesoft.net/content/images/size/w600/2026/01/PeaNUT---Detalles-de-SAI.png 600w, https://blog.runesoft.net/content/images/size/w1000/2026/01/PeaNUT---Detalles-de-SAI.png 1000w, https://blog.runesoft.net/content/images/2026/01/PeaNUT---Detalles-de-SAI.png 1389w" /></figure><p>Y con esto tendríamos nuestro UPS bien monitorizado con PeaNUT.</p><h1 id="conclusi%C3%B3n">Conclusión</h1><p>Habiendo seguido esta guía, hemos podido configurar nuestro servidor de monitorización de SAI con NUT, y aplicarle una interfaz web amigable para poder gestionarlo cómodamente con PeaNUT.</p><h1 id="referencias">Referencias</h1><ul><li>Guía en inglés de <strong>TechnoTim</strong>: <a href="https://technotim.com/posts/NUT-server-guide/">https://technotim.com/posts/NUT-server-guide/</a></li><li>Vídeo del que obtuve la idea de <strong>Hardware Heaven</strong>: <a href="https://www.youtube.com/watch?v=dXSbURqdPfI">https://www.youtube.com/watch?v=dXSbURqdPfI</a></li><li>Documentación oficial de <strong>NUT</strong> para contrastar: <a href="https://networkupstools.org/">https://networkupstools.org/</a></li><li>Guía de instalación oficial de <strong>PeaNUT</strong>: <a href="https://github.com/Brandawg93/PeaNUT">https://github.com/Brandawg93/PeaNUT</a></li></ul>

Visualicemos el estado de nuestro SAI con NUT y la interfaz web de PeaNUT.

2 months ago 1 1 0 0
APPLE COMPRA TODO LO DE SANDERSON - Mistborn la película
APPLE COMPRA TODO LO DE SANDERSON - Mistborn la película YouTube video by alexelcapo

youtu.be/dR2mEK6IIoI

2 months ago 192 14 10 0
Advertisement
Preview
Monitoriza tus servidores con Beszel Beszel es una ligera herramienta que nos permite monitorear nuestros servidores y tener de un vistazo su estado y consumo de recursos.
2 months ago 3 1 0 0

Está todo horrible si. Aunque también estoy seguro que todas estas cosas pasaban pero no salían en los informativos, y ahora con la tragedia pues es la forma de conseguir visitillas, por desgracia. 😢

3 months ago 0 0 0 0

Obviamente siempre hay situaciones que por desgracia discriminan e impiden que se puedan lograr ciertas cosas, o que otros partan con ventaja, pero no olvidemos que si tu comentario no aporta, sobra. 🫡

3 months ago 0 0 0 0

La tendencia de la gente de pensar que las cosas que uno tiene se las han dado de gratis o algo. No amigo, no me lo han regalado, lo he ido consiguiendo yo. Entiendo que desde la envidia pienses que es la única manera de que otros tengan lo que tu no pero no siempre es asi.

3 months ago 0 0 1 0

Buenas!

Me despidieron de mi trabajo de forma improcedente y ahora estoy buscando nuevo empleo.

Soy un informático con unos 6 años de experiencia, me gusta bastante el frontend pero también manejo el backend.

Estoy algo agobiado porque estoy independizado, agradecería difusión y demás.

3 months ago 270 600 23 3
Post image

¡Buenos días por la mañana!

Hoy ha tocado montar un minilego. Lo pondré con el hermano mayor del 20 aniversario. 😎

3 months ago 2 0 0 0

Es una mierda las cosas como son... Creo que habían hecho unas AMD compatibles con amaba, rollo, que tenían slots DDR4 y DDR4, una cosa muy rara. Si no, yo ya te digo que un Intel 12 o 13 Gen que usan DDR4 también, dan muchísima caña. Y los hay incluso de segunda mano. 🫡

3 months ago 0 0 1 0

Qué pena que se me acaben las vacaciones, de verdad. Se me han pasado volando. Al menos las termino con una buena sesión de rol mañana. 😎

3 months ago 1 0 0 0
Advertisement

Pff, pues mucho animo. Si te sirve, con el tema de las RAM, ya te digo que para un PC de casa y juegos, entre DDR4 y DDR5 no hay mucha diferencia de rendimiento, pero a día de hoy si la hay y mucho en el precio. 😭

3 months ago 1 0 1 0

Lo peor es que tenía anuncios guardados de Wallapop de kits de DDR5 por 190€ que los han ido actualizando, y ahora están por 650€. Ya hay gente que quiere sacar cuartos de esto. 💀

3 months ago 1 0 1 0

Definitivamente lo de Twitter es ya demencial. Es un pozo de publicidad, cuentas bot, publicaciones de odio y más mierda. Y no hablemos del Melón Mustio y su IA pornografíca. Ahí se vaya a pique esa red sinceramente.

3 months ago 2 0 0 0

Bueno, después de unas semanillas de parón, hoy vuelvo al rol de los Domingos, cómo lo echaba de menos. 😭

5 months ago 3 0 0 0