<![CDATA[ _ voidNull ]]> https://voidnull.es es _ voidNull Copyright 2024 https://voidnull.es/favicon.png _ voidNull https://voidnull.es Tue, 19 Mar 2024 05:52:56 +0100 <![CDATA[ Crear un backup de una maquina y excluir un disco en Proxmox ]]> https://voidnull.es/crear-un-backup-de-una-maquina-y-excluir-un-disco-en-proxmox/ 65e22e5eadd21a0cbc977b85 Mon, 18 Mar 2024 10:29:39 +0100 A veces necesitaremos excluir un disco duro extra que hemos conectado al Proxmox para que no haga backup de ese disco. Ya sea porque el disco es más grande que el espacio que tenemos para backups o porque simplemente no queremos hacer copia de ese disco.

Por ejemplo, tengo añadido un disco duro externo a una maquina de TrueNAS para crear los directorios para compartir por NFS diferentes directorios y cuando hacía backup de las máquinas virtuales, me daba error porque en el backup incluía el disco externo de 6TB y no había espacio suficiente, por lo que siempre daba error el backup.

Para evitar esto, lo que podemos hacer, es excluir el disco de la copia. En el siguiente tutorial te explico como hacer esto, que la verdad es una cosa muy sencilla.

Excluir disco en una copia de seguridad

Si queremos excluir el disco, tenemos que seleccionar nuestra máquina e ir al apartado de Hardware. Allí seleccionar el disco que queremos excluir y editarlo.

En la edición, tenemos que desmarcar la opción de Backup:

Guardamos los cambios haciendo clic en Ok y listo, en el próximo backup únicamente hará copia de la maquina y del disco donde tenemos instalado lo que sea y excluirá ese disco.

Hacer el mismo proceso por línea de comandos

Este proceso también se puede hacer usando el CLI si no queremos hacerlo gráficamente. Para ello tendremos que editar el fichero de configuración de la maquina que se encuentra en /etc/pve/qemu-server y editar el fichero con el ID de la maquina.

Dentro de la configuración, veremos la configuración para el segundo disco:

scsi1: /dev/disk/by-id/ata-WDC_WD50NDZW-11A8JS0_WD-WX52D812X9A7,serial=WX52D812X9A7,size=4769275M

Deberemos de incluir la opción backup=0 para excluirlo del backup:

scsi1: /dev/disk/by-id/ata-WDC_WD50NDZW-11A8JS0_WD-WX52D812X9A7,backup=0,serial=WX52D812X9A7,size=4769275M

Y guardar cambios.

Conclusión

De esta manera hemos excluido un disco duro para que no haga un backup y únicamente tengamos la copia de la maquina.

]]>
<![CDATA[ Configurar avisos SMTP por Proxmox ]]> https://voidnull.es/configurar-avisos-smtp-por-proxmox/ 65de3495add21a0cbc97771b Fri, 15 Mar 2024 10:26:12 +0100 Proxmox VE, una plataforma líder de virtualización de código abierto, ofrece una solución robusta para ejecutar máquinas virtuales y contenedores, pero para aprovechar al máximo sus capacidades, es esencial tener configurado un sistema de notificación confiable.

En este artículo, exploraremos cómo configurar el servidor SMTP en Proxmox VE, lo que te permitirá enviar correos electrónicos de notificación desde tu sistema Proxmox.

Configurar cuenta de correo

Para configurar la cuenta de correo y así recibir las alertas y avisos de Proxmox, deberemos de ir a Datacenter - Options - Email from address. Editaremos el campo y configuraremos nuestra cuenta de correo:

Configurar servidor SMPT

Por defecto Proxmox 8.x ya viene con el SMTP configurado con SendMail. Si vamos a Datacenter - Notifications podemos revisar que hay la configuración de SendMail para el usuario root:

Podemos añadir una configuración nueva para SMTP en Add - SMTP y rellenar todos los datos:

Configurar avisos para los backups

Para recibir un aviso cuando se ejecute un backup, deberemos de ir a Datacenter - Backup y seleccionaremos nuestra copia de seguridad para editarla.

Tendremos que configurar los siguientes valores de la captura de más arriba:

  • Notification Mode: Aquí podremos seleccionar el modo de notificación. Para que use la opción de e-mail seleccionaremos Email.
  • Send email: Aquí podemos seleccionar dos opciones Always, para recibir el e-mail siempre o On failure only, para recibir el aviso solo cuando el backup falle.
  • Send email to: Aquí escribiremos la cuenta de correo donde recibir los avisos.

Guardaremos la configuración y ahora cuando se ejecute el backup recibiremos un e-mail con la siguiente información:

]]>
<![CDATA[ Primeros pasos en Home Assistant ]]> https://voidnull.es/primeros-pasos-en-home-assistant/ 65de3519add21a0cbc977735 Thu, 14 Mar 2024 10:51:42 +0100 Home Assistant es un software de automatización del hogar de código abierto que permite a los usuarios conectar y gestionar una amplia variedad de dispositivos inteligentes desde una única plataforma centralizada. Diseñado para ser privado, seguro y totalmente personalizable, Home Assistant se ejecuta localmente, lo que significa que todos los datos permanecen en la casa del usuario y no se comparten con terceros a menos que el usuario decida hacerlo.

Primera configuración tras la instalación

La primera vez que accedamos al Home Assistant, deberemos de introducir la IP del servidor acompañado del puerto 8123.

Nos cargará lo siguiente:

Haremos clic sobre Crear mi Hogar Inteligente si queremos empezar de cero, también podemos importar una copia de seguridad.

En este caso iniciaremos un Home Assistant desde cero, por lo que haremos clic sobre el botón. Creamos nuestro usuario de acceso:

Seleccionamos la ubicación de nuestro hogar:

Si queremos colaborar de forma anónima para reportar errores y problemas, podemos activar las opciones.

Home Assistant automáticamente encontrará dispositivos en tu red local.

Una vez hagamos clic en Terminal nos cargará el tablero para configurar las tarjetas en él:

]]>
<![CDATA[ touch: mucho más que crear ficheros ]]> https://voidnull.es/touch-mucho-mas-que-crear-ficheros/ 65e8aa4badd21a0cbc977fde Wed, 13 Mar 2024 10:01:43 +0100 El comando touch es una herramienta esencial en sistemas operativos basados en Unix, como GNU/Linux. Se utiliza principalmente para crear archivos vacíos o para cambiar las marcas de tiempo (fecha y hora de acceso o modificación) de un archivo existente sin modificar su contenido.

Utilidad del comando touch

A continuación, se presenta una descripción detallada de su utilidad, sintaxis básica y algunas opciones importantes, acompañadas de ejemplos prácticos.

Creación de archivos vacíos

Es una forma rápida y eficiente de crear un nuevo archivo sin contenido. Esto es útil para, por ejemplo, iniciar un nuevo script o documento antes de editarlo con un editor de texto.

Actualización de marcas de tiempo

touch permite actualizar las fechas de acceso y modificación de los archivos a la fecha y hora actuales. Esto puede ser útil para scripts que dependen de las fechas de los archivos para su lógica de procesamiento o para simplemente actualizar un archivo para que aparezca como recientemente modificado.

Sintaxis básica

La sintaxis básica del comando touch es la siguiente:

touch [OPCIONES] ARCHIVO...
  • [OPCIONES]: Modificadores que alteran el comportamiento del comando.
  • ARCHIVO...: Lista de uno o más archivos a crear o modificar.

Opciones interesantes del comando

A continuación pasamos a detallar algunas opciones interesantes del comando.

Crear un archivo vacío

Para crear un archivo vacío llamado documento.txt, simplemente ejecuta:

touch documento.txt

Actualizar la marca de tiempo de un archivo existente

Para actualizar las fechas de acceso y modificación de documento.txt a la fecha y hora actuales, usa:

touch documento.txt

Actualizar solo la marca de tiempo de modificación

Si solo quieres actualizar la marca de tiempo de modificación de documento.txt, puedes usar:

touch -m documento.txt

Actualizar marcas de tiempo de un fichero sin crearlo

Para intentar actualizar las marcas de tiempo de un archivo sin crearlo si no existe, puedes usar:

touch -c posible_documento.txt

Establecer una marca de tiempo específica

Para establecer una fecha y hora específicas en las marcas de tiempo de documento.txt, por ejemplo, el 1 de enero de 2023 a las 12:00 horas, puedes utilizar:

touch -t 202301011200 documento.txt

Estos ejemplos muestran la versatilidad del comando touch para la gestión de archivos en sistemas Unix-like. Es una herramienta simple pero poderosa para el manejo de archivos y directorios, útil tanto para usuarios novatos como avanzados.

]]>
<![CDATA[ Accede a tus servidores usando la VPN de Tailscale ]]> https://voidnull.es/accede-a-tus-servidores-usando-la-vpn-de-tailscale/ 65dca06dadd21a0cbc9775ae Tue, 12 Mar 2024 10:22:40 +0100 Tailscale es una red privada virtual (VPN) que facilita la conexión segura de dispositivos y redes a través de Internet. Utiliza la tecnología WireGuard, conocida por su velocidad y seguridad, para crear una red mesh entre tus dispositivos. Esto significa que cada dispositivo en la red Tailscale puede conectarse directamente a otro, sin necesidad de pasar por servidores centrales, lo que mejora la velocidad y reduce la latencia.

La configuración de Tailscale es notablemente sencilla en comparación con las VPNs tradicionales. No requiere de una configuración manual compleja ni de hardware especializado; basta con instalar la aplicación en los dispositivos que deseas conectar y seguir unos simples pasos para tener tu red privada funcionando. Esto lo hace accesible para usuarios no técnicos, así como una solución práctica para profesionales de TI que buscan simplificar la gestión de sus redes.

Configuración cuenta Tailscale

Lo primero será configurar una cuenta de Tailscale, para ello deberemos de ir a la web oficial y registrar una cuenta nueva.

Una vez dentro de nuestra cuenta veremos lo siguiente:

Configuración servidor

Si lo que queremos es configurar un servidor para acceder a través de Tailscale, entonces deberemos de acceder por SSH al servidor y ejecutar lo siguiente:

curl -fsSL https://tailscale.com/install.sh | sh

Esto añadirá un repositorio y configurará los paquetes necesarios para que Tailscale funcione correctamente en nuestro servidor.

Para iniciar Tailscale, deberemos de ejecutar:

tailscale up

Este comando nos mostrará un enlace:

To authenticate, visit:

        https://login.tailscale.com/a/XXXXXXXXXXX

Lo copiamos y entramos usando nuestro navegador. Deberemos de iniciar sesión a nuestra cuenta de Tailscale y luego podremos añadir el dispositivo:

Hacemos clic sobre el botón Connect y se añadirá el dispositivo. Ahora si volvemos a la página del inicio, veremos que aparece un dispositivo en nuestra red:

Conectar nuestro cliente

Ahora lo que debemos de hacer es conectar nuestro ordenador con el que solemos acceder a nuestros servidores. Por ejemplo, si es un GNU/Linux, deberemos de ejecutar el mismo procedimiento para añadir el segundo dispositivo.

Cuando tengamos nuestro segundo dispositivo conectado, tendremos acceso a un panel completo de Tailscale donde podremos configurar muchas cosas:

Conectarnos por SSH al servidor

Ahora desde nuestro dispositivo conectado a Tailscale, que es el que he llamado Desktop, probaremos de conectarnos por SSH utilizando la IP asignada por Tailscale.

Lo primero es comprobar que podemos hacer ping al nombre de la maquina que hemos asignado:

# ping servidor-web
PING servidor-web.tailc3de0.ts.net (XX.XX.XX.XX) 56(84) bytes of data.
64 bytes from servidor-web.tailc3de0.ts.net (XX.XX.XX.XX): icmp_seq=1 ttl=64 time=28.6 ms
64 bytes from servidor-web.tailc3de0.ts.net (XX.XX.XX.XX): icmp_seq=2 ttl=64 time=1.42 ms
^C
--- servidor-web.tailc3de0.ts.net ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 1.424/15.022/28.621/13.598 ms

Ahora podemos filtrar el puerto del SSH de nuestro servidor desde el Firewall para que solo se pueda acceder desde el rango configurado en Tailscale y acceder usando la IP o el nombre del servidor en Tailscale:

# ssh root@servidor-web
The authenticity of host 'servidor-web (XX.XX.XX.XX)' can't be established.
ED25519 key fingerprint is SXXXXXXXXXXXXX
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Y listo, ya tenemos acceso a nuestro servidor desde los dispositivos conectados a Tailscale y de forma segura.

]]>
<![CDATA[ Instalar Invidious en Ubuntu 22.04 ]]> https://voidnull.es/instalar-invidious-en-ubuntu-22-04/ 65e0b299add21a0cbc977ac6 Mon, 11 Mar 2024 10:51:37 +0100 Invidious se describe a sí mismo como un front-end alternativo de Software Libre para YouTube. En términos básicos, esto significa acceder a YouTube a través de una interfaz diferente en un dominio diferente que elimina la publicidad, el seguimiento de los usuarios y la dependencia de las suscripciones de Google.

