<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[TerminalMente — Linux, IA y Ciberseguridad en español]]></title><description><![CDATA[Tutoriales prácticos de Linux, inteligencia artificial y ciberseguridad en español. Sin relleno, solo lo que funciona.]]></description><link>https://terminalmente.com</link><image><url>https://cdn.hashnode.com/uploads/logos/69bc2290b238fd45a3166bb7/8730d095-ca5e-44d9-919d-857484041d8d.png</url><title>TerminalMente — Linux, IA y Ciberseguridad en español</title><link>https://terminalmente.com</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Apr 2026 03:03:42 GMT</lastBuildDate><atom:link href="https://terminalmente.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Bash scripting: de cero a scripts útiles en Linux]]></title><description><![CDATA[Bash es el lenguaje de la terminal Linux. Aprenderlo es una de las inversiones más rentables que puedes hacer si trabajas con sistemas Linux, porque te permite automatizar tareas repetitivas, crear he]]></description><link>https://terminalmente.com/bash-scripting-de-cero-a-scripts-tiles-en-linux</link><guid isPermaLink="true">https://terminalmente.com/bash-scripting-de-cero-a-scripts-tiles-en-linux</guid><category><![CDATA[Bash]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Scripting]]></category><category><![CDATA[automatization]]></category><category><![CDATA[terminal command]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Tue, 31 Mar 2026 19:49:34 GMT</pubDate><content:encoded><![CDATA[<p>Bash es el lenguaje de la terminal Linux. Aprenderlo es una de las inversiones más rentables que puedes hacer si trabajas con sistemas Linux, porque te permite automatizar tareas repetitivas, crear herramientas personalizadas y encadenar comandos de formas que serían imposibles manualmente. En este artículo te llevo de los fundamentos a scripts realmente útiles.</p>
<h2>¿Qué es un script de Bash?</h2>
<p>Un script de Bash es simplemente un archivo de texto que contiene una secuencia de comandos que se ejecutan uno tras otro. Es como escribir comandos en la terminal pero guardados en un archivo que puedes ejecutar cuando quieras y cuantas veces quieras.</p>
<p>La primera línea de cualquier script de Bash debe ser el shebang: una línea especial que empieza con los caracteres almohadilla y exclamación seguidos de la ruta al intérprete. Para Bash el shebang estándar es #!/usr/bin/env bash, que es más portable que #!/bin/bash porque busca Bash en el PATH en vez de asumir una ruta fija.</p>
<p>Para que un script sea ejecutable necesitas darle permisos de ejecución con chmod +x seguido del nombre del archivo. Luego puedes ejecutarlo con ./<a href="http://nombre-del-script.sh">nombre-del-script.sh</a> si estás en el mismo directorio, o con la ruta completa desde cualquier lugar.</p>
<h2>Variables</h2>
<p>Las variables en Bash se definen sin espacios alrededor del signo igual. Para leer el valor de una variable la precedes con el símbolo de dólar. Es importante no poner espacios alrededor del igual porque Bash los interpreta como separadores de argumentos y dará un error.</p>
<p>Por convención las variables de entorno del sistema se escriben en mayúsculas y las variables locales del script en minúsculas. Para hacer una variable de solo lectura usa la palabra clave readonly antes de la asignación.</p>
<p>Las variables especiales más útiles son \(0 que contiene el nombre del script, \)1 a \(9 que contienen los argumentos que se pasan al script al ejecutarlo, \)# que contiene el número de argumentos, \(@ que contiene todos los argumentos como lista, y \)? que contiene el código de salida del último comando ejecutado.</p>
<h2>Entrada y salida</h2>
<p>El comando echo imprime texto en la pantalla. Con el flag -n evita añadir un salto de línea al final. Con el flag -e interpreta secuencias de escape como \n para nueva línea y \t para tabulación.</p>
<p>El comando read lee una línea de la entrada estándar y la guarda en una variable. Con el flag -p puedes mostrar un prompt antes de leer. Con -s activa el modo silencioso que no muestra lo que escribe el usuario, útil para contraseñas.</p>
<p>Para redirigir la salida de un comando a un archivo usa el operador mayor que. Para añadir al final del archivo en vez de sobreescribirlo usa dos signos mayor que. Para redirigir la entrada de un archivo usa el operador menor que. El operador pipe dirige la salida de un comando como entrada del siguiente.</p>
<h2>Condicionales</h2>
<p>Las condicionales en Bash usan la estructura if, then, else y fi. La condición se evalúa con corchetes dobles que son la versión moderna y más segura de los corchetes simples.</p>
<p>Para comparar cadenas de texto usa el operador doble igual para igualdad y != para diferencia. Para comparar números usa -eq para igual, -ne para diferente, -lt para menor que, -le para menor o igual, -gt para mayor que y -ge para mayor o igual.</p>
<p>Para verificar archivos y directorios hay operadores específicos muy útiles: -f comprueba si existe un archivo regular, -d si existe un directorio, -e si existe cualquier cosa con ese nombre, -r si tiene permisos de lectura, -w de escritura y -x de ejecución.</p>
<p>El operador &amp;&amp; ejecuta el segundo comando solo si el primero tuvo éxito. El operador || ejecuta el segundo solo si el primero falló. Estos operadores son muy útiles para escribir condiciones compactas en una sola línea.</p>
<h2>Bucles</h2>
<p>El bucle for itera sobre una lista de elementos. La sintaxis es for variable in lista; do comandos; done. La lista puede ser una secuencia de palabras, el resultado de un comando entre paréntesis de comando o una expansión de archivos con comodines.</p>
<p>El comando seq genera secuencias de números, muy útil para hacer bucles que se repiten un número determinado de veces.</p>
<p>El bucle while repite un bloque de comandos mientras una condición sea verdadera. El bucle until hace lo contrario, repite mientras la condición sea falsa.</p>
<h2>Funciones</h2>
<p>Las funciones te permiten reutilizar código dentro del script. Se definen con el nombre de la función seguido de paréntesis y un bloque de código entre llaves.</p>
<p>Dentro de una función los argumentos se acceden igual que los argumentos del script, con \(1, \)2 y así sucesivamente. El valor de retorno de una función es su código de salida, que puedes establecer con return seguido de un número entre 0 y 255. Para devolver un valor de texto usa echo dentro de la función y captura el resultado con sustitución de comandos.</p>
<h2>Manejo de errores</h2>
<p>Un script robusto maneja los errores correctamente. Añadir set -e al principio del script hace que se detenga inmediatamente si cualquier comando falla. Set -u hace que falle si se usa una variable sin definir. Set -o pipefail hace que un pipeline falle si cualquier comando de la cadena falla, no solo el último.</p>
<p>Verificar el código de salida de comandos críticos con $? y actuar en consecuencia es una buena práctica. También puedes usar trap para ejecutar código de limpieza cuando el script termina, ya sea con éxito o por un error.</p>
<h2>Un script práctico: backup automatizado</h2>
<p>Juntando todo lo que hemos visto podemos escribir un script de backup útil. El script verifica que el directorio de origen existe, crea el directorio de destino si no existe, genera un nombre de archivo con la fecha actual usando el comando date, copia el directorio comprimido con tar, verifica que la copia se completó correctamente comprobando el código de salida, y escribe un mensaje de éxito o error.</p>
<p>Este tipo de script combinado con cron que vimos en el artículo de Python da como resultado un sistema de backups automático completamente funcional.</p>
<h2>Consejos para escribir buenos scripts</h2>
<p>Añade comentarios explicando qué hace cada sección del script, especialmente las partes no obvias. Un script sin comentarios es difícil de mantener incluso para quien lo escribió.</p>
<p>Usa nombres de variables descriptivos. Una variable llamada source_dir es mucho más clara que una llamada sd o simplemente s.</p>
<p>Prueba el script con datos reales pero en un entorno seguro antes de ejecutarlo en producción. Añade mensajes de progreso para saber en qué punto está la ejecución, especialmente en scripts largos.</p>
<p>ShellCheck es una herramienta online y de línea de comandos que analiza scripts de Bash y señala problemas comunes de sintaxis y malas prácticas. Úsala antes de considerar un script terminado.</p>
<h2>Conclusión</h2>
<p>Bash scripting es una habilidad que se aprende haciendo. Empieza automatizando una tarea pequeña que hagas manualmente con frecuencia y ve añadiendo complejidad según la necesites.</p>
<p>Con el tiempo desarrollarás una biblioteca personal de funciones y scripts reutilizables que te ahorrarán horas de trabajo.</p>
<hr />
<p><em>¿Cuál es el script de Bash más útil que has escrito? Compártelo en los comentarios.</em></p>
]]></content:encoded></item><item><title><![CDATA[Redes en Linux: domina ip, netstat, ss y las herramientas esenciales]]></title><description><![CDATA[Entender cómo funciona la red en Linux es una habilidad fundamental para cualquier sysadmin o desarrollador. Saber diagnosticar problemas de conectividad, ver qué conexiones están activas, configurar ]]></description><link>https://terminalmente.com/redes-en-linux-domina-ip-netstat-ss-y-las-herramientas-esenciales</link><guid isPermaLink="true">https://terminalmente.com/redes-en-linux-domina-ip-netstat-ss-y-las-herramientas-esenciales</guid><category><![CDATA[Linux]]></category><category><![CDATA[redes]]></category><category><![CDATA[networking]]></category><category><![CDATA[sysadmin]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Tue, 31 Mar 2026 19:48:40 GMT</pubDate><content:encoded><![CDATA[<p>Entender cómo funciona la red en Linux es una habilidad fundamental para cualquier sysadmin o desarrollador. Saber diagnosticar problemas de conectividad, ver qué conexiones están activas, configurar interfaces de red y analizar el tráfico marca la diferencia entre resolver un problema en minutos o perder horas dando palos de ciego. En este artículo te explico las herramientas esenciales.</p>
<h2>El comando ip: la herramienta moderna</h2>
<p>Durante años ifconfig fue el comando estándar para gestionar interfaces de red en Linux. Hoy está obsoleto y reemplazado por el comando ip, que forma parte del paquete iproute2 y viene preinstalado en todas las distribuciones modernas.</p>
<p>El comando ip se organiza en objetos y acciones. Los objetos principales son address para gestionar direcciones IP, link para gestionar interfaces de red, route para gestionar la tabla de rutas, y neighbour para gestionar la tabla ARP.</p>
<p>Para ver todas las interfaces de red y sus direcciones IP usa ip address show, que puedes abreviar como ip addr o ip a. La salida muestra cada interfaz con su estado, dirección MAC, dirección IPv4 y dirección IPv6.</p>
<p>Para ver solo las interfaces que están activas añade el filtro up. Para ver una interfaz específica añade el nombre de la interfaz al final del comando.</p>
<h2>Gestionar interfaces con ip link</h2>
<p>El objeto link gestiona el estado de las interfaces a nivel de enlace. Con ip link show ves todas las interfaces y su estado. Con ip link set seguido del nombre de la interfaz y up o down activas o desactivas la interfaz.</p>
<p>También puedes cambiar la MTU de una interfaz, su dirección MAC y otros parámetros a nivel de enlace con el mismo comando.</p>
<h2>Configurar direcciones IP</h2>
<p>Para añadir una dirección IP a una interfaz usa ip address add seguido de la dirección en notación CIDR y dev con el nombre de la interfaz. Para eliminarla sustituye add por del.</p>
<p>Ten en cuenta que los cambios hechos con el comando ip son temporales y se pierden al reiniciar. Para que sean permanentes necesitas editar los archivos de configuración de red, que varían según la distribución. En sistemas modernos se gestiona con NetworkManager, systemd-networkd o netplan según la distribución.</p>
<h2>La tabla de rutas</h2>
<p>La tabla de rutas determina cómo se reenvían los paquetes de red. Con ip route show ves la tabla de rutas completa. Verás la ruta por defecto que indica por dónde salen los paquetes cuando no hay una ruta más específica, y rutas específicas para las redes locales.</p>
<p>Para añadir una ruta estática usa ip route add seguido de la red de destino en notación CIDR y via con la IP del gateway. Para eliminarla sustituye add por del.</p>
<p>La ruta por defecto se añade con ip route add default via seguido de la IP del gateway. Si tienes problemas de conectividad verificar que la ruta por defecto existe y es correcta es uno de los primeros pasos de diagnóstico.</p>
<h2>ss: el reemplazo moderno de netstat</h2>
<p>Netstat fue durante años el comando estándar para ver conexiones de red activas y puertos en escucha. Al igual que ifconfig está técnicamente obsoleto y reemplazado por ss, que es más rápido y más detallado.</p>
<p>El comando ss sin argumentos muestra todas las conexiones de socket. Los flags más útiles son -t para mostrar solo TCP, -u para solo UDP, -l para mostrar solo los sockets en escucha, -n para mostrar números en vez de nombres de servicio, -p para mostrar el proceso que tiene el socket y -a para mostrar todos los sockets.</p>
<p>La combinación más usada en el día a día es ss -tulnp que muestra todos los puertos TCP y UDP en escucha con los procesos asociados y en formato numérico. Es el comando que ejecutas cuando quieres saber qué servicios están escuchando en tu servidor y en qué puertos.</p>
<h2>Diagnosticar conectividad con ping y traceroute</h2>
<p>Ping es la herramienta más básica de diagnóstico de red. Envía paquetes ICMP a un host y mide el tiempo de respuesta. Si ping no responde puede ser que el host esté caído, que haya un problema de red entre los dos hosts, o simplemente que el firewall del destino bloquee el ICMP.</p>
<p>Traceroute muestra el camino que siguen los paquetes desde tu máquina hasta el destino, pasando por todos los routers intermedios. Es muy útil para identificar en qué punto del camino hay un problema. En Linux se instala con apt o dnf. La versión moderna se llama tracepath y viene preinstalada en muchas distribuciones.</p>
<h2>Resolver DNS con dig y host</h2>
<p>Cuando un dominio no resuelve correctamente dig es la herramienta de diagnóstico DNS más potente. Hace consultas DNS directas y muestra toda la información de la respuesta incluyendo el servidor que respondió y el tiempo de respuesta.</p>
<p>Con dig seguido de un dominio obtienes los registros A. Añadiendo el tipo de registro como MX, CNAME, TXT o NS obtienes los registros correspondientes. Con el flag @seguido de la IP de un servidor DNS específico haces la consulta contra ese servidor, útil para verificar si el problema es con tu servidor DNS o es global.</p>
<p>El comando host es una alternativa más simple para consultas DNS rápidas sin necesitar toda la información de dig.</p>
<h2>Capturar tráfico con tcpdump</h2>
<p>Tcpdump es la herramienta de captura de tráfico de red de línea de comandos. Te permite ver en tiempo real todos los paquetes que pasan por una interfaz, filtrarlos por protocolo, puerto, dirección IP o cualquier combinación.</p>
<p>Necesitas permisos de root para capturar tráfico. El comando básico es tcpdump seguido del flag -i con el nombre de la interfaz. Con el flag -n evitas que intente resolver nombres de host, haciendo la captura más rápida. Con host seguido de una IP filtras solo el tráfico de ese host. Con port seguido de un número filtras por puerto.</p>
<p>Para guardar la captura en un archivo y analizarla después con Wireshark usa el flag -w seguido del nombre del archivo.</p>
<h2>Gestionar el firewall con iptables y nftables</h2>
<p>Iptables fue durante muchos años el firewall estándar de Linux. Hoy está siendo reemplazado por nftables en las distribuciones más modernas, aunque iptables sigue siendo ampliamente usado. ufw y firewalld son frontends de alto nivel que simplifican la gestión del firewall usando iptables o nftables por debajo.</p>
<p>Para ver las reglas del firewall con iptables usa iptables -L con el flag -n para formato numérico y -v para modo verbose que muestra contadores de paquetes.</p>
<h2>Conclusión</h2>
<p>El networking en Linux puede parecer intimidante al principio pero las herramientas son consistentes y lógicas. El truco es saber cuál usar en cada situación: ip para configuración de interfaces y rutas, ss para ver conexiones y puertos, dig para diagnóstico DNS, ping y traceroute para conectividad básica, y tcpdump cuando necesitas ver el tráfico real.</p>
<p>Con estas herramientas puedes diagnosticar prácticamente cualquier problema de red que encuentres en un servidor Linux.</p>
<hr />
<p><em>¿Hay alguna herramienta de red en Linux que uses regularmente y que no haya mencionado? Los comentarios son vuestros.</em></p>
]]></content:encoded></item><item><title><![CDATA[Nextcloud: monta tu propio Google Drive privado en Linux]]></title><description><![CDATA[Google Drive, Dropbox y OneDrive son cómodos pero tienen un precio: tus archivos están en servidores de terceros, sujetos a sus políticas de privacidad y a sus decisiones de negocio. Nextcloud te da t]]></description><link>https://terminalmente.com/nextcloud-monta-tu-propio-google-drive-privado-en-linux</link><guid isPermaLink="true">https://terminalmente.com/nextcloud-monta-tu-propio-google-drive-privado-en-linux</guid><category><![CDATA[Nextcloud]]></category><category><![CDATA[Linux]]></category><category><![CDATA[privacy]]></category><category><![CDATA[self-hosted]]></category><category><![CDATA[sysadmin]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Tue, 31 Mar 2026 19:47:33 GMT</pubDate><content:encoded><![CDATA[<p>Google Drive, Dropbox y OneDrive son cómodos pero tienen un precio: tus archivos están en servidores de terceros, sujetos a sus políticas de privacidad y a sus decisiones de negocio. Nextcloud te da todo lo que ofrecen estas plataformas pero en tu propio servidor, bajo tu control total. En este artículo te explico cómo montarlo.</p>
<h2>¿Qué es Nextcloud?</h2>
<p>Nextcloud es una plataforma de colaboración y almacenamiento en la nube de código abierto. Empezó como un fork de ownCloud y hoy es la solución de nube privada más popular del mundo con millones de instalaciones.</p>
<p>Tiene clientes de escritorio para Windows, macOS y Linux que sincronizan archivos igual que Dropbox. Apps móviles para Android e iOS. Un cliente web completo desde el navegador. Y un ecosistema de aplicaciones que añade calendario, contactos, notas, videoconferencia, editor de documentos colaborativo y muchas más funcionalidades.</p>
<p>La diferencia fundamental con los servicios comerciales es que los datos nunca salen de tu servidor. Es tu hardware, tu red, tu control.</p>
<h2>Lo que necesitas</h2>
<p>Para instalar Nextcloud necesitas un servidor Linux con al menos 2 GB de RAM, aunque 4 GB es más cómodo. Un servidor web, Nginx o Apache. PHP con varias extensiones. Y una base de datos, MySQL, MariaDB o PostgreSQL.</p>
<p>También necesitas espacio en disco suficiente para tus archivos. Nextcloud gestiona el almacenamiento en un directorio de datos que puedes poner en cualquier disco, incluyendo discos externos o NAS montados como unidades de red.</p>
<h2>La forma más rápida: Nextcloud AIO con Docker</h2>
<p>La instalación manual de Nextcloud con todos sus componentes puede ser compleja. La forma más sencilla y recomendada actualmente es Nextcloud All-in-One, que despliega todo en contenedores Docker con un solo comando.</p>
<p>Nextcloud AIO incluye el servidor Nextcloud, la base de datos MariaDB, Redis para caché, un servidor de colaboración para edición de documentos en tiempo real, y la renovación automática de certificados SSL. Todo gestionado desde una interfaz de administración.</p>
<p>El comando de instalación crea y arranca el contenedor principal de AIO. La primera vez que accedes a la interfaz en el puerto 8080 te da una contraseña de administrador generada automáticamente y te guía por la configuración inicial.</p>
<h2>Instalación manual con LAMP o LEMP</h2>
<p>Si prefieres tener más control sobre cada componente la instalación manual te permite personalizar cada aspecto. En Ubuntu la pila básica se instala con apt: Apache o Nginx, MySQL o MariaDB, y PHP con las extensiones requeridas por Nextcloud.</p>
<p>Las extensiones de PHP que Nextcloud necesita incluyen entre otras curl, gd, mbstring, xml, zip, intl, bcmath y gmp. La lista completa está en la documentación oficial de Nextcloud en <a href="http://docs.nextcloud.com">docs.nextcloud.com</a>.</p>
<p>Descarga la última versión de Nextcloud desde nextcloud.com/install, descomprime en el directorio web de tu servidor, establece los permisos correctos para que el servidor web pueda leer y escribir los archivos, y configura el virtual host de Apache o Nginx.</p>
<p>La primera vez que accedes al dominio en el navegador el instalador web de Nextcloud te guía por la creación del usuario administrador y la conexión con la base de datos.</p>
<h2>Configurar el almacenamiento externo</h2>
<p>Por defecto Nextcloud guarda los datos en el directorio de instalación, pero puedes configurar almacenamiento externo para usar discos adicionales, un NAS de tu red o incluso servicios de almacenamiento externos como Amazon S3 o Backblaze B2.</p>
<p>En la configuración de administración la sección de almacenamiento externo te permite añadir cualquier fuente de almacenamiento como una carpeta dentro de Nextcloud. Cada usuario puede ver los archivos de esos discos directamente desde la interfaz web o el cliente de escritorio.</p>
<h2>Configurar el cliente de escritorio</h2>
<p>El cliente de escritorio de Nextcloud funciona igual que Dropbox. Lo instalas, introduces la URL de tu servidor y tus credenciales, seleccionas qué carpetas quieres sincronizar y listo. Los cambios se sincronizan en tiempo real en todos los dispositivos.</p>
<p>En Linux el cliente está disponible como paquete snap, flatpak o en los repositorios de las principales distribuciones.</p>
<h2>Aplicaciones que amplían Nextcloud</h2>
<p>Una de las grandes ventajas de Nextcloud es su ecosistema de aplicaciones. Desde la tienda de aplicaciones integrada puedes instalar con un clic herramientas muy útiles.</p>
<p>Nextcloud Calendar es un servidor CalDAV completo compatible con cualquier cliente de calendario. Nextcloud Contacts hace lo mismo para los contactos con soporte CardDAV. Nextcloud Talk es un sistema de videoconferencia y chat integrado que funciona sin depender de Zoom o Google Meet.</p>
<p>Collabora Online o OnlyOffice integran un editor de documentos colaborativo en tiempo real directamente en Nextcloud, compatible con los formatos de Microsoft Office.</p>
<h2>Seguridad y mantenimiento</h2>
<p>Nextcloud incluye un escáner de seguridad integrado que te avisa si hay problemas de configuración que podrían comprometer la instalación. Es importante revisarlo tras la instalación y resolver cualquier aviso.</p>
<p>Mantener Nextcloud actualizado es fundamental porque las actualizaciones frecuentemente incluyen parches de seguridad. El actualizador integrado facilita mucho este proceso permitiendo actualizar desde la propia interfaz web sin necesidad de comandos.</p>
<p>Configura backups regulares del directorio de datos y la base de datos. Sin backups una caída del disco significa perder todos tus archivos.</p>
<h2>Conclusión</h2>
<p>Nextcloud es la solución más completa para tener una nube privada. El esfuerzo inicial de configuración se recompensa con control total sobre tus datos, sin límites de almacenamiento más allá del hardware que tengas, y con una plataforma que puede crecer tanto como necesites añadiendo más aplicaciones y usuarios.</p>
<p>Si valoras tu privacidad y ya tienes un servidor o una Raspberry Pi en casa, Nextcloud es probablemente la aplicación más útil que puedes instalar.</p>
<hr />
<p><em>¿Usas Nextcloud, ownCloud o algún otro servicio de almacenamiento propio? Me interesa saber qué solución has encontrado más estable.</em></p>
]]></content:encoded></item><item><title><![CDATA[Git avanzado: los comandos que todo desarrollador debería conocer]]></title><description><![CDATA[Todo el mundo conoce git add, git commit y git push. Pero Git es una herramienta enormemente poderosa y la mayoría de desarrolladores solo usa el 20% de sus capacidades. En este artículo te explico lo]]></description><link>https://terminalmente.com/git-avanzado-los-comandos-que-todo-desarrollador-deber-a-conocer</link><guid isPermaLink="true">https://terminalmente.com/git-avanzado-los-comandos-que-todo-desarrollador-deber-a-conocer</guid><category><![CDATA[Git]]></category><category><![CDATA[programing]]></category><category><![CDATA[Devops]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Tue, 31 Mar 2026 19:44:32 GMT</pubDate><content:encoded><![CDATA[<p>Todo el mundo conoce git add, git commit y git push. Pero Git es una herramienta enormemente poderosa y la mayoría de desarrolladores solo usa el 20% de sus capacidades. En este artículo te explico los comandos y técnicas avanzadas que marcan la diferencia entre un uso básico y un dominio real de Git.</p>
<h2>Git stash: guarda cambios sin commitear</h2>
<p>Estás trabajando en una funcionalidad a medio terminar y de repente necesitas cambiar de rama para revisar algo urgente. No quieres hacer un commit a medias pero tampoco quieres perder tus cambios. Git stash es la solución.</p>
<p>El comando git stash guarda todos tus cambios no commiteados en una pila temporal y deja el directorio de trabajo limpio. Puedes cambiar de rama, hacer lo que necesitas, y luego volver y recuperar tus cambios con git stash pop.</p>
<p>Con git stash list ves todos los stashes guardados. Puedes tener varios stashes y aplicarlos selectivamente con git stash apply seguido del identificador. Con git stash drop eliminas un stash específico y con git stash clear limpias todos.</p>
<p>Una opción muy útil es git stash push -m con un mensaje descriptivo para recordar qué contiene cada stash cuando tienes varios acumulados.</p>
<h2>Git rebase: historial limpio</h2>
<p>El merge es la forma más común de integrar cambios de una rama en otra, pero deja un historial lleno de commits de merge que pueden dificultar la lectura. El rebase es una alternativa que reescribe el historial para que parezca que los commits se hicieron directamente sobre la rama destino.</p>
<p>La regla de oro del rebase es nunca hacer rebase de ramas que ya han sido compartidas con otros desarrolladores. Reescribir el historial de commits que otros ya tienen en sus repositorios locales crea conflictos muy difíciles de resolver.</p>
<p>El rebase interactivo con git rebase -i es especialmente potente. Te permite reorganizar commits, combinar varios commits en uno con squash, editar mensajes de commits anteriores, eliminar commits y dividir un commit en varios. Todo esto te permite presentar un historial limpio y coherente aunque el proceso de desarrollo haya sido más caótico.</p>
<h2>Git cherry-pick: trae commits específicos</h2>
<p>A veces necesitas traer un commit específico de otra rama sin hacer merge de toda la rama. Git cherry-pick hace exactamente eso: aplica los cambios de un commit específico en la rama actual.</p>
<p>Usa git log para encontrar el hash del commit que quieres y luego git cherry-pick seguido del hash. Si hay conflictos los resuelves igual que en un merge.</p>
<p>Cherry-pick es muy útil para backports, cuando necesitas aplicar un bugfix a una rama de producción antigua sin traer todas las funcionalidades nuevas de la rama principal.</p>
<h2>Git bisect: encuentra el commit que introdujo un bug</h2>
<p>Tienes un bug en producción. Sabes que hace dos semanas el código funcionaba bien pero ahora está roto. ¿Cuál de los 200 commits intermedios introdujo el problema? Git bisect hace una búsqueda binaria entre los commits para encontrarlo.</p>
<p>Inicias la bisección con git bisect start, marcas el commit actual como malo con git bisect bad y un commit anterior donde funcionaba como bueno con git bisect good seguido del hash o tag. Git automáticamente hace checkout de un commit intermedio y tú le dices si es bueno o malo. Repites esto hasta que Git identifica el commit exacto que introdujo el problema.</p>
<p>Puedes automatizar el proceso si tienes un test que falla con el bug: git bisect run seguido del comando de test hace la búsqueda completamente automática.</p>
<h2>Git reflog: el historial de todo</h2>
<p>El reflog es el registro de todos los movimientos de HEAD en tu repositorio. Es como una red de seguridad: incluye commits que hayas perdido con un reset, ramas eliminadas y cualquier otra operación que normalmente sería irreversible.</p>
<p>Con git reflog ves todos los movimientos de HEAD con sus hashes. Si accidentalmente hiciste un reset y perdiste commits puedes recuperarlos encontrando el hash en el reflog y haciendo git checkout o git branch para crear una rama desde ese punto.</p>
<p>El reflog se limpia automáticamente después de 90 días por defecto, así que no es una solución permanente pero cubre la mayoría de errores accidentales.</p>
<h2>Git worktree: múltiples directorios de trabajo</h2>
<p>Normalmente para trabajar en dos ramas simultáneamente tienes que cambiar entre ellas o clonar el repositorio dos veces. Git worktree te permite tener múltiples directorios de trabajo del mismo repositorio en paralelo, cada uno apuntando a una rama diferente.</p>
<p>Con git worktree add seguido de la ruta y el nombre de la rama creas un nuevo directorio que funciona como un clon ligero del repositorio. Puedes trabajar en ambos directorios simultáneamente y todos comparten el mismo repositorio Git, así que no tienes que sincronizar nada.</p>
<h2>Alias de Git para ser más productivo</h2>
<p>Git permite definir alias para comandos largos o que uses con frecuencia. Con git config --global alias seguido del nombre del alias y el comando puedes crear atajos propios.</p>
<p>Algunos alias muy populares son un log con formato gráfico y coloreado que muestra el historial de ramas de forma visual, un shortcut para el status abreviado, y aliases para stash pop y rebase interactivo.</p>
<h2>.gitignore global</h2>
<p>Además del .gitignore por repositorio puedes configurar un .gitignore global que aplica a todos tus repositorios. Esto es perfecto para ignorar archivos específicos de tu sistema operativo o editor como .DS_Store en macOS, los archivos de configuración de tu IDE o los archivos de entornos virtuales de Python.</p>
<p>Configúralo con git config --global core.excludesfile seguido de la ruta al archivo de gitignore global.</p>
<h2>Conclusión</h2>
<p>Git es una herramienta con mucha más profundidad de la que aparenta. Conocer estos comandos te permite trabajar de forma más eficiente, mantener un historial limpio y salir de situaciones que de otra forma parecerían sin solución.</p>
<p>La próxima vez que cometas un error en Git, antes de entrar en pánico recuerda que el reflog probablemente tiene lo que necesitas.</p>
<hr />
<p><em>¿Cuál es el comando de Git que más te ha salvado de un desastre? Los comentarios son vuestros.</em></p>
]]></content:encoded></item><item><title><![CDATA[Raspberry Pi: proyectos para empezar y sacarle partido desde el primer día]]></title><description><![CDATA[La Raspberry Pi es probablemente el mejor punto de entrada al mundo del hardware, Linux y los proyectos DIY. Por menos de 60 euros tienes un ordenador completo del tamaño de una tarjeta de crédito que]]></description><link>https://terminalmente.com/raspberry-pi-proyectos-para-empezar-y-sacarle-partido-desde-el-primer-d-a</link><guid isPermaLink="true">https://terminalmente.com/raspberry-pi-proyectos-para-empezar-y-sacarle-partido-desde-el-primer-d-a</guid><category><![CDATA[Raspberry Pi]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Homelab]]></category><category><![CDATA[DIY]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[principiante]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Tue, 31 Mar 2026 19:43:12 GMT</pubDate><content:encoded><![CDATA[<p>La Raspberry Pi es probablemente el mejor punto de entrada al mundo del hardware, Linux y los proyectos DIY. Por menos de 60 euros tienes un ordenador completo del tamaño de una tarjeta de crédito que puedes usar para aprender, experimentar y montar servicios útiles en casa. En este artículo te explico cómo empezar y qué proyectos tienen más valor para alguien interesado en Linux y tecnología.</p>
<h2>¿Qué es la Raspberry Pi?</h2>
<p>La Raspberry Pi es un ordenador de placa única creado por la Raspberry Pi Foundation con el objetivo original de enseñar programación a niños. Con el tiempo se convirtió en la plataforma favorita de makers, entusiastas del hardware y sysadmins que quieren experimentar con hardware real sin gastar mucho dinero.</p>
<p>El modelo actual más popular es la Raspberry Pi 5, que tiene un procesador ARM de cuatro núcleos, entre 4 y 8 GB de RAM según la versión, salida de vídeo HDMI, USB, Ethernet, WiFi y Bluetooth integrados, y los famosos pines GPIO que permiten conectar sensores, LEDs, motores y cualquier componente electrónico que imagines.</p>
<p>El sistema operativo principal es Raspberry Pi OS, una distribución basada en Debian adaptada para el hardware ARM de la Pi. También puedes instalar Ubuntu, Arch Linux ARM, y muchas otras distribuciones.</p>
<h2>Lo que necesitas para empezar</h2>
<p>Además de la Raspberry Pi necesitas una tarjeta microSD de al menos 16 GB, preferiblemente de clase 10 o superior para un rendimiento aceptable. Una tarjeta de mala calidad es la causa número uno de problemas de rendimiento y corrupción de datos en la Pi.</p>
<p>Una fuente de alimentación oficial es muy recomendable. La Pi es sensible a la calidad de la alimentación y una fuente barata puede causar problemas de estabilidad difíciles de diagnosticar.</p>
<p>Para los proyectos de servidor no necesitas pantalla, teclado ni ratón. Puedes configurar la Pi para que tenga SSH habilitado desde el primer arranque y gestionarla completamente desde otro ordenador.</p>
<h2>Instalar el sistema operativo</h2>
<p>La herramienta oficial para instalar el sistema operativo es Raspberry Pi Imager, disponible para Windows, macOS y Linux en <a href="http://raspberrypi.com">raspberrypi.com</a>. Selecciona el sistema operativo que quieres, la tarjeta SD de destino y escribe la imagen.</p>
<p>Lo más útil de Raspberry Pi Imager es la configuración avanzada que puedes abrir antes de escribir la imagen. Aquí puedes configurar el nombre de host, activar SSH, establecer usuario y contraseña, y configurar la red WiFi, todo antes de arrancar la Pi por primera vez. Esto te permite usar la Pi en modo headless, sin pantalla, desde el primer momento.</p>
<h2>Proyecto 1: Pi-hole, el bloqueador de anuncios de toda la red</h2>
<p>Pi-hole es probablemente el proyecto más popular para Raspberry Pi y uno de los más útiles. Es un servidor DNS que bloquea anuncios, rastreadores y dominios maliciosos a nivel de red para todos los dispositivos de tu casa, incluyendo móviles, televisiones y cualquier dispositivo que no admite extensiones de navegador.</p>
<p>La instalación se hace con un script de una sola línea. Tras la instalación configuras el router de tu casa para que use la IP de la Pi como servidor DNS primario, y automáticamente todos los dispositivos de tu red dejan de ver anuncios.</p>
<p>Pi-hole tiene una interfaz web muy completa donde puedes ver estadísticas de consultas DNS en tiempo real, gestionar las listas de bloqueo y hacer excepciones para dominios específicos.</p>
<h2>Proyecto 2: servidor multimedia con Jellyfin</h2>
<p>Jellyfin es un servidor multimedia de código abierto, la alternativa libre a Plex. Te permite centralizar tu colección de películas, series y música en la Pi y acceder a ella desde cualquier dispositivo de tu red o desde internet.</p>
<p>Tiene apps para prácticamente todos los dispositivos: Android, iOS, Apple TV, Roku, televisiones Samsung y LG, y también funciona en el navegador. Detecta automáticamente los metadatos, portadas y sinopsis de tu biblioteca multimedia.</p>
<p>En una Raspberry Pi 4 o 5 puede hacer transcodificación de vídeo por hardware para servir contenido en formatos que tu dispositivo no soporta nativamente.</p>
<h2>Proyecto 3: servidor de archivos con Samba</h2>
<p>Convertir la Pi en un NAS casero es uno de los usos más prácticos. Con Samba puedes compartir un disco duro conectado por USB y acceder a él desde Windows, macOS y Linux como si fuera una carpeta de red.</p>
<p>La instalación de Samba es sencilla con apt y la configuración básica en smb.conf te tarda menos de 10 minutos. Con un disco duro de 2 TB tienes almacenamiento centralizado para toda la familia por menos de 100 euros en total.</p>
<h2>Proyecto 4: laboratorio de aprendizaje</h2>
<p>Una de las mejores formas de usar la Pi si te interesa aprender Linux y sysadmin es como servidor de laboratorio. Puedes instalar y configurar Nginx, practicar con Docker, montar un servidor de Git privado con Gitea, aprender a configurar certificados SSL, practicar con Ansible y en general hacer todo lo que harías en un VPS pero con hardware físico que tienes en casa.</p>
<p>La ventaja frente a una máquina virtual es que es hardware real con una IP en tu red local, lo que añade más realismo a los escenarios de aprendizaje.</p>
<h2>Proyecto 5: estación meteorológica o monitor de sensores</h2>
<p>Los pines GPIO de la Raspberry Pi abren un mundo completamente diferente. Con un sensor de temperatura y humedad DHT22 que cuesta menos de 5 euros puedes crear una estación meteorológica que registre datos y los visualice en Grafana.</p>
<p>Este tipo de proyecto es perfecto para aprender a combinar hardware con software: leer datos del sensor con Python, almacenarlos en una base de datos y visualizarlos con herramientas que ya conoces de otros proyectos.</p>
<h2>Consejos prácticos</h2>
<p>Usa siempre una tarjeta SD de calidad y considera añadir un SSD externo para el sistema operativo si vas a usar la Pi como servidor permanente. Las tarjetas SD tienen un número limitado de escrituras y con una Pi encendida 24/7 pueden fallar en meses.</p>
<p>Configura siempre backups regulares con rsync o con la herramienta de backup de Raspberry Pi OS. Si la tarjeta SD muere sin backup pierdes toda la configuración.</p>
<p>Para proyectos de servidor considera una caja con ventilación o un pequeño disipador para el procesador. La Pi 5 en particular puede calentarse bajo carga sostenida.</p>
<h2>Conclusión</h2>
<p>La Raspberry Pi es una de las mejores inversiones que puedes hacer si quieres aprender Linux, hardware o montar servicios útiles en casa. Los proyectos que hemos visto son solo el principio, la comunidad ha creado miles de proyectos documentados que puedes replicar y adaptar.</p>
<p>Si no tienes una, empieza con la Raspberry Pi 4 de 4 GB que ofrece el mejor equilibrio entre precio y rendimiento para la mayoría de proyectos domésticos.</p>
<hr />
<p><em>¿Ya tienes una Raspberry Pi? ¿Para qué la usas? Los usos creativos de la comunidad siempre me sorprenden.</em></p>
]]></content:encoded></item><item><title><![CDATA[Nginx: configura tu propio servidor web desde cero]]></title><description><![CDATA[Nginx es el servidor web más usado del mundo. Sirve más del 30% de todos los sitios web de internet y es la primera elección de empresas como Netflix, Cloudflare y Airbnb para servir contenido estátic]]></description><link>https://terminalmente.com/nginx-configura-tu-propio-servidor-web-desde-cero</link><guid isPermaLink="true">https://terminalmente.com/nginx-configura-tu-propio-servidor-web-desde-cero</guid><category><![CDATA[nginx]]></category><category><![CDATA[Linux]]></category><category><![CDATA[sysadmin]]></category><category><![CDATA[web servers]]></category><category><![CDATA[SSL]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Tue, 31 Mar 2026 19:41:56 GMT</pubDate><content:encoded><![CDATA[<p>Nginx es el servidor web más usado del mundo. Sirve más del 30% de todos los sitios web de internet y es la primera elección de empresas como Netflix, Cloudflare y Airbnb para servir contenido estático y como proxy inverso. En este artículo te explico cómo instalarlo, configurarlo y poner en marcha tu propio servidor web en Linux.</p>
<h2>¿Qué es Nginx y en qué se diferencia de Apache?</h2>
<p>Nginx nació para resolver un problema específico que tenía Apache: el modelo de proceso por conexión no escalaba bien con muchas conexiones simultáneas. Nginx usa un modelo asíncrono orientado a eventos que le permite manejar miles de conexiones simultáneas con un consumo de memoria mucho menor.</p>
<p>Para contenido estático como archivos HTML, imágenes, CSS y JavaScript, Nginx es significativamente más rápido que Apache. Para aplicaciones dinámicas ambos son comparables, aunque Nginx se usa frecuentemente como proxy inverso delante de un servidor de aplicaciones como Gunicorn, uWSGI o Node.js.</p>
<p>Nginx también destaca como balanceador de carga y como servidor de caché, funcionalidades que lo hacen valioso más allá de simplemente servir archivos.</p>
<h2>Instalar Nginx</h2>
<p>En Ubuntu y Debian Nginx está en los repositorios oficiales y se instala con apt. En Arch con pacman y en Fedora con dnf. También hay un repositorio oficial de Nginx con versiones más actualizadas si necesitas las últimas funcionalidades.</p>
<p>Tras la instalación inicia el servicio y habilítalo para que arranque automáticamente con systemctl. Verifica que está corriendo con systemctl status nginx.</p>
<p>Si tienes el firewall ufw activo necesitas permitir el tráfico HTTP y HTTPS con ufw allow. Nginx registra automáticamente perfiles en ufw durante la instalación.</p>
<p>Abre el navegador y ve a la IP de tu servidor. Deberías ver la página de bienvenida de Nginx.</p>
<h2>La estructura de configuración</h2>
<p>La configuración de Nginx vive en el directorio /etc/nginx. El archivo principal es nginx.conf que contiene la configuración global. Las configuraciones de los sitios virtuales se colocan en el directorio sites-available y se activan creando enlaces simbólicos en sites-enabled.</p>
<p>Esta separación entre available y enabled permite tener configuraciones preparadas que se activan o desactivan fácilmente sin borrar nada.</p>
<p>El archivo nginx.conf incluye al final todos los archivos del directorio sites-enabled, por eso el sistema funciona. La directiva worker_processes controla cuántos procesos worker lanza Nginx, normalmente se pone en auto para que use todos los cores disponibles.</p>
<h2>Configurar un servidor virtual básico</h2>
<p>Para servir un sitio web crea un archivo de configuración en sites-available con el nombre de tu dominio. Un bloque server básico define el puerto donde escucha, el nombre del dominio, el directorio raíz donde están los archivos del sitio y el archivo índice por defecto.</p>
<p>El directorio raíz suele estar en /var/www/nombredeldominio/html. Créalo con mkdir y dale los permisos correctos para que Nginx pueda leerlo.</p>
<p>Activa el sitio creando un enlace simbólico desde sites-available a sites-enabled. Verifica que la configuración no tiene errores con nginx -t, que es un comando muy útil que deberías ejecutar siempre antes de recargar. Si todo está correcto recarga Nginx con systemctl reload nginx.</p>
<h2>SSL con Let's Encrypt y Certbot</h2>
<p>Un sitio web sin HTTPS no es aceptable hoy en día. Let's Encrypt ofrece certificados SSL gratuitos y Certbot automatiza todo el proceso de obtención y renovación.</p>
<p>Instala Certbot y el plugin de Nginx con apt. Ejecuta certbot --nginx con el flag -d seguido de tu dominio. Certbot se encarga de obtener el certificado, modificar tu configuración de Nginx para usar SSL y configurar la redirección de HTTP a HTTPS automáticamente.</p>
<p>Certbot también configura la renovación automática del certificado. Los certificados de Let's Encrypt caducan cada 90 días pero Certbot los renueva automáticamente antes de que expiren. Puedes verificar que el temporizador de renovación está activo con systemctl status certbot.timer.</p>
<h2>Proxy inverso</h2>
<p>Una de las configuraciones más comunes de Nginx es como proxy inverso delante de una aplicación. Por ejemplo si tienes una aplicación Node.js corriendo en el puerto 3000 pero quieres servirla en el puerto 80 con tu dominio, Nginx actúa como intermediario.</p>
<p>En el bloque server añades una location que redirige todas las peticiones a la aplicación usando la directiva proxy_pass con la dirección local donde corre la aplicación. Nginx también añade cabeceras importantes para que la aplicación sepa la IP real del cliente y el protocolo original.</p>
<h2>Optimizaciones importantes</h2>
<p>Habilitar la compresión gzip reduce significativamente el tamaño de las respuestas de texto. En el archivo nginx.conf activa gzip on y especifica los tipos de contenido que quieres comprimir. Esto mejora notablemente los tiempos de carga especialmente en conexiones lentas.</p>
<p>La caché del navegador para archivos estáticos evita descargas innecesarias. Con la directiva expires en el bloque location de archivos estáticos le dices al navegador cuánto tiempo puede cachear cada tipo de archivo. Las imágenes y fuentes que cambian raramente pueden tener una caducidad de un año, mientras que el CSS y JavaScript depende de tu flujo de despliegue.</p>
<p>Los logs de Nginx van por defecto a /var/log/nginx/access.log y error.log. Revísalos cuando algo no funciona, son muy detallados y generalmente te dicen exactamente qué está fallando.</p>
<h2>Conclusión</h2>
<p>Nginx es una herramienta fundamental para cualquier persona que administre servidores web. Su combinación de alto rendimiento, configuración flexible y la facilidad de configurar SSL con Certbot lo hacen la opción predeterminada para la mayoría de proyectos.</p>
<p>Una vez que tienes el servidor básico funcionando puedes explorar funcionalidades más avanzadas como el balanceo de carga, la caché de proxy y la limitación de velocidad de peticiones.</p>
<hr />
<p><em>¿Usas Nginx, Apache o Caddy? Caddy en particular está ganando popularidad por su configuración automática de HTTPS.</em></p>
]]></content:encoded></item><item><title><![CDATA[Tmux: el multiplexor de terminal que cambia tu forma de trabajar]]></title><description><![CDATA[Si trabajas con servidores remotos o simplemente pasas mucho tiempo en la terminal, tmux es probablemente la herramienta que más va a mejorar tu flujo de trabajo. Te permite dividir la terminal en múl]]></description><link>https://terminalmente.com/tmux-el-multiplexor-de-terminal-que-cambia-tu-forma-de-trabajar</link><guid isPermaLink="true">https://terminalmente.com/tmux-el-multiplexor-de-terminal-que-cambia-tu-forma-de-trabajar</guid><category><![CDATA[tmux]]></category><category><![CDATA[Linux]]></category><category><![CDATA[terminal]]></category><category><![CDATA[Productivity]]></category><category><![CDATA[sysadmin]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Tue, 31 Mar 2026 19:40:27 GMT</pubDate><content:encoded><![CDATA[<p>Si trabajas con servidores remotos o simplemente pasas mucho tiempo en la terminal, tmux es probablemente la herramienta que más va a mejorar tu flujo de trabajo. Te permite dividir la terminal en múltiples paneles, mantener sesiones activas aunque pierdas la conexión SSH y cambiar entre proyectos con un solo atajo. En este artículo te explico todo lo que necesitas saber para dominarlo.</p>
<h2>¿Qué es tmux y por qué usarlo?</h2>
<p>Tmux es un multiplexor de terminal, lo que significa que te permite tener múltiples terminales dentro de una sola ventana. Pero su característica más valiosa no es esa sino la persistencia de sesiones.</p>
<p>Cuando te conectas a un servidor por SSH y ejecutas un proceso largo, si la conexión se cae el proceso muere. Con tmux el proceso sigue corriendo en el servidor aunque te desconectes. Cuando vuelves a conectarte simplemente te reenganchas a la sesión existente y la encuentras exactamente como la dejaste.</p>
<p>Esto es especialmente valioso cuando estás ejecutando compilaciones largas, migraciones de bases de datos, descargas o cualquier proceso que no puede interrumpirse.</p>
<h2>La jerarquía de tmux</h2>
<p>Tmux organiza el trabajo en tres niveles. Las sesiones son el nivel más alto y representan un contexto de trabajo completo. Puedes tener una sesión para el proyecto A, otra para el proyecto B y cambiar entre ellas instantáneamente.</p>
<p>Dentro de cada sesión tienes ventanas, que son como pestañas en un navegador. Cada ventana ocupa toda la pantalla y puede contener uno o varios paneles.</p>
<p>Los paneles son divisiones dentro de una ventana. Puedes dividir la ventana horizontalmente o verticalmente para ver varias terminales al mismo tiempo. Es perfecto para ver logs en un panel mientras ejecutas comandos en otro.</p>
<h2>Instalar tmux</h2>
<p>Tmux está en los repositorios de todas las distribuciones principales. En Ubuntu y Debian se instala con apt, en Arch con pacman, en Fedora con dnf. En macOS está disponible con Homebrew.</p>
<h2>El prefijo: la clave para entender tmux</h2>
<p>Todos los atajos de tmux se activan primero pulsando el prefijo, que por defecto es Ctrl+b. Esto significa que para ejecutar cualquier comando de tmux primero pulsas Ctrl+b, sueltas, y luego pulsas la tecla del comando.</p>
<p>Al principio esto resulta un poco incómodo pero se automatiza rápido. Muchos usuarios cambian el prefijo a Ctrl+a porque es más cómodo de pulsar, igual que en Screen que es el multiplexor más antiguo.</p>
<h2>Comandos esenciales</h2>
<p>Para crear una nueva sesión ejecuta tmux new-session desde la terminal, o simplemente tmux. Para darle un nombre descriptivo añade el flag -s seguido del nombre.</p>
<p>Para desengancharte de la sesión actual sin cerrarla pulsa el prefijo y luego d de detach. La sesión sigue activa en segundo plano. Para volver a engancharte usa tmux attach o tmux attach -t seguido del nombre de la sesión.</p>
<p>Para listar todas las sesiones activas usa tmux list-sessions o el atajo prefijo seguido de s que abre un menú interactivo donde puedes seleccionar la sesión.</p>
<h2>Gestionar ventanas</h2>
<p>Con el prefijo y c creas una nueva ventana. Con el prefijo y n pasas a la siguiente ventana y con p a la anterior. Con el prefijo y un número saltas directamente a esa ventana. Con el prefijo y w abres un menú con todas las ventanas de la sesión actual.</p>
<p>Para renombrar la ventana actual usa el prefijo y la coma. Dar nombres descriptivos a las ventanas hace mucho más fácil navegar entre ellas.</p>
<h2>Gestionar paneles</h2>
<p>Con el prefijo y el porcentaje divides el panel actual verticalmente en dos columnas. Con el prefijo y la comilla doble lo divides horizontalmente en dos filas. Para moverte entre paneles usa el prefijo y las flechas del cursor.</p>
<p>Para cerrar el panel actual simplemente escribe exit o pulsa Ctrl+d. Para hacer zoom en un panel y que ocupe toda la ventana usa el prefijo y z. Vuelve a pulsarlo para restaurar el tamaño original.</p>
<h2>Copiar y pegar en tmux</h2>
<p>Tmux tiene su propio modo de copia que funciona de forma similar a vi. Con el prefijo y corchete de apertura entras en el modo copia. Puedes moverte con las teclas de vi, seleccionar texto con espacio y copiarlo con Enter. Para pegar usa el prefijo y corchete de cierre.</p>
<h2>Personalizar tmux con .tmux.conf</h2>
<p>La configuración de tmux vive en el archivo .tmux.conf en tu directorio home. Algunas personalizaciones muy recomendadas son cambiar el prefijo a Ctrl+a si lo encuentras más cómodo, habilitar el soporte para ratón para poder cambiar de panel haciendo clic y redimensionarlos arrastrando, activar el historial de 10000 líneas en vez del predeterminado que es bastante corto, y cambiar la numeración de ventanas para que empiece en 1 en vez de 0.</p>
<h2>TPM: gestor de plugins para tmux</h2>
<p>TPM es el gestor de plugins oficial de tmux. Se instala clonando su repositorio de GitHub en la carpeta de plugins de tmux y añadiendo unas líneas al .tmux.conf.</p>
<p>Los plugins más útiles son tmux-resurrect que guarda y restaura sesiones entre reinicios del sistema, tmux-continuum que automatiza ese guardado cada cierto tiempo, y tmux-sensible que aplica un conjunto de configuraciones razonables por defecto.</p>
<h2>Conclusión</h2>
<p>Tmux es una de esas herramientas que parece compleja al principio pero que con una semana de uso diario se vuelve indispensable. La persistencia de sesiones por sí sola ya justifica aprenderlo si trabajas con servidores remotos.</p>
<p>Empieza usando solo las sesiones y las ventanas básicas, y añade los paneles y personalizaciones según los vayas necesitando.</p>
<hr />
<p><em>¿Usas tmux, Screen o alguna otra herramienta para gestionar terminales? Cuéntame tu setup.</em></p>
]]></content:encoded></item><item><title><![CDATA[Ansible: automatiza la configuración de tus servidores]]></title><description><![CDATA[Imagina que tienes que configurar 10 servidores exactamente igual: instalar paquetes, crear usuarios, configurar el firewall, desplegar aplicaciones. Hacerlo manualmente en cada uno es tedioso, propen]]></description><link>https://terminalmente.com/ansible-automatiza-la-configuraci-n-de-tus-servidores</link><guid isPermaLink="true">https://terminalmente.com/ansible-automatiza-la-configuraci-n-de-tus-servidores</guid><category><![CDATA[ansible]]></category><category><![CDATA[Linux]]></category><category><![CDATA[sysadmin]]></category><category><![CDATA[Devops]]></category><category><![CDATA[automatization]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Tue, 31 Mar 2026 19:39:17 GMT</pubDate><content:encoded><![CDATA[<p>Imagina que tienes que configurar 10 servidores exactamente igual: instalar paquetes, crear usuarios, configurar el firewall, desplegar aplicaciones. Hacerlo manualmente en cada uno es tedioso, propenso a errores y no escala. Ansible resuelve esto de forma elegante y sin agentes.</p>
<h2>¿Qué es Ansible?</h2>
<p>Ansible es una herramienta de automatización de infraestructura desarrollada por Red Hat. Te permite definir el estado deseado de tus servidores en archivos YAML llamados playbooks y ejecutarlos para que Ansible se encargue de llevar los servidores a ese estado.</p>
<p>Lo que distingue a Ansible de otras herramientas similares como Puppet o Chef es que no necesita ningún agente instalado en los servidores que gestiona. Se conecta por SSH, ejecuta los módulos necesarios y se desconecta. Si tienes SSH funcionando ya tienes todo lo que necesitas para empezar con Ansible.</p>
<p>Ansible es también idempotente, lo que significa que puedes ejecutar el mismo playbook varias veces y el resultado siempre será el mismo. Si un paquete ya está instalado Ansible no lo reinstala, simplemente verifica que está ahí y continúa.</p>
<h2>Conceptos fundamentales</h2>
<p>El inventario es la lista de servidores que Ansible va a gestionar. Puede ser un archivo de texto simple con las IPs o nombres de host, o un inventario dinámico que consulta una API para obtener la lista de servidores en tiempo real.</p>
<p>Un módulo es una unidad de trabajo que Ansible sabe ejecutar. Hay módulos para instalar paquetes, copiar archivos, gestionar servicios, crear usuarios, configurar el firewall y cientos de cosas más. Ansible incluye más de 3000 módulos en su instalación estándar.</p>
<p>Una tarea es la aplicación de un módulo con parámetros específicos. Un playbook es un archivo YAML que contiene una o más plays, donde cada play define en qué hosts se ejecuta y qué lista de tareas se llevan a cabo. Un rol es una forma de organizar playbooks complejos en una estructura reutilizable.</p>
<h2>Instalar Ansible</h2>
<p>Ansible solo necesita estar instalado en la máquina de control, que es desde donde lanzas los playbooks. Los servidores gestionados solo necesitan Python y SSH.</p>
<p>En Ubuntu y Debian instala Ansible con apt después de añadir el repositorio oficial PPA. En Arch Linux está disponible directamente con pacman. En Fedora con dnf. También puedes instalarlo con pip en cualquier sistema que tenga Python.</p>
<h2>Tu primer inventario y playbook</h2>
<p>Crea un archivo llamado inventario con los grupos de servidores entre corchetes y las IPs debajo de cada grupo. Para verificar la conexión usa el módulo ping con el comando ansible all seguido del inventario y el módulo.</p>
<p>Un playbook básico indica en qué hosts se ejecuta, si necesita privilegios con become, y la lista de tareas. Cada tarea tiene un nombre descriptivo y usa un módulo con sus parámetros. Ejecutas el playbook con ansible-playbook seguido del archivo y el inventario.</p>
<h2>Módulos esenciales</h2>
<p>El módulo apt gestiona paquetes en Debian y Ubuntu. El módulo package funciona en cualquier distribución automáticamente. El módulo copy copia archivos a los servidores remotos. El módulo template hace lo mismo pero procesando el archivo como plantilla Jinja2, útil para generar configuraciones dinámicas con variables.</p>
<p>El módulo service gestiona servicios del sistema. El módulo user gestiona usuarios. Los módulos firewalld y ufw gestionan el firewall según la distribución.</p>
<h2>Variables, plantillas y handlers</h2>
<p>Las variables hacen tus playbooks reutilizables. Puedes definirlas en el playbook, en archivos separados, en el inventario a nivel de host o grupo, o pasarlas como argumentos al ejecutar.</p>
<p>Los handlers son tareas especiales que solo se ejecutan cuando son notificados por otra tarea. El caso más común es reiniciar un servicio cuando su configuración cambia. Si la configuración ya era correcta y no hay cambios el handler no se ejecuta, evitando reinicios innecesarios.</p>
<h2>Roles y Ansible Galaxy</h2>
<p>Cuando tus playbooks crecen los roles te ayudan a mantener todo organizado con una estructura de directorios estándar para tareas, handlers, plantillas y variables. Ansible Galaxy es el repositorio de roles de la comunidad donde encontrarás roles para configurar prácticamente cualquier servicio popular, listos para usar.</p>
<h2>Conclusión</h2>
<p>Ansible es una de las herramientas más valiosas para administrar servidores. La inversión en escribir los playbooks se recupera la primera vez que configuras un servidor nuevo en minutos en vez de horas, o cuando aplicas un cambio a 20 servidores a la vez.</p>
<hr />
<p><em>¿Usas Ansible, Puppet, Chef o prefieres scripts de Bash? El debate es eterno.</em></p>
]]></content:encoded></item><item><title><![CDATA[Kali Linux: primeros pasos en hacking ético]]></title><description><![CDATA[Kali Linux es la distribución de referencia en el mundo del hacking ético y la ciberseguridad ofensiva. Si quieres aprender seguridad informática de forma práctica, conocer Kali es prácticamente oblig]]></description><link>https://terminalmente.com/kali-linux-primeros-pasos-en-hacking-tico</link><guid isPermaLink="true">https://terminalmente.com/kali-linux-primeros-pasos-en-hacking-tico</guid><category><![CDATA[Kali Linux]]></category><category><![CDATA[hacking-etico]]></category><category><![CDATA[ethicalhacking]]></category><category><![CDATA[ciberseguridad]]></category><category><![CDATA[pentesting]]></category><category><![CDATA[principiante]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Tue, 24 Mar 2026 17:33:35 GMT</pubDate><content:encoded><![CDATA[<p>Kali Linux es la distribución de referencia en el mundo del hacking ético y la ciberseguridad ofensiva. Si quieres aprender seguridad informática de forma práctica, conocer Kali es prácticamente obligatorio. En este artículo te explico qué es, cómo instalarlo correctamente y las herramientas más importantes con las que debes familiarizarte.</p>
<h2>¿Qué es Kali Linux?</h2>
<p>Kali Linux es una distribución basada en Debian desarrollada y mantenida por Offensive Security, la misma empresa detrás de la certificación OSCP que es el estándar de oro en hacking ético. Viene con más de 600 herramientas de seguridad preinstaladas y organizadas por categorías.</p>
<p>Lo importante es entender para qué sirve Kali: es una plataforma de trabajo para profesionales y estudiantes de seguridad, no un sistema operativo para el uso diario. Está optimizada para tareas de pentesting, análisis forense y auditoría de seguridad, no para navegar por internet o escribir documentos.</p>
<p>Usarla no te convierte automáticamente en hacker. Las herramientas que incluye son poderosas, pero sin conocimiento de lo que estás haciendo son inútiles. Kali es un amplificador de conocimiento, no un sustituto de él.</p>
<h2>Cómo instalar Kali correctamente</h2>
<p>Hay varias formas de usar Kali y elegir la correcta depende de para qué lo quieras usar.</p>
<p>La opción más recomendada para empezar es instalarlo como máquina virtual con VirtualBox o VMware. Esto te permite tener Kali en tu ordenador sin tocar tu sistema principal, puedes hacer snapshots para volver atrás si algo sale mal, y puedes crear redes virtuales para practicar sin riesgo para tu red real.</p>
<p>Offensive Security ofrece imágenes preconfiguradas para VirtualBox y VMware que puedes descargar directamente desde <a href="http://kali.org">kali.org</a>. Solo tienes que importar la imagen y en 5 minutos tienes Kali funcionando.</p>
<p>Si quieres instalarlo en hardware dedicado, una Raspberry Pi es una opción excelente y económica para tener un dispositivo portátil de pentesting. También hay imágenes oficiales de Kali para ARM.</p>
<p>Instalar Kali como sistema principal reemplazando tu sistema operativo habitual no está recomendado para principiantes. Kali no está diseñado para ese uso y te encontrarás con problemas de compatibilidad con software cotidiano.</p>
<h2>Familiarizarse con el entorno</h2>
<p>Kali usa XFCE como entorno de escritorio por defecto desde hace unos años, aunque también hay versiones con GNOME, KDE y otros. La barra lateral izquierda tiene accesos directos a las categorías de herramientas.</p>
<p>El menú de aplicaciones organiza las herramientas por categorías: Information Gathering para reconocimiento, Vulnerability Analysis para análisis de vulnerabilidades, Web Application Analysis para auditoría web, Password Attacks para ataques a contraseñas, Wireless Attacks para redes inalámbricas, y Exploitation Tools para las fases de explotación.</p>
<p>La terminal es tu mejor amiga en Kali. La mayoría de herramientas se usan desde la línea de comandos y no tienen interfaz gráfica.</p>
<h2>Las herramientas más importantes para empezar</h2>
<p>Con más de 600 herramientas disponibles puede resultar abrumador saber por dónde empezar. Estas son las más fundamentales que debes conocer.</p>
<p>Nmap es el escáner de red más usado en el mundo. Te permite descubrir qué hosts están activos en una red, qué puertos tienen abiertos y qué servicios y versiones están corriendo. Es la primera herramienta que se usa en cualquier proceso de reconocimiento. Tiene una interfaz gráfica llamada Zenmap para los que prefieren no usar la terminal.</p>
<p>Metasploit Framework es la plataforma de explotación más conocida. Contiene módulos para explotar cientos de vulnerabilidades conocidas en sistemas y aplicaciones. Tiene su propia interfaz de línea de comandos llamada msfconsole. Es imprescindible aprenderlo para entender cómo funcionan los ataques reales.</p>
<p>Burp Suite es la herramienta estándar para auditoría de aplicaciones web. Actúa como proxy entre tu navegador y la aplicación que estás analizando, permitiéndote interceptar, modificar y repetir peticiones HTTP. La versión Community es gratuita y más que suficiente para aprender.</p>
<p>Wireshark es el analizador de protocolos de red más popular. Te permite capturar todo el tráfico de red y analizarlo en detalle. Es esencial para entender cómo funcionan los protocolos de red y para detectar comunicaciones sospechosas.</p>
<p>John the Ripper y Hashcat son las herramientas de referencia para el cracking de contraseñas. Te permiten atacar hashes de contraseñas usando diccionarios, fuerza bruta o reglas de mutación.</p>
<h2>Dónde practicar legalmente</h2>
<p>Tener Kali instalado no te da permiso para escanear o atacar sistemas que no son tuyos. Hacer eso es ilegal en prácticamente todos los países independientemente de tus intenciones.</p>
<p>La forma correcta de practicar es usando entornos diseñados para ello. Metasploitable es una máquina virtual deliberadamente vulnerable creada por Rapid7, la empresa detrás de Metasploit, específicamente para practicar. Puedes descargarla gratis y montarla en tu red virtual junto a Kali.</p>
<p>HackTheBox y TryHackMe como mencionamos en el artículo sobre CTF tienen máquinas virtuales vulnerables en la nube donde puedes practicar de forma completamente legal. Son los mejores lugares para aprender con escenarios reales.</p>
<p>También puedes crear tu propio laboratorio de práctica con Proxmox o VirtualBox montando máquinas virtuales vulnerables en una red privada aislada.</p>
<h2>La ética del hacking</h2>
<p>El hacking ético tiene una regla fundamental: solo atacas lo que tienes permiso explícito para atacar. Esto significa tus propios sistemas, laboratorios de práctica diseñados para ello, o sistemas de terceros con un contrato de pentesting firmado.</p>
<p>Las consecuencias legales de acceder a sistemas sin autorización son serias en todos los países. En España el Código Penal tipifica el acceso no autorizado a sistemas informáticos con penas de hasta dos años de prisión.</p>
<p>Aprende, practica, certifícate. Pero siempre dentro del marco legal.</p>
<h2>Conclusión</h2>
<p>Kali Linux es una herramienta extraordinaria para aprender ciberseguridad ofensiva. La cantidad de conocimiento que puedes adquirir practicando con sus herramientas en entornos seguros es enorme.</p>
<p>El camino recomendado es instalar Kali como máquina virtual, familiarizarte con las herramientas básicas usando la documentación oficial, y practicar en plataformas como HackTheBox o TryHackMe donde tienes objetivos legales y documentación para aprender.</p>
<p>La certificación OSCP de Offensive Security es el objetivo profesional más reconocido en el sector si quieres dedicarte al pentesting. Kali es el punto de partida.</p>
<hr />
<p><em>¿Estás empezando en ciberseguridad? ¿Qué herramienta de Kali te parece más interesante aprender primero?</em></p>
]]></content:encoded></item><item><title><![CDATA[GPG: cifra tus archivos y comunicaciones como un profesional]]></title><description><![CDATA[En un mundo donde las filtraciones de datos son noticia habitual, saber cifrar tus archivos y comunicaciones no es paranoia, es higiene digital básica. GPG es la herramienta de referencia para esto y ]]></description><link>https://terminalmente.com/gpg-cifra-tus-archivos-y-comunicaciones-como-un-profesional</link><guid isPermaLink="true">https://terminalmente.com/gpg-cifra-tus-archivos-y-comunicaciones-como-un-profesional</guid><category><![CDATA[gpg]]></category><category><![CDATA[ciberseguridad]]></category><category><![CDATA[Privacidad]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Cryptography]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Tue, 24 Mar 2026 17:31:54 GMT</pubDate><content:encoded><![CDATA[<p>En un mundo donde las filtraciones de datos son noticia habitual, saber cifrar tus archivos y comunicaciones no es paranoia, es higiene digital básica. GPG es la herramienta de referencia para esto y en este artículo te explico cómo funciona y cómo usarla en el día a día.</p>
<h2>¿Qué es GPG?</h2>
<p>GPG son las siglas de GNU Privacy Guard, una implementación libre del estándar OpenPGP. Es la herramienta que usan periodistas para proteger sus fuentes, desarrolladores para firmar sus commits de Git, y cualquier persona que necesite cifrar comunicaciones o archivos de forma seria.</p>
<p>GPG usa criptografía asimétrica, lo que significa que trabaja con pares de claves. Tienes una clave pública que puedes compartir con todo el mundo y una clave privada que solo tú debes conocer. Lo que se cifra con tu clave pública solo se puede descifrar con tu clave privada, y viceversa.</p>
<p>Esto permite dos cosas fundamentales. El cifrado: alguien que quiera enviarte un mensaje o archivo que solo tú puedas leer lo cifra con tu clave pública. Y la firma digital: puedes firmar un archivo con tu clave privada para que cualquiera pueda verificar que fue creado por ti y no ha sido modificado.</p>
<h2>Instalar GPG</h2>
<p>GPG viene preinstalado en la mayoría de distribuciones Linux. Para verificarlo ejecuta gpg --version en la terminal. Si no está instalado, en Ubuntu y Debian se instala con apt, en Arch con pacman y en Fedora con dnf.</p>
<h2>Generar tu par de claves</h2>
<p>El primer paso es generar tu par de claves con el comando gpg --full-generate-key. El asistente interactivo te hará varias preguntas.</p>
<p>El algoritmo recomendado actualmente es ED25519 para la clave principal de firma y CV25519 para la subclave de cifrado. Son algoritmos de curva elíptica modernos que ofrecen una seguridad equivalente a RSA-4096 pero con claves mucho más pequeñas y operaciones más rápidas.</p>
<p>Para la caducidad de la clave te recomiendo poner un año. Puede parecer molesto tener que renovarla, pero si alguna vez pierdes el control de tu clave privada, la caducidad limita el daño. Siempre puedes extender la caducidad de una clave existente antes de que expire.</p>
<p>El nombre y el correo electrónico que introduzcas serán públicos y formarán parte de tu identidad en GPG. Elige un correo que uses realmente.</p>
<p>La contraseña de la clave privada es crucial. Protege tu clave privada de forma que aunque alguien obtenga el archivo de tu clave no pueda usarla sin la contraseña. Usa una contraseña larga y única que no uses en ningún otro sitio.</p>
<h2>Exportar y compartir tu clave pública</h2>
<p>Para que otros puedan enviarte mensajes cifrados o verificar tus firmas necesitan tu clave pública. Puedes exportarla a un archivo con gpg --export en formato ASCII usando el flag --armor, que produce un texto legible en vez de datos binarios.</p>
<p>También puedes subirla a un servidor de claves público como <a href="http://keys.openpgp.org">keys.openpgp.org</a> para que cualquiera pueda encontrarla fácilmente buscando tu nombre o correo. El comando gpg --keyserver con la URL del servidor y --send-keys seguido del ID de tu clave lo hace automáticamente.</p>
<h2>Cifrar y descifrar archivos</h2>
<p>Para cifrar un archivo para que solo una persona específica pueda abrirlo necesitas su clave pública importada en tu llavero. El comando gpg --encrypt con el flag --recipient seguido del correo del destinatario y el nombre del archivo crea un archivo cifrado con extensión .gpg.</p>
<p>Para descifrar un archivo cifrado para ti usa gpg --decrypt. GPG automáticamente usa tu clave privada y te pide la contraseña si es necesario.</p>
<p>También puedes cifrar un archivo para ti mismo usando tu propia clave pública como destinatario. Esto es útil para guardar archivos sensibles como contraseñas de bases de datos, claves de API o documentos privados de forma que estén cifrados en disco.</p>
<h2>Firmar archivos y verificar firmas</h2>
<p>Firmar un archivo con GPG crea una prueba criptográfica de que ese archivo fue creado por el titular de esa clave y no ha sido modificado desde entonces. Muchos proyectos de software open source firman sus releases para que puedas verificar que descargaste el binario oficial y no uno modificado.</p>
<p>El comando gpg --sign crea un archivo firmado. Para una firma separada del archivo original usa --detach-sign, que crea un archivo .sig independiente.</p>
<p>Para verificar una firma usa gpg --verify con el archivo de firma y el archivo original. GPG te dirá si la firma es válida y qué clave la creó.</p>
<h2>Firmar commits de Git con GPG</h2>
<p>GitHub, GitLab y otros servicios soportan la verificación de commits firmados con GPG. Cuando configuras Git para usar tu clave GPG, cada commit que haces lleva tu firma digital, lo que permite a cualquiera verificar que ese commit fue realmente tuyo.</p>
<p>Para configurarlo necesitas decirle a Git qué clave usar con git config --global user.signingkey seguido del ID de tu clave, y activar la firma automática de commits con git config --global commit.gpgsign true.</p>
<p>En GitHub puedes añadir tu clave pública GPG en la configuración de tu cuenta y los commits firmados aparecerán con una insignia verde de "Verified".</p>
<h2>Hacer backup de tu clave privada</h2>
<p>Perder tu clave privada significa perder acceso a todos los mensajes y archivos cifrados para esa clave. Haz backup de ella en un lugar seguro como un USB cifrado guardado físicamente en un sitio seguro.</p>
<p>Exporta la clave privada con gpg --export-secret-keys y guarda el resultado. También genera un certificado de revocación con gpg --gen-revoke por si alguna vez necesitas invalidar la clave en caso de que la comprometan.</p>
<h2>Conclusión</h2>
<p>GPG tiene una curva de aprendizaje inicial que puede resultar frustrante, pero los conceptos fundamentales son simples: cifras con la clave pública del destinatario, descifras con tu clave privada, firmas con tu clave privada, verificas con la clave pública del firmante.</p>
<p>Una vez que tienes tus claves generadas y entiendes el flujo básico, GPG se convierte en una herramienta de uso diario para cualquier persona que se tome en serio su privacidad digital.</p>
<hr />
<p><em>¿Usas GPG en tu flujo de trabajo? ¿Para firmar commits, cifrar archivos o comunicaciones? Cuéntamelo.</em></p>
]]></content:encoded></item><item><title><![CDATA[Monitoriza tu servidor con Grafana y Prometheus]]></title><description><![CDATA[Administrar un servidor sin monitorización es como conducir con los ojos cerrados. Puedes ir bien durante un tiempo, pero cuando algo falla no sabes qué pasó, cuándo empezó ni por qué. Grafana y Prome]]></description><link>https://terminalmente.com/monitoriza-tu-servidor-con-grafana-y-prometheus</link><guid isPermaLink="true">https://terminalmente.com/monitoriza-tu-servidor-con-grafana-y-prometheus</guid><category><![CDATA[Grafana]]></category><category><![CDATA[#prometheus]]></category><category><![CDATA[Linux]]></category><category><![CDATA[monitoring]]></category><category><![CDATA[sysadmin]]></category><category><![CDATA[Devops]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Tue, 24 Mar 2026 17:30:29 GMT</pubDate><content:encoded><![CDATA[<p>Administrar un servidor sin monitorización es como conducir con los ojos cerrados. Puedes ir bien durante un tiempo, pero cuando algo falla no sabes qué pasó, cuándo empezó ni por qué. Grafana y Prometheus son el estándar de la industria para monitorización y en este artículo te explico cómo montarlo en tu propio servidor.</p>
<h2>¿Qué son Prometheus y Grafana?</h2>
<p>Prometheus es un sistema de monitorización y base de datos de series temporales. Se encarga de recopilar métricas de tus servidores y aplicaciones a intervalos regulares y almacenarlas. Tiene su propio lenguaje de consulta llamado PromQL que permite hacer preguntas muy precisas sobre tus datos.</p>
<p>Grafana es la herramienta de visualización. Se conecta a Prometheus como fuente de datos y te permite crear dashboards con gráficas, contadores y alertas. La interfaz es muy visual e intuitiva y hay miles de dashboards prediseñados que puedes importar con un clic.</p>
<p>La arquitectura es sencilla: Prometheus hace scraping, es decir, consulta periódicamente unas URLs llamadas endpoints que exponen las métricas en un formato de texto plano. Los exporters son pequeños programas que corren en los servidores que quieres monitorizar y exponen esas métricas.</p>
<h2>Node Exporter: métricas del sistema operativo</h2>
<p>Node Exporter es el exporter oficial para métricas de Linux. Expone cientos de métricas del sistema operativo: uso de CPU por core, uso de memoria, espacio en disco, tráfico de red, temperatura de la CPU, estadísticas de disco y mucho más.</p>
<p>Se instala descargando el binario desde las releases de GitHub del proyecto prometheus/node_exporter. Tras descomprimirlo lo copias a /usr/local/bin y creas un archivo de servicio de systemd para que corra como servicio en segundo plano.</p>
<p>Por defecto Node Exporter escucha en el puerto 9100. Puedes verificar que funciona abriendo en el navegador la dirección IP de tu servidor seguida de :9100/metrics y verás un torrente de métricas en texto plano.</p>
<h2>Instalar Prometheus</h2>
<p>El proceso de instalación de Prometheus es similar al de Node Exporter: descargas el binario desde las releases de GitHub de prometheus/prometheus, lo descompimes, copias los binarios a /usr/local/bin y creas los directorios de configuración y datos.</p>
<p>La configuración de Prometheus vive en el archivo prometheus.yml. La sección global define el intervalo de scraping, que es cada cuánto tiempo Prometheus consulta los endpoints de métricas. 15 segundos es un buen valor para uso general.</p>
<p>La sección scrape_configs define los targets que Prometheus va a monitorizar. Para cada job defines un nombre y la lista de endpoints donde scrapeará las métricas. Para monitorizar el servidor local con Node Exporter el target es localhost:9100.</p>
<p>Prometheus también necesita un servicio de systemd para arrancar automáticamente. Por defecto su interfaz web está disponible en el puerto 9090 donde puedes hacer consultas PromQL directamente y ver el estado de los targets.</p>
<h2>Instalar Grafana</h2>
<p>Grafana tiene repositorios oficiales para las principales distribuciones Linux. En Ubuntu y Debian se añade el repositorio APT de Grafana y se instala con apt. En Fedora y derivados hay un repositorio YUM disponible.</p>
<p>Tras la instalación activas el servicio con systemctl y accedes a la interfaz web en el puerto 3000. Las credenciales por defecto son admin para el usuario y admin para la contraseña. Lo primero que hace Grafana es pedirte que cambies la contraseña.</p>
<h2>Conectar Grafana con Prometheus</h2>
<p>En la interfaz de Grafana ve a Connections, Data Sources y añade Prometheus como fuente de datos. La URL del servidor de Prometheus es <a href="http://localhost:9090">http://localhost:9090</a> si están en la misma máquina. Guarda y verifica la conexión.</p>
<h2>Importar un dashboard</h2>
<p>En vez de crear el dashboard desde cero puedes importar uno ya hecho. El dashboard más popular para Node Exporter es el número 1860 en el repositorio de dashboards de Grafana. Tiene más de 20 millones de descargas y cubre prácticamente todo lo que necesitas para monitorizar un servidor Linux.</p>
<p>Para importarlo ve a Dashboards, Import, y escribe el número 1860. Selecciona Prometheus como fuente de datos y tendrás al instante un dashboard profesional con gráficas de CPU, memoria, disco, red y mucho más.</p>
<h2>Configurar alertas</h2>
<p>Grafana puede enviarte alertas cuando una métrica supera un umbral. Por ejemplo puedes configurar una alerta que te avise por correo o Telegram cuando el uso del disco supera el 80%, cuando la carga del servidor lleva más de 5 minutos por encima de un valor, o cuando un servicio deja de responder.</p>
<p>Para configurar un canal de notificaciones ve a Alerting y Contact Points. Grafana soporta correo electrónico, Slack, Telegram, PagerDuty y muchos más. Una vez configurado el canal puedes añadir reglas de alerta a cualquier panel del dashboard.</p>
<h2>Monitorizar más servicios</h2>
<p>Una vez que tienes el stack básico funcionando puedes expandirlo con más exporters. Hay exporters para prácticamente cualquier servicio: MySQL Exporter para bases de datos MySQL y MariaDB, Nginx Exporter para el servidor web, Blackbox Exporter para verificar que URLs externas están respondiendo, y cAdvisor para monitorizar contenedores Docker.</p>
<h2>Conclusión</h2>
<p>Grafana y Prometheus son herramientas que usan empresas como Google, Netflix y Uber para monitorizar sus infraestructuras. El hecho de que puedas montarlas en tu servidor de casa de forma gratuita y con un resultado profesional es uno de los grandes placeres del mundo open source.</p>
<p>Una vez que tienes dashboards con datos históricos de tu servidor empiezas a entender cómo se comporta el sistema, detectas problemas antes de que se conviertan en fallos graves y tienes toda la información que necesitas para tomar decisiones de capacidad.</p>
<hr />
<p><em>¿Qué otras herramientas de monitorización usas? Netdata, Zabbix, Checkmk... el ecosistema es enorme.</em></p>
]]></content:encoded></item><item><title><![CDATA[WireGuard: monta tu propia VPN en 10 minutos]]></title><description><![CDATA[Las VPNs comerciales son un negocio basado en la confianza: estás pagando para que otra empresa vea tu tráfico en vez de tu ISP. Si realmente te importa la privacidad, la mejor solución es montar tu p]]></description><link>https://terminalmente.com/wireguard-monta-tu-propia-vpn-en-10-minutos</link><guid isPermaLink="true">https://terminalmente.com/wireguard-monta-tu-propia-vpn-en-10-minutos</guid><category><![CDATA[wireguard]]></category><category><![CDATA[vpn]]></category><category><![CDATA[Linux]]></category><category><![CDATA[ciberseguridad]]></category><category><![CDATA[Privacidad]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[sysadmin]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Tue, 24 Mar 2026 17:29:08 GMT</pubDate><content:encoded><![CDATA[<p>Las VPNs comerciales son un negocio basado en la confianza: estás pagando para que otra empresa vea tu tráfico en vez de tu ISP. Si realmente te importa la privacidad, la mejor solución es montar tu propia VPN. Con WireGuard esto es más sencillo de lo que crees.</p>
<h2>¿Qué es WireGuard?</h2>
<p>WireGuard es un protocolo VPN moderno diseñado con tres objetivos en mente: ser extremadamente sencillo, muy rápido y criptográficamente sólido.</p>
<p>A diferencia de OpenVPN que tiene cientos de miles de líneas de código y una configuración compleja, WireGuard tiene menos de 4000 líneas de código, lo que lo hace mucho más fácil de auditar y mantener. Está integrado directamente en el kernel de Linux desde la versión 5.6, lo que le da un rendimiento excepcional.</p>
<p>En términos prácticos WireGuard es entre 3 y 4 veces más rápido que OpenVPN, establece conexiones en milisegundos, consume menos batería en dispositivos móviles y es significativamente más fácil de configurar.</p>
<h2>Casos de uso para tu VPN propia</h2>
<p>Tener tu propia VPN te permite acceder de forma segura a tu red doméstica desde cualquier lugar, como si estuvieras físicamente en casa. Puedes acceder a tu servidor Proxmox, tu NAS o cualquier servicio de tu red local mientras estás fuera.</p>
<p>También te permite cifrar tu tráfico cuando uses redes WiFi públicas poco fiables, como las de cafeterías o aeropuertos, sin depender de terceros.</p>
<h2>Lo que necesitas</h2>
<p>Para montar un servidor WireGuard necesitas un servidor Linux con IP pública. Las opciones más económicas son un VPS en proveedores como Hetzner, que tiene servidores desde 3-4 euros al mes, o DigitalOcean, Vultr o Linode con precios similares.</p>
<p>Si ya tienes una IP pública en casa y tu router permite redirección de puertos, también puedes usar tu propio hardware doméstico como servidor.</p>
<h2>Instalar WireGuard en el servidor</h2>
<p>En Ubuntu 20.04 o superior WireGuard está en los repositorios oficiales y se instala con apt. En Debian necesitas activar el repositorio backports primero. En Arch Linux está disponible con pacman.</p>
<p>Tras la instalación necesitas generar el par de claves del servidor. WireGuard usa criptografía de curva elíptica y cada peer tiene una clave privada y una clave pública. La clave privada nunca se comparte, la pública sí.</p>
<p>El comando wg genkey genera una clave privada. Para obtener la clave pública correspondiente pasas la clave privada al comando wg pubkey. Guarda ambas en un lugar seguro.</p>
<h2>Configurar el servidor</h2>
<p>La configuración de WireGuard vive en archivos de texto en el directorio /etc/wireguard. El archivo de configuración del servidor se llama convencionalmente wg0.conf.</p>
<p>La sección Interface define la configuración del servidor: la clave privada que generaste, la dirección IP que tendrá el servidor dentro del túnel VPN (convencionalmente algo como 10.0.0.1/24), y el puerto UDP donde escucha WireGuard (el estándar es 51820).</p>
<p>También en la sección Interface necesitas añadir dos comandos PostUp y PostDown que activan el enrutamiento de tráfico cuando la interfaz sube y baja. Estos comandos usan iptables para hacer NAT y permitir que el tráfico de los clientes salga por la interfaz de red del servidor.</p>
<p>Para cada cliente que quieras conectar añades una sección Peer con la clave pública del cliente y la dirección IP que se le asignará dentro del túnel.</p>
<h2>Configurar el cliente</h2>
<p>En el dispositivo cliente el proceso es similar. Instalas WireGuard de la misma forma, generas un par de claves, y creas un archivo de configuración.</p>
<p>La sección Interface del cliente tiene su clave privada y su dirección IP dentro del túnel. La sección Peer apunta al servidor con su clave pública, la dirección IP pública del servidor y el puerto, y el parámetro AllowedIPs que define qué tráfico va por el túnel. Si pones 0.0.0.0/0 todo el tráfico va por la VPN. Si pones solo la subred del servidor, solo el tráfico hacia tu red local va por el túnel.</p>
<h2>Activar y gestionar la VPN</h2>
<p>Para activar la interfaz WireGuard usa el comando wg-quick up seguido del nombre de la interfaz, que coincide con el nombre del archivo de configuración sin la extensión. Para desactivarla usa wg-quick down.</p>
<p>Para que WireGuard arranque automáticamente al iniciar el sistema usa systemctl enable con el servicio wg-quick@ seguido del nombre de la interfaz.</p>
<p>El comando wg show te muestra el estado actual de todas las interfaces WireGuard, incluyendo los peers conectados, cuándo fue la última vez que se vio tráfico y cuántos datos se han transferido.</p>
<h2>Añadir clientes móviles</h2>
<p>WireGuard tiene aplicaciones oficiales para Android e iOS que puedes descargar gratuitamente. La forma más cómoda de configurarlos es generar un código QR desde el servidor con el comando qrencode aplicado al archivo de configuración del cliente. La app escanea el QR y la configuración queda lista al instante.</p>
<h2>Seguridad adicional</h2>
<p>Asegúrate de que el firewall de tu servidor solo permite el puerto UDP de WireGuard desde internet, además de SSH. Todo lo demás debería estar bloqueado. Si usas ufw el comando ufw allow con el número de puerto y el protocolo UDP es suficiente.</p>
<p>También es importante hacer backup de las claves privadas. Si pierdes la clave privada del servidor tendrás que regenerar las claves de todos los clientes también.</p>
<h2>Conclusión</h2>
<p>WireGuard es la opción más sencilla, rápida y moderna para montar tu propia VPN. La configuración inicial lleva menos de una hora y el resultado es una conexión privada que controlas completamente tú, sin depender de ningún proveedor comercial.</p>
<p>Una vez que tienes la VPN funcionando puedes acceder a todos los servicios de tu red doméstica desde cualquier lugar del mundo como si estuvieras en casa.</p>
<hr />
<p><em>¿Usas alguna VPN comercial o ya tienes la tuya propia? Cuéntame tu setup en los comentarios.</em></p>
]]></content:encoded></item><item><title><![CDATA[Neovim: el editor de texto que cambia la forma en que programas]]></title><description><![CDATA[Hay dos tipos de programadores: los que usan Neovim y los que todavía no lo han probado. Es una broma, claro, pero hay algo de verdad en que una vez que te acostumbras a editar texto con los movimient]]></description><link>https://terminalmente.com/neovim-el-editor-de-texto-que-cambia-la-forma-en-que-programas</link><guid isPermaLink="true">https://terminalmente.com/neovim-el-editor-de-texto-que-cambia-la-forma-en-que-programas</guid><category><![CDATA[neovim]]></category><category><![CDATA[vim]]></category><category><![CDATA[Linux]]></category><category><![CDATA[editor]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[Programación]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Tue, 24 Mar 2026 17:27:35 GMT</pubDate><content:encoded><![CDATA[<p>Hay dos tipos de programadores: los que usan Neovim y los que todavía no lo han probado. Es una broma, claro, pero hay algo de verdad en que una vez que te acostumbras a editar texto con los movimientos de Vim, volver a cualquier otro editor se siente torpe e ineficiente. En este artículo te explico qué hace especial a Neovim y cómo empezar sin volverse loco.</p>
<h2>¿Por qué Neovim en vez de VS Code?</h2>
<p>VS Code es un editor excelente y no hay nada malo en usarlo. Pero Neovim ofrece algo diferente: una filosofía de edición basada en el teclado que, una vez dominada, hace que escribir y editar código sea significativamente más rápido porque nunca tienes que mover la mano al ratón.</p>
<p>Neovim es un fork moderno de Vim que añade soporte nativo para Lua como lenguaje de configuración, un servidor de lenguaje integrado para autocompletado e intellisense, soporte para plugins modernos escritos en Lua, y una arquitectura asíncrona que lo hace mucho más rápido que el Vim original.</p>
<p>Además consume muy pocos recursos, funciona perfectamente en SSH sin ninguna configuración adicional, y hay algo innegablemente satisfactorio en editar archivos directamente en el servidor remoto con la misma configuración y atajos que usas localmente.</p>
<h2>El concepto de modos: la clave para entender Vim</h2>
<p>Lo que confunde a todo el mundo cuando abre Vim por primera vez es que no puedes escribir directamente. Esto es porque Vim y Neovim tienen varios modos de operación.</p>
<p>El modo Normal es el modo por defecto al que vuelves siempre con la tecla Escape. En este modo las teclas son comandos de navegación y edición, no caracteres. Es el modo donde pasas más tiempo.</p>
<p>El modo Insert es donde escribes texto normal. Entras en él pulsando i para insertar antes del cursor, a para insertar después, o para abrir una línea nueva debajo, entre otros.</p>
<p>El modo Visual te permite seleccionar texto. Con v seleccionas carácter a carácter, con V seleccionas líneas completas y con Ctrl+V seleccionas bloques rectangulares.</p>
<p>El modo Command se activa con el carácter dos puntos y te permite ejecutar comandos como guardar el archivo, salir, buscar y reemplazar, y muchas cosas más.</p>
<h2>Los comandos básicos para sobrevivir</h2>
<p>Antes de configurar nada necesitas conocer los comandos mínimos para moverte y editar. En modo Normal las teclas h, j, k, l mueven el cursor izquierda, abajo, arriba y derecha respectivamente. w salta al inicio de la siguiente palabra, b vuelve al inicio de la palabra anterior, 0 va al inicio de la línea y $ va al final.</p>
<p>Para editar, x elimina el carácter bajo el cursor, dd elimina la línea completa, yy copia la línea y p la pega después del cursor. u deshace el último cambio y Ctrl+r lo rehace.</p>
<p>Para guardar y salir en modo Command escribes :w para guardar, :q para salir, :wq para guardar y salir, y :q! para salir sin guardar.</p>
<p>Con estos comandos ya puedes sobrevivir. El resto llega con la práctica.</p>
<h2>Instalar Neovim</h2>
<p>En Ubuntu y Debian la versión de los repositorios oficiales suele estar desactualizada. La forma recomendada es descargar el binario precompilado directamente desde las releases del repositorio de GitHub de Neovim, o añadir el PPA oficial para tener siempre la última versión estable.</p>
<p>En Arch Linux Neovim está en los repositorios oficiales y siempre está actualizado. En Fedora también está disponible con dnf.</p>
<p>Verifica la instalación ejecutando nvim --version. Deberías ver algo como NVIM v0.10 o superior.</p>
<h2>Configuración básica con Lua</h2>
<p>La configuración de Neovim vive en el archivo init.lua dentro de la carpeta ~/.config/nvim. Si no existe, créala.</p>
<p>Una configuración mínima pero funcional debería establecer algunas opciones básicas: mostrar los números de línea, usar espacios en vez de tabulaciones, establecer el tamaño de la indentación, activar el resaltado de la línea actual, habilitar la búsqueda incremental que resalta los resultados mientras escribes, e ignorar mayúsculas y minúsculas en las búsquedas a menos que uses alguna mayúscula en el patrón.</p>
<p>Con estas opciones básicas ya tienes un editor mucho más cómodo de usar.</p>
<h2>Gestión de plugins con Lazy.nvim</h2>
<p>Lazy.nvim es el gestor de plugins moderno más popular para Neovim. Se instala copiando un pequeño fragmento de código en tu init.lua que descarga Lazy automáticamente si no está instalado.</p>
<p>Los plugins más recomendados para empezar son nvim-treesitter para resaltado de sintaxis preciso basado en el árbol de sintaxis del lenguaje, telescope.nvim para búsqueda difusa de archivos, texto y comandos, nvim-lspconfig para configurar los servidores de lenguaje que dan autocompletado e información de errores en tiempo real, y un tema de colores que te guste como tokyonight o catppuccin.</p>
<h2>Distribuciones de Neovim: el camino fácil</h2>
<p>Si toda esta configuración te parece abrumadora, existe una alternativa: usar una distribución de Neovim que viene preconfigurada con todo listo para usar.</p>
<p>LazyVim y NvChad son las más populares. Las descargas, las instalas siguiendo sus instrucciones y tienes un editor completamente funcional con autocompletado, explorador de archivos, búsqueda, temas y muchísimo más, sin tener que configurar nada manualmente.</p>
<p>Una vez que te sientas cómodo con el editor puedes explorar la configuración y personalizarla a tu gusto.</p>
<h2>La curva de aprendizaje vale la pena</h2>
<p>Los primeros días con Neovim son frustrantes. Vas lento, tienes que pensar en cada movimiento y sientes que cualquier otro editor sería más eficiente. Eso es completamente normal.</p>
<p>Pero hay un punto de inflexión, generalmente después de una o dos semanas de uso diario, donde los movimientos se vuelven automáticos y empiezas a editar código a una velocidad que antes no creías posible. Los programadores que llevan años con Vim describen ese momento como uno de los hitos más importantes de su carrera.</p>
<p>La recomendación práctica es usar vimtutor, un tutorial interactivo que viene incluido con Neovim, durante 30 minutos al día durante una semana. Después empieza a usar Neovim para proyectos reales aunque vayas lento.</p>
<h2>Conclusión</h2>
<p>Neovim no es para todo el mundo y no tiene que serlo. Pero si valoras la eficiencia, te gusta personalizar tus herramientas al máximo y pasas muchas horas al día editando código o texto, merece la pena dedicarle el tiempo necesario para aprenderlo.</p>
<p>Una vez que lo dominas es muy difícil volver atrás.</p>
<hr />
<p><em>¿Usas Vim, Neovim, Emacs o prefieres un editor más tradicional? El debate eterno sigue abierto en los comentarios.</em></p>
]]></content:encoded></item><item><title><![CDATA[Proxmox: virtualiza tu servidor en casa como un profesional]]></title><description><![CDATA[Si tienes un ordenador viejo cogiendo polvo o quieres montar un homelab serio, Proxmox VE es probablemente la mejor decisión que puedes tomar. Es la plataforma de virtualización que usan empresas de t]]></description><link>https://terminalmente.com/proxmox-virtualiza-tu-servidor-en-casa-como-un-profesional</link><guid isPermaLink="true">https://terminalmente.com/proxmox-virtualiza-tu-servidor-en-casa-como-un-profesional</guid><category><![CDATA[proxmox]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Homelab]]></category><category><![CDATA[virtualization]]></category><category><![CDATA[sysadmin]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Tue, 24 Mar 2026 17:26:06 GMT</pubDate><content:encoded><![CDATA[<p>Si tienes un ordenador viejo cogiendo polvo o quieres montar un homelab serio, Proxmox VE es probablemente la mejor decisión que puedes tomar. Es la plataforma de virtualización que usan empresas de todo el mundo, es completamente gratuita y te permite correr máquinas virtuales y contenedores desde una interfaz web elegante. En este artículo te explico todo lo que necesitas saber para empezar.</p>
<h2>¿Qué es Proxmox VE?</h2>
<p>Proxmox Virtual Environment es una plataforma de virtualización de código abierto basada en Debian que combina dos tecnologías de virtualización en una sola interfaz: KVM para máquinas virtuales completas y LXC para contenedores Linux ligeros.</p>
<p>A diferencia de soluciones como VirtualBox o VMware que se instalan sobre un sistema operativo existente, Proxmox es un hipervisor de tipo 1, lo que significa que se instala directamente en el hardware y es él quien gestiona todos los recursos. Esto lo hace mucho más eficiente y estable para uso permanente.</p>
<p>La interfaz web de Proxmox es uno de sus puntos más fuertes. Desde el navegador puedes crear y gestionar máquinas virtuales, ver el consumo de recursos en tiempo real, hacer snapshots, configurar la red y el almacenamiento, y acceder a la consola de cualquier VM sin necesidad de instalar ningún cliente adicional.</p>
<h2>Requisitos de hardware</h2>
<p>Proxmox puede correr en hardware bastante modesto, pero hay algunas cosas que marcan la diferencia.</p>
<p>La CPU debe soportar virtualización por hardware. En Intel esto se llama VT-x y en AMD se llama AMD-V. Casi cualquier procesador de los últimos 10 años lo soporta, pero verifica que está activado en la BIOS antes de empezar.</p>
<p>La RAM es el recurso más crítico porque cada máquina virtual necesita una cantidad reservada. Con 8 GB puedes correr 2-3 VMs ligeras. Con 16 GB o más tienes margen para experimentar con comodidad.</p>
<p>Para el almacenamiento lo ideal es tener dos discos: uno rápido como un SSD donde instalar Proxmox y almacenar las VMs más activas, y otro disco más grande para backups y almacenamiento de ISOs.</p>
<h2>Instalar Proxmox</h2>
<p>La instalación de Proxmox es sorprendentemente sencilla. Descarga la ISO desde <a href="http://proxmox.com">proxmox.com</a>, grábala en un USB con Rufus o dd, y arranca desde él. El instalador gráfico te guía a través del proceso en unos 10 minutos.</p>
<p>Los puntos importantes durante la instalación son elegir el disco correcto donde instalar el sistema, configurar una IP estática para el servidor porque vas a acceder a él por red, y establecer una contraseña segura para el usuario root.</p>
<p>Tras la instalación accedes a la interfaz web desde otro ordenador de tu red escribiendo la IP del servidor seguida del puerto 8006 en el navegador. El certificado SSL es autofirmado así que el navegador te avisará, pero puedes ignorarlo sin problema en un entorno doméstico.</p>
<h2>Crear tu primera máquina virtual</h2>
<p>Crear una VM en Proxmox es intuitivo desde la interfaz web. El proceso básico es subir una ISO al almacenamiento de Proxmox, hacer clic en "Create VM", asignarle un nombre, seleccionar la ISO, configurar los recursos de CPU y RAM, crear un disco virtual, y arrancarla.</p>
<p>Para la mayoría de casos prácticos en un homelab recomiendo empezar con configuraciones conservadoras: 2 vCPUs y 2 GB de RAM para una VM de servidor Linux ligero, 4 vCPUs y 4 GB para algo más exigente. Siempre puedes cambiar estos valores después con la VM apagada.</p>
<p>El tipo de disco marca mucho el rendimiento. VirtIO es el controlador más rápido para discos y red en máquinas virtuales Linux, úsalo siempre que puedas.</p>
<h2>Contenedores LXC: más ligeros que las VMs</h2>
<p>Para muchos casos de uso en un homelab los contenedores LXC son mejor opción que las máquinas virtuales completas. Consumen menos RAM, arrancan en segundos y comparten el kernel del anfitrión.</p>
<p>Proxmox incluye una funcionalidad para descargar plantillas de contenedores directamente desde la interfaz. Hay plantillas para Ubuntu, Debian, Alpine, Fedora y muchas más. Crear un contenedor a partir de una plantilla tarda literalmente 30 segundos.</p>
<p>La limitación de LXC es que solo puedes correr Linux, y algunas aplicaciones que necesitan acceso directo al hardware o kernels personalizados funcionan mejor en VMs completas.</p>
<h2>Características avanzadas que debes conocer</h2>
<p>Los snapshots son una de las funciones más valiosas de Proxmox. Antes de hacer cambios importantes en una VM puedes tomar un snapshot que captura el estado completo del sistema. Si algo sale mal, revertir al snapshot anterior es cuestión de segundos.</p>
<p>Los backups programados te permiten hacer copias automáticas de tus VMs a horas específicas. Proxmox puede comprimir y verificar los backups automáticamente. Configura backups diarios para las VMs importantes y tendrás tranquilidad.</p>
<p>La gestión de red de Proxmox es muy flexible. Puedes crear bridges de red para que las VMs tengan acceso directo a tu red doméstica, o configurar redes privadas virtuales para aislar grupos de VMs entre sí.</p>
<h2>Ideas para tu homelab con Proxmox</h2>
<p>Con Proxmox en casa puedes montar un laboratorio de ciberseguridad con VMs aisladas para practicar CTFs sin riesgo para tu red principal. Puedes correr servicios como Nextcloud para tu propio almacenamiento en la nube, Pi-hole para bloquear anuncios en toda la red, o un servidor de medios con Jellyfin.</p>
<p>También es una plataforma ideal para aprender tecnologías de empresa como Kubernetes, Ansible o Terraform en un entorno completamente controlado antes de tocarlas en producción.</p>
<h2>Conclusión</h2>
<p>Proxmox transforma cualquier hardware modesto en una plataforma de virtualización profesional. La curva de aprendizaje inicial es pequeña y el valor que obtienes a cambio es enorme, especialmente si te interesa aprender sobre infraestructura, redes o ciberseguridad de forma práctica.</p>
<p>Si tienes un ordenador que no estás usando, instala Proxmox esta semana. Es una de esas decisiones que con el tiempo recordarás como un antes y un después en tu forma de aprender tecnología.</p>
<hr />
<p><em>¿Tienes ya un homelab montado? ¿Con qué hardware? Me encanta ver lo que monta la gente con hardware reciclado.</em></p>
]]></content:encoded></item><item><title><![CDATA[Automatizar tareas con Python en Linux: deja que el sistema trabaje por ti]]></title><description><![CDATA[Una de las cosas más satisfactorias que puedes hacer como usuario de Linux es automatizar las tareas repetitivas que te roban tiempo. Renombrar cientos de archivos, hacer backups, limpiar directorios,]]></description><link>https://terminalmente.com/automatizar-tareas-con-python-en-linux-deja-que-el-sistema-trabaje-por-ti</link><guid isPermaLink="true">https://terminalmente.com/automatizar-tareas-con-python-en-linux-deja-que-el-sistema-trabaje-por-ti</guid><category><![CDATA[Python]]></category><category><![CDATA[Linux]]></category><category><![CDATA[automatization]]></category><category><![CDATA[Scripting]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Tue, 24 Mar 2026 17:24:35 GMT</pubDate><content:encoded><![CDATA[<p>Una de las cosas más satisfactorias que puedes hacer como usuario de Linux es automatizar las tareas repetitivas que te roban tiempo. Renombrar cientos de archivos, hacer backups, limpiar directorios, enviar notificaciones, monitorizar servicios... todo eso se puede delegar a Python con unos pocos scripts. En este artículo te enseño los patrones más útiles.</p>
<h2>Por qué Python para automatización en Linux</h2>
<p>Bash es el lenguaje natural de la terminal Linux y es perfecto para tareas simples. Pero cuando la lógica se complica, cuando necesitas trabajar con APIs, procesar JSON o manejar errores de forma elegante, Python es mucho más cómodo.</p>
<p>Python viene preinstalado en prácticamente todas las distribuciones Linux. Tiene una sintaxis clara y legible, una biblioteca estándar enorme que cubre casi cualquier necesidad, y un ecosistema de paquetes de terceros para todo lo demás.</p>
<h2>Trabajar con archivos y directorios</h2>
<p>El módulo os y el módulo pathlib son los más útiles para trabajar con el sistema de archivos. Pathlib es la opción moderna y más elegante: te permite tratar las rutas como objetos con métodos propios en vez de como simples cadenas de texto.</p>
<p>Con pathlib puedes listar todos los archivos de un directorio filtrando por extensión, crear directorios de forma recursiva sin errores aunque ya existan, renombrar archivos en masa aplicando una transformación al nombre, o mover archivos entre directorios según sus propiedades como la fecha de modificación o el tamaño.</p>
<p>Un caso de uso muy común es organizar automáticamente la carpeta de descargas. Puedes escribir un script que mueva los archivos a subcarpetas según su extensión: todos los PDF a una carpeta de documentos, las imágenes a otra, los archivos de audio a otra. Con pathlib esto son menos de 20 líneas de código.</p>
<h2>Ejecutar comandos del sistema</h2>
<p>El módulo subprocess te permite ejecutar cualquier comando del sistema desde Python y capturar su salida para procesarla. Es más potente que os.system porque te da control total sobre la entrada, salida y errores del proceso.</p>
<p>Con <a href="http://subprocess.run">subprocess.run</a> puedes ejecutar un comando y capturar su salida como texto, verificar si el comando tuvo éxito comprobando el código de retorno, y manejar los errores de forma controlada.</p>
<p>Esto es especialmente útil cuando quieres combinar la potencia de las herramientas de línea de comandos de Linux con la lógica de Python. Por ejemplo, puedes usar subprocess para ejecutar rsync y sincronizar directorios, luego procesar la salida con Python para enviar un informe por correo o guardar un log.</p>
<h2>Programar tareas con cron y Python</h2>
<p>Cron es el programador de tareas de Linux. Te permite ejecutar cualquier script automáticamente a intervalos regulares: cada hora, cada día a las 3 de la madrugada, cada lunes a las 9, o cualquier combinación que necesites.</p>
<p>Para añadir una tarea cron edita el crontab con el comando crontab -e. El formato tiene cinco campos antes del comando: minuto, hora, día del mes, mes y día de la semana. Un asterisco en cualquier campo significa "todos los valores posibles".</p>
<p>Por ejemplo, para ejecutar un script de Python todos los días a las 2 de la madrugada pon 0 2 en los campos de minuto y hora seguido de tres asteriscos y la ruta completa al intérprete de Python y al script. Usar rutas absolutas en el crontab es importante porque cron no tiene las mismas variables de entorno que tu sesión de terminal.</p>
<h2>Automatizar backups</h2>
<p>Un script de backup es uno de los proyectos más útiles que puedes hacer. Con Python y el módulo shutil puedes copiar directorios enteros, comprimir el resultado con tarfile, añadir la fecha al nombre del archivo para tener un historial, y eliminar los backups más antiguos para no llenar el disco.</p>
<p>El módulo tarfile te permite crear archivos tar.gz directamente desde Python sin necesidad de llamar al comando tar del sistema. Puedes añadir archivos y directorios con un método simple, controlar el nivel de compresión y verificar la integridad del archivo resultante.</p>
<p>Combinado con cron tienes un sistema de backups automático completamente funcional en menos de 50 líneas de código.</p>
<h2>Monitorizar el sistema y enviar alertas</h2>
<p>Python tiene acceso a toda la información del sistema a través del módulo psutil, que debes instalar con pip. Con él puedes obtener el uso de CPU, memoria, disco y red en tiempo real.</p>
<p>Un script útil es uno que monitorice el uso del disco y te envíe un correo o una notificación cuando supere un umbral. Para enviar correos desde Python usas el módulo smtplib de la biblioteca estándar junto con email para construir el mensaje. Si prefieres notificaciones más modernas puedes usar la API de Telegram o de Slack, ambas tienen librerías de Python muy sencillas de usar.</p>
<h2>Trabajar con APIs REST</h2>
<p>Muchas tareas de automatización implican interactuar con servicios externos a través de sus APIs. La librería requests hace que esto sea extremadamente sencillo en Python.</p>
<p>Con requests puedes hacer peticiones GET y POST, añadir cabeceras de autenticación, enviar datos en formato JSON y procesar las respuestas. Esto te permite por ejemplo consultar el estado de un servicio externo, publicar automáticamente en redes sociales, o descargar datos de una API para procesarlos localmente.</p>
<h2>Estructura recomendada para tus scripts</h2>
<p>Para que tus scripts de automatización sean mantenibles y fáciles de depurar sigue algunas buenas prácticas. Usa logging en vez de print para registrar lo que hace el script, así puedes revisar qué pasó aunque no estuvieras mirando. Maneja las excepciones de forma específica en vez de capturar todo con un except genérico. Usa argumentos de línea de comandos con argparse para hacer los scripts configurables sin tener que editar el código.</p>
<p>Guarda tus scripts en un directorio como ~/scripts y añade ese directorio al PATH para poder ejecutarlos desde cualquier lugar sin escribir la ruta completa.</p>
<h2>Conclusión</h2>
<p>Python y Linux son una combinación perfecta para la automatización. Con los módulos que hemos visto puedes automatizar prácticamente cualquier tarea repetitiva que se te ocurra. El tiempo que inviertes en escribir un script se recupera la primera vez que lo ejecutas automáticamente.</p>
<p>Empieza por una tarea pequeña que hagas manualmente con frecuencia y escribe un script para automatizarla. La satisfacción de ver cómo el sistema hace el trabajo por ti es muy difícil de describir.</p>
<hr />
<p><em>¿Qué tareas tienes automatizadas en tu sistema? Me interesa saber qué soluciones has encontrado.</em></p>
]]></content:encoded></item><item><title><![CDATA[Docker para principiantes: contenedores desde cero]]></title><description><![CDATA[Si llevas tiempo en el mundo de la tecnología seguro que has oído hablar de Docker. Es una de esas herramientas que al principio parece complicada pero que una vez que la entiendes te preguntas cómo v]]></description><link>https://terminalmente.com/docker-para-principiantes-contenedores-desde-cero</link><guid isPermaLink="true">https://terminalmente.com/docker-para-principiantes-contenedores-desde-cero</guid><category><![CDATA[Docker]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Devops]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[principiante]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Tue, 24 Mar 2026 17:23:06 GMT</pubDate><content:encoded><![CDATA[<p>Si llevas tiempo en el mundo de la tecnología seguro que has oído hablar de Docker. Es una de esas herramientas que al principio parece complicada pero que una vez que la entiendes te preguntas cómo vivías sin ella. En este artículo te explico qué es, por qué deberías aprenderla y cómo empezar desde cero.</p>
<h2>¿Qué es Docker y por qué existe?</h2>
<p>Antes de Docker, desplegar una aplicación era un dolor de cabeza. El clásico problema era que algo funcionaba perfectamente en tu máquina de desarrollo pero fallaba en el servidor de producción porque tenían versiones distintas de Python, dependencias diferentes o configuraciones del sistema que no coincidían.</p>
<p>Docker soluciona esto con el concepto de contenedor. Un contenedor es un paquete que incluye la aplicación y todo lo que necesita para funcionar: las dependencias, las librerías, la configuración y el sistema de archivos. Es como una caja sellada que se comporta exactamente igual en cualquier máquina donde la ejecutes.</p>
<p>La diferencia con una máquina virtual es importante. Una máquina virtual virtualiza hardware completo e incluye un sistema operativo entero, lo que la hace pesada y lenta de arrancar. Un contenedor comparte el kernel del sistema operativo anfitrión y solo incluye lo que la aplicación necesita, haciéndolo mucho más ligero y rápido.</p>
<h2>Conceptos clave que necesitas entender</h2>
<p>Antes de instalar nada es importante entender tres conceptos fundamentales.</p>
<p>Una imagen es una plantilla de solo lectura que define cómo será el contenedor. Es como una receta. Puedes descargar imágenes ya hechas de Docker Hub, el repositorio oficial, o crear las tuyas propias. Hay imágenes oficiales para prácticamente cualquier cosa: Ubuntu, Nginx, PostgreSQL, Node.js, Python y miles más.</p>
<p>Un contenedor es una instancia en ejecución de una imagen. A partir de una misma imagen puedes crear todos los contenedores que quieras. Cada contenedor es independiente y tiene su propio sistema de archivos, red y procesos.</p>
<p>Docker Hub es el registro público donde se almacenan y comparten las imágenes. Es como GitHub pero para imágenes Docker. Cuando haces docker pull o docker run con el nombre de una imagen, Docker la busca ahí automáticamente.</p>
<h2>Instalar Docker</h2>
<p>En Ubuntu y Debian la forma recomendada es añadir el repositorio oficial de Docker y instalarlo desde ahí, no desde los repositorios de la distribución porque suelen tener versiones desactualizadas. La documentación oficial en <a href="http://docs.docker.com">docs.docker.com</a> tiene instrucciones precisas para cada distribución.</p>
<p>En Arch Linux Docker está disponible directamente en los repositorios oficiales con pacman. En Fedora se instala con dnf.</p>
<p>Tras la instalación añade tu usuario al grupo docker para poder ejecutar comandos sin sudo. Esto se hace con el comando usermod -aG docker seguido de tu nombre de usuario. Cierra la sesión y vuelve a abrirla para que el cambio tenga efecto.</p>
<p>Verifica que todo funciona ejecutando docker run hello-world. Este comando descarga una imagen de prueba y ejecuta un contenedor que imprime un mensaje de bienvenida.</p>
<h2>Tus primeros comandos</h2>
<p>Con Docker instalado estos son los comandos que usarás en el día a día.</p>
<p>Para descargar una imagen sin ejecutarla usa docker pull seguido del nombre de la imagen. Por ejemplo docker pull ubuntu descarga la última versión de Ubuntu.</p>
<p>Para ejecutar un contenedor usa docker run. Si la imagen no está descargada Docker la descargará automáticamente. El flag -it te da una terminal interactiva dentro del contenedor, y --rm hace que el contenedor se elimine automáticamente cuando lo cierras.</p>
<p>Para ver los contenedores que están ejecutándose en este momento usa docker ps. Para ver todos los contenedores incluidos los que están parados añade el flag -a.</p>
<p>Para parar un contenedor usa docker stop seguido del nombre o ID del contenedor. Para eliminarlo usa docker rm. Para eliminar una imagen usa docker rmi.</p>
<h2>Un ejemplo práctico: servidor web Nginx</h2>
<p>Vamos a poner en marcha un servidor web Nginx en segundos para que veas la potencia de Docker.</p>
<p>El comando docker run con los flags -d para ejecutar en segundo plano, -p 8080:80 para mapear el puerto 8080 de tu máquina al puerto 80 del contenedor, y el nombre de la imagen nginx, levanta un servidor web completo al instante.</p>
<p>Abre tu navegador y ve a localhost:8080. Verás la página de bienvenida de Nginx. Todo esto sin instalar nada en tu sistema, sin tocar archivos de configuración y sin riesgo de romper nada. Cuando no lo necesites más ejecuta docker stop y docker rm y es como si nunca hubiera existido.</p>
<h2>Dockerfile: crea tus propias imágenes</h2>
<p>La verdadera potencia de Docker está en crear imágenes propias con un Dockerfile. Es un archivo de texto con instrucciones que Docker sigue para construir la imagen.</p>
<p>Un Dockerfile básico empieza con FROM para indicar la imagen base, luego WORKDIR para establecer el directorio de trabajo, COPY para copiar archivos de tu máquina a la imagen, RUN para ejecutar comandos durante la construcción, y CMD para indicar qué comando ejecutar cuando arranque el contenedor.</p>
<p>Una vez tienes el Dockerfile construyes la imagen con docker build -t seguido del nombre que quieras darle y un punto para indicar que el Dockerfile está en el directorio actual.</p>
<h2>Docker Compose: múltiples contenedores</h2>
<p>La mayoría de aplicaciones reales necesitan varios servicios trabajando juntos: una aplicación web, una base de datos, un servidor de caché. Docker Compose te permite definir y gestionar estos múltiples contenedores con un solo archivo YAML.</p>
<p>En el archivo docker-compose.yml defines cada servicio con su imagen, los puertos que expone, las variables de entorno y las dependencias entre servicios. Luego con un solo comando docker compose up -d arrancas todos los servicios a la vez.</p>
<p>Esta es la forma en la que se despliegan la mayoría de aplicaciones modernas en entornos de desarrollo y producción.</p>
<h2>Conclusión</h2>
<p>Docker ha cambiado la forma en que se desarrolla y despliega software. Empezar con él puede parecer intimidante pero los conceptos básicos se aprenden en una tarde y el valor que aporta es inmediato.</p>
<p>El siguiente paso después de dominar Docker es aprender Kubernetes para orquestar contenedores a escala, pero eso es tema para otro artículo.</p>
<hr />
<p><em>¿Usas Docker en tu flujo de trabajo? ¿O prefieres Podman? Cuéntamelo en los comentarios.</em></p>
]]></content:encoded></item><item><title><![CDATA[Herramientas de Auditoría Recomendadas]]></title><description><![CDATA[Para un entorno Linux verdaderamente seguro, la terminal nos ofrece utilidades de auditoría profunda que van más allá de una simple configuración inicial. Aquí tienes las imprescindibles:
rkhunter (Ro]]></description><link>https://terminalmente.com/herramientas-de-auditor-a-recomendadas</link><guid isPermaLink="true">https://terminalmente.com/herramientas-de-auditor-a-recomendadas</guid><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Sat, 21 Mar 2026 17:59:03 GMT</pubDate><content:encoded><![CDATA[<p>Para un entorno Linux verdaderamente seguro, la terminal nos ofrece utilidades de auditoría profunda que van más allá de una simple configuración inicial. Aquí tienes las imprescindibles:</p>
<h2>rkhunter (Rootkit Hunter)</h2>
<p>Es la herramienta por excelencia para detectar si tu sistema ha sido comprometido. Analiza el sistema en busca de rootkits, backdoors y exploits locales conocidos.</p>
<p><strong>Instalación:</strong> sudo apt install rkhunter -y</p>
<p><strong>Ejecución de auditoría:</strong> sudo rkhunter --check</p>
<blockquote>
<p><em>⚠️</em> <em><strong>Paso crítico post-instalación:</strong></em> <em>Antes de tu primer escaneo real, debes ejecutar</em> <code>sudo rkhunter --propupd</code><em>. Esto crea el "snapshot" de tus archivos actuales como base de confianza. Si actualizas tu sistema (ej.</em> <code>apt upgrade</code><em>), recuerda volver a ejecutarlo o rkhunter pensará que tus nuevos binarios son malware.</em></p>
</blockquote>
<p><strong>Uso recomendado:</strong> Configuralo como un cronjob para recibir reportes diarios y asegúrate de actualizar su base de datos con rkhunter --update.</p>
<h2>Lynis: Auditoría de Hardening</h2>
<p>Lynis no solo busca malware, sino que audita toda la configuración de tu sistema (permisos de archivos, configuración de red, SSH, banners, etc.) y te asigna un "Hardening Index".</p>
<p><strong>Instalación:</strong> sudo apt install lynis -y</p>
<p><strong>Escanear el sistema:</strong> sudo lynis audit system</p>
<p><strong>Valor:</strong> Al final del reporte, te dará una lista de "Suggestions" (Sugerencias) y "Warnings" (Alertas) con enlaces a documentación para corregirlos.</p>
<blockquote>
<p><em>💡</em> <em><strong>Tip de visualización:</strong></em> <em>El reporte de Lynis es enorme. Si quieres ver solo lo que tienes que arreglar sin leer todo el log, usa:</em> <code>grep -E "Warning|Suggestion" /var/log/lynis.log</code></p>
</blockquote>
<h2>Monitoreo de Integridad con AIDE</h2>
<p>Si alguien modifica un archivo binario del sistema (como /bin/login), AIDE lo detectará comparando el estado actual con una base de datos de firmas creada previamente. Es vital para detectar intrusiones persistentes.</p>
<h3><strong>¿Blindaje o Jaula? El dilema del SysAdmin</strong></h3>
<p>A raíz del debate en <strong>r/esLinux</strong>, surgió una duda vital: ¿Qué pasa si auditas tanto tu sistema que terminas bloqueándote a ti mismo?</p>
<ul>
<li><strong>Acceso de respaldo:</strong> Si usas AIDE o Lynis para cerrar cada puerto y permiso, asegúrate de tener un método de acceso alternativo (como una consola KVM o una VPN externa) antes de aplicar las sugerencias de endurecimiento del Kernel. No querrás que tu "alarma" te deje fuera de casa.</li>
</ul>
<h2>Reflexión técnica:</h2>
<p>Como bien comentábamos en el post anterior sobre SSH, no sirve de nada cerrar una puerta si no tenemos una alarma que nos avise cuando alguien intenta forzar la ventana. Herramientas como Lynis y rkhunter son los sensores que necesitas en tu servidor.</p>
<p>¿Qué otras herramientas de auditoría usáis vosotros? ¿Habéis probado OpenSCAP o preferís scripts propios? Os leo en los comentarios.</p>
<p><em>post relacionado:</em> <a href="https://www.terminalmente.com/hardening-en-linux-10-pasos-esenciales-para-asegurar-tu-servidor-gu-a-2026"><strong>Hardening en Linux: 10 pasos esenciales</strong></a></p>
]]></content:encoded></item><item><title><![CDATA[7 Herramientas de Terminal que harán que tu Linux parezca del futuro]]></title><description><![CDATA[Eza: El sucesor moderno de ls
Olvídate del aburrido listado en blanco y negro. Eza (el sucesor de exa) es una versión vitaminada del comando ls. Te permite ver iconos de archivos, colores que diferenc]]></description><link>https://terminalmente.com/7-herramientas-de-terminal-que-har-n-que-tu-linux-parezca-del-futuro</link><guid isPermaLink="true">https://terminalmente.com/7-herramientas-de-terminal-que-har-n-que-tu-linux-parezca-del-futuro</guid><category><![CDATA[Linux]]></category><category><![CDATA[terminal command]]></category><category><![CDATA[Productivity]]></category><category><![CDATA[Rust]]></category><category><![CDATA[Open Source]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Sat, 21 Mar 2026 14:30:08 GMT</pubDate><content:encoded><![CDATA[<h2>Eza: El sucesor moderno de ls</h2>
<p>Olvídate del aburrido listado en blanco y negro. Eza (el sucesor de exa) es una versión vitaminada del comando ls. Te permite ver iconos de archivos, colores que diferencian tipos de extensiones y, lo mejor de todo, una vista de árbol integrada para explorar carpetas sin perderte.</p>
<h2>Bat: Un cat con esteroides</h2>
<p>El comando cat es útil, pero leer código fuente en texto plano es difícil. Bat es un clon de cat que añade resaltado de sintaxis para casi cualquier lenguaje de programación, integración con Git (para ver qué líneas has modificado) y números de línea automáticos. Leer archivos de configuración nunca fue tan cómodo.</p>
<h2>Zoxide: El comando cd que aprende de ti</h2>
<p>¿Cansado de escribir rutas largas como cd /home/usuario/proyectos/python/mi-app? Zoxide es un reemplazo inteligente de cd que recuerda los directorios que más visitas. Con solo escribir "z mi-app", Zoxide sabrá exactamente a dónde quieres ir basándose en tu historial. Es magia pura para la navegación.</p>
<h2>Fzf: El buscador difuso definitivo</h2>
<p>Fzf (Fuzzy Finder) es probablemente la herramienta más potente de esta lista. Es un buscador interactivo que puedes usar para encontrar archivos, comandos en tu historial o procesos abiertos. Solo escribe una parte del nombre y fzf filtrará los resultados al instante mientras escribes. Una vez que lo pruebas, no hay vuelta atrás.</p>
<h2>Btop: Monitorización con estilo "Gaming"</h2>
<p>Si htop te parecía avanzado, btop te va a volar la cabeza. Es un monitor de sistema (CPU, RAM, red, discos) con una interfaz gráfica impresionante dentro de la propia terminal. Incluye gráficas en tiempo real, soporte para ratón y temas de colores que harán que tu terminal parezca la consola de una nave espacial.</p>
<h2>Tldr: Manuales para humanos</h2>
<p>Las páginas del manual (man) son densas y difíciles de leer cuando solo buscas un ejemplo rápido. Tldr (Too Long; Didn't Read) te da ejemplos prácticos y simplificados de cómo se usa un comando. Si olvidas cómo comprimir un archivo con tar, tldr tar te dará la respuesta en 3 segundos.</p>
<h2>Duf: Un df mucho más visual</h2>
<p>Revisar el espacio libre en tus discos con df -h suele dar una tabla desordenada. Duf organiza tus particiones y discos en una tabla limpia, con barras de progreso de colores y detección automática del tipo de almacenamiento. Es la forma más clara de saber qué está llenando tu disco duro.</p>
<h2>Conclusión</h2>
<p>Personalizar tu terminal no es solo una cuestión estética; es una inversión en tu productividad diaria. Al usar herramientas que aprovechan mejor el color, el espacio y la lógica de búsqueda, reduces la carga mental y trabajas de forma más fluida en Linux.</p>
<p>¿Cuál de estas herramientas es tu favorita? Si conoces alguna otra que use un lenguaje moderno como Rust, compártela en los comentarios para que todos sigamos mejorando nuestra terminal.</p>
]]></content:encoded></item><item><title><![CDATA[Neovim vs VS Code: Por qué los desarrolladores están volviendo a la Terminal en 2026]]></title><description><![CDATA[El problema del "exceso de equipaje"
VS Code es una herramienta increíble, pero tiene un coste: el consumo de recursos. Al estar construido sobre tecnologías web, abrir un par de instancias puede cons]]></description><link>https://terminalmente.com/neovim-vs-vs-code-por-qu-los-desarrolladores-est-n-volviendo-a-la-terminal-en-2026</link><guid isPermaLink="true">https://terminalmente.com/neovim-vs-vs-code-por-qu-los-desarrolladores-est-n-volviendo-a-la-terminal-en-2026</guid><category><![CDATA[VS Code]]></category><category><![CDATA[neovim]]></category><category><![CDATA[Programming Blogs]]></category><category><![CDATA[Linux]]></category><category><![CDATA[software development]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Sat, 21 Mar 2026 14:10:25 GMT</pubDate><content:encoded><![CDATA[<h2>El problema del "exceso de equipaje"</h2>
<p>VS Code es una herramienta increíble, pero tiene un coste: el consumo de recursos. Al estar construido sobre tecnologías web, abrir un par de instancias puede consumir gigabytes de memoria RAM. Para un desarrollador que busca velocidad, cada milisegundo de retraso al abrir un archivo cuenta.</p>
<p>Neovim, por el contrario, es una versión moderna y ultra-optimizada de Vim. Se inicia de forma instantánea y consume una fracción mínima de memoria, permitiendo que tu computadora dedique toda su potencia a lo que realmente importa: ejecutar tu código y tus contenedores de Docker.</p>
<h2>La filosofía de "No soltar el teclado"</h2>
<p>La mayor ventaja de Neovim no es solo la ligereza, sino la eficiencia. Al usar atajos de teclado para todo (navegar, editar, buscar y saltar entre archivos), eliminas la necesidad de usar el mouse.</p>
<p>Aunque la curva de aprendizaje inicial es pronunciada (aprender a moverse con las teclas h, j, k, l), una vez que desarrollas memoria muscular, la velocidad a la que puedes editar texto es inalcanzable para cualquier editor convencional.</p>
<h2>Personalización radical: Tu editor, tus reglas</h2>
<p>En VS Code, instalas extensiones y esperas que funcionen. En Neovim, tú construyes tu propio entorno de desarrollo (IDE). Gracias a Lua, el lenguaje de configuración de Neovim, puedes programar exactamente cómo quieres que se comporte cada tecla y cada ventana.</p>
<p>Si no tienes tiempo para configurar todo desde cero, han surgido "distribuciones" modernas como:</p>
<p><strong>LazyVim:</strong> Ideal para quienes quieren una experiencia "fuera de la caja" pero ultra rápida.</p>
<p><strong>NVChad:</strong> Enfocada en la estética y una velocidad de vértigo.</p>
<p><strong>LunarVim:</strong> Una capa de configuración completa para los que vienen de IDEs tradicionales.</p>
<h2>El ecosistema moderno: LSP y Treesitter</h2>
<p>Antiguamente, usar Vim significaba renunciar al autocompletado inteligente. Eso es cosa del pasado. Gracias al protocolo LSP (Language Server Protocol), Neovim tiene el mismo nivel de inteligencia que VS Code: sugerencias de código, definiciones de funciones al instante y refactorización automática.</p>
<p>Además, con Treesitter, el resaltado de sintaxis es más preciso y colorido que nunca, entendiendo la estructura lógica de tu código en tiempo real.</p>
<h2>¿Vale la pena el cambio?</h2>
<p>Si pasas 8 horas al día escribiendo código o administrando servidores Linux, la respuesta es un rotundo sí. No es solo por la velocidad, es por la ergonomía y la satisfacción de dominar tu herramienta de trabajo al 100%.</p>
<p>Cambiar a Neovim es una inversión a largo plazo. Los primeros días te sentirás lento, pero en un mes, te preguntarás cómo pudiste vivir tanto tiempo dependiendo de un mouse.</p>
<h2>Conclusión</h2>
<p>Neovim no es solo un editor; es una declaración de intenciones. Es elegir el minimalismo, la eficiencia y el control total sobre tu entorno de trabajo. Si amas la terminal de Linux, Neovim es el compañero que te falta para completar tu stack de productividad.</p>
<p>¿Te atreves a dar el salto a la terminal o prefieres la comodidad de VS Code? Cuéntame en los comentarios cuál es tu plugin imprescindible.</p>
]]></content:encoded></item><item><title><![CDATA[IA para Ciberseguridad: Cómo auditar tus scripts de Bash y detectar vulnerabilidades]]></title><description><![CDATA[El peligro de los scripts "rápidos"
A menudo escribimos scripts rápidos para mover archivos, gestionar usuarios o realizar copias de seguridad. El problema surge cuando estos scripts aceptan entradas ]]></description><link>https://terminalmente.com/ia-para-ciberseguridad-c-mo-auditar-tus-scripts-de-bash-y-detectar-vulnerabilidades</link><guid isPermaLink="true">https://terminalmente.com/ia-para-ciberseguridad-c-mo-auditar-tus-scripts-de-bash-y-detectar-vulnerabilidades</guid><category><![CDATA[AI]]></category><category><![CDATA[inteligencia artificial ]]></category><category><![CDATA[ciberseguridad]]></category><category><![CDATA[cybersecurity]]></category><dc:creator><![CDATA[Pietro Miele Cusati]]></dc:creator><pubDate>Sat, 21 Mar 2026 14:07:38 GMT</pubDate><content:encoded><![CDATA[<h2>El peligro de los scripts "rápidos"</h2>
<p>A menudo escribimos scripts rápidos para mover archivos, gestionar usuarios o realizar copias de seguridad. El problema surge cuando estos scripts aceptan entradas de usuario o manejan variables sensibles sin el debido cuidado. Un simple error de escape de caracteres puede permitir una inyección de comandos, otorgando a un atacante control total sobre el servidor.</p>
<h2>Cómo usar la IA como tu auditor personal</h2>
<p>No se trata de pedirle a la IA que escriba todo el código por ti, sino de usarla para revisar lo que ya has construido. Aquí te explico cómo hacerlo de forma efectiva:</p>
<p><strong>Contexto es clave:</strong> No pegues solo una línea de código. Explica a la IA qué hace el script y quién tiene permiso para ejecutarlo.</p>
<p><strong>Prompts específicos:</strong> En lugar de un genérico "¿está bien este código?", utiliza instrucciones como: "Analiza este script de Bash en busca de vulnerabilidades de inyección de comandos, manejo inseguro de variables y exposición de credenciales".</p>
<p><strong>Validación cruzada:</strong> La IA puede alucinar. Siempre usa herramientas tradicionales como ShellCheck y pide a la IA que te explique los errores que esa herramienta encuentre.</p>
<h2>Vulnerabilidades comunes que la IA puede detectar</h2>
<p><strong>Inyección de comandos:</strong> Cuando una variable no está entre comillas o no se valida, un atacante puede inyectar comandos adicionales usando punto y coma o tuberías.</p>
<p><strong>Manejo de rutas:</strong> El uso de rutas relativas en lugar de rutas absolutas puede ser aprovechado para ejecutar binarios maliciosos.</p>
<p><strong>Permisos excesivos:</strong> Scripts que crean archivos con permisos 777 o que se ejecutan innecesariamente como root.</p>
<p><strong>Credenciales en texto plano:</strong> La IA detectará rápidamente si has dejado una contraseña o una API Key escrita directamente en el código.</p>
<h2>Ejemplo práctico: El flujo de trabajo seguro</h2>
<p>El flujo ideal para publicar un script en producción debería ser:</p>
<p>Escribe tu script con un editor como Neovim o VS Code.</p>
<p>Pásalo por un linter estático para detectar errores de sintaxis.</p>
<p>Pega el código en tu modelo de IA local (como Llama 3) para una auditoría de seguridad profunda.</p>
<p>Aplica las correcciones y vuelve a probar en un entorno controlado (sandbox).</p>
<h2>La IA no reemplaza al conocimiento, lo potencia</h2>
<p>Es vital recordar que la IA es una herramienta de asistencia. Un buen administrador de sistemas debe entender por qué una sugerencia de la IA es correcta. Si la IA te dice que uses comillas dobles en todas tus variables, investiga el concepto de Word Splitting en Bash. Así, no solo tendrás scripts más seguros, sino que te convertirás en un mejor profesional.</p>
<h2>Conclusión</h2>
<p>La ciberseguridad ya no es solo para expertos en hacking ético. Con el apoyo de la Inteligencia Artificial, cualquier entusiasta de Linux puede elevar el nivel de sus scripts y proteger su infraestructura de errores humanos comunes. La seguridad empieza por el código que escribes hoy.</p>
<p>¿Has probado a pasar tus viejos scripts por una IA? Te sorprendería la cantidad de "pequeños fallos" que puedes encontrar en código que lleva años funcionando.</p>
]]></content:encoded></item></channel></rss>