4 de noviembre de 2025

Cómo Autenticar la CLI de Gemini en Servidores Remotos (Adiós al Error 400)

Si intentas usar la CLI de Gemini (@google/gemini-cli) en un servidor remoto (como Debian 12, Ubuntu, o cualquier VPS) mediante SSH, pronto descubrirás que el proceso de autenticación de Google falla porque no puede abrir un navegador ni redirigir a localhost.

En nuestro caso, el problema fue doble: la variable GEMINI_API_KEY era ignorada y la URL de autenticación de Google estaba incompleta (Error 400: invalid_request).

A continuación, te mostramos el único camino garantizado para que Gemini CLI funcione en un entorno headless (sin interfaz gráfica).

🛠️ Prerrequisito: Obtener y Exportar la API Key

Antes de cualquier cosa, asegúrate de tener tu clave API lista. Este método es el más confiable para entornos de servidor.

  1. Obtén tu Clave API desde Google AI Studio.

  2. Exporta la clave como una variable de entorno en tu terminal SSH (aunque la CLI la ignore temporalmente, es un buen hábito):

    export GEMINI_API_KEY="TU_CLAVE_GENERADA_AQUI"

Paso 1: Forzar el Uso de la API Key en la Configuración

La CLI de Gemini prioriza el flujo de autenticación de cuenta personal (oauth-personal). Para forzar que use la clave API, debemos editar el archivo de configuración.

  1. Crea el directorio de configuración si no existe:

    mkdir -p ~/.gemini
  2. Crea o edita el archivo settings.json en el directorio de tu usuario:

    nano ~/.gemini/settings.json
  3. Asegúrate de que el archivo contenga ÚNICAMENTE tu clave API y no configuraciones de oauth-personal que podrían causar conflicto:

    {
      "apiKey": "AIzaSyB1xX9eXkAK3WlV1aOE3KXdtdt5D0unuNs"
    }
    

    (Reemplaza el valor con tu clave real. Este paso corrige la tendencia de la CLI a ignorar la variable de entorno y a intentar el flujo OAuth roto).


Paso 2: Ejecutar y Acceder al Menú de Autenticación

Al iniciar la CLI, esta ya no debería fallar con el error 400 ni con la petición de un código que no funciona. En su lugar, la CLI detectará que tiene una clave API disponible y nos presentará el menú de opciones.

  1. Ejecuta el comando principal:

    gemini
  2. La CLI te mostrará el siguiente menú interactivo, reconociendo tu instalación:

    │ 1. Login with Google
    │ ● 2. Use Gemini API Key
    │ 3. Vertex AI
    

Paso 3: Seleccionar la Autenticación por API Key

Este es el paso crítico donde le indicamos explícitamente a la herramienta qué método usar, superando los fallos automáticos.

  1. Usa las flechas de dirección para mover el selector () a la Opción 2: Use Gemini API Key.

  2. Presiona Enter para confirmar tu selección.

La CLI de Gemini autenticará la sesión inmediatamente usando la clave que ya definiste en el archivo ~/.gemini/settings.json.

Si todo es correcto, la CLI iniciará el prompt interactivo de chat, ¡y podrás usar Gemini directamente desde tu terminal Debian remota!

Welcome to Gemini CLI. Type /help for assistance. 

(chat)> 

2 de noviembre de 2025

SSH vía Web en Gentoo Linux: Accede a tu consola desde cualquier navegador (incluyendo tu TV)

 ¿Necesitas monitorear tu servidor Gentoo desde el navegador de tu TV o desde cualquier dispositivo en tu red local sin instalar un cliente SSH completo? La solución es wssh (WebSSH), un proyecto de Python que expone una interfaz SSH a través de una página web.

Esta guía te mostrará cómo configurarlo de forma segura usando un entorno virtual de Python en Gentoo.

Requisitos Previos
  • Un sistema Gentoo Linux funcional.
  • Python 3 instalado.
  • Acceso a un navegador web (como Google Chrome en tu TV) en la misma red local.

Paso 1: Configurar el Entorno Virtual de Python
Gentoo Linux bloquea las instalaciones directas de pip en el sistema global para evitar conflictos con emerge. La solución recomendada es usar un entorno virtual (venv), que aísla wssh del resto del sistema.
1.1 Instalar las herramientas necesarias:
Asegúrate de que tienes pip y las herramientas para crear entornos virtuales instalados usando emerge:
sudo emerge --ask dev-python/pip dev-python/virtualenv
1.2 Crear un directorio de proyecto y el entorno virtual:
Crea una carpeta para organizar tu proyecto y luego inicializa el entorno virtual dentro de ella:
mkdir webssh_project
cd webssh_project
python3 -m venv venv_webssh
1.3 Activar el entorno virtual:
Debes activar el entorno virtual en cada sesión de terminal que uses. Observa cómo tu prompt cambiará para confirmar que está activo (mostrará (venv_webssh) al principio):
source venv_webssh/bin/activate