Como hemos mencionado anteriormente, está licenciado bajo AGPL-3.0 y Invidious puede ser autoalojado en servidores personales. Se puede montar con Docker pero también se puede hacer una instalación manual.

Recientemente Invidious está metida en "problemas" ya que YouTube ha enviado una notificación al autor del Software indicando que debe de "apagar" Invidious en 7 días. Está claro que Google no sabe muy bien como funciona el mundo del Software Libre, así que os vamos a explicar como configurar e instalar una instancia de Invidious.

Requisitos de Hardware

Para que funcione correctamente únicamente necesita 512MB de RAM. Para instancias públicas es recomendable un mínimo de 4GB de RAM, 2vCPU y 200mbps de ancho de banda y un mínimo de 20TB de tráfico.

Instalación de Invidious

Lo primero será instalar todo lo necesario para que funcione correctamente, así que lo primero será instalar dependencias que necesitaremos:

apt install libssl-dev libxml2-dev libyaml-dev libgmp-dev libreadline-dev postgresql librsvg2-bin libsqlite3-dev zlib1g-dev libpcre3-dev libevent-dev git make

Instalación de Crystal

Para utilizar Invidious es necesario instalar Crystal, para ello realizaremos lo siguiente:

curl -fsSL https://crystal-lang.org/install.sh | sudo bash -s -- --channel=nightly

Creamos usuario y clonamos repositorio

Creamos usuario para gestionar el programa en el sistema:

useradd -m invidious

Accedemos al usuario y clonamos repositorio:

su - invidious
git clone https://github.com/iv-org/invidious
exit

Configuramos PostgreSQL

Iniciamos el servicio de PostgreSQL:

systemctl enable --now postgresql

Y creamos el usuario y la base de datos:

sudo -i -u postgres
psql -c "CREATE USER kemal WITH PASSWORD 'supercontraseña';"
createdb -O kemal invidious
exit

Configuramos Invidious

Lo primero será acceder al usuario y entrar al directorio del repositorio:

su - invidious
cd invidious

Y compilamos:

make

Creamos el fichero de configuración:

cp config/config.example.yml config/config.yml 

Y hacemos la migración de la base de datos:

./invidious --migrate
crystal build src/invidious.cr -Ddisable_quic --release
exit

Configuración de SystemD

Configuramos ahora SystemD, primero copiamos el fichero que corresponde:

cp /home/invidious/invidious/invidious.service /etc/systemd/system/invidious.service

Y lo habilitamos:

systemctl enable --now invidious.service

Ahora tendremos el servicio escuchando por el puerto 3000. Lo siguiente será configurar un Proxy Inverso con Nginx.

Configurar Proxy Inverso con Nginx

Lo siguiente será configurar un Proxy Inverso para acceder con dominio a nuestra instancia de Invidious. Para ello deberemos de seguir estos pasos:

Configurar Proxy Inverso con Nginx para que escuche a un puerto interno
En ocasiones tenemos servicios o aplicaciones web que escuchan directamente a un puerto interno. Para evitar acceder a dicha aplicación o servicio por la IP del servidor, una configuración que podemos hacer es acceder desde un Nginx Proxy.
💡
Para este caso deberemos de configurar el Proxy Inverso con Nginx utilizando el puerto 3000.

Para más configuración podéis revisar la documentación oficial de Invidious.

]]>
<![CDATA[ Utiliza Helper-Scripts para desplegar contenedores y máquinas virtuales de casi cualquier cosa ]]> https://voidnull.es/utiliza-helper-scripts-para-desplegar-contenedores-y-maquinas-virtuales-de-casi-cualquier-cosa/ 65e606eaadd21a0cbc977d5e Sat, 09 Mar 2024 10:29:32 +0100 Los Helper-Scripts para Proxmox son scripts o programas de utilidad diseñados para facilitar o automatizar ciertas tareas de administración y configuración en sistemas que utilizan Proxmox VE (Virtual Environment), una plataforma de virtualización de código abierto. Estos scripts pueden variar en complejidad y propósito, desde automatizar la instalación de software adicional, configurar ajustes de red, hasta realizar copias de seguridad y restauraciones de manera más eficiente.

En general, el propósito de los Helper-Scripts es simplificar la gestión de entornos virtuales, reducir el tiempo de configuración manual y minimizar el potencial de errores humanos. Algunos ejemplos incluyen scripts para:

  • Automatizar la creación y gestión de máquinas virtuales (VMs) y contenedores.
  • Configurar redes virtuales o ajustar la seguridad del sistema.
  • Realizar tareas de mantenimiento, como actualizaciones automáticas o limpieza de recursos no utilizados.
  • Implementar soluciones de respaldo y recuperación.

Estos scripts suelen estar escritos en lenguajes de scripting como Bash, Python o Perl, y pueden ser creados por la comunidad de usuarios de Proxmox VE o por el equipo de Proxmox, dependiendo de su complejidad y uso específico. Utilizar estos scripts puede ser una manera eficaz de optimizar y personalizar el entorno de Proxmox VE para satisfacer las necesidades específicas de un proyecto o infraestructura.

En muchos de los tutoriales que haremos en voidNull utilizaremos concretamente estos Helper-Scripts:

Proxmox VE Helper-Scripts | Scripts for Streamlining Your Homelab with Proxmox VE
Scripts for Streamlining Your Homelab with Proxmox VE

¿Como se usan?

La utilización de estos scripts son muy sencillos, lo primero es seleccionar el script que queremos usar, para hacer este tutorial utilizaremos el script para instalar Debian 12:

En cada script hay un comando para descargar un script en bash y ejecutarlo directamente. En este script hay toda la información necesaria para desplegar un contenedor o maquina virtual:

Fragmento del script donde se despliega la maquina virtual

Para ejecutar este comando debemos de ir a Datacenter - Nombre de nuestro nodo - Shell. Se nos abrirá una consola donde poder ejecutar el comando:

Tras ejecutarlo, nos pedirá una serie de información, podemos seleccionar la configuración por defecto o podemos configurarlo nosotros. Tras rellenar todas las opciones se iniciará la instalación de la máquina virtual.

]]>
<![CDATA[ Módulos: Bases de datos [Ansible #19] ]]> https://voidnull.es/modulos-bases-de-datos/ 659fd23015109503e5ec5a04 Fri, 08 Mar 2024 10:02:41 +0100 Ansible es una herramienta de automatización poderosa que permite a los usuarios gestionar y configurar sistemas, desplegar software y orquestar tareas más complejas como el despliegue continuo. Una de las áreas donde Ansible brilla es en la gestión de bases de datos, gracias a una variedad de módulos específicos para cada sistema de gestión de bases de datos.

En este artículo, exploraremos los módulos mysql_db, mysql_user, postgresql_db, postgresql_user, y mongodb_user, proporcionando una descripción y ejemplos de código para entender su funcionamiento.

Módulo mysql_db

El módulo mysql_db de Ansible se utiliza para crear, eliminar y gestionar bases de datos en un servidor MySQL o MariaDB.

Permite al usuario automatizar la administración de bases de datos en sistemas que usan MySQL o MariaDB, soportando operaciones como la creación, eliminación, y volcado de bases de datos.

- name: Crear una base de datos en MySQL
  mysql_db:
    name: mi_base_de_datos
    state: present
    login_user: root
    login_password: mi_contraseña_root

Este ejemplo crea una base de datos llamada mi_base_de_datos en un servidor MySQL/MariaDB.

Módulo mysql_user

El módulo mysql_user de Ansible se utiliza para gestionar usuarios y privilegios en un servidor MySQL o MariaDB.

Facilita la creación, modificación, y eliminación de usuarios en MySQL o MariaDB, permitiendo también gestionar los privilegios de estos usuarios.

- name: Crear un usuario en MySQL
  mysql_user:
    name: mi_usuario
    password: mi_contraseña
    priv: '*.*:ALL'
    state: present
    login_user: root
    login_password: mi_contraseña_root

Este ejemplo crea un usuario mi_usuario con todos los privilegios sobre todas las bases de datos y tablas.

Módulo postgresql_db

El módulo postgresql_db se utiliza para crear, eliminar y gestionar bases de datos en un servidor PostgreSQL.

Proporciona una manera de automatizar la administración de bases de datos en PostgreSQL, incluyendo la creación, eliminación, y modificación de bases de datos.

- name: Crear una base de datos en PostgreSQL
  postgresql_db:
    name: mi_base_de_datos
    state: present
    login_user: postgres
    login_password: mi_contraseña_postgres

Este ejemplo demuestra cómo crear una base de datos mi_base_de_datos en PostgreSQL.

Módulo postgresql_user

El módulo postgresql_user se utiliza para gestionar usuarios y privilegios en un servidor PostgreSQL.

Ayuda en la creación, modificación, y eliminación de usuarios en PostgreSQL, además de permitir la gestión de los privilegios de estos usuarios.

- name: Crear un usuario en PostgreSQL
  postgresql_user:
    name: mi_usuario
    password: mi_contraseña
    state: present
    login_user: postgres
    login_password: mi_contraseña_postgres

Este ejemplo crea un usuario mi_usuario en PostgreSQL.

Módulo mongodb_user

El módulo mongodb_user se utiliza para gestionar usuarios en una instancia MongoDB.

Permite crear, eliminar y gestionar usuarios en MongoDB, ofreciendo control sobre los roles y privilegios asignados a cada usuario.

- name: Crear un usuario en MongoDB
  mongodb_user:
    database: admin
    name: mi_usuario
    password: mi_contraseña
    roles: 
      - dbAdmin
      - userAdmin
    state: present

Este ejemplo demuestra cómo crear un usuario mi_usuario con roles dbAdmin y userAdmin en la base de datos admin de MongoDB.

Estos módulos de Ansible ofrecen una manera eficiente y automatizada de gestionar diferentes aspectos de las bases de datos, lo que puede simplificar significativamente las operaciones de TI y garantizar una gestión coherente y segura de las bases de datos en diferentes entornos.

]]>
<![CDATA[ xkill: mata procesos a golpe de clic ]]> https://voidnull.es/xkill-mata-procesos-a-golpe-de-clic/ 65e0543dadd21a0cbc9779b4 Thu, 07 Mar 2024 10:13:56 +0100 El comando xkill es una herramienta esencial en el entorno de escritorio GNU/Linux que permite a los usuarios finalizar tareas o aplicaciones que no responden sin necesidad de reiniciar el sistema completo. Es particularmente útil cuando una aplicación gráfica se congela, se bloquea o de otra manera deja de responder a las entradas del usuario.

Funcionamiento de xkill

Cuando se ejecuta, xkill transforma el cursor del ratón en una calavera o en un símbolo de "X" (dependiendo de la configuración y el entorno de escritorio), indicando que el usuario puede ahora hacer clic en cualquier ventana para terminar forzosamente el proceso asociado a esa ventana. Es una herramienta poderosa, ya que no requiere que el usuario conozca el ID del proceso (PID) de la aplicación que desea terminar; basta con hacer clic en la ventana.

Una vez que el usuario hace clic en una ventana, xkill envía una señal de SIGKILL al proceso asociado con esa ventana, lo que resulta en la terminación inmediata del proceso. Es importante tener en cuenta que xkill no realiza un cierre limpio del proceso, lo que significa que cualquier dato no guardado se perderá.

Opciones destacadas

Aunque xkill es un comando relativamente simple, tiene algunas opciones que pueden ser útiles:

  • -display displayname: Especifica la pantalla a la cual xkill debería conectarse. Útil en configuraciones donde múltiples pantallas o sesiones X están activas.
  • -id resource: Permite al usuario especificar el recurso o ventana a cerrar mediante su ID, en lugar de hacer clic en ella. Esto puede ser útil para scripts o cuando se sabe el ID de la ventana específica.
  • -button number: Permite al usuario especificar qué botón del ratón debe ser usado para seleccionar la ventana a terminar. Por defecto, cualquier botón puede ser utilizado.
  • -frame: Esta opción fuerza a xkill a terminar el proceso asociado con el marco de la ventana, no solo la ventana cliente.

Ejemplos de uso

A continuación os mostramos algunos ejemplos del comando.

Uso con un ID específico de ventana

Si por alguna razón necesita cerrar una ventana específica utilizando su ID, primero debe obtener el ID de la ventana (usando herramientas como xwininfo), y luego puede usar xkill de la siguiente manera:

xkill -id ventana_id

Donde ventana_id es el ID de la ventana que desea cerrar.

Configuración del botón del ratón

Si desea configurar xkill para usar un botón específico del ratón para seleccionar la ventana a cerrar, puede hacerlo de la siguiente manera:

xkill -button 1

Esto configurará xkill para usar solo el botón izquierdo del ratón (botón 1) para seleccionar la ventana.

En resumen, xkill es una herramienta indispensable para los usuarios de GNU/Linux que proporciona una manera rápida y eficiente de manejar aplicaciones que no responden. Su simplicidad y potencia lo convierten en una opción valiosa para la gestión de ventanas en el entorno de escritorio de GNU/Linux.

]]>
<![CDATA[ Configurar cuenta de correo para las notificaciones en TrueNAS ]]> https://voidnull.es/configurar-cuenta-de-correo-para-las-notificaciones-en-truenas/ 65de4281add21a0cbc97777c Wed, 06 Mar 2024 10:43:14 +0100 TrueNAS es una plataforma de almacenamiento de datos de código abierto que se basa en el sistema operativo FreeBSD y en el sistema de archivos ZFS (Z File System). Es el sucesor de FreeNAS, tras su rebranding y expansión por iXsystems, una compañía que ofrece soluciones de almacenamiento y servidores basados en software de código abierto. TrueNAS está diseñado para proporcionar almacenamiento en red (NAS, por sus siglas en inglés Network-Attached Storage) y almacenamiento unificado (SAN, por sus siglas en inglés Storage Area Network) con una alta fiabilidad, eficiencia en la gestión de datos, y robustas capacidades de protección de datos.

