# Guía de Instalación Limpia — Project Afterlife (Soft Launch) ## Requisitos Previos - **VM Principal**: Ubuntu 22.04 LTS, 8 GB RAM, 50 GB disco - **VMs de Juegos**: Ubuntu 22.04 LTS, 2-4 GB RAM cada una, 20-50 GB disco - Acceso SSH a todas las VMs - Red privada entre VMs (VLAN/VPN) — recomendado `10.0.0.0/24` - Dominio apuntando a la VM Principal (ej. `play.consultoria-as.com`) --- ## Arquitectura del Soft Launch ``` Internet │ ├─► vm-main (10.0.0.10) :80/443 → Web + Auth + CMS + Admin │ ├─► vm-nier (10.0.0.70) :80/443 → NieR Reincarnation │ ├─► vm-dbo (10.0.0.80) :22000+ → Dragon Ball Online │ ├─► vm-maple2 (10.0.0.40) :20001+ → MapleStory 2 │ └─► vm-fusion (10.0.0.30) :23000+ → FusionFall ``` --- ## Paso 1: Preparar la VM Principal ### 1.1 Ejecutar setup automático ```bash # Descargar el script de setup wget https://raw.githubusercontent.com/consultoria-as/project-afterlife/main/scripts/setup-main.sh chmod +x setup-main.sh ./setup-main.sh ``` Esto instalará: - Docker y Docker Compose v2 - Git - UFW (firewall) con puertos 80, 443 abiertos - Generará secrets automáticamente ### 1.2 Clonar el repositorio ```bash git clone https://git.consultoria-as.com/consultoria-as/project-afterlife.git /opt/project-afterlife cd /opt/project-afterlife ``` ### 1.3 Configurar variables de entorno ```bash cp docker/.env.example docker/.env nano docker/.env ``` Variables **obligatorias**: ```env # Base de datos DATABASE_NAME=afterlife DATABASE_USERNAME=afterlife DATABASE_PASSWORD= # Strapi secrets (generados por setup) APP_KEYS= API_TOKEN_SALT= ADMIN_JWT_SECRET= TRANSFER_TOKEN_SALT= JWT_SECRET= # Authentik AUTHENTIK_SECRET_KEY= AUTHENTIK_POSTGRES_PASSWORD= # MinIO MINIO_ROOT_USER=afterlife MINIO_ROOT_PASSWORD= # URLs públicas PUBLIC_STRAPI_URL=https://play.consultoria-as.com NEXT_PUBLIC_SITE_URL=https://play.consultoria-as.com # IPs de servidores de juegos (para mostrar en la web) NIER_PUBLIC_IP=play.consultoria-as.com DBO_PUBLIC_IP=play.consultoria-as.com MAPLE2_PUBLIC_IP=play.consultoria-as.com FUSIONFALL_PUBLIC_IP=play.consultoria-as.com ``` ### 1.4 Instalar ```bash ./scripts/install.sh main ``` ### 1.5 Configurar Authentik (primer arranque) ```bash # Obtener contraseña de bootstrap docker exec -it main-authentik-server ak bootstrap ``` Accede a `http://TU_IP:9000` (o a través del proxy) y: 1. Crea el realm `afterlife-players` 2. Crea el realm `afterlife-admins` 3. Crea la aplicación `afterlife-web` (OIDC) con callback: `https://play.consultoria-as.com/api/auth/callback/authentik` 4. Copia el Client ID y Client Secret al `.env` ### 1.6 Configurar Strapi ```bash # Crear usuario admin docker exec -it main-cms npm run strapi admin:create-user # O accede a https://play.consultoria-as.com/admin # Crea el primer usuario y luego genera el API Token ``` Añade el token a `docker/.env`: ```env STRAPI_API_TOKEN= ``` Reinicia la web: ```bash cd docker && docker compose -f docker-compose.main.yml restart web ``` --- ## Paso 2: Preparar VMs de Juegos ### 2.1 NieR Reincarnation (`vm-nier`) ```bash # En la VM de NieR wget https://raw.githubusercontent.com/consultoria-as/project-afterlife/main/scripts/setup-game-vm.sh chmod +x setup-game-vm.sh ./setup-game-vm.sh nier git clone https://git.consultoria-as.com/consultoria-as/project-afterlife.git /opt/project-afterlife cd /opt/project-afterlife # Configurar .env cp docker/.env.example docker/.env # Edita: NIER_RESOURCES_BASE_URL, NIER_MASTER_DATA_VERSION # Instalar ./scripts/install.sh nier ``` **Importante**: Debes extraer `AssetDatabase` y `MasterDatabase` del cliente original y colocarlos en el volumen Docker `nier_data`. ### 2.2 Dragon Ball Online (`vm-dbo`) ```bash ./setup-game-vm.sh dbo # DBO Global requiere Windows para compilar. # El docker-compose.dbo.yml es un placeholder. # Considera usar una VM Windows dedicada o Wine. ``` ### 2.3 MapleStory 2 (`vm-maple2`) ```bash ./setup-game-vm.sh maple2 # Sigue la guía en docs/game-servers.md para el setup completo # Requiere descargar 14GB de datos del cliente ``` ### 2.4 FusionFall (`vm-fusionfall`) ```bash ./setup-game-vm.sh fusionfall ``` --- ## Paso 3: Configurar DNS y SSL ### 3.1 DNS Apunta tu dominio a la IP pública de la **VM Principal**: ``` play.consultoria-as.com → IP_PUBLICA_VM_MAIN ``` Para los juegos, puedes usar subdominios o el mismo dominio con diferentes puertos: ``` nier.play.consultoria-as.com → IP_PUBLICA_VM_NIER dbo.play.consultoria-as.com → IP_PUBLICA_VM_DBO ``` ### 3.2 SSL (Let's Encrypt) ```bash # En la VM Principal cd /opt/project-afterlife/docker docker compose -f docker-compose.main.yml run --rm certbot certonly \ --webroot --webroot-path=/var/www/certbot \ -d play.consultoria-as.com # Reiniciar Nginx docker compose -f docker-compose.main.yml restart nginx ``` --- ## Paso 4: Verificar ### 4.1 VM Principal ```bash # Health checks curl -f http://localhost:3000 # Next.js curl -f http://localhost:1337/admin # Strapi curl -f http://localhost:9000 # Authentik ``` ### 4.2 Conectividad entre VMs ```bash # Desde vm-main, probar conexión a los juegos nc -zv 10.0.0.70 80 # NieR nc -zv 10.0.0.80 22000 # DBO nc -zv 10.0.0.40 20001 # Maple2 nc -zv 10.0.0.30 23000 # FusionFall ``` --- ## Troubleshooting ### "No se puede conectar a Authentik" Verifica que el contenedor `main-authentik-server` esté corriendo: ```bash docker logs main-authentik-server docker logs main-authentik-postgres ``` ### "Strapi no arranca" Verifica que PostgreSQL esté healthy: ```bash docker inspect --format='{{.State.Health.Status}}' main-postgres ``` ### "La web muestra 502 Bad Gateway" El contenedor de Next.js puede estar construyéndose. Espera y revisa: ```bash docker logs main-web ``` --- ## Backups ### VM Principal ```bash # PostgreSQL (Strapi) docker exec main-postgres pg_dump -U afterlife afterlife > backup_cms.sql # PostgreSQL (Authentik) docker exec main-authentik-postgres pg_dump -U authentik authentik > backup_auth.sql # MinIO mc mirror local/afterlife ./backup-minio/ ``` ### VMs de Juegos Ver `docs/game-servers.md` para backups específicos de cada juego.