Paso 2: Instalar WebSSH (wssh)
Ahora que el entorno virtual está activo, puedes usar pip para instalar el paquete webssh. La instalación se realizará localmente dentro de la carpeta venv_webssh:
pip install webssh

Paso 3: Ejecutar el Servidor WebSSH
El comando para iniciar el servidor es wssh. Usaremos los parámetros --address y --port para indicarle que escuche en todas las interfaces de red (0.0.0.0) y en un puerto específico (8888).
¡Importante! El comando correcto es wssh, no webssh.
wssh --address="0.0.0.0" --port=8888
Si todo es correcto, verás mensajes de registro indicando que el servidor se está iniciando y escuchando.

Paso 4: Acceder a la Consola Web
¡Ya está listo! El servidor está corriendo. Ahora, ve al navegador web de tu TV o cualquier otro dispositivo:
  1. Abre Google Chrome (o tu navegador preferido).
  2. En la barra de direcciones, ingresa la IP de tu máquina Gentoo seguida del puerto:
    http://[DIRECCION_IP_DE_TU_GENTOO]:8888
Serás recibido por una interfaz web simple donde puedes ingresar las credenciales de tu servidor SSH (usuario, contraseña, etc.) y conectarte directamente a tu terminal.

Consejos Adicionales
  • Para salir del entorno: Cuando hayas terminado de usar la terminal y quieras cerrar el entorno virtual, simplemente escribe deactivate.
  • Para reiniciar el servidor más tarde: Vuelve al directorio del proyecto (cd webssh_project), activa el entorno (source venv_webssh/bin/activate) y ejecuta wssh de nuevo.
  • Seguridad: Para producción, considera configurar SSL/HTTPS para cifrar la conexión, aunque para una red local básica suele ser suficiente.

27 de octubre de 2025

Creación de LVM sobre Espacio Libre en RAID 1


Discos (nvme0n1 y nvme1n1) tienen aproximadamente 842 GB de espacio sin particionar, vamos a utilizar ese espacio para crear un nuevo array RAID 1, y luego configurar LVM encima.

Paso 1: Crear la Nueva Partición RAID en Ambos Discos:
Debes usar una herramienta de particionado como fdisk o gdisk para crear una nueva partición grande (p5 en tu caso) en cada disco, usando todo el espacio restante. Es crucial que ambas particiones sean del mismo tamaño y del tipo "Linux RAID autodetect" (fd).

1. Ejecutar fdisk en el primer disco:
sudo fdisk /dev/nvme0n1
  • Presiona n (nueva partición).
  • Acepta los valores predeterminados para usar todo el espacio restante.
  • Presiona t (cambiar tipo de partición).
  • Ingresa el código fd (Linux raid autodetect).
  • Presiona w para escribir los cambios y salir.
2. Ejecutar fdisk en el primer disco:
sudo fdisk /dev/nvme1n1


Asegúrate de que la nueva partición (/dev/nvme1n1p5) tenga el mismo punto de inicio y tamaño que la creada en el primer disco. Escribe (w) y sal.

Paso 2: Crear el Nuevo Array RAID 1 (md4)
Ahora, utiliza las dos nuevas particiones (asumiremos que son /dev/nvme0n1p5 y /dev/nvme1n1p5) para crear un nuevo array RAID 1, al que llamaremos /dev/md4.

sudo mdadm --create /dev/md4 --level=1 --raid-devices=2 /dev/nvme0n1p5 /dev/nvme1n1p5


Verificar el estado (sincronización):

cat /proc/mdstat

Asegúrate de que el array esté activo (active) y que la sincronización haya terminado.

Paso 3: Configurar LVM sobre el Array RAID
Una vez que el /dev/md4 esté listo, lo utilizaremos como el Volumen Físico (PV) para LVM.

1. Crear Volumen Físico (PV): Inicializa el array RAID como un volumen físico para LVM.
sudo pvcreate /dev/md4

2. Crear Grupo de Volúmenes (VG): Crea un grupo que contendrá tus volúmenes lógicos. Usaremos vg0 como nombre de ejemplo

sudo vgcreate vg0 /dev/md4

3. Validar el Grupo de Volumen
sudo vgs

VG #PV #LV #SN Attr VSize VFree
vg0 1 0 0 wz--n- 842.12g 842.12g



