Configurar cuenta de correo

Primero configurar correo en la cuenta de root hay que ir a Accounts - Users y desplegar el usuario root:

Hacemos clic sobre el botón Edit y añadimos una cuenta de correo en el apartado de email. Guardamos cambios.

Luego tenemos que ir a System - Email y aquí tenemos que configurar la cuenta SMTP que nos enviará e-mails.

Tendremos que configurar el servidor SMTP, puerto y seguridad.

Le damos a Save para guardar los cambios y luego podemos hacer clic sobre Send Test Mail para hacer una prueba de envío. Si todo ha ido bien, obtendréis que siguiente aviso:

Y en el correo tendremos lo siguiente:

]]>
<![CDATA[ Instalación de Bitwarden utilizando Docker en Ubuntu 22.04 ]]> https://voidnull.es/instalacion-de-bitwarden-utilizando-docker-ubuntu-22-04/ 65d32453add21a0cbc977337 Tue, 05 Mar 2024 10:27:09 +0100 Bitwarden es un gestor de contraseñas de código abierto que proporciona una forma segura de almacenar y gestionar todas tus contraseñas y datos sensibles. Te permite crear, almacenar y acceder a tus contraseñas desde cualquier dispositivo, garantizando que todas ellas estén protegidas por un fuerte cifrado.

Con Bitwarden, puedes generar contraseñas seguras y únicas para cada uno de tus cuentas en línea, reduciendo el riesgo de hackeo y de compromiso de tus datos personales. Además de contraseñas, Bitwarden también permite guardar notas seguras, información de tarjetas de crédito y otros datos sensibles.

En el siguiente tutorial vamos a instalar la versión self-hosting en un servidor con Ubuntu 22.04 y Docker.

Especificaciones de Bitwarden

A continuación os pasamos la tabla siguiente con los recursos necesarios para este software:

Minimum Recommended
Processor x64, 1.4GHz x64, 2GHz dual core
Memory 2GB RAM 4GB RAM
Storage 12GB 25GB
Docker Version Engine 19+ and Compose 1.24+ Engine 19+ and Compose 1.24+

Requisitos para instalar Bitwarden

Para instalar Bitwarden correctamente es necesario tener configurado previamente lo siguiente:

  • Un dominio apuntando correctamente al servidor.
  • Tener instalado en el servidor Docker y Docker Compose

Para instalar Docker en Ubuntu 22.04, podéis seguir este otro tutorial:

Instalación de Docker en Ubuntu 22.04
Docker es una aplicación que simplifica el proceso de gestión de los procesos de las aplicaciones en contenedores. Los contenedores le permiten ejecutar sus aplicaciones en procesos aislados de recursos.

Instalación de Bitwarden

El procedimiento para instalar Bitwarden se debe de seguir de la siguiente forma. Lo primero nos conectaremos al servidor por SSH.

Creación de usuario

Para ejecutar Bitwarden deberemos de crear un usuario especifico para que ejecute el contenedor de Docker.

adduser bitwarden

Configuramos contraseña al usuario:

passwd bitwarden

Añadimos el usuario al grupo de Docker:

usermod -aG docker bitwarden

Creamos el directorio de la instalación:

mkdir /opt/bitwarden

Configuramos los permisos de los directorios:

chmod -R 700 /opt/bitwarden
chown -R bitwarden:bitwarden /opt/bitwarden

Instalación de Bitwarden

Ahora con el usuario de bitwarden ejecutamos los siguientes comandos para instalar Bitwarden:

$ curl -s -L -o bitwarden.sh "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux"

Cambiamos permisos al ejecutable:

$ chmod +x bitwarden.sh

Y lo ejecutamos:

$ ./bitwarden.sh install

Se ejecutará el instalado y nos irá pidiendo información de nuestro servidor de Bitwarden, primero de todo nos pedirá el dominio:

(!) Enter the domain name for your Bitwarden instance (ex. bitwarden.example.com): dominio.com

Nos pide si queremos configurar SSL en el dominio, le decimos que si:

(!) Do you want to use Let's Encrypt to generate a free SSL certificate? (y/n): y

A continuación nos pedirá una ID de instalación que deberemos de ir a bitwarden.com/host y añadir nuestro dominio:

(!) Enter your installation id (get at https://bitwarden.com/host): 65001d80-9785-4a9b-978c-XXXXXXXX

Después de añadir esta información, finalizará la instalación y podremos levantar el contenedor de bitwarden:

$ ./bitwarden.sh start

Salida del comando

bitwarden.sh version 2024.2.0
Docker version 24.0.5, build 24.0.5-0ubuntu1~22.04.1
docker-compose version 1.29.2, build unknown

Pulling mssql ... done
Pulling web ... done
Pulling attachments ... done
Pulling api ... done
Pulling identity ... done
Pulling sso ... done
Pulling admin ... done
Pulling icons ... done
Pulling notifications ... done
Pulling events ... done
Pulling nginx ... done
Using default tag: latest
latest: Pulling from certbot/certbot
Digest: sha256:953b5daac63b14e4f8b77aacf4831f916faac836c67cd12fcc6408201554962e
Status: Image is up to date for certbot/certbot:latest
docker.io/certbot/certbot:latest
Saving debug log to /etc/letsencrypt/logs/letsencrypt.log

Processing /etc/letsencrypt/renewal/pass.arrels.top.conf

Certificate not yet due for renewal

The following certificates are not due for renewal yet:
/etc/letsencrypt/live/pass.arrels.top/fullchain.pem expires on 2024-05-19 (skipped)
No renewals were attempted.

Creating directory /root/bwdata/core
Creating directory /root/bwdata/core/attachments
Creating directory /root/bwdata/logs
Creating directory /root/bwdata/logs/admin
Creating directory /root/bwdata/logs/api
Creating directory /root/bwdata/logs/events
Creating directory /root/bwdata/logs/icons
Creating directory /root/bwdata/logs/identity
Creating directory /root/bwdata/logs/mssql
Creating directory /root/bwdata/logs/nginx
Creating directory /root/bwdata/logs/notifications
Creating directory /root/bwdata/logs/sso
Creating directory /root/bwdata/logs/portal
Creating directory /root/bwdata/mssql/backups
Creating directory /root/bwdata/mssql/data
Creating network "docker_default" with the default driver
Creating network "docker_public" with the default driver
Creating bitwarden-identity ... done
Creating bitwarden-icons ... done
Creating bitwarden-mssql ... done
Creating bitwarden-web ... done
Creating bitwarden-events ... done
Creating bitwarden-notifications ... done
Creating bitwarden-api ... done
Creating bitwarden-sso ... done
Creating bitwarden-attachments ... done
Creating bitwarden-admin ... done
Creating bitwarden-nginx ... done
2024.2.0: Pulling from bitwarden/setup
Digest: sha256:61accdd92a6b8819194610e4691cd0ee1da6c5b4ae58e63fc720da6135bf01da
Status: Image is up to date for bitwarden/setup:2024.2.0
docker.io/bitwarden/setup:2024.2.0

Bitwarden is up and running!

Ahora ya podemos acceder a nuestro dominio y crear una cuenta nueva. Como siempre si queréis configurar el servicio SMTP o configurar un administrador revisad la documentación oficial para más información.

]]>
<![CDATA[ Instala Pingvin Share en tu servidor para compartir ficheros ]]> https://voidnull.es/instala-pingvin-share-en-tu-servidor-para-compartir-ficheros/ 65de27dcadd21a0cbc9776ed Tue, 05 Mar 2024 10:19:00 +0100 Pingvin Share representa una solución innovadora en el ámbito del intercambio de archivos, ofreciendo una plataforma autoalojada que se erige como una alternativa directa a servicios populares como WeTransfer.

Esta plataforma se distingue por permitir a los usuarios establecer su propio servidor para compartir archivos, lo que proporciona un mayor control sobre la privacidad y seguridad de los datos compartidos.

A diferencia de otras opciones del mercado que dependen de servidores de terceros, Pingvin Share apuesta por una mayor autonomía y flexibilidad, brindando a individuos y organizaciones la capacidad de gestionar sus necesidades de intercambio de archivos de manera más personalizada y segura.

Requisitos para Pingvin Share

Para poder instalar Pingvin Share es necesario tener acceso SSH a tu servidor y tener instalado lo siguiente:

NodeJS

Esta aplicación está escrita en NodeJS y para ello necesitamos tener instalado NodeJS. Para instalar NodeJS en nuestro servidor deberemos de seguir este otro tutorial:

Instalación de NodeJS en GNU/Linux [Debian, Ubuntu, CentOS]
En el siguiente tutorial os explicaremos la correcta instalación de NodeJS en GNU/Linux. Ya sea tu servidor un Ubuntu o Debian o CentOS aquí encontrarás las instrucciones correctas para su instalación.

Git

Tendremos que descargar el repositorio desde Git, así que tendremos que tener instalado el siguiente paquete:

apt update git

PM2

Para tener la aplicación ejecutándose en segundo plano es necesario utilizar PM2. Recientemente hemos escrito un artículo sobre como instalarlo:

Instalación y configuración de PM2: gestiona tus aplicaciones NodeJS
PM2 (Process Manager 2) es una herramienta imprescindible en el arsenal de cualquier administrador de sistemas que trabaje con aplicaciones Node.js.

Instalación Pingvin Share

Para hacer la instalación, lo primeros será descargarnos el repositorio desde Github:

git clone https://github.com/stonith404/pingvin-share

Accedemos al directorio:

cd pingvin-share

Iniciar el backend

Primero tendremos que instalar la parte de backend, para hacerlo ejecutaremos los siguientes comandos:

cd backend
npm install
npm run build
pm2 start --name="pingvin-share-backend" npm -- run prod

Iniciar frontend

En segundo lugar, tendremos que instalar la parte de frontend, para hacerlo ejecutaremos los siguientes comandos:

cd ../frontend
npm install
npm run build
pm2 start --name="pingvin-share-frontend" npm -- run start

Configurar Nginx Proxy

Con la aplicación levantada ahora podemos configurar un Nginx Proxy para acceder a través de un dominio y con SSL.

Configurar Proxy Inverso con Nginx para que escuche a un puerto interno
En ocasiones tenemos servicios o aplicaciones web que escuchan directamente a un puerto interno. Para evitar acceder a dicha aplicación o servicio por la IP del servidor, una configuración que podemos hacer es acceder desde un Nginx Proxy.

Acceder a la aplicación

Una vez tenemos la configuración de Nginx, podemos acceder con nuestro navegador favorito:

Nos podremos registrar, ya que el primer registro se convertirá en el administrador del sitio y tendremos opción a gestionar toda la configuración de la aplicación.

]]>
<![CDATA[ Añadir un disco a una maquina virtual en Proxmox ]]> https://voidnull.es/anadir-un-disco-a-una-maquina-virtual-en-proxmox/ 65e0de54add21a0cbc977ad8 Mon, 04 Mar 2024 11:43:48 +0100 Imagina que tenemos un disco duro extraíble que queremos usar para compartir ficheros en nuestra red utilizando una maquina virtual con TrueNAS o cualquier otro software -o podría ser un Debian a pelo y con NFS configurado-.

En este tutorial explicaremos como conectar ese disco extraíble a nuestro servidor con Proxmox para compartirlo directamente con una máquina virtual concreta.

Identificar el disco

Lo primero que haremos será conectar el disco duro extraíble al servidor con Proxmox y luego identificar unos datos que tenemos que guardar para más tarde.

Para ello instalaremos el siguiente paquete para obtener los datos:

apt install lshw

Para mostrar los discos conectados a Proxmox:

lshw -class disk -class storage

Por ejemplo, mi disco duro extraíble:

*-disk
          description: SCSI Disk
          product: easystore 2648
          vendor: WD
          physical id: 0.0.0
          bus info: scsi@1:0.0.0
          logical name: /dev/sdb
          version: 1034
          serial: WX52D812X9A7
          size: 4657GiB (5TB)
          capabilities: gpt-1.00 partitioned partitioned:gpt
          configuration: ansiversion=6 guid=ad50bf1d-f042-403d-b96f-f3bb9072b868 logicalsectorsize=512 sectorsize=4096

De todos estos datos, el que nos interesa, será el serial, debemos de guardar este dato para usarlo más tarde.

Ahora mostramos los discos por ID y filtramos por nuestro serial:

