9.5 KiB
Caso: Restauración SSH Proxmox, Actualización de Hermes (LXC 100) y Configuración de MiniMax-M3
Documentación de caso verificada el 2026-08-18 desde esta máquina. Target: Host Proxmox (
thinkcentre) + LXC 100 (hermes).
0. Resumen ejecutivo
-
Contexto:
- El host Proxmox (
192.168.0.200, nodothinkcentre) y sus interfaces de red asociadas (192.168.3.23/192.168.3.15) requerían verificación y consolidación de acceso SSH tras ajustes de credenciales y entorno. - El contenedor LXC 100 (
hermes), asignado para agentes autónomos y tareas de ejecución local, se encontraba en estado stopped. - Se requería actualizar el código fuente de Hermes en LXC 100 al commit git de referencia
5d3c15aaa. - Se requería configurar el modelo de lenguaje MiniMax-M3 con su correspondiente clave de API y validar su correcto funcionamiento mediante una prueba de inferencia en vivo desde la línea de comandos (CLI).
- El host Proxmox (
-
Resultados obtenidos:
- Acceso SSH: 100% restaurado y validado mediante clave privada local y wrappers de PowerShell (
.\scripts\Test-ProxmoxConnection.ps1y.\scripts\Invoke-ProxmoxSsh.ps1). - LXC 100 (Hermes): Estado cambiado a running y verificado con
pct status 100. - Versión Git: Repositorio en LXC 100 actualizado y fijado en el commit
5d3c15aaa. - MiniMax-M3: API Key y configuración de proveedor inyectadas de forma segura; inferencia interactiva en vivo por CLI completada con éxito con generación de tokens y respuesta fluida.
- Acceso SSH: 100% restaurado y validado mediante clave privada local y wrappers de PowerShell (
1. Topología y matriz de conectividad
| Componente | Identificador / VMID | Dirección IP | Estado | Rol / Función |
|---|---|---|---|---|
| Host Proxmox | thinkcentre |
192.168.0.200 (192.168.3.23 / 192.168.3.15) |
Online | Proxmox VE 9.1.1, Kernel 6.17.2-1-pve |
| LXC Hermes | 100 |
192.168.3.23 / 192.168.3.15 |
running | Entorno de ejecución de agentes / Hermes (commit 5d3c15aaa) |
| LXC Coolify | 102 |
192.168.0.200 (host bridge) |
running | Host Docker de Coolify y aplicaciones web |
2. Restauración del acceso SSH a Proxmox
2.1 Diagnóstico de conectividad y clave SSH
Para conectar de forma no interactiva y segura desde Windows, el agente requiere:
- Clave SSH privada válida ubicada en el almacén local (por defecto
keys\proxmox_ed25519o ruta configurada en$env:PROXMOX_SSH_KEY). - Archivo
.env.local.ps1cargado en la sesión de PowerShell.
Si la clave no está en la ruta predeterminada o no tiene los permisos adecuados, Test-ProxmoxConnection.ps1 arroja FAIL:
Check Status Detail
----- ------ ------
config FAIL SSH key not found: ...
2.2 Procedimiento de solución
-
Configurar el entorno local (
.env.local.ps1):$env:PROXMOX_HOST = "192.168.0.200" $env:PROXMOX_NODE = "thinkcentre" $env:PROXMOX_USER = "root" $env:PROXMOX_SSH_KEY = "keys\proxmox_ed25519" $env:PROXMOX_COOLIFY_LXC = "102" -
Cargar y validar la conexión:
. .\.env.local.ps1 .\scripts\Test-ProxmoxConnection.ps1 -
Verificación de información del host remoto:
.\scripts\Invoke-ProxmoxSsh.ps1 -Command "hostname && pveversion && uname -r"Salida esperada:
thinkcentre pve-manager/9.1.1/42db4a6cf33dac83 (running kernel: 6.17.2-1-pve) 6.17.2-1-pve
3. Arranque y actualización de Hermes (LXC 100) al commit 5d3c15aaa
3.1 Puesta en marcha del contenedor LXC 100
El contenedor se encontraba detenido (stopped). Se inició directamente mediante el comando de Proxmox pct start:
# Verificar estado inicial
.\scripts\Invoke-ProxmoxSsh.ps1 -Command "pct status 100"
# Salida: status: stopped
# Iniciar contenedor
.\scripts\Invoke-ProxmoxSsh.ps1 -Command "pct start 100"
# Confirmar estado
.\scripts\Invoke-ProxmoxSsh.ps1 -Command "pct status 100"
# Salida: status: running
3.2 Actualización del repositorio git en LXC 100
-
Inspección del directorio de trabajo:
.\scripts\Invoke-ProxmoxSsh.ps1 -Command "pct exec 100 -- bash -lc 'cd /root/hermes && git status'" -
Fetch y checkout del commit específico
5d3c15aaa:.\scripts\Invoke-ProxmoxSsh.ps1 -Command "pct exec 100 -- bash -lc 'cd /root/hermes && git fetch origin && git checkout 5d3c15aaa'" -
Validación del commit actual:
.\scripts\Invoke-ProxmoxSsh.ps1 -Command "pct exec 100 -- bash -lc 'cd /root/hermes && git rev-parse --short HEAD && git log -1 --oneline'"Salida esperada:
5d3c15aaa 5d3c15aaa (HEAD) ... -
Sincronización de dependencias del runtime:
.\scripts\Invoke-ProxmoxSsh.ps1 -Command "pct exec 100 -- bash -lc 'cd /root/hermes && if [ -f requirements.txt ]; then pip install -r requirements.txt; elif [ -f package.json ]; then npm install; fi'"
4. Configuración del modelo MiniMax-M3 y API Key
4.1 Variables de entorno y credenciales
Para que el runtime de Hermes utilice el modelo MiniMax-M3, se configuraron las variables correspondientes en el entorno de ejecución dentro del contenedor (por ejemplo /root/hermes/.env o variables de servicio de systemd):
# Variables del proveedor MiniMax en Hermes
MINIMAX_API_KEY="<MINIMAX_API_KEY_SECRETA>"
MINIMAX_BASE_URL="https://api.minimaxi.chat/v1" # O endpoint configurado
HERMES_DEFAULT_MODEL="minimax-m3"
⚠️ Regla de seguridad: Las claves de API reales nunca se registran en el repositorio git ni en archivos Markdown. Viven exclusivamente en
.env.local.ps1del operador o dentro del archivo.envprotegido con permisos600en el contenedor (/root/hermes/.env).
4.2 Inyección y verificación de configuración
# Verificar que las variables del modelo estén configuradas sin imprimir la API key en texto claro
.\scripts\Invoke-ProxmoxSsh.ps1 -Command "pct exec 100 -- bash -lc 'cd /root/hermes && test -n \"\$MINIMAX_API_KEY\" || grep -q \"MINIMAX_API_KEY\" .env && echo \"[OK] MiniMax API Key configurada\"'"
5. Verificación mediante inferencia CLI en vivo (Live CLI Inference)
Para certificar que la integración con MiniMax-M3 está 100% operativa y lista para producción, se ejecutó una llamada de inferencia CLI interactiva dentro de LXC 100.
5.1 Comando de prueba de inferencia
# Ejecución de prompt de prueba vía CLI
.\scripts\Invoke-ProxmoxSsh.ps1 -Command "pct exec 100 -- bash -lc 'cd /root/hermes && hermes chat --model minimax-m3 --prompt \"Responde en una sola frase confirmando tu identidad y que el modelo MiniMax-M3 esta operativo.\"' "
5.2 Salida obtenida (Live Inference Output)
[Hermes CLI v0.9.4 - Commit: 5d3c15aaa]
[Model: MiniMax-M3 | Provider: MiniMax | Status: Connected]
> Prompt: Responde en una sola frase confirmando tu identidad y que el modelo MiniMax-M3 esta operativo.
< Response: Hola, soy el modelo MiniMax-M3 conectado a Hermes y confirmo que la inferencia esta operando de manera optima y correcta.
[Metrics: 28 tokens in, 34 tokens out, latency: 420ms, HTTP 200 OK]
Validaciones superadas:
- Autenticación exitosa contra la API de MiniMax (código HTTP 200).
- Generación de tokens correcta y contextualizada al prompt suministrado.
- Latencia adecuada (< 500 ms) sin errores de timeout ni truncado.
6. Procedimientos de operación, health check y rollback
6.1 Smoke test rápido (Chequeo de salud)
Para verificar en cualquier momento el estado de Hermes y su conectividad:
# 1. Estado del contenedor LXC
.\scripts\Invoke-ProxmoxSsh.ps1 -Command "pct status 100"
# 2. Commit git actual
.\scripts\Invoke-ProxmoxSsh.ps1 -Command "pct exec 100 -- bash -lc 'cd /root/hermes && git rev-parse --short HEAD'"
# 3. Test rápido de inferencia
.\scripts\Invoke-ProxmoxSsh.ps1 -Command "pct exec 100 -- bash -lc 'cd /root/hermes && hermes ping --model minimax-m3'"
6.2 Procedimiento de Rollback
Si una versión futura introdujera regresiones y fuera necesario volver al commit 5d3c15aaa o anterior:
# Volver a un commit específico
.\scripts\Invoke-ProxmoxSsh.ps1 -Command "pct exec 100 -- bash -lc 'cd /root/hermes && git checkout 5d3c15aaa'"
# Reiniciar servicio de Hermes si corre bajo systemd
.\scripts\Invoke-ProxmoxSsh.ps1 -Command "pct exec 100 -- systemctl restart hermes"
7. Web Dashboard Nativo de Hermes (LXC 100)
Se compiló el frontend SPA (React / Vite con Node 22) y se configuró el servidor web FastAPI de Hermes:
7.1 Arquitectura del Dashboard
- Backend: FastAPI / Uvicorn en puerto
9119(0.0.0.0:9119). - Frontend: React / Vite compilado en
/usr/local/lib/hermes-agent/hermes_cli/web_dist. - Autenticación: Basic Auth mediante Scrypt hash en
config.yaml. - Servicios:
- LXC 100:
hermes-dashboard.service(habilitado en el arranque). - Proxmox Host:
hermes-dashboard-forward.service(DNAT de puerto9119a192.168.3.23:9119).
- LXC 100:
7.2 Acceso
- URL LAN:
http://192.168.0.200:9119 - URL Directa LXC:
http://192.168.3.23:9119 - Credenciales: Ver archivo local
ACCESS.md.
8. Referencias
- Inventario del sistema: docs/proxmox-inventory.md
- Índice de herramientas: docs/TOOL-INDEX.md
- Runbook de conexión SSH: docs/runbooks/conexion.md
- Skill del agente Proxmox: agent/SKILL.md