Files
project-afterlife/README.md
consultoria-as 449c02eadc
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
feat: phase 3 redesign, game images, auth system, vm guides, service isolation
- 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
2026-04-28 05:15:38 +00:00

287 lines
10 KiB
Markdown

# Project Afterlife
Plataforma de preservacion de videojuegos con documentales interactivos. Servidores privados de juegos que ya no existen, acompanados de documentales narrativos que cuentan su historia.
## Estado Actual
| Servicio | Estado | Puerto | RAM |
|----------|--------|--------|-----|
| **Next.js 15** (frontend) | En linea | 3000 | ~111 MB |
| **Strapi 5** (CMS) | En linea | 1337 | ~179 MB |
| **PostgreSQL 16** | En linea | 5432 | ~57 MB |
| **MinIO** (almacenamiento) | En linea | 9000/9001 | ~144 MB |
| **Authentik** (SSO) | En linea | 9000 | ~512 MB |
| **NieR Reincarnation** | Alpha | 80/443 | ~1 GB |
| **Dragon Ball Online** | En configuracion | 22000-22010 | ~2 GB |
| **MapleStory 2 - World** | En linea | 21001 | ~126 MB |
| **MapleStory 2 - Login** | En linea | 20001 | ~100 MB |
| **MapleStory 2 - Game Ch0** | En linea | 20003/21003 | ~341 MB |
| **FusionFall** | En linea | 23000-23001 | ~254 MB |
## Soft Launch — Juegos Disponibles
### NieR Reincarnation
- **Emulador**: [MariesWonderland](https://github.com/BillyCool/MariesWonderland) (C# .NET 10)
- **Conexion**: `play.consultoria-as.com:80/443` (HTTP/gRPC HTTP/2)
- **Cliente**: APK Android parcheado (via Google Colab)
- **Documental**: "El Mundo de las Voces Perdidas" (en produccion)
- **Estado**: Alpha — gameplay basico funcional
### Dragon Ball Online
- **Emulador**: [DBO Global](https://github.com/dboglobal) (C++ / Windows)
- **Conexion**: `play.consultoria-as.com:22000`
- **Cliente**: DBO Global Client (Windows)
- **Documental**: "La Tierra Sin Goku" (en produccion)
- **Estado**: En configuracion — requiere VM Windows
### MapleStory 2
- **Emulador**: [Maple2](https://github.com/MS2Community/Maple2) (C# .NET 8)
- **Conexion**: `play.consultoria-as.com:20001`
- **Cliente**: MapleStory 2 Global Client + XML Patches
- **Documental**: "El Mundo Que Construimos Juntos" (7 capitulos)
- **Estado**: Online
### FusionFall
- **Emulador**: [OpenFusion](https://github.com/OpenFusionProject/OpenFusion) (C++)
- **Conexion**: `play.consultoria-as.com:23000`
- **Cliente**: FusionFall Retro Client
- **Documental**: "El Mundo Que No Queriamos Perder" (7 capitulos)
- **Estado**: Online
## Arquitectura
### Multi-VM (Nueva Arquitectura)
Cada componente corre en su propia VM para maximizar aislamiento y control:
| VM | IP Privada | Puertos Públicos | Servicios |
|----|-----------|------------------|-----------|
| **vm-main** | `10.0.0.10` | `80, 443` | Web + Auth + CMS + PostgreSQL + MinIO + Nginx |
| **vm-nier** | `10.0.0.70` | `80, 443` | NieR Reincarnation (MariesWonderland) |
| **vm-dbo** | `10.0.0.80` | `22000-22010` | Dragon Ball Online (DBO Global) |
| **vm-maple2** | `10.0.0.40` | `20001, 21001, 20003, 21003, 4000` | MapleStory 2 |
| **vm-fusionfall** | `10.0.0.30` | `23000, 23001` | OpenFusion Server |
```
project-afterlife/
├── apps/
│ ├── cms/ # Strapi 5 CMS (React 18)
│ └── web/ # Next.js 15 frontend (React 19)
├── packages/
│ └── shared/ # Tipos TypeScript compartidos
├── servers/
│ ├── openfusion/ # Servidor FusionFall (C++)
│ ├── maple2/ # Servidor MapleStory 2 (C# .NET 8)
│ ├── nier-reincarnation/ # NieR Reincarnation (MariesWonderland .NET 10)
│ └── dragonball-online/ # Dragon Ball Online (DBO Global C++)
├── services/
│ └── afc-bridge/ # Bridge API blockchain (Node.js) — legacy
├── blockchain/
│ ├── contracts/AfterCoin.sol # Contrato inteligente ERC-20 — legacy
│ ├── genesis.json # Config genesis Geth — legacy
│ └── Dockerfile # Nodo Geth — legacy
├── docker/
│ ├── docker-compose.main.yml # VM Principal (Web + Auth + CMS)
│ ├── docker-compose.nier.yml # VM NieR Reincarnation
│ ├── docker-compose.dbo.yml # VM Dragon Ball Online
│ ├── docker-compose.fusionfall.yml # VM OpenFusion
│ ├── docker-compose.maple2.yml # VM MapleStory 2
│ ├── docker-compose.dev.yml # Legacy: stack local completo
│ ├── docker-compose.yml # Legacy: produccion monolitica
│ ├── docker-compose.web.yml # Legacy: web separado
│ ├── docker-compose.auth.yml # Legacy: auth separado
│ └── nginx/ # Configuracion Nginx
├── scripts/
│ └── deploy-vm.sh # Script helper para deploy por VM
├── docs/
│ ├── architecture.md # Arquitectura tecnica detallada
│ ├── architecture-vms.md # Documentacion multi-VM
│ ├── game-servers.md # Setup de servidores de juegos
│ ├── cms-content.md # Modelo de contenido CMS
│ └── deployment.md # Guia de despliegue
└── .github/workflows/
└── deploy.yml # CI/CD multi-VM
```
### Stack Tecnologico
| Componente | Tecnologia | Version |
|-----------|-----------|---------|
| Frontend | Next.js + TypeScript | 15.x |
| UI | Tailwind CSS | v4 |
| i18n | next-intl | 4.8.3 |
| CMS | Strapi | 5.36.0 |
| Base de datos (CMS) | PostgreSQL | 16 |
| Base de datos (MS2) | MySQL | 8.0 |
| Almacenamiento | MinIO (S3) | Latest |
| Audio | Howler.js | 2.2.4 |
| Animaciones | Framer Motion | 12.x |
| Monorepo | npm workspaces + Turborepo | - |
| CI/CD | GitHub Actions | - |
| Reverse Proxy | Nginx | Alpine |
## Inicio Rapido
### Instalacion Limpia (Recomendado para Produccion)
Ver `docs/clean-install.md` para la guia completa paso a paso.
#### Resumen rapido
**VM Principal** (Web + Auth + CMS):
```bash
# 1. Preparar la VM (instala Docker, firewall, genera secrets)
./scripts/setup-main.sh
# 2. Clonar y configurar
git clone https://git.consultoria-as.com/consultoria-as/project-afterlife.git /opt/project-afterlife
cd /opt/project-afterlife
cp docker/.env.example docker/.env
# Edita docker/.env con los secrets generados
# 3. Instalar
./scripts/install.sh main
```
**VMs de Juegos** (una por juego):
```bash
# Preparar VM de juego (ejemplo: NieR)
./scripts/setup-game-vm.sh nier
# Clonar e instalar
git clone ... /opt/project-afterlife
cd /opt/project-afterlife
./scripts/install.sh nier
```
### Stack Local Completo (Desarrollo / Monolito Legacy)
Para desarrollo local donde todo corre en una sola maquina:
#### Requisitos
- Docker y Docker Compose v2+
- 8 GB RAM minimo (16 GB recomendado con todos los servidores)
- 50 GB disco libre
#### 1. Clonar y configurar
```bash
git clone https://git.consultoria-as.com/consultoria-as/project-afterlife.git
cd project-afterlife
```
#### 2. Crear archivo de entorno
```bash
cp docker/.env.example docker/.env
# Editar docker/.env con las claves necesarias
```
Variables requeridas en `docker/.env`:
```env
# Base de datos
DATABASE_NAME=afterlife
DATABASE_USERNAME=afterlife
DATABASE_PASSWORD=afterlife
# MinIO
MINIO_ROOT_USER=afterlife
MINIO_ROOT_PASSWORD=afterlife123
# Strapi (generar con openssl rand -base64 32)
APP_KEYS=
API_TOKEN_SALT=
ADMIN_JWT_SECRET=
TRANSFER_TOKEN_SALT=
JWT_SECRET=
# API Token (crear en Strapi Admin > Settings > API Tokens)
STRAPI_API_TOKEN=
# Strapi URL publica
PUBLIC_STRAPI_URL=http://localhost:1337
```
#### 3. Levantar servicios base
```bash
cd docker
# Stack principal (CMS + Web)
docker compose -f docker-compose.dev.yml up -d
# NieR Reincarnation (requiere setup previo, ver docs/game-servers.md)
docker compose -f docker-compose.nier.yml up -d
# MapleStory 2 (requiere setup previo, ver docs/game-servers.md)
docker compose -f docker-compose.maple2.yml up -d
# Dragon Ball Online (requiere setup previo, ver docs/game-servers.md)
docker compose -f docker-compose.dbo.yml up -d
```
#### 4. Setup inicial de Strapi
1. Abrir http://localhost:1337/admin
2. Crear usuario administrador
3. Ir a Settings > API Tokens > Create new API Token
4. Tipo: Full access, copiar el token a `STRAPI_API_TOKEN` en `.env`
5. Reiniciar el servicio web: `docker compose -f docker-compose.dev.yml restart web`
#### 5. Verificar
- **Frontend**: http://localhost:3000
- **CMS Admin**: http://localhost:1337/admin
- **MinIO Console**: http://localhost:9001
## Documentacion Completa
| Documento | Descripcion |
|-----------|------------|
| [README.md](README.md) | Este archivo — vision general y estado |
| [docs/architecture.md](docs/architecture.md) | Arquitectura tecnica detallada |
| [docs/game-servers.md](docs/game-servers.md) | Setup y operacion de servidores de juegos |
| [docs/cms-content.md](docs/cms-content.md) | Modelo de contenido CMS y documentales |
| [docs/deployment.md](docs/deployment.md) | Guia de despliegue a produccion |
| [docs/plans/](docs/plans/) | Documentos de diseno e implementacion |
## Rutas de la Web
| Ruta | Descripcion |
|------|------------|
| `/es` o `/en` | Pagina principal con hero y ultimos juegos |
| `/es/catalog` | Catalogo de juegos con filtros |
| `/es/about` | Sobre el proyecto |
| `/es/donate` | Pagina de donaciones |
| `/es/games/[slug]` | Pagina individual de juego |
| `/es/games/[slug]/documentary` | Documental interactivo |
| `/es/login` | Iniciar sesion con Authentik |
| `/es/profile` | Perfil de usuario |
| `/es/server-status` | Estado de todos los servidores |
## Contenido en Base de Datos
### Juegos (Soft Launch)
| Slug | Titulo | Estado | Documental |
|------|--------|--------|------------|
| `nier-reincarnation` | NieR Reincarnation | Alpha | En produccion |
| `dragonball-online` | Dragon Ball Online | En configuracion | En produccion |
| `maplestory2` | MapleStory 2 | Online | 7 capitulos |
| `fusionfall` | FusionFall | Online | 7 capitulos |
### Documentales
| Juego | Titulo | Capitulos |
|-------|--------|-----------|
| NieR Reincarnation | "El Mundo de las Voces Perdidas" | En produccion |
| Dragon Ball Online | "La Tierra Sin Goku" | En produccion |
| FusionFall | "El Mundo Que No Queriamos Perder" | 7 |
| MapleStory 2 | "El Mundo Que Construimos Juntos" | 7 |
Cada documental publicado tiene sus capitulos disponibles en ambos idiomas (ES/EN).
## Licencia
Proyecto privado. Todos los derechos reservados.
Los emuladores de juegos utilizados son proyectos open-source independientes con sus propias licencias.