NÚCLEO_TÉCNICO // V2.5_DOCS

Auditoría_Infraestructura // Nodo_Arrecife

Cobbleverse
Cloud Architecture

Nucleo

01. Visión Arquitectónica

Objetivo y alcance del despliegue

Cobbleverse Cloud es una solución Full-Stack diseñada para la administración integral de un servidor Minecraft modificado (Cobblemon) alojado en Oracle Cloud Infrastructure (OCI). El diseño prioriza la operabilidad, la observabilidad y la seguridad.

Orquestación de procesos aislados
Túnel RCON seguro TCP
Gestor de ficheros integrado
Telemetría en tiempo real
Política de backups automatizada
Hardening de red perimetral
Nucleo

02. Arquitectura del Sistema

Topología de red y flujo de datos

El sistema implementa un patrón de BFF (Backend for Frontend). El cliente web (Dashboard) nunca interactúa directamente con el demonio de Minecraft.

Topología de Red (Tráfico Inbound)
bash
[ Cliente Web ]
      │
      │ (HTTPS / Port 443)
      ▼
[ Nginx Reverse Proxy ] ──(TLS Termination)──┐
                                             │
      ┌──────────────────────────────────────┘
      │ (HTTP / Localhost:3000)
      ▼
[ Next.js API Gateway ]
      │
      ├─► (I/O) ──► [ Sistema de Archivos Ext4 ]
      │
      └─► (TCP / Localhost:25575)
            ▼
     [ Minecraft Server (Java JVM) ]
Despliegue

03. Infraestructura Cloud

Aprovisionamiento y red

Instancia Compute

Oracle Ampere A1

Arquitectura ARM64, 4 OCPUs, 24GB RAM DDR4, Boot Volume NVMe (Ubuntu 22.04 LTS).

Capa de Red

Nginx Edge

Proxy inverso con terminación TLS 1.3 (Certbot/Let's Encrypt) y enrutamiento a proceso Node.js.

Hardening del Proxy
/etc/nginx/sites-available/default
nginx
# Redirección incondicional HTTP -> HTTPS
server {
    listen 80 default_server;
    server_name proyectodcd.duckdns.org;
    return 301 https://$server_name$request_uri;
}

# Configuración SSL y Cabeceras de Seguridad
server {
    listen 443 ssl http2;
    server_name proyectodcd.duckdns.org;

    # HSTS (Obliga navegadores a usar HTTPS)
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    add_header X-Frame-Options "SAMEORIGIN";
    
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
Despliegue

04. Gestión del Entorno

Variables y configuración de servicios

La separación estricta de configuración y código se logra inyectando secretos únicamente en tiempo de ejecución.

Next.js (.env.local)
# Autenticación del Dashboard
NEXT_PUBLIC_ADMIN_PASSWORD="<hash>"

# Credenciales del Demonio (RCON)
MINECRAFT_RCON_HOST="127.0.0.1"
MINECRAFT_RCON_PORT="25575"
MINECRAFT_RCON_PASSWORD="<secreto_fuerte>"

# I/O Restricciones
MINECRAFT_BASE_PATH="/opt/minecraft/server"
Minecraft (server.properties)
# Habilitación de la capa de control local
enable-rcon=true
rcon.port=25575
rcon.password=<secreto_fuerte>
broadcast-rcon-to-ops=false
Operaciones

05. Orquestación de Procesos

Ciclo de vida de los servicios

Se emplean gestores de procesos dedicados para garantizar alta disponibilidad (HA) y reinicios automáticos ante fallos críticos.

PM2 (Dashboard API)
  • ✓ Mantiene vivo el proceso Node.js.
  • ✓ Rotación de logs de aplicación.
  • ✓ Reinicio en arranque (pm2 startup).
$ pm2 restart dashboard
Systemd (Minecraft)
  • ✓ Ejecución bajo usuario sin privilegios.
  • ✓ Límites de memoria (LimitNOFILE).
  • ✓ Integración con API (systemctl).
$ sudo systemctl status minecraft
Operaciones

06. Observabilidad Integrada

Telemetría de recursos en tiempo real

Monitorización proactiva expuesta a través de GET /api/minecraft/system. Implementa un polling optimizado (7s).

Memoria RAM

free -m

Cálculo de memoria residente vs buffers/cache. Previene latencia del Garbage Collector (GC).

Carga CPU

os.loadavg()

Media de carga a 1, 5 y 15m. Normalizado por hilos de arquitectura ARM.

Disponibilidad

os.uptime()

Tiempo de actividad del kernel. Correlación de reinicios forzosos.

Operaciones

07. Resiliencia de Datos

Estrategia de backups automatizados

Ejecución de respaldos asíncronos en caliente utilizando el algoritmo de compresión Zstandard (.tar.zst).

Tail log (/var/log/minecraft_backup.log)
log
[2026-02-11 16:44:17] INFO  [Pre-flight] -> Iniciando guardado seguro (save-all flush)
[2026-02-11 16:44:18] INFO  [Compresión] -> Empaquetando volumen de datos (ZST)
[2026-02-11 16:44:19] OK    [Completado] -> Tamaño: 1.8GB | Duración: 34s | Integridad: SHA-256 Validado
Estados de API:
SUCCESSFAILEDRUNNING
Calidad

08. Políticas de Seguridad

Hardening de la capa de aplicación

Limitación de Tasa (Rate Limiting)

Implementación de 20 peticiones / 10s por IP en endpoints de mutación (/api/minecraft/command). Mitiga vectores de ataque DoS.

Lista Blanca de Ejecución

Bloqueo estricto a nivel de API. El intento de ejecución de /stop o /op eleva una excepción y es denegado preventivamente.

Aislamiento de Secretos

Cero exposición en el bundle del cliente. Las credenciales RCON existen únicamente en la memoria del proceso backend.

Calidad

09. Auditoría de Impacto

Evolución de la madurez operativa

Operativa Legada (Manual)
  • Conexión SSH imperativa para reinicios.
  • Ceguera operativa (sin métricas de host).
  • Backups manuales inconsistentes.
Infraestructura Moderna
  • Panel de control centralizado y seguro.
  • Observabilidad en tiempo real (API).
  • Tareas críticas abstraídas a UI.