# ls -al /dev/disk/by-id | grep WX52D812X9A7
lrwxrwxrwx 1 root root   9 Feb 29 20:13 ata-WDC_WD50NDZW-11A8JS0_WD-WX52D812X9A7 -> ../../sdb
lrwxrwxrwx 1 root root  10 Feb 29 20:13 ata-WDC_WD50NDZW-11A8JS0_WD-WX52D812X9A7-part1 -> ../../sdb1

Con este resultado, tenemos que guardar nuestro ID de disco, que es el que aparece y empieza por ata-WD.

Añadimos disco a la MV

💡
Antes de hacer este proceso, recuerda tener la maquina afectada apagada, ya que si está iniciada puede dar problemas.

Para añadir el disco necesitamos el ID de la MV, en mi caso es 102 y debemos de indicar el ID del disco con el siguiente comando:

# qm set 102 -scsi1 /dev/disk/by-id/ata-WDC_WD50NDZW-11A8JS0_WD-WX52D812X9A7 
update VM 102: -scsi1 /dev/disk/by-id/ata-WDC_WD50NDZW-11A8JS0_WD-WX52D812X9A7

Ahora si vamos a Datacenter - PVE y seleccionamos la maquina, si vamos al apartado de Hardware veremos que aparece un segundo disco:

Tenemos que editar el fichero de configuración de la maquina virtual para añadir el serial, para eso iremos a editar el fichero:

nano /etc/pve/qemu-server/[ID].conf

Y tendremos que añadir el serial a la configuración:

scsi1: /dev/disk/by-id/ata-WDC_WD50NDZW-11A8JS0_WD-WX52D812X9A7,size=4769275M

Añadimos serial=[serial]:

scsi1: /dev/disk/by-id/ata-WDC_WD50NDZW-11A8JS0_WD-WX52D812X9A7,size=4769275M,serial=WX52D812X9A7

