Matriz de decisión de servicios del servidor
Fecha: 2026-04-12
Host: silvio-server
Objetivo: proponer una decisión operativa para cada bloque relevante del servidor
1. Cómo leer este documento
Cada servicio o stack se clasifica en una de estas acciones recomendadas:
- SE QUEDA: debe permanecer como parte del entorno actual
- SE RESTRINGE: sigue siendo útil, pero necesita menos exposición o más control
- SE MUEVE: convendría llevarlo a otra máquina, red o segmento
- SE ELIMINA: parece prescindible, residual o innecesariamente riesgoso
La matriz no ejecuta nada. Es una propuesta para revisión humana.
2. Criterios de decisión
He usado estos criterios:
- utilidad actual o esperable
- criticidad para tu flujo
- exposición en red
- sensibilidad de seguridad
- coste operativo de mantenerlo aquí
- si encaja o no con el rol principal del servidor
3. Decisiones recomendadas
3.1 Núcleo de asistente, IA y operación
OpenClaw
- Decisión: SE QUEDA
- Motivo: es pieza central del sistema
- Condición: necesita endurecimiento de configuración y reducción de exposición
- Prioridad: muy alta
OpenClaw sidecar
- Decisión: SE QUEDA
- Motivo: soporte directo del stack OpenClaw
- Condición: revisar permisos y superficie de acceso
- Prioridad: alta
LiteLLM
- Decisión: SE QUEDA
- Motivo: útil como proxy de modelos y capa de integración
- Condición: idealmente restringido a red confiable o loopback/reverse proxy controlado
- Prioridad: alta
LiteLLM bridge
- Decisión: SE QUEDA
- Motivo: complementa integración con OpenClaw
- Condición: restringir exposición directa
- Prioridad: alta
Ollama
- Decisión: SE QUEDA
- Motivo: capacidad local de modelos, muy valiosa
- Condición: exponer solo si realmente hace falta
- Prioridad: alta
Open WebUI
- Decisión: SE RESTRINGE
- Motivo: útil, pero no imprescindible como servicio abierto
- Condición: mantenerlo solo detrás de autenticación o red confiable
- Prioridad: alta
Nginx
- Decisión: SE QUEDA
- Motivo: es pieza estructural del frontend/reverse proxy
- Condición: revisar rutas expuestas y proxies publicados
- Prioridad: muy alta
SSH
- Decisión: SE QUEDA
- Motivo: acceso administrativo crítico
- Condición: endurecer y revisar política de acceso
- Prioridad: muy alta
Tailscale
- Decisión: SE QUEDA
- Motivo: es de las mejores formas de acceso privado seguro
- Condición: usarlo más como canal preferente y menos exposición pública directa
- Prioridad: alta
OpenVPN
- Decisión: SE RESTRINGE
- Motivo: útil si realmente lo usas, pero duplica función con Tailscale
- Condición: confirmar si sigue siendo necesario
- Prioridad: media
3.2 Observabilidad y monitorización
Netdata
- Decisión: SE QUEDA
- Motivo: buena visibilidad del host
- Condición: no debería quedar abierto libremente sin protección
- Prioridad: alta
Uptime Kuma
- Decisión: SE QUEDA
- Motivo: útil para control operativo
- Condición: limitar acceso por autenticación o red confiable
- Prioridad: media-alta
3.3 Identidad y acceso
Authentik
- Decisión: SE QUEDA
- Motivo: muy útil si centraliza autenticación de servicios web
- Condición: revisar bien exposición y puertos 9000/9443
- Prioridad: alta
Control UI insegura de OpenClaw
- Decisión: SE RESTRINGE
- Motivo: útil para operar, pero actualmente demasiado permisiva
- Condición: quitar flags peligrosos, cerrar wildcard origins, restaurar device auth
- Prioridad: crítica
3.4 Bases de datos y almacenamiento
PostgreSQL / pgvector
- Decisión: SE RESTRINGE
- Motivo: seguramente necesario para apps activas, pero no debería estar expuesto ampliamente
- Condición: idealmente loopback, red interna Docker o acceso muy controlado
- Prioridad: crítica
Redis
- Decisión: SE RESTRINGE
- Motivo: útil para apps, pero expuesto es una mala idea
- Condición: restringir a red interna o loopback
- Prioridad: crítica
MongoDB de PwnDoc
- Decisión: SE RESTRINGE
- Motivo: backend auxiliar, no servicio para exposición general
- Condición: mantener solo interno
- Prioridad: alta
Neo4j
- Decisión: SE RESTRINGE
- Motivo: valioso si usas BloodHound o grafos, pero sensible
- Condición: confirmar uso real y cerrar acceso si no se usa continuamente
- Prioridad: alta
MinIO
- Decisión: SE ELIMINA o SE MUEVE
- Motivo: aparece detenido y no parece parte clara del core actual
- Condición: primero confirmar si hay datos o dependencia pendiente
- Prioridad: media
3.5 Apps y stacks auxiliares
CRM stack (crm_backend, crm_frontend, crm_db, crm_redis)
- Decisión: SE QUEDA o SE MUEVE
- Motivo: parece un stack funcional separado del núcleo OpenClaw
- Condición: si es importante de negocio, merece más aislamiento
- Recomendación concreta: si va a crecer, moverlo a host o segmento propio
- Prioridad: alta
crm_worker
- Decisión: SE ELIMINA o SE REACTIVA conscientemente
- Motivo: aparece parado, así que ahora mismo es deuda técnica
- Condición: decidir si es necesario o residual
- Prioridad: media
crm_n8n
- Decisión: SE ELIMINA o SE REACTIVA conscientemente
- Motivo: estado creado/parado, no claramente operativo
- Prioridad: media
n8n antiguo
- Decisión: SE ELIMINA o SE MUEVE
- Motivo: contenedor parado, parece intento previo o legado
- Prioridad: media
PwnDoc
- Decisión: SE QUEDA
- Motivo: útil si documentas auditorías
- Condición: revisar si debe estar expuesto o solo accesible por red privada
- Prioridad: media-alta
Coolify
- Decisión: SE RESTRINGE o SE MUEVE
- Motivo: es muy potente, pero añade mucha superficie si no es pieza central de tu operación diaria
- Condición: decidir si este servidor debe ser también host de orquestación general
- Prioridad: alta
3.6 Laboratorio, seguridad y herramientas ofensivas
Metasploit
- Decisión: SE MUEVE o SE RESTRINGE
- Motivo: herramienta potente, sensible y no necesaria para la operación base del asistente
- Condición: mejor en laboratorio separado o al menos con perímetro más controlado
- Prioridad: alta
Bettercap
- Decisión: SE MUEVE o SE RESTRINGE
- Motivo: tooling ofensivo delicado
- Condición: no ideal en el mismo host multipropósito si no hay control estricto
- Prioridad: alta
BloodHound tooling / impacket / scripts AD ofensivos
- Decisión: SE MUEVE
- Motivo: capacidades de seguridad ofensiva muy sensibles
- Condición: idealmente en laboratorio o VM específica
- Prioridad: alta
Evilginx2
- Decisión: SE MUEVE o SE ELIMINA
- Motivo: extremadamente sensible desde perspectiva de riesgo y reputación
- Condición: mantenerlo aquí solo si existe un motivo muy consciente y controlado
- Prioridad: muy alta
Hashcat / John / Hydra / Aircrack-ng / Gobuster
- Decisión: SE RESTRINGE o SE MUEVE
- Motivo: útiles para seguridad, pero no forman parte del núcleo del servidor
- Condición: mejor en entorno de laboratorio si no se usan frecuentemente aquí
- Prioridad: media-alta
3.7 Utilidades locales y scripts personalizados
backup_openclaw.sh y restore_openclaw.sh
- Decisión: SE QUEDAN
- Motivo: muy valiosos para continuidad operativa
- Condición: revisar y documentar su ubicación/uso
- Prioridad: alta
duckdns-update.sh
- Decisión: SE QUEDA o SE ELIMINA
- Motivo: depende de si DuckDNS sigue formando parte del acceso real
- Condición: confirmar uso actual
- Prioridad: baja-media
scripts de test y utilidades locales (check-model, check-node, etc.)
- Decisión: SE QUEDAN
- Motivo: útiles para operación y diagnóstico
- Condición: conviene documentarlos mejor
- Prioridad: media
4. Matriz resumida
| Componente | Decisión | Prioridad | Comentario |
|---|---|---|---|
| OpenClaw | SE QUEDA | Muy alta | Núcleo del sistema |
| OpenClaw sidecar | SE QUEDA | Alta | Soporte del stack |
| LiteLLM | SE QUEDA | Alta | Proxy LLM útil |
| Ollama | SE QUEDA | Alta | Modelos locales |
| Open WebUI | SE RESTRINGE | Alta | Útil, pero debe cerrarse mejor |
| Nginx | SE QUEDA | Muy alta | Infraestructura base |
| SSH | SE QUEDA | Muy alta | Acceso crítico |
| Tailscale | SE QUEDA | Alta | Canal privado preferente |
| OpenVPN | SE RESTRINGE | Media | Confirmar si aún hace falta |
| Netdata | SE QUEDA | Alta | Monitorización útil |
| Uptime Kuma | SE QUEDA | Media-Alta | Operación útil |
| Authentik | SE QUEDA | Alta | Identidad útil |
| PostgreSQL / pgvector | SE RESTRINGE | Crítica | No debería exponerse así |
| Redis | SE RESTRINGE | Crítica | Debe quedar interno |
| MongoDB | SE RESTRINGE | Alta | Backend auxiliar interno |
| Neo4j | SE RESTRINGE | Alta | Sensible, revisar uso |
| CRM stack | SE QUEDA o SE MUEVE | Alta | Depende de criticidad real |
| PwnDoc | SE QUEDA | Media-Alta | Útil para documentación |
| Coolify | SE RESTRINGE o SE MUEVE | Alta | Mucha superficie |
| Metasploit | SE MUEVE o SE RESTRINGE | Alta | Mejor en laboratorio |
| Bettercap | SE MUEVE o SE RESTRINGE | Alta | Muy sensible |
| BloodHound / impacket | SE MUEVE | Alta | Mejor fuera del host multipropósito |
| Evilginx2 | SE MUEVE o SE ELIMINA | Muy alta | Especialmente delicado |
| herramientas cracking/auditoría | SE RESTRINGE o SE MUEVE | Media-Alta | Mejor separadas |
| backups OpenClaw | SE QUEDAN | Alta | Necesarios |
| scripts locales de diagnóstico | SE QUEDAN | Media | Conviene documentarlos |
5. Decisiones transversales importantes
Más allá del software individual, hay cuatro decisiones de arquitectura que convendría tomar:
1. Este servidor, ¿es core productivo o también laboratorio?
Ahora mismo es ambas cosas. Eso aumenta mucho la complejidad y el riesgo.
2. ¿Qué debe estar accesible públicamente?
Hay demasiadas piezas candidatas a exposición. Eso debería reducirse y centralizarse detrás de pocos puntos muy controlados.
3. ¿Qué debe vivir solo en red privada?
Bases de datos, paneles internos, proxies LLM y tooling sensible deberían tender a red privada o loopback.
4. ¿Qué tooling ofensivo merece seguir en este host?
No todo lo instalado debería convivir con OpenClaw, Authentik, CRM y servicios web.
6. Propuesta de siguiente fase
Mi propuesta práctica sería esta, por orden:
Fase 1
- restringir OpenClaw
- restringir Control UI
- cerrar DBs y Redis
- confirmar exposición real de paneles
Fase 2
- decidir futuro de CRM, Coolify, Open WebUI y Authentik en esta máquina
- separar lo que sea claramente una plataforma distinta
Fase 3
- sacar o aislar tooling ofensivo y de laboratorio
- limpiar contenedores y restos detenidos
7. Conclusión
Mi lectura operativa es esta:
- se queda el núcleo de asistente, acceso, monitorización y componentes que claramente te aportan valor diario
- se restringe casi todo lo que hoy está más expuesto de lo necesario
- se mueve buena parte del laboratorio ofensivo y, posiblemente, algunos stacks paralelos si van a crecer
- se elimina lo parado, residual o sin función actual clara
La clave no es borrar por borrar. La clave es que el servidor deje de ser una acumulación de cosas y pase a ser una plataforma con roles claros.
8. Estado del documento
Documento generado en modo solo lectura, sin aplicar cambios.