21 de octubre de 2025

Diagnóstico Rápido de Discos y RAID en Linux

📋 Comandos Esenciales para Diagnóstico de RAID en Linux

Estos tres comandos son variaciones avanzadas del útil comando lsblk que permiten filtrar la información de discos y arrays RAID (mdX) en un sistema Linux de manera precisa.

#Objetivo del ComandoComando (Listo para Copiar)
1Resumen de Discos y Particiones (Formato Sencillo)`lsblk -o NAME,SIZE
2Resumen Limpio de Discos Principales (Solo Disco Raíz)`lsblk
3Visualización Jerárquica RAID $\rightarrow$ Montaje`lsblk -o NAME,FSTYPE,MOUNTPOINTS

📝 Explicación Detallada de Cada Opción

1. Resumen de Discos y Particiones (Formato Sencillo)

Comando: lsblk -o NAME,SIZE | grep -E "nvme0n1|nvme1n1" | awk '{print $1 " " $2}'

ComponenteFunción
lsblk -o NAME,SIZEMuestra el nombre y el tamaño, suprimiendo columnas innecesarias.
**`grep -E "nvme0n1nvme1n1"`**
awk '{print $1 " " $2}'Imprime solo las dos primeras columnas, dando una vista simplificada del nombre del dispositivo y su tamaño.

2. Resumen Limpio de Discos Principales (Solo Disco Raíz)

Comando: lsblk | grep -E "nvme0n1|nvme1n1" | awk '/disk/ {print $1, $4}'

ComponenteFunción
lsblkGenera el listado completo, incluyendo la columna TYPE.
**`grep -E "nvme0n1nvme1n1"`**
awk '/disk/ {print $1, $4}'Filtro clave: Busca la palabra clave disk en la línea (que solo aparece en la línea del dispositivo raíz, no en las particiones) e imprime la primera columna (el nombre del disco) y la cuarta columna (el tamaño total).

3. Visualización Jerárquica RAID $\rightarrow$ Montaje (La Más Útil)

Comando: lsblk -o NAME,FSTYPE,MOUNTPOINTS | grep -E 'nvme[0-1]n1p[0-9]|md[0-9]'

ComponenteFunción
lsblk -o NAME,FSTYPE,MOUNTPOINTSLimita las columnas a las más relevantes para el diagnóstico de sistemas de archivos y montaje.
**`grep -E 'nvme[0-1]n1p[0-9]md[0-9]'`**


26 de septiembre de 2025

Instalación de Gemini Cli

Fuente

Requisitos

  • NodeJS

Pasos

  • API de Google Gemini 

Instalación

  • npm install -g @google/gemini-cli
Configuración

El comando gemini guía al usuario a través de los pasos la primera vez que se ejecuta: 
  • Autenticación: se solicita al usuario que inicie sesión con su cuenta de Google en un navegador. Una cuenta personal de Google da acceso a un nivel gratuito de Gemini 2.5 Pro.
  • Clave API (opcional): Establezca una clave API de Google AI Studio para el control de modelos personalizados o el acceso de pago exportándola como variable de entorno: export GEMINI_API_KEY="SU_CLAVE_API".
  • Proyecto de Google Cloud (opcional): Establezca la variable del proyecto si utiliza una licencia de Code Assist de pago: export GOOGLE_CLOUD_PROJECT="NOMBRE_DE_SU_PROYECTO".
  • Selección de tema: Elija un tema de color para la CLI. 


Ejecución:

gemini



 

28 de agosto de 2023

Buscar IP en un archivo log

Usando cat y grep con expresiones regulares, se obtiene un listado coloreado de todas las IP en el archivo auth.log 

cat auth.log | grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" --color


20 de febrero de 2023

Notas Posgre SQL

 Validar errores en el archivo de configuracion

Con errores


postgres=# select sourcefile, name, sourceline, error from pg_file_settings where error is not null;

               sourcefile                |      name       | sourceline |            error             

-----------------------------------------+-----------------+------------+------------------------------

 /etc/postgresql/14/main/postgresql.conf | max_connections |         66 | setting could not be applied

(1 row)


Sin errores

postgres=# select sourcefile, name, sourceline, error from pg_file_settings where error is not null;

 sourcefile | name | sourceline | error 

------------+------+------------+-------

(0 rows)


Guía Gentoo 2026: Cómo usar Overlays sin romper tu sistema (El Método del Aislamiento)

En Gentoo, la tentación de añadir repositorios (overlays) para obtener versiones más recientes o paquetes exóticos es grande. Sin embargo, o...