Guardamos y ya podremos iniciar nuestra maquina y configurar el disco a nuestro gusto.

]]>
<![CDATA[ Newsletter #02/24 - Una de VPN, seguimos con Ansible y comandos y añadimos artículos sobre Proxmox ]]> https://voidnull.es/newsletter/newsletter-11/ 65e0578aadd21a0cbc977a65 Sun, 03 Mar 2024 10:44:39 +0100 Undécima Newsletter que escribimos desde ./voidNull! Si estás corto de tiempo, no te preocupes. Hemos resumido los mejores artículos, noticias y recursos de la semana en un solo lugar para tu conveniencia. ¡Disfruta de todos los artículos!


💬 En esta semana, hemos publicado estos artículos relevantes:

  • Configurar una VPN Site-to-Site con IPsec - Parte I
  • Configurar una VPN Site-to-Site con IPsec - Parte II
  • Configura una VPN con WireGuard y WireGuard-UI en Debian 12
  • Diferencias entre pause, hibernate, shutdown, stop y reboot en Proxmox
  • Instalar Home Assistant OS utilizando Proxmox 8.x
  • ... y mucho más!

🥷 Unos cuantos artículos sobre VPN

Este mes hemos realizado algunos artículos sobre VPNs, os dejamos aquí la recopilación:

Configurar una VPN Site-to-Site con IPsec

Configurar una VPN Site-to-Site con IPsec - Parte I
En este tutorial veremos como configurar uno de los lados pero habrá una segunda parte para configurar los dos extremos utilizando métodos diferentes.
Configurar una VPN Site-to-Site con IPsec - Parte II
En artículos anteriores configuramos la Zona Sur de esta configuración que estamos realizando.

Configura una VPN con WireGuard y WireGuard-UI en Debian 12

Configura una VPN con WireGuard y WireGuard-UI en Debian 12
Para este tutorial también utilizaremos WireGuard-UI que es una interfaz de usuario (UI) gráfica para WireGuard, diseñada para facilitar la gestión y configuración de esta VPN.

🐬 ¡Nuevos artículos en la etiqueta Gadgets!

Os presentamos los nuevos artículos sobre Flipper Zero en los que vais a flipar mucho! Os dejamos los nuevos artículos y ya os avisamos de que están por venir muchos más!

Explorando las capacidades de Flipper Zero: Herramientas esenciales

Las redes inalámbricas y los dispositivos IoT son cada vez más comunes en nuestras vidas, y con ello aumenta el riesgo de ciberataques. Para proteger estas redes y dispositivos, es esencial tener herramientas efectivas de prueba de seguridad. Una herramienta que ha ganado popularidad recientemente es el Flipper Zero. Este dispositivo ofrece una gama de capacidades para pruebas de seguridad inalámbrica y evaluaciones de vulnerabilidad, siendo esenciales para profesionales de la ciberseguridad.

Explorando las capacidades de Flipper Zero: Herramientas esenciales
Este artículo exploramos las características y capacidades de Flipper Zero y cómo se pueden utilizar para pruebas de seguridad inalámbrica.

Shht, sólo será un momento

🌟 ¡Hey! Espera un momentito... 🤚 Antes de que sigas devorando nuestros artículos (que sabemos que son irresistibles 😋), tengo algo importante que decirte. Esto no tiene mucho que ver con lo que estás leyendo, ¡pero es igual de emocionante! 🎉 Si te estás preguntando, "¿Cómo puedo ayudar a que este blog siga creando contenidos tan geniales?", tengo una idea brillante para ti. 💡

¿Qué tal una pequeña donación? 💖 Sí, como lo oyes. Con solo unos clics, puedes convertirte en nuestro héroe o heroína del día. 🦸🦸 No importa si es mucho o poco, cada granito de arena cuenta para que sigamos compartiendo artículos tan interesantes (o incluso más) como este. 💪

Así que, si te sientes generoso y quieres apoyarnos, ¡Adelante! Tu contribución nos ayudará a seguir adelante con nuestra misión de entretenerte e informarte. Y si no puedes, no te preocupes, ¡Seguiremos siendo amigos! 😊

¡Gracias por estar aquí y por ser parte de nuestra increíble comunidad! 🌈

Recuerda también que puedes invitar a tus amigos y familiares a formar parte de la comunidad y explicar los beneficios de registrarse en ./voidNull.


📖 Diccionario de comandos para GNU/Linux

Dentro del mundo de la administración de sistemas operativos basados en GNU/Linux, existen muchos comandos. Hay un subconjunto de comandos de shell como cd o mkdir y luego están los comandos de GNU coreutils como less. Además de todo esto, existen utilizades CLI adicionales como curl, wget, dt, entre muchas otras herramientas.

En ./voidNull tenemos previsto hacer un listado grande de los comandos más comunes y de otros comandos útiles para el día día del administrador de sistemas.

ipinfo: muestra toda la información de una IP

Hoy vengo con un comando muy interesante si eres sysadmin y tienes que saber de donde son ciertas IP. ipinfo es una versión oficial CLI de la web ipinfo.io que ofrece una base de datos muy grande con una API conectada para consultar todo tipo de información sobre una IP.

ipinfo: muestra toda la información de una IP
ipinfo es una versión oficial CLI de la web ipinfo.io que ofrece una base de datos muy grande con una API conectada para consultar todo tipo de información sobre una IP.

vmstat: obtén información detallada sobre el uso de memoria

El comando vmstat (Virtual Memory Statistics) es una herramienta de monitoreo de sistemas indispensable para cualquier administrador de sistemas que desee obtener información detallada sobre el uso de memoria, procesamiento, entrada/salida de disco, y actividad de intercambio en sistemas Unix/Linux.

vmstat: obtén información detallada sobre el uso de memoria
El comando vmstat (Virtual Memory Statistics) es una herramienta de monitoreo de sistemas indispensable para cualquier administrador de sistemas

¿Buscas otro comando?

¡Revisa nuestro "Diccionario de comandos para GNU/Linux"!

Diccionario de comandos para GNU/Linux

🤖 Curso de Ansible en ./voidNull

Iniciamos también un apartado con cursos específicos sobre temas relacionados con el despliegue entre otras cosas.

Módulos: Utilidades [Ansible #17]

Módulos: Utilidades [Ansible #17]
Ansible es una poderosa herramienta de automatización que utiliza una arquitectura simple pero efectiva para gestionar configuraciones y orquestar tareas. Una parte clave de esta arquitectura son los módulos, que son unidades de código que Ansible ejecuta.

Módulos: Notificaciones [Ansible #18]

Módulos: Notificaciones [Ansible #18]
Una característica clave de Ansible es su capacidad para integrarse con sistemas de notificación, lo que facilita la comunicación entre equipos y sistemas.

ARTÍCULO DE LA SEMANA

El artículo seleccionado para esta semana es...

🦊 Despligue del tema de Ghost utilizando GitLab CI

En el siguiente tutorial vamos a explicar como trabajar con la integración continua de GitLab y con el desarrollo de nuestro tema de Ghost.

Despliegue del tema de Ghost utilizando GitLab CI
En el siguiente tutorial vamos a explicar como trabajar con la integración continua de GitLab y con el desarrollo de nuestro tema de Ghost.

Otros artículos interesantes de este mes:

]]>
<![CDATA[ Copiar .ISO en nuestro Proxmox ]]> https://voidnull.es/copiar-iso-en-nuestro-proxmox/ 65de0cdcadd21a0cbc9776a1 Fri, 01 Mar 2024 10:24:14 +0100 Una de las característica de Proxmox es que nos permite tener en nuestro almacenamiento imágenes ISO para luego utilizarlas para desplegar servidores virtuales.

En el siguiente tutorial os vamos a explicar todas las formas posibles para copiar imágenes ISO dentro de Proxmox. Para todos los ejemplos, usaremos la ISO de Ubuntu Server, pero se puede usar cualquier otra ISO.

💡
Este tutorial pertenece a un curso de Proxmox, si te interesa el tema, puedes ver todos los tutoriales en la siguiente URL: Cursos de ./voidNull

Cargar imagen ISO desde tu ordenador

Este primer procedimiento, puede ser igual el más sencillo, lo que haremos será ir a la web oficial de Ubuntu y nos descargaremos la versión de Ubuntu Server.

Ya dentro de Proxmox, en la barra lateral, desplegaremos nuestro Datacenter y deberemos de seleccionar nuestro almacenamiento donde guardaremos nuestras ISO. Luego tendremos que hacer clic sobre la opción ISO Images.

En este apartado, tendremos que hacer clic sobre el botón Upload y se nos abrirá la siguiente ventana:

Aquí deberemos de seleccionar el fichero haciendo clic en Select File y seleccionaremos el fichero en nuestro ordenador. Una vez hayamos seleccionado el fichero, podremos cambiar el nombre del fichero si queremos.

En este punto, podremos hacer clic en Upload para iniciar la carga de la imagen en nuestro Proxmox, el proceso puede tardar un poco:

Una vez finalice la carga, ya tendremos la imagen disponible para poderla utilizar en el despliegue de nuestras máquinas.

Cargar imagen directamente desde una URL

Otra opción que tenemos, y esta es mi favorita, es hacer la descarga de la ISO directamente en Proxmox. Para esta opción hay que hacer clic sobre el botón Download from URL y copiar la URL del fichero ISO.

Al copiar la URL, podemos hacer clic sobre el botón Query URL para que rellene la configuración de forma automática. Una vez tenemos todo listo, podemos hacer clic sobre el botón de Download para iniciar la descarga:

Este procedimiento hace la descarga directamente en nuestro servidor, por lo que no es necesario hacer la descarga en nuestro ordenador con antelación.

Una vez finalice la carga, ya tendremos la imagen disponible para poderla utilizar en el despliegue de nuestras máquinas.

Cargar ISO directamente por línea de comandos

Teniendo las otras opciones, este modo de copiar la ISO puede ser un poco engorroso, pero en alguna ocasión podemos encontrar necesario hacer esto, así que aquí va esta explicación.

Deberemos de conectarnos al servidor Proxmox ya sea por SSH o bien usando la Shell incorporada en la interfaz de Proxmox.

Accederemos a la siguiente ruta:

cd /var/lib/vz/template/iso

Y aquí descargaremos la ISO utilizando el comando wget:

wget https://releases.ubuntu.com/22.04.4/ubuntu-22.04.4-live-server-amd64.iso

Salida del comando

--2024-02-27 19:05:49-- https://releases.ubuntu.com/22.04.4/ubuntu-22.04.4-live-server-amd64.iso
Resolving releases.ubuntu.com (releases.ubuntu.com)... 91.189.91.124, 185.125.190.40, 91.189.91.123, ...
Connecting to releases.ubuntu.com (releases.ubuntu.com)|91.189.91.124|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2104408064 (2.0G) [application/x-iso9660-image]
Saving to: ‘ubuntu-22.04.4-live-server-amd64.iso’

ubuntu-22.04.4-live-server-amd64.iso 100%[========================================================>] 1.96G 9.88MB/s in 3m 12s

2024-02-27 19:09:01 (10.5 MB/s) - ‘ubuntu-22.04.4-live-server-amd64.iso’ saved [2104408064/2104408064]

Ahora si vamos a nuestro almacenamiento y vamos al apartado de ISO Images podremos observar que se encuentra nuestra ISO disponible:

]]>
<![CDATA[ Instalar Home Assistant OS utilizando Proxmox 8.x ]]> https://voidnull.es/instalar-home-assistant-os-utilizando-proxmox-8-x/ 65bbbb0badd21a0cbc976ab6 Thu, 29 Feb 2024 10:57:10 +0100 Recientemente he adquirido un Mini PC donde tengo pensado instalar un Proxmox y configurar diferentes máquina virtuales en él. Este Mini PC es un Beelink SER5 con un AMD Ryzen 5 5560U y con 16GB de RAM y 500GB de disco NVMe SSD.

Suficiente máquina para instalar y configurar Proxmox y configurar mis maquinas para diferentes servicios. En el siguiente tutorial os explico como he instalado Proxmox en el servidor y como he instalado Home Assistant OS en una máquina virtual.

Para instalar HaOS en Proxmox, deberemos de descargar la versión para KVM que usaremos para importar esa imagen.

Para instalar Proxmox en un servidor, deberemos de seguir estas instrucciones:

Instalación de Proxmox VE en Debian 12 “Bookworm”
Por lo general si instalamos Proxmox VE lo que haremos será descargar la ISO donde ya vienen todos los paquetes necesarios. Pero en ocasiones, en interesante poder instalar Proxmox VE sobre un Debian 11 ya desplegado.

Crear máquina virtual en Proxmox

Para crear la máquina virtual hacemos clic sobre el botón que hay arriba a la derecha que pone Create VM y seguimos los pasos que explicamos a continuación.

Seleccionamos nuestro nodo, indicamos el VM ID y añadimos un nombre significativo:

Marcamos la opción Do not use any media para que no use ninguna ISO.

En BIOS seleccionamos la opción OVMF y en EFI Storage seleccionamos local. Comprobamos que el formato es QEMU.

Configuramos los recursos de disco, CPU, memoria y red y confirmamos la creación de la maquina.

Configuramos la imagen de HaOS

Una vez creada, nos tenemos que conectar al servidor y descargar la imagen qcow2. Nos podemos conectar por SSH o simplemente usar la Terminal incorporada en Proxmox que podemos encontrar en Datacenter - PVE - Shell.

Descargamos la imagen:

wget https://github.com/home-assistant/operating-system/releases/download/11.4/haos_ova-11.4.qcow2.xz

Descomprimimos con:

xz --decompress haos_ova-11.4.qcow2.xz 

Y procedemos a la importación de la imagen a la máquina que hemos creado anteriormente:

sudo qm importdisk 101 /root/haos_ova-11.4.qcow2 local --format qcow2
  • 101: Es el ID de la máquina de Proxmox
  • /root/haos... : Es el fichero en formato qcow2 que hemos descargado anteriormente.
  • local: Es el nombre del Storage donde guardaremos la maquina.
  • --format: Con esta opción indicaremos el formato de la imagen para importar.

salida del comando

importing disk '/root/haos_ova-11.4.qcow2' to VM 101 ...
Formatting '/var/lib/vz/images/101/vm-101-disk-2.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off preallocation=metadata compression_type=zlib size=34359738368 lazy_refcounts=off refcount_bits=16
transferred 0.0 B of 32.0 GiB (0.00%)
transferred 327.7 MiB of 32.0 GiB (1.00%)
transferred 665.2 MiB of 32.0 GiB (2.03%)
transferred 1.0 GiB of 32.0 GiB (3.17%)
transferred 1.4 GiB of 32.0 GiB (4.30%)
transferred 1.7 GiB of 32.0 GiB (5.43%)
transferred 2.1 GiB of 32.0 GiB (6.56%)
transferred 2.5 GiB of 32.0 GiB (7.69%)
transferred 2.8 GiB of 32.0 GiB (8.82%)
transferred 3.2 GiB of 32.0 GiB (9.95%)
transferred 3.5 GiB of 32.0 GiB (11.08%)
transferred 3.9 GiB of 32.0 GiB (12.21%)
transferred 4.3 GiB of 32.0 GiB (13.34%)
transferred 4.6 GiB of 32.0 GiB (14.47%)
transferred 5.0 GiB of 32.0 GiB (15.60%)
transferred 5.4 GiB of 32.0 GiB (16.73%)
transferred 5.7 GiB of 32.0 GiB (17.86%)
transferred 6.1 GiB of 32.0 GiB (18.99%)
transferred 6.4 GiB of 32.0 GiB (20.12%)
transferred 6.8 GiB of 32.0 GiB (21.25%)
transferred 7.2 GiB of 32.0 GiB (22.38%)
transferred 7.5 GiB of 32.0 GiB (23.51%)
transferred 7.9 GiB of 32.0 GiB (24.64%)
transferred 8.2 GiB of 32.0 GiB (25.75%)
transferred 8.6 GiB of 32.0 GiB (26.84%)
transferred 9.0 GiB of 32.0 GiB (27.97%)
transferred 9.3 GiB of 32.0 GiB (29.18%)
transferred 9.7 GiB of 32.0 GiB (30.31%)
transferred 10.1 GiB of 32.0 GiB (31.44%)
transferred 10.4 GiB of 32.0 GiB (32.57%)
transferred 10.8 GiB of 32.0 GiB (33.70%)
transferred 11.1 GiB of 32.0 GiB (34.83%)
transferred 11.5 GiB of 32.0 GiB (35.96%)
transferred 11.8 GiB of 32.0 GiB (37.01%)
transferred 12.2 GiB of 32.0 GiB (38.14%)
transferred 12.6 GiB of 32.0 GiB (39.28%)
transferred 12.9 GiB of 32.0 GiB (40.29%)
transferred 13.2 GiB of 32.0 GiB (41.37%)
transferred 13.6 GiB of 32.0 GiB (42.38%)
transferred 13.9 GiB of 32.0 GiB (43.45%)
transferred 14.2 GiB of 32.0 GiB (44.53%)
transferred 14.6 GiB of 32.0 GiB (45.66%)
transferred 14.9 GiB of 32.0 GiB (46.69%)
transferred 15.3 GiB of 32.0 GiB (47.82%)
transferred 15.7 GiB of 32.0 GiB (49.05%)
transferred 16.1 GiB of 32.0 GiB (50.18%)
transferred 16.4 GiB of 32.0 GiB (51.31%)
transferred 16.8 GiB of 32.0 GiB (52.44%)
transferred 17.1 GiB of 32.0 GiB (53.57%)
transferred 17.5 GiB of 32.0 GiB (54.61%)
transferred 17.8 GiB of 32.0 GiB (55.74%)
transferred 18.2 GiB of 32.0 GiB (56.87%)
transferred 18.6 GiB of 32.0 GiB (58.00%)
transferred 18.9 GiB of 32.0 GiB (59.17%)
transferred 19.3 GiB of 32.0 GiB (60.23%)
transferred 19.6 GiB of 32.0 GiB (61.36%)
transferred 20.0 GiB of 32.0 GiB (62.49%)
transferred 20.4 GiB of 32.0 GiB (63.62%)
transferred 20.7 GiB of 32.0 GiB (64.75%)
transferred 21.1 GiB of 32.0 GiB (65.88%)
transferred 21.4 GiB of 32.0 GiB (67.01%)
transferred 21.8 GiB of 32.0 GiB (68.14%)
transferred 22.2 GiB of 32.0 GiB (69.27%)
transferred 22.5 GiB of 32.0 GiB (70.40%)
transferred 22.9 GiB of 32.0 GiB (71.53%)
transferred 23.3 GiB of 32.0 GiB (72.66%)
transferred 23.6 GiB of 32.0 GiB (73.72%)
transferred 24.0 GiB of 32.0 GiB (74.86%)
transferred 24.3 GiB of 32.0 GiB (75.99%)
transferred 24.7 GiB of 32.0 GiB (77.12%)
transferred 25.0 GiB of 32.0 GiB (78.25%)
transferred 25.4 GiB of 32.0 GiB (79.38%)
transferred 25.8 GiB of 32.0 GiB (80.51%)
transferred 26.1 GiB of 32.0 GiB (81.52%)
transferred 26.5 GiB of 32.0 GiB (82.66%)
transferred 26.8 GiB of 32.0 GiB (83.67%)
transferred 27.1 GiB of 32.0 GiB (84.79%)
transferred 27.5 GiB of 32.0 GiB (85.92%)
transferred 27.8 GiB of 32.0 GiB (86.98%)
transferred 28.2 GiB of 32.0 GiB (88.14%)
transferred 28.6 GiB of 32.0 GiB (89.27%)
transferred 28.9 GiB of 32.0 GiB (90.40%)
transferred 29.3 GiB of 32.0 GiB (91.53%)
transferred 29.6 GiB of 32.0 GiB (92.53%)
transferred 30.0 GiB of 32.0 GiB (93.66%)
transferred 30.3 GiB of 32.0 GiB (94.77%)
transferred 30.7 GiB of 32.0 GiB (95.90%)
transferred 31.1 GiB of 32.0 GiB (97.12%)
transferred 31.4 GiB of 32.0 GiB (98.25%)
transferred 31.8 GiB of 32.0 GiB (99.31%)
transferred 32.0 GiB of 32.0 GiB (100.00%)
transferred 32.0 GiB of 32.0 GiB (100.00%)
Successfully imported disk as 'unused0:local:101/vm-101-disk-2.qcow2'

Finalmente eliminamos el fichero que hemos extraído:

rm haos_ova-11.4.qcow2

Configuración hardware de la maquina virtual

Ahora seleccionamos la maquina virtual y vamos a Hardware - Hard Disk y marcamos la opción Detach (para desacoplar el disco que hay actualmente).

Seleccionamos el disco 1 y lo eliminamos:

Ahora hacemos doble clic sobre Unused disk 0, que si nos fijamos tiene formato qcow2, y le damos a Add.

Ahora vamos a Options y en Boot Order hacemos doble clic para cambiar el orden de arranque. Desactivamos ide2 y net0 y habilitamos scsi0 y lo subimos arriba del todo.

Ahora la maquina virtual con Home Assistant está preparada para ser iniciada. La iniciamos y nos dirigimos a Console para revisar el arranque.

Es posible que aparezca este error o que no encuentra ningún disco para arrancar:

Tenemos que escribir exit y aparecerá lo siguiente:

Vamos a Device Manager - Secure Boot Configuration y desmarcamos la opción "Attempt Secure Boot" con el espacio y luego volvemos atrás y le damos a Reset.

Iniciará el servidor correctamente:

Cuando veamos el logo de Home Assistant, podremos acceder a la IP que nos ha configurado el DHCP.

Si accedemos por el navegador, podremos iniciar la creación del usuario y primeros pasos:

]]>
<![CDATA[ vmstat: obtén información detallada sobre el uso de memoria ]]> https://voidnull.es/vmstat-obten-informacion-detallada-sobre-el-uso-de-memoria-2/ 65d5cacaadd21a0cbc977483 Wed, 28 Feb 2024 10:16:11 +0100 El comando vmstat (Virtual Memory Statistics) es una herramienta de monitoreo de sistemas indispensable para cualquier administrador de sistemas que desee obtener información detallada sobre el uso de memoria, procesamiento, entrada/salida de disco, y actividad de intercambio en sistemas Unix/Linux.

Este comando proporciona un resumen instantáneo de la memoria del sistema, los procesos, los discos, la actividad de intercambio, y el uso de CPU, lo cual es crucial para el diagnóstico de problemas de rendimiento o para la monitorización del sistema en tiempo real.

Sintaxis básica

La sintaxis básica de vmstat es relativamente sencilla:

vmstat [opciones] [intervalo [cuenta]]
  • [opciones]: Permite modificar el comportamiento del comando.
  • [intervalo]: Especifica el tiempo en segundos entre cada actualización.
  • [cuenta]: Determina cuántas actualizaciones se mostrarán antes de terminar el comando. Si se omite, vmstat continuará corriendo hasta que se interrumpa manualmente.

Algunos ejemplos interesantes

A continuación, se presentan algunas de las opciones más relevantes de vmstat con ejemplos prácticos:

Sin opciones

Ejecutar vmstat sin opciones proporciona un informe instantáneo del estado actual del sistema:

vmstat

Este comando mostrará una sola vez las estadísticas de virtualización de memoria, incluyendo memoria libre, memoria en uso, memoria en búfer, caché, y más.

Intervalo de tiempo

Para monitorear el sistema en tiempo real, se puede especificar un intervalo de tiempo en segundos:

vmstat 2

Este comando actualizará y mostrará las estadísticas cada 2 segundos.

Intervalo y Cantidad

Para limitar el número de actualizaciones, se puede añadir un segundo número después del intervalo:

vmstat 2 5

Esto mostrará las estadísticas del sistema cada 2 segundos, pero solo lo hará 5 veces antes de terminar.

Mostrar estadísticas de la memoria

Muestra estadísticas adicionales de memoria, incluyendo el total de memoria activa e inactiva:

vmstat -a

Mostrar detalles del disco

Muestra estadísticas detalladas de disco:

vmstat -d

