Some checks failed
Deploy Multi-VM / Deploy VM Web (push) Has been cancelled
Deploy Multi-VM / Deploy VM Auth (push) Has been cancelled
Deploy Multi-VM / Deploy Game Servers (docker-compose.fusionfall.yml, VM_FUSIONFALL_HOST, VM_FUSIONFALL_SSH_KEY, VM_FUSIONFALL_USER, fusionfall) (push) Has been cancelled
Deploy Multi-VM / Deploy Game Servers (docker-compose.maple2.yml, VM_MAPLE2_HOST, VM_MAPLE2_SSH_KEY, VM_MAPLE2_USER, maple2) (push) Has been cancelled
Deploy Multi-VM / Deploy Game Servers (docker-compose.minecraft.yml, VM_MINECRAFT_HOST, VM_MINECRAFT_SSH_KEY, VM_MINECRAFT_USER, minecraft) (push) Has been cancelled
Deploy Multi-VM / Deploy Game Servers (docker-compose.retro.yml, VM_RETRO_HOST, VM_RETRO_SSH_KEY, VM_RETRO_USER, retro) (push) Has been cancelled
- Redesign all internal pages to warm/gold aesthetic (catalog, game detail, documentary, about, donate, community, guides, contact, server-status, login, profile, admin, not-found) - Add real cover images for all 4 games via Strapi CMS with getImageUrl helper - Integrate NextAuth v5 with Authentik OIDC authentication - Add new public pages: community, guides, contact, server-status - Add new protected pages: login, profile, admin dashboard - Remove legacy AFC/MercadoPago system entirely - Add Docker Compose split files for service isolation (main, auth, fusionfall, nier) - Add OpenFusion VM deployment configs (config.vm.ini, systemd service, README-VM) - Add NieR Reincarnation server guide and desktop client guide - Add architecture docs for multi-VM deployment - Add healthcheck, SSE, contact, newsletter, admin API routes - Add reusable UI components, skeleton loaders, activity feed, bookmark system - Update deployment and game server documentation
8.2 KiB
8.2 KiB
Arquitectura Multi-VM - Project Afterlife
Visión General
Este documento describe la arquitectura distribuida de Project Afterlife, donde cada componente principal corre en su propia VM (máquina virtual) dedicada para maximizar aislamiento, control y escalabilidad.
INTERNET
│
┌──────────────────┼──────────────────┐
│ │ │
┌─────▼─────┐ ┌─────▼─────┐ ┌─────▼─────┐
│ vm-web │ │ vm-games │ │ vm-games │
│ :80/443 │ │ :ports │ │ :ports │
└─────┬─────┘ └───────────┘ └───────────┘
│
┌──────────────┼──────────────┐
│ │ │
┌────▼─────┐ ┌─────▼─────┐ ┌────▼─────┐
│ vm-auth │ │ vm-games │ │ vm-games │
│:9000 │ │ :ports │ │ :ports │
└──────────┘ └───────────┘ └──────────┘
RED PRIVADA: 10.0.0.0/24
VMs y Sus Roles
| VM | IP Privada | Puertos Públicos | Servicios | RAM Est. |
|---|---|---|---|---|
| vm-web | 10.0.0.10 |
80, 443 |
Next.js, Strapi CMS, PostgreSQL, MinIO, Nginx, Certbot | ~1 GB |
| vm-auth | 10.0.0.20 |
9000 (vía proxy) |
Authentik (SSO), PostgreSQL, Redis | ~1 GB |
| vm-nier | 10.0.0.70 |
80, 443 |
NieR Reincarnation (MariesWonderland .NET 10) | ~1 GB |
| vm-dbo | 10.0.0.80 |
22000-22010 |
Dragon Ball Online (DBO Global C++) | ~2 GB |
| vm-maple2 | 10.0.0.40 |
20001, 21001, 20003, 21003, 4000 |
MapleStory 2 (MySQL, World, Login, Game, Web) | ~2 GB |
| vm-fusionfall | 10.0.0.30 |
23000, 23001 |
OpenFusion Server | ~512 MB |
Soft Launch: NieR Reincarnation, Dragon Ball Online, MapleStory 2, FusionFall
Total RAM estimada (soft launch): ~7.5 GB
Red y Seguridad
LAN Privada
Todas las VMs se comunican entre sí a través de una red privada dedicada (10.0.0.0/24). Esto permite:
- La web puede consultar el estado de los servidores de juego internamente.
- El admin panel puede conectarse a las APIs de administración de cada VM.
- Ningún servicio interno (DB, CMS) es directamente accesible desde Internet.
Firewall por VM
vm-web:
- ALLOW IN:
80, 443(desde anywhere) - ALLOW IN:
22(SSH, solo desde IP admin) - ALLOW OUT: a
10.0.0.20:9000(Authentik)
vm-auth:
- ALLOW IN:
9000(desde10.0.0.0/24y redes admin) - ALLOW IN:
22(SSH, solo desde IP admin) - DENY IN:
9000desde Internet directamente (usar proxy desde vm-web si se necesita)
vm-nier, vm-dbo, vm-maple2, vm-fusionfall:
- ALLOW IN: puertos de juego (desde anywhere)
- ALLOW IN:
22(SSH, solo desde IP admin) - ALLOW IN: puertos admin/métricas (solo desde
10.0.0.20) - DENY everything else
Autenticación Unificada (Authentik)
Realms
| Realm | Propósito | Usuarios |
|---|---|---|
afterlife-players |
Login de jugadores en la web | Jugadores registrados |
afterlife-admins |
Panel de administración | Superadmin, Moderator, Content-Editor |
Aplicaciones (OIDC Clients)
| Aplicación | Cliente | Callback URL |
|---|---|---|
| Project Afterlife Web | afterlife-web |
https://play.consultoria-as.com/api/auth/callback/authentik |
| Strapi CMS Admin | afterlife-cms |
https://play.consultoria-as.com/admin/auth/callback/authentik |
Flujo de Login
- Jugador hace clic en "Iniciar sesión" en la web.
- Redirige a Authentik (
/application/o/authorize/). - Authentik autentica al usuario (email/password, social login, etc.).
- Authentik redirige de vuelta a la web con un código de autorización.
- La web intercambia el código por un JWT token vía
/application/o/token/. - El jugador está autenticado y puede acceder a su perfil y la tienda AFC.
Docker Compose por VM
Cada VM tiene su propio archivo docker-compose.<nombre>.yml:
# VM Web
docker compose -f docker-compose.web.yml up -d
# VM Auth
docker compose -f docker-compose.auth.yml up -d
# VM NieR Reincarnation
docker compose -f docker-compose.nier.yml up -d
# VM Dragon Ball Online
docker compose -f docker-compose.dbo.yml up -d
# VM MapleStory 2
docker compose -f docker-compose.maple2.yml up -d
# VM OpenFusion
docker compose -f docker-compose.fusionfall.yml up -d
Despliegue por Fases
Fase 1: Preparación
- Crear 6 VMs con Docker y Docker Compose.
- Configurar red privada entre VMs (VLAN o VPN WireGuard/Tailscale).
- Asignar IPs estáticas privadas.
- Clonar repositorio en cada VM.
Soft Launch: 6 VMs totales (web, auth, nier, dbo, maple2, fusionfall)
Fase 2: VM Auth (Authentik)
- Desplegar
docker-compose.auth.yml. - Acceder a Authentik en
http://10.0.0.20:9000. - Crear realms y aplicaciones OIDC.
- Crear usuarios admin iniciales.
Fase 3: VM Web
- Desplegar
docker-compose.web.yml. - Configurar Nginx + SSL.
- Configurar Strapi con token API.
- Probar que la web funciona.
- Integrar login con Authentik.
Fase 4: VMs de Juegos
- Desplegar cada VM de juego una por una.
- Ajustar variables de entorno con IPs públicas.
- Probar conectividad desde clientes de juego.
Fase 5: NieR Reincarnation + DBO
- Desplegar
docker-compose.nier.yml.- Colocar AssetDatabase y MasterDatabase en el volumen de datos.
- Parchear el APK con
scripts/patcher.ipynb(Google Colab).
- Desplegar
docker-compose.dbo.yml.- Nota: DBO Global requiere Windows. El compose actual es un placeholder.
- Considerar VM Windows dedicada para DBO.
Fase 6: Panel de Admin
- Crear aplicación de admin panel.
- Conectar con APIs de métricas de cada VM.
- Proteger con realm
afterlife-admins.
Fase 7: Go-Live
- Actualizar DNS.
- Hacer switch de tráfico.
- Monitorear.
Troubleshooting Multi-VM
No hay conectividad entre VMs
# Desde vm-web, probar conectividad a otras VMs
nc -zv 10.0.0.20 9000 # Authentik
nc -zv 10.0.0.70 80 # NieR Server
nc -zv 10.0.0.70 443 # NieR gRPC
nc -zv 10.0.0.80 22000 # DBO Auth
nc -zv 10.0.0.40 20001 # Maple2 Login
nc -zv 10.0.0.30 23000 # OpenFusion
Authentik no responde
# En vm-auth
docker logs auth-server
docker logs auth-worker
Firewall bloquea tráfico necesario
# En cualquier VM (Ubuntu/Debian con ufw)
ufw status verbose
ufw allow from 10.0.0.0/24 to any port 3001 # Ejemplo: permitir red privada
Los jugadores no pueden conectar a NieR Reincarnation
Verificar que:
- El servidor escucha en los puertos 80 y 443 correctamente.
RESOURCES_BASE_URLtiene exactamente 43 caracteres después del host.- El APK del cliente fue parcheado correctamente con el notebook de Google Colab.
- La red soporta HTTP/2 para el tráfico gRPC en el puerto 443.
Backups en Arquitectura Multi-VM
Cada VM debe tener su propia estrategia de backup:
| VM | Qué respaldar | Comando |
|---|---|---|
| vm-web | PostgreSQL + MinIO data | pg_dump + mc mirror |
| vm-auth | Authentik PostgreSQL | pg_dump |
| vm-nier | AssetDatabase + MasterDatabase + UserData | docker volume backup |
| vm-dbo | MariaDB data | mysqldump |
| vm-maple2 | MySQL data | mysqldump |
| vm-fusionfall | SQLite + tdata | docker volume backup |
Escalabilidad Futura
- vm-web: Si el tráfico crece, escalar horizontalmente con múltiples réplicas de Next.js detrás de un load balancer.
- vm-auth: Authentik soporta clustering para alta disponibilidad.
- vm-maple2: Agregar más canales de juego duplicando el servicio
maple2-game-ch*. - Nueva VM de juego: Simplemente crear una nueva VM, configurar su
docker-compose.<juego>.yml, y registrarla en el admin panel.