Proporciona información sobre lecturas y escrituras, así como otros detalles relacionados con el disco.

Mostrar estadísticas del sistema

Proporciona un resumen de varias estadísticas del sistema, como la cantidad total de memoria, la memoria utilizada y libre, intercambios, y mucho más:

vmstat -s

Mostrar uso de memoria slab

Muestra estadísticas sobre el uso de memoria slab, útil para diagnosticar problemas de memoria en el kernel:

vmstat -m

Conclusión

El comando vmstat es una herramienta poderosa y versátil para cualquier sysadmin que busque mantener la salud y el rendimiento óptimo de sus sistemas. Con una variedad de opciones disponibles, vmstat ofrece una vista detallada del funcionamiento interno del sistema, permitiendo a los administradores tomar decisiones informadas sobre la configuración y la solución de problemas.


¿Buscas otro comando?

¡Revisa nuestro "Diccionario de comandos para GNU/Linux"!

Diccionario de comandos para GNU/Linux

]]>
<![CDATA[ Configurar una VPN Site-to-Site con IPsec - Parte II ]]> https://voidnull.es/configurar-una-vpn-site-to-site-con-ipsec-parte-ii/ 65c3776eadd21a0cbc976d53 Tue, 27 Feb 2024 10:25:38 +0100 En artículos anteriores configuramos la Zona Sur de esta configuración que estamos realizando. En este artículo configuraremos la Zona Norte tal y como se indica en nuestro esquema:

Si te has perdido el primer artículo, te lo dejo aquí para que tengas más contexto de esta continuación del tutorial.

Configurar una VPN Site-to-Site con IPsec - Parte I
En este tutorial veremos como configurar uno de los lados pero habrá una segunda parte para configurar los dos extremos utilizando métodos diferentes.

En el siguiente tutorial vamos a ver como configurar la Zona Sur que se conectará a la Zona Norte. Este procedimiento lo haremos directamente en Debian 12.

Pasos previos

Antes de instalar paquetes y configurar servicios, hay que hacer una pequeña configuración para que funcione correctamente todo.

echo 'net.ipv4.ip_forward=1' | tee -a /etc/sysctl.conf

Comprobamos la configuración:

sysctl -p

Salida del comando

vm.swappiness = 0
vm.dirty_ratio = 60
vm.dirty_background_ratio = 20
net.ipv4.conf.all.arp_filter = 1
net.ipv4.conf.default.arp_filter = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
kernel.printk = 3 4 1 3
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.ip_forward = 1

Configuración Firewall

Para que este entorno funcione correctamente es necesario habilitar los siguientes puertos:

  • Puerto 500 (TCP/UDP) - IPSec
  • Puerto 4500 (TCP/UDP) - IPSec2
  • Puerto 5500 (TCP/UDP) - IPSec NAT
  • Habilitar ICMP
  • Protocolo 50
  • Protocolo 51

Instalación de Strongswan

Para configurar IPsec en Debian utilizaremos el paquete de Strongswan que podemos encontrar en los repositorios de Debian.

apt install strongswan

Una vez hemos instalado el paquete deberemos de editar el fichero /etc/ipsec.conf con la siguiente configuración:

config setup
        charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2,  mgr 2"

conn %default
        ikelifetime=7200s
        keylife=6480s
        rekeymargin=5m
        keyingtries=3
        keyexchange=ikev2
        authby=secret
        ike=aes256-sha1-modp1024
        esp=aes256-sha1

conn ipsec-vpn-norte
       left=%any 
       leftid=%any 
       leftsubnet=10.20.10.0/24
       right=[IP_PUBLICA_SERVIDOR]
       rightid=%any 
       rightsubnet=192.168.1.0/24 
       auto=start

Primero de todo creamos un apartado %default donde habrá configuración común con todas las conexiones que tengamos que crear. En este caso solo habrá una, pero si queremos añadir más conexiones y comparten algunos valores, para no repetir parámetros se puede añadir directamente en este apartado.

Luego tendremos que crear la conexión que hemos llamado ipsec-vpn-norte que es la conexión que establecerá el túnel hacia la Zona Norte.

Es importante siempre rellenar los siguientes datos:

  • left: Dirección IP del servidor de StrongSwan.
  • leftsubnet: Redes del lado del servidor.
  • right: Dirección IP del otro extremo.
  • rightsubnet: Redes del otro extremo.
💡
Las subredes conocidas se pueden añadir en la misma línea separándolas por comas.

Configuración de la Clave Precompartida

La clave precompartida o PSK se utiliza para autenticar los dos extremos del túnel, para ello deberemos de editar el fichero /etc/ipsec.secrets y añadir lo siguiente:

: PSK "2fe1b2002ea68450ef87140fb49032cc5f8ae5bc458b6b08d9d60f6b"
💡
Si recordáis el primer tutorial, cuando se configura la primera fase se configura una Pre-Shared Key en pfSense. Debemos de poner el mismo valor para que funcione correctamente.

Una vez hemos configurado esto, podemos reiniciar IPsec para que se aplique la configuración

ipsec restart

Podemos ver el estado del túnel con:

ipsec statusall

Salida del comando

Status of IKE charon daemon (strongSwan 5.9.8, Linux 6.1.0-9-amd64, x86_64):
uptime: 3 hours, since Feb 12 21:01:32 2024
malloc: sbrk 1830912, mmap 0, used 1250800, free 580112
worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 4
loaded plugins: charon aesni aes rc2 sha2 sha1 md5 mgf1 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs12 pgp dnskey sshkey pem openssl pkcs8 fips-prf gmp agent xcbc hmac kdf gcm drbg attr kernel-netlink resolve socket-default connmark stroke updown eap-mschapv2 xauth-generic counters
Listening IP addresses:
XXX,XXX,XXX.70
10.20.10.2
Connections:
ipsec-vpn-nord: %any...XXX,XXX,XXX.70 IKEv2
ipsec-vpn-nord: local: uses pre-shared key authentication
ipsec-vpn-nord: remote: uses pre-shared key authentication
ipsec-vpn-nord: child: 10.20.10.0/24 === 192.168.1.0/24 TUNNEL
Security Associations (1 up, 0 connecting):
ipsec-vpn-nord[5]: ESTABLISHED 74 minutes ago, XXX,XXX,XXX.70[XXX,XXX,XXX.70]...XXX,XXX,XXX.14[XXX,XXX,XXX.14]
ipsec-vpn-nord[5]: IKEv2 SPIs: dbd56a56d268d917_i dfc00a354e1b9c2b_r*, pre-shared key reauthentication in 38 minutes
ipsec-vpn-nord[5]: IKE proposal: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
ipsec-vpn-nord{183}: INSTALLED, TUNNEL, reqid 1, ESP SPIs: c0a7f126_i c7687791_o
ipsec-vpn-nord{183}: AES_CBC_256/HMAC_SHA1_96, 0 bytes_i, 0 bytes_o, rekeying in 27 minutes
ipsec-vpn-nord{183}: 10.20.10.0/24 === 192.168.1.0/24

Ahora que en la salida del comando vemos que se ha establecido correctamente e instalado el túnel, podremos hacer ping a la interfaz privada del pfSense con IP 192.168.1.1:

# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.30 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=1.03 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.916 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.923 ms

Conclusión

En el siguiente tutorial veremos como crear usuarios en ambas partes para conectarse a la VPN y ver que como clientes podemos hacer ping a los diferentes dispositivos que están conectados a la VPN.

]]>
<![CDATA[ Diferencias entre pause, hibernate, shutdown, stop y reboot en Proxmox ]]> https://voidnull.es/diferencias-entre-pause-hibernate-shutdown-stop-y-reboot-en-proxmox/ 65d7c18badd21a0cbc97749d Sat, 24 Feb 2024 12:00:55 +0100 En Proxmox, un software de virtualización popular, se utilizan diferentes estados para manejar las máquinas virtuales (VMs). Cada estado tiene un propósito específico y afecta de manera diferente a la VM. En el siguiente artículo explicaré las diferencias entre pausar (pause), hibernar (hibernate), apagar (shutdown), detener (stop) y reiniciar (reboot).

Pausar la VM [pause]

Al pausar una VM, se congela su estado actual y toda su operación en ese instante. Esto significa que todos los procesos en ejecución dentro de la VM se detienen temporalmente sin apagar la máquina. La memoria (RAM) de la VM permanece intacta, y la VM puede reanudarse rápidamente desde el mismo punto en que fue pausada. Es útil para realizar tareas de mantenimiento o para liberar temporalmente recursos del sistema sin perder el estado actual de la VM.

Hibernar la VM [hibernate]

La hibernación guarda el estado actual de la VM, incluido el contenido de su RAM, en el disco antes de apagarla. Cuando se reanuda la VM, se carga este estado desde el disco, permitiendo que la VM continúe desde donde se dejó. La hibernación libera los recursos de RAM mientras la VM está hibernada, pero el proceso de hibernar y reanudar puede ser más lento que pausar debido a la lectura y escritura en el disco.

Apagar la VM [shutdown]

Este comando envía una señal al sistema operativo dentro de la VM para que se apague de manera ordenada, cerrando todos los programas y servicios de manera correcta antes de liberar los recursos del sistema. Es el método más seguro para detener una VM, ya que minimiza el riesgo de pérdida de datos o corrupción de archivos.

Detener la VM [stop]

Detener una VM es similar a apagar la alimentación de una máquina física sin realizar un apagado ordenado del sistema operativo. Esto puede resultar en pérdida de datos o corrupción de archivos si la VM estaba realizando operaciones de escritura en el momento de la detención. Se debe usar con precaución y generalmente solo se recomienda si la VM no responde a un comando de apagado.

Reiniciar la VM [reboot]

Este comando reinicia la VM, enviando una señal al sistema operativo para que se reinicie de manera ordenada. Esto cierra todos los programas y servicios antes de reiniciar la VM, similar a un apagado seguido de un inicio, pero realizado en un solo paso. Es útil para aplicar actualizaciones o cambios de configuración que requieren un reinicio.

Conslusión

En resumen, cada uno de estos estados tiene su propósito y uso dependiendo de lo que necesites hacer con tu VM. Pause y Hibernate son útiles para conservar el estado actual de una VM para una reanudación rápida o a largo plazo, respectivamente, sin usar recursos. Shutdown y Stop se utilizan para detener completamente la VM, pero con diferentes niveles de gracia y seguridad. Reboot es útil para reiniciar la VM sin pasar por un proceso de apagado y encendido manual.

]]>
<![CDATA[ ipinfo: muestra toda la información de una IP ]]> https://voidnull.es/ipinfo-muestra-toda-la-informacion-de-una-ip/ 65a52e9215109503e5ec5d1b Wed, 21 Feb 2024 10:13:38 +0100 Hoy vengo con un comando muy interesante si eres sysadmin y tienes que saber de donde son ciertas IP. ipinfo es una versión oficial CLI de la web ipinfo.io que ofrece una base de datos muy grande con una API conectada para consultar todo tipo de información sobre una IP.

Entre todas las características de ipinfo cabe destacar las siguientes:

  • Busca detallesde una IP de forma masiva o uno por uno.
  • Buscar detalles de ANS.
  • REsumen de detalles de hasta 1000 IP a la vez
  • Abrir un mapa de ubicaciones de IP para cualquier conjunto de IP
  • Filtrar direcciones IPv4 e IPv6 desde cualquier entrada.
  • Mostrar por pantalla listas de IP para cualquier CIDR o rango IP.
  • Y mucho más...

Instalación de ipinfo en GNU/Linux

La instalación dependerá un poco de que distribución de GNU/Linux usas, te dejo por aquí las distribuciones más comunes, si no encuentras la tuya puedes ir directamente al repositorio de Github para más información.

Ubuntu PPA

echo "deb [trusted=yes] https://ppa.ipinfo.net/ /" | sudo tee  "/etc/apt/sources.list.d/ipinfo.ppa.list"
apt update
apt install ipinfo

Arch linux

git clone https://aur.archlinux.org/ipinfo-cli.git
makepkg -si

Debian / Ubuntu

curl -Ls https://github.com/ipinfo/cli/releases/download/ipinfo-3.3.0/deb.sh | sh

Sintaxis básica

Si ejecutamos el comando sin ningún parámetro, obtendremos la ayuda:

ipinfo

Si queremos información de una IP concreta:

ipinfo [IP]

Mostrar información sobre nuestra IP

Podemos saber información de nuestra IP utilizando la opción myip:

ipinfo myip

Core
- IP           XXXXXXXXXX
- Anycast      false
- Hostname     XXXXXXXXXXXX
- City         Sant Cugat del Vallès
- Region       Catalonia
- Country      Spain (ES)
- Currency     EUR (€)
- Location     XXXXX,XXXXX
- Organization XXXXXX XXXX XXXX S.A.
- Postal       XXXXXX
- Timezone     Europe/Madrid

Mostrar información sobre una IP

Si queremos saber información sobre una IP:

ipinfo 209.51.188.174

Core
- IP           209.51.188.174
- Anycast      false
- Hostname     www.fsf.org
- City         Boston
- Region       Massachusetts
- Country      United States (US)
- Currency     USD ($)
- Location     42.3576,-71.0514
- Organization AS22989 Free Software Foundation, Inc.
- Postal       02110
- Timezone     America/New_York

Mostrar información sobre un grupo de IPs

Si queremos toda la info de varias IP, entonces podemos agruparlas en un fichero de texto por línea y utilizar este comando que nos mostrará el resultado en JSON:

cat ips.txt | ipinfo 

Mostrar información filtrando

Podemos filtrar por cualquier de las opciones que salen cuando mostramos información de una IP. Por ejemplo si queremos filtrar por hostname:

ipinfo 209.51.188.174 -f hostname

También se puede hacer con un grupo de IP:

cat ips.txt | ipinfo -f hostname

Mostrar información por rango de IP

Otra cosa que podemos hacer, es buscar información por rango de IP, por ejemplo información sobre las dos IP que hay en 1.1.1.0/31:

ipinfo bulk 1.1.1.0/31 | less

Conclusión

Una herramienta muy interesante y útil si necesitas saber información de IP. Yo es una herramienta que uso a diario para saber a que ASN pertenece una IP o saber de que país proviene el tráfico de un servidor.


¿Buscas otro comando?

¡Revisa nuestro "Diccionario de comandos para GNU/Linux"!

Diccionario de comandos para GNU/Linux

]]>
<![CDATA[ Cómo instalar y configurar PixelFed en Ubuntu 22.04 ]]> https://voidnull.es/como-instalar-y-configurar-pixelfed-en-ubuntu-22-04/ 63726e418e543ca22508dbe5 Tue, 20 Feb 2024 10:16:19 +0100 Pixelfed es un sistema para compartir imágenes en forma de software libre, que utiliza el protocolo ActivityPub para federarse con el Fediverso, lanzado a mediados del mes de abril de 2018 por el desarrollador canadiense Daniel Supernault. Permite compartir imágenes con Friendica, Mastodon, Nextcloud, PeerTube, Pleroma, etc. Al ser software libre y de código abierto, es posible instalar su propia instancia, mientras se conecte a esta federación del Fediverso.

A veces se presenta como una alternativa a Instagram y su política de censura, cuyos datos permite importar.

El sistema está desarrollado con el lenguaje PHP y utiliza el framework Laravel.

Para hacer este tutorial vamos a usar Ubuntu 22.04 y vamos a instalar y configurar todo lo que viene a continuación.

Antes de instalar

Antes de ponernos a instalar todo, como siempre, actualizamos paquetes, actualizamos sistema e instalamos herramientas básicas para funcionar.

apt update
apt upgrade -y

Y las herramientas básicas:

apt install apt-transport-https wget curl git software-properties-common unzip

También aprovecharemos para configurar el hostname:

hostnamectl set-hostname dominio.com

Instalación de MariaDB

Empezamos con la instalación de la base de datos para PixelFed. En la documentación oficial explican que PixelFed es compatible con PostgreSQL (10+) y MySQL (5.7), pero recomiendan usar MariaDB.

Instalamos MariaDB:

apt install mariadb-server mariadb-client

Habilitamos al arranque el servicio:

systemctl enable mariadb

Luego creamos la base de datos y el usuario para PixelFed. Como siempre deberás de revisar este artículo que explica como hacerlo:

Crear base de datos y usuario con privilegios en MySQL/MariaDB
En el siguiente tutorial vamos ha explicar como crear una base de datos y un usuario para asignar permisos totales a esa base de datos. Acceder a MySQL/MariaDB Para gestionar bases de datos o usuarios, deberemos de acceder a la shell de MySQL/MariaDB. Existen programas como phpMyAdmin de
create database pixelfed;
grant all privileges on pixelfed.* to 'pixelfed'@'localhost' identified by 'contraseña_segura';
flush privileges;

Instalación de Redis

También tendremos que instalar Redis para cachear partes de la web, para ello:

apt install redis-server

Y lo habilitamos al arranque:

systemctl enable --now redis-server

Editamos el fichero /etc/redis/redis.conf y cambiamos el parámetro de port por:

port 0

Y descomentamos los siguientes parámetros:

unixsocket /var/run/redis/redis-server.sock
unixsocketperm 700

Reiniciamos el servicio:

systemctl restart redis-server

Instalación de PHP y dependencias varias

Según la documentación de PixelFed, todo esto es necesario para que funcione correctamente, procedemos a instalarlo:

apt install php8.1 php8.1-fpm php8.1-mysql php8.1-mbstring php8.1-xml php8.1-bcmath php8.1-curl php8.1-intl php8.1-ctype php8.1-exif php8.1-gd php8.1-iconv php8.1-redis php8.1-tokenizer php8.1-zip jpegoptim optipng pngquant composer

Tras instalar PHP, configuramos PHP-FPM:

sed 's/pm.max_children = 5/pm.max_children = 25/g' /etc/php/8.1/fpm/pool.d/www.conf -i
sed 's/;pm.max_requests/pm.max_requests/g' /etc/php/8.1/fpm/pool.d/www.conf -i

Luego configuramos los valores post_max_size, upload_max_filesize y max_execution_time:

sed 's/upload_max_filesize = 2M/upload_max_filesize = 20M/g' /etc/php/8.1/fpm/php.ini -i
sed 's/post_max_size = 8M/post_max_size = 20M/g' /etc/php/8.1/fpm/php.ini -i
sed 's|max_execution_time =.*|max_execution_time = 600|g' /etc/php/8.1/fpm/php.ini -i

Y reiniciamos PHP-FPM:

systemctl restart php8.1-fpm.service

Creación de usuario dedicado para PixelFed

Configuraremos un usuario del sistema para gestionar PixelFed en nuestro servidor, para ello crearemos el usuario:

useradd -rU -s /bin/bash pixelfed

Configuramos PHP-FPM con el usuario

Vamos a crear un fichero especifico para PHP-FPM, para ello:

cd /etc/php/8.1/fpm/pool.d
cp www.conf pixelfed.conf
nano pixelfed.conf

Editamos la configuración reconfiguramos lo siguiente:

[pixelfed]
user = pixelfed
group = pixelfed
; to use a tcp socket, e.g. if running php-fpm on a different machine than your app:
;    (note that the port 9001 is used, since php-fpm defaults to running on port 9000;)
;    (however, the port can be whatever you want)
; listen = 127.0.0.1:9001;
;    but it's better to use a socket if you're running locally on the same machine:
listen = /run/php-fpm/pixelfed.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
; [...]

Finalmente, reiniciamos PHP-FPM:

systemctl restart php8.1-fpm

Instalación de Postfix

Además, si queremos enviar correos para restaurar contraseña y validar e-mail de las cuentas, tendremos que instalar PostFix:

apt install postfix

Durante la instalación escogeremos la opción Internet Site, y continuaremos.

Instalación de pixelfed

Para la instalación vamos a configurar primero los directorios necesarios. Para ello:

mkdir -p /var/www/vhost/dominio.com/www

Nos descargamos el repositorio en el directorio:

git clone -b dev https://github.com/pixelfed/pixelfed.git /var/www/vhost/dominio.com/www/

Cambiamos permisos:

cd /var/www/vhost/dominio.com/www
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Y con composer instalamos las dependencias:

composer install --no-ansi --no-interaction --optimize-autoloader

Una vez acabe todo, crearemos una copia del fichero .env y configuraremos lo siguiente:

cp .env.example .env

De este fichero modificamos:

APP_NAME="Pixelfed voidNull"
...
APP_URL=https://dominio.com
APP_DOMAIN="dominio.com"
ADMIN_DOMAIN="dominio.com"
SESSION_DOMAIN="dominio.com"
...
DB_CONNECTION="mysql"
DB_HOST="127.0.0.1"
DB_PORT="3306"
DB_DATABASE="pixelfed"
DB_USERNAME="pixelfed"
DB_PASSWORD="contraseña_segura"
...
REDIS_SCHEME="unix"
REDIS_PATH="/var/run/redis/redis-server.sock"
REDIS_PORT="null"
REDIS_PORT="null"
...
MAIL_DRIVER=sendmail
MAIL_HOST=localhost
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="pixelfed@dominio.com"
MAIL_FROM_NAME="Pixelfed"
...
ACTIVITY_PUB=true
REMOTE_FOLLOW=true
ACTIVITYPUB_INBOX=true
ACTIVITYPUB_SHAREDINBOX=true
...

Configuración de los servicios

Generamos la APP_KEY:

php artisan key:generate

Agregaremos los storage, solo tenemos que ejecutarlo una vez:

php artisan storage:link

Migración de la base de datos:

php artisan migrate --force

Si queremos importar las ciudades para las localizaciones:

php artisan import:cities

Si hemos habilitado la federación:

php artisan instance:actor

Si has habilitado OAuth:

php artisan passport:keys

Habilitamos las rutas:

php artisan route:cache
php artisan view:cache

Cada vez que hagas cambios en .env, debes de ejecutar este comando:

php artisan config:cache

Instalamos Laravel Horizon

Utilizaremos Laravel Horizon, así que lo activamos:

php artisan horizon:install
php artisan horizon:publish

Configuración de Nginx

Como siempre, para instalar Nginx:

apt install nginx

Y tras instalarlo, lo habilitamos al arranque:

systemctl start nginx
systemctl enable nginx

Copiamos el fichero de configuración para Nginx:

cp -rf /var/www/vhost/dominio.com/www/contrib/nginx.conf /etc/nginx/sites-available/pixelfed.conf
ln -s /etc/nginx/sites-available/pixelfed.conf /etc/nginx/sites-enabled/pixelfed.conf

Y modificamos los parámetros server_name (tanto el del principio como el del final) y root. Además modificamos ssl_certificate y ssl_certificate_key. Finalmente, modificaremos fastcgi_pass para añadir el FPM que hemos configurado.

server_name pixel.arrel.cloud;
root /var/www/vhost/dominio.com/www/public;
ssl_certificate /etc/letsencrypt/live/dominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dominio.com/privkey.pem;
fastcgi_pass unix:/run/php/php-fpm-pixelfed.sock;

Generamos el certificado SSL

Para el SSL usaremos Let's Encrypt, y para ello necesitamos instalar:

apt install certbot

Paramos Nginx y generamos el certificado:

systemctl stop nginx
certbot certonly --standalone --post-hook "systemctl restart nginx"
systemctl start nginx

Instalación de Supervisor

También tendremos que instalar Supervisor para tener controlado un proceso de Horizon (cosas de Laravel… no hagáis muchas preguntas, pero es necesario).

apt install supervisor

Lo habilitamos al arranque:

systemctl enable supervisor

Y creamos el fichero de configuración con el siguiente contenido:

touch /etc/supervisor/conf.d/horizon.conf

[program:horizon]
process_name=Artisan_Horizon
command=php /var/www/vhost/dominio.com/www/artisan horizon
autostart=true
autorestart=true
user=www-data
redirect_stderr=true
stdout_logfile=/var/log/horizon.log

Y lo iniciamos:

supervisorctl reread
supervisorctl update
supervisorctl start horizon

Y con esto ya tendríamos PixelFed instalado y funcionando correctamente.

]]>
<![CDATA[ Configurar una VPN Site-to-Site con IPsec - Parte I ]]> https://voidnull.es/configurar-una-vpn-site-to-site-con-ipsec/ 65c376daadd21a0cbc976d45 Mon, 19 Feb 2024 10:13:25 +0100 Normalmente cuando tenemos que configurar un túnel IPsec solamente tenemos que configurar uno de los lados. En este tutorial veremos como configurar uno de los lados pero habrá una segunda parte para configurar los dos extremos utilizando métodos diferentes.

Por un lado tendremos la Zona Norte que la configuraremos utilizando pfSense para configurar IPsec. Y el otro extremo, tendremos la Zona Sur donde la configuraremos utilizando Strongswan en un Debian 12.

De esta manera veremos como configurar dos extremos usando diferentes tecnologías. Para que se entienda correctamente que configuración de red vamos a utilizar he creado este diagrama de red para que quede claro que redes tiene cada zona.

Como podemos observar, en la Zona Norte configuraremos una red WAN que será la IP pública del servidor y luego una LAN que será la red local. Para ello usaremos una red del rango 192.168.1.0/24. Y en la Zona Sur, configuraremos una red WAN que será la IP pública del servidor y la LAN que será del rango 10.20.10.0/24.

Habilitar puertos en el Firewall

Para que este entorno funcione correctamente es necesario habilitar los siguientes puertos:

  • Puerto 500 (TCP/UDP) - IPSec
  • Puerto 4500 (TCP/UDP) - IPSec2
  • Puerto 5500 (TCP/UDP) - IPSec NAT
  • Habilitar ICMP
  • Protocolo 50
  • Protocolo 51

Configuración para pfSense

Lo primero que haremos será acceder a pfSense para configurar la LAN de la Zona Norte. Deberemos de revisar que pfSense tenga configurada tanto la WAN como la LAN, para ello iremos a Interfaces - Assignments y revisaremos que tenemos las dos redes configuradas:

Configurar LAN

Para configurar la LAN deberemos de ir a Interfaces - LAN y habilitaremos la interfaz marcando la opción Enable Interface.

Luego en la opción IPv4 Configuration Type seleccionaremos la opción Static IPv4 y en el apartado nuevo que aparece para IPv4 Configuration Type y configuramos la IP:

Para guardar cambios abajo del todo le damos a Save y luego le damos a Apply Changes:

Configuración de IPsec

El siguiente paso es configurar el túnel IPSec para configurar la VPN. Primero configuramos la Phase 1 y luego la Phase 2.

Phase 1

Tendremos que ir a VPN - IPsec y hacer clic sobre el botón Add P1.

En las opciones que nos aparece deberemos de añadir lo siguiente. En Remote Gateway deberemos de poner la IP pública de la Zona Sur.

En el apartado Phase 1 Proposal generaremos una Pre-Shared Key haciendo clic sobre el botón amarillo.

Luego configuraremos el apartado Encryption Algorithm de la siguiente forma:

El Life Time lo configuraremos con 7200 segundos. Añadimos una descripción al principio de todo para identificarla y le damos a Save y luego a Apply Changes.

Phase 2

Ahora que tenemos configurada la Phase 1 configuraremos la segunda fase. Para ello deberemos de hacer clic sobre Show Phase 2 Entries y luego a Add P2.

En Remote Gateway deberemos de poner la IP privada de la Zona Sur. Según nuestro esquema de más arriba la IP Privada es 10.20.10.0/24.

En el siguiente apartado, el de cifrado, deberemos de marcar los algoritmos de AES con 265 bits y en Hash Algorithm marcamos la opción SHA1.

En Life Time deberemos de configurar 7200 segundos. Para guardar los cambios le damos a Save y luego a Apply Changes.

Comprobación de la conexión

En este tutorial aún tenemos que configurar el otro lado al que hemos llamado como Zona Sur, pero si estuviera configurada correctamente, podemos revisar si las dos fases se han conectado correctamente.

Esto desde pfSense se puede revisar Status - IPsec. En este apartado podremos observar que la Fase I se ha establecido correctamente y vemos que en el apartado de Status aparece un Established en verde. Por otro lado, en la Fase II podemos ver que el Status aparece como Installed.

Con las fases de esta forma, podemos decir que la conexión se ha realizado correctamente.

💡
Esta comprobación suele se puede hacer si el otro lado del túnel está instalado, por lo que es posible que debas de seguir con la parte II para poder hacer este paso.

Conclusión

Ya tenemos por un lado configurado correctamente la Zona Sur de nuestra Site To Site, en el siguiente tutorial veremos como configurar la Zona Norte utilizando directamente un Debian y los paquetes correspondientes para IPSec.

]]>
<![CDATA[ Cómo configurar los puertos de red FastEthernet de un router ]]> https://voidnull.es/como-configurar-los-puertos-de-red-fastethernet-de-un-router/ 65b01e9eadd21a0cbc97660b Sat, 17 Feb 2024 10:49:49 +0100 Hay un conjunto de órdenes que permiten configurar las interfaces de router, y las órdenes son diferentes según el tipo de interfaces. Existen comandos diferentes para interfaces de redes inalámbricas o interfaces de redes conectadas por el puerto en serie.

Interfaces de red Ethernet (con cable)

Para configurar las direcciones IP de cualquier dispositivo se debe de acceder en modo global al router. A continuación cada una de las interfaces se tienen que activar y configurar. Hay un modo de configuración de interfaz donde se configurará la dirección IP y demás información.

Finalmente si fuera necesario, se puede activar la interfaz una vez se ha asignado una dirección IP. Vamos a ver como se debería de configurar.

Tendremos dos interfaces, en este caso dos FastEthernet con la siguiente configuración:

Interfaz IP Máscara
FasthEthernet0/0 192.168.1.1 255.255.255.0
FasthEthernet0/1 80.1.1.1 255.0.0.0

La primera configuración será al FastEthernet0/0:

barcelona#configure terminal 
barcelona(config)#interface fastEthernet0/0
barcelona(config-if)#description Conexion a Barcelona
barcelona(config-if)#ip address 192.168.1.1 255.255.255.0
barcelona(config-if)#no shutdown
💡
Es necesario activar la interfaz una vez asignada la dirección, esto se hace con el comando no shutdown. Si se desea desactivar una interfaz sólo se debe ejecutar el comando shutdown.

Y la segunda configuración será el FastEthernet0/1:

barcelona(config-if)#exit
barcelona(config)#interface fastEthernet 0/1                    
barcelona(config-if)#description Conexion madrid
barcelona(config-if)#ip address 80.1.1.1 255.0.0.0 
barcelona(config-if)#no shutdown

A continuación se puede ver la ejecución del comando show running-config, que muestra toda la configuración que hemos realizado:

barcelona#show running-config 
Building configuration...

Current configuration : 1238 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname barcelona
!
boot-start-marker
boot-end-marker
!
enable secret 5 $1$z1aq$xDhBWhwprP5dII5l6BJwc0
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
!
!
ip cef
no ip domain lookup
!
!         
multilink bundle-name authenticated
!            
!         
archive   
 log config
  hidekeys        
!         
ip tcp synwait-time 5
!                 
!         
interface FastEthernet0/0
 description Conexion a Barcelona
 ip address 192.168.1.1 255.255.255.0
 duplex auto
 speed auto
!         
interface FastEthernet0/1
 description conexion madrid
 ip address 80.1.1.1 255.0.0.0
 duplex auto
 speed auto
!         
interface FastEthernet1/0
 no ip address
 shutdown 
 duplex auto
 speed auto
!         
interface FastEthernet2/0
 no ip address
 shutdown 
 duplex auto
 speed auto
!         
!         
no ip http server
no ip http secure-server
ip forward-protocol nd
!         
!         
!         
no cdp log mismatch duplex
!      
!         
control-plane
!           
banner motd ^CRouter Barcelona.local^C
!         
line con 0
 exec-timeout 0 0
 privilege level 15
 password 123qweasd
 logging synchronous
 login    
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login    
!         
!         
end 

Para acabar, guardaremos la configuración con el siguiente comando:

barcelona#copy running-config startup-config
Destination filename [startup-config]? 
Building configuration...
[OK]

De esta forma, cuando reiniciemos el router, la configuración guardada cargará automáticamente y ya tendremos las interfaces configuradas.

]]>
<![CDATA[ Módulos: Notificaciones [Ansible #18] ]]> https://voidnull.es/modulos-notificaciones/ 659fd17415109503e5ec59fa Fri, 16 Feb 2024 10:03:38 +0100 Ansible es una herramienta poderosa para la automatización de IT, permitiendo a los equipos gestionar infraestructuras, desplegar aplicaciones y orquestar tareas complejas con facilidad. Una característica clave de Ansible es su capacidad para integrarse con sistemas de notificación, lo que facilita la comunicación entre equipos y sistemas. En este artículo, exploraremos los módulos de notificación disponibles en Ansible, incluyendo irc, jabber, mail, slack, y telegram, proporcionando una descripción y ejemplos de código para cada uno.

Módulo IRC

El módulo irc permite a Ansible enviar notificaciones a un canal de IRC (Internet Relay Chat), lo que puede ser útil para equipos que utilizan IRC como su plataforma de comunicación principal.

Este módulo se conecta a un servidor IRC, se une a un canal especificado y envía un mensaje antes de desconectarse. Es ideal para notificaciones rápidas a un canal de chat.

- name: Enviar notificación IRC
  irc:
    server: irc.example.com
    port: 6667
    channel: "#devops"
    nickname: ansible_bot
    message: "Despliegue completado con éxito"
💡
Recuerda que deberás de configurar correctamente un servidor de IRC con tu cuenta.

Módulo jabber

El módulo jabber facilita el envío de mensajes a través de XMPP/Jabber, un protocolo de mensajería instantánea.

Se utiliza para enviar mensajes a usuarios o salas en una red Jabber/XMPP, lo que permite una comunicación eficiente y directa.

- name: Enviar mensaje Jabber
  jabber:
    user: "bot@example.com"
    password: "secreto"
    recipient: "usuario@example.com"
    msg: "Tarea completada con éxito"
💡
Recuerda que deberás de configurar un usuario y contraseña existente.

Módulo mail

El módulo mail es una herramienta para enviar correos electrónicos desde Ansible, lo que permite una comunicación efectiva con los miembros del equipo que prefieren notificaciones por email.

Permite enviar correos electrónicos con detalles específicos de la tarea, incluyendo soporte para adjuntos, lo que lo hace versátil para varias necesidades de notificación.

- name: Enviar correo electrónico de notificación
  mail:
    host: smtp.example.com
    port: 587
    username: "usuario@example.com"
    password: "secreto"
    to: "Equipo DevOps <devops@example.com>"
    subject: "Notificación de Ansible"
    body: "La tarea de Ansible se ha completado con éxito."
💡
Recuerda que deberás de configurar correctamente la cuenta SMTP.

Módulo Slack

El módulo slack permite a Ansible enviar notificaciones a un canal de Slack, lo que es ideal para equipos que utilizan Slack como su principal herramienta de comunicación.

Este módulo envía mensajes a canales o usuarios específicos en Slack, soportando tanto texto plano como mensajes formateados.

- name: Enviar notificación a Slack
  slack:
    token: "xoxb-1234567890-abcdefg"
    channel: "#ansible-notifications"
    msg: "Despliegue completado con éxito"
💡
Recuerda que deberás de configurar un token correcto.

Módulo de Telegram

El módulo telegram expande las capacidades de notificación de Ansible al permitir el envío de mensajes a un chat de Telegram.

Con este módulo, se pueden enviar mensajes, fotos, documentos y otros tipos de archivos a chats individuales o grupales en Telegram, lo que lo hace altamente versátil.

- name: Enviar mensaje de Telegram
  telegram:
    token: "12345:abcde"
    chat_id: "123456789"
    msg: "El proceso de Ansible ha finalizado."
💡
Recuerda que deberás de configurar un token correcto y buscar el chat_id desde Telegram.

Conclusión

Los módulos de notificación de Ansible ofrecen una amplia gama de opciones para mejorar la comunicación entre los sistemas automatizados y los equipos de IT. Al integrar estas herramientas en sus flujos de trabajo, los equipos pueden mantenerse informados sobre el estado de las tareas automatizadas, mejorar la colaboración y reaccionar rápidamente a los eventos importantes.

]]>
<![CDATA[ Recuperar acceso root en MySQL/MariaDB ]]> https://voidnull.es/recuperar-acceso-root-en-mysql-mariadb/ 65ca0f5badd21a0cbc976fb7 Thu, 15 Feb 2024 10:21:58 +0100 ¿Alguna vez has tenido ese momento de pánico en el que te das cuenta de que has olvidado la contraseña de root en tu servidor MySQL/MariaDB? ¡No estás solo! A todos nos ha pasado. Ya sea por un descuido, una semana demasiado larga o simplemente una memoria selectiva, perder el acceso a la raíz puede hacernos sudar frío más rápido que una consulta SQL mal optimizada.

Pero no temas, querido sysadmin, estamos aquí para salvarte de la ansiedad inducida por la pérdida de contraseñas y devolverte el control sobre tus bases de datos. En este tutorial vamos a explicar como recuperar el acceso a root.

💡
Para una buena gestión de contraseñas recomendamos usar un Administrador de Contraseñas y tenerlas siempre bajo llave.

Recuperar acceso root

Para recuperar el acceso es necesario parar el servicio de bases de datos y lanzarlo de nuevo en modo seguro.

Para ello primero pararemos el servicio:

# Si usas MySQL
systemctl stop mysql.service

# Si usas MariaDB
systemctl stop mariadb.service

Luego lanzaremos de nuevo el servicio en modo seguro:

mysqld_safe --skip-grant-tables --skip-networking &

Salida del comando

[1] 45202
root@mysql:~# /usr/bin/mysqld_safe: Deprecated program name. It will be removed in a future release, use 'mariadbd-safe' instead
240212 13:43:02 mysqld_safe Logging to '/var/lib/mysql/mysql.err'.
240212 13:43:02 mysqld_safe Starting mariadbd daemon with databases from /var/lib/mysql

Accedemos a MySQL/MariaDB:

mysql -u root

Y actualizamos la contraseña usando la consulta correspondiente:

# Para MySQL 5.7.6 y posteriores y MariaDB 10.1.20 y posteriores
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

# Para MySQL 5.7.5 y anteriores y MariaDB 10.1.20 y anteriores
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
💡
Puedes consultar tu versión de MySQL o MariaDB con el comando mysql --version

Matamos el proceso que hemos levantado para MySQL/MariaDB:

kill `cat /var/run/mysqld/mysqld.pid`

E iniciamos el servicio como siempre:

# Para MySQL
systemctl start mysqld

# Para MariaDB
systemctl start mariadb

Y listo! Ya deberíamos de poder acceder con la nueva contraseña.

Conclusión

Ahora deberías de tener un nuevo acceso administrativo al servidor MySQL o MariaDB restaurado. Asegúrate de que la nueva contraseña de root que elijas sea fuerte y segura y guárdala en un lugar seguro.

]]>