diff --git a/docs/dbo-vm-guide.md b/docs/dbo-vm-guide.md new file mode 100644 index 0000000..725f05b --- /dev/null +++ b/docs/dbo-vm-guide.md @@ -0,0 +1,284 @@ +# Guía de Despliegue — Dragon Ball Online Server + +**VM:** `vm-dbo` +**IP:** `192.168.10.109` +**Dominio futuro:** `play.consultoria-as.com` (NO configurado todavía) +**OS:** Windows Server 2022 (Desktop Experience recomendado) +**Puertos:** `22000-22010/tcp` +**RAM:** 4-6 GB +**Disco:** 30 GB SSD + +--- + +## ⚠️ Decisión de arquitectura + +DBO Global está escrito en C++ con **MFC** (Microsoft Foundation Classes), lo cual requiere Windows y Visual Studio para compilar. Por esta razón, esta VM usa **Windows Server** en lugar de Ubuntu. + +| Opción | Estado | +|--------|--------| +| Ubuntu + Wine | Descartado — MFC no es estable bajo Wine para producción | +| Windows Server Core | Posible, pero riesgoso — MFC asume componentes gráficos | +| **Windows Server 2022 Desktop** | **Recomendado** — Compilación nativa, más estable | + +--- + +## 1. Instalación de Windows Server 2022 + +### ISO +Descargar **Windows Server 2022 Evaluation** desde Microsoft: +https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2022 + +### Durante la instalación +- **Edición:** Windows Server 2022 Standard Evaluation (Desktop Experience) +- **Tipo de instalación:** Custom (limpio) +- **Disco:** Usar todo el disco disponible (30 GB) + +### Post-instalación +1. Cambiar nombre del equipo: `vm-dbo` +2. Configurar IP estática: + - IP: `192.168.10.109` + - Máscara: `255.255.255.0` + - Gateway: `192.168.10.1` (ajustar según tu red) + - DNS: `1.1.1.1`, `8.8.8.8` +3. Habilitar Remote Desktop: + ```powershell + Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0 + Enable-NetFirewallRule -DisplayGroup "Remote Desktop" + ``` +4. Actualizar Windows: + ```powershell + sconfig + # Opción 6: Download and Install Updates + ``` + +--- + +## 2. Instalación de Kimi Code CLI + +Kimi se usará para administrar y configurar el servidor desde la terminal. + +### Requisitos previos +- PowerShell 5.1+ (viene con Server 2022) +- Conexión a Internet + +### Pasos + +Abrir **PowerShell como Administrador**: + +```powershell +# 1. Habilitar ejecución de scripts +Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force + +# 2. Instalar Kimi CLI (instala uv + Python 3.13 + kimi-cli automáticamente) +Invoke-RestMethod https://code.kimi.com/install.ps1 | Invoke-Expression + +# 3. Verificar +kimi --version +``` + +### Autenticación +```powershell +kimi +``` +Dentro del CLI: +``` +/login +``` +Seguir las instrucciones (abrir URL en navegador, copiar código de verificación). + +--- + +## 3. Instalación de dependencias del servidor + +### Visual Studio 2022 Build Tools +Descargar desde: https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022 + +Durante la instalación, seleccionar: +- [x] **Desktop development with C++** +- [x] **MFC/ATL support** (bajo C++ Desktop, opciones individuales) +- [x] **Windows 11 SDK** (o Windows 10 SDK si 11 no está disponible) + +### MariaDB para Windows +1. Descargar desde: https://mariadb.org/download/ +2. Instalar con configuración por defecto +3. Recordar la contraseña de root que configures +4. Asegurar que el servicio MariaDB esté corriendo: + ```powershell + Get-Service MariaDB + ``` + +### Git +```powershell +winget install --id Git.Git -e --source winget +# O descargar desde https://git-scm.com/download/win +``` + +--- + +## 4. Compilación de DBO Global + +### Clonar el repositorio +```powershell +mkdir C:\dbo + cd C:\dbo + git clone https://github.com/dboglobal/DBOGLOBAL.git +``` + +### Compilar +1. Abrir **Developer Command Prompt for VS 2022** (viene con Build Tools) +2. Navegar a `C:\dbo\DBOGLOBAL` +3. Abrir `DBOGLOBAL.sln` con MSBuild: + ```cmd + msbuild DBOGLOBAL.sln /p:Configuration=Release /p:Platform=x64 + ``` +4. Los binarios se generarán en `Release\` o `x64\Release\` + +--- + +## 5. Configuración de la base de datos + +### Crear base de datos +Abrir ** HeidiSQL** (incluido con MariaDB installer) o usar mysql client: +```powershell +# Ejecutar scripts SQL que vienen en el repo DBOGLOBAL + cd C:\dbo\DBOGLOBAL\sql + Get-ChildItem *.sql | ForEach-Object { mysql -u root -p < $_.FullName } +``` + +### Configurar credenciales +Editar archivos de configuración del servidor DBO (`.ini` o `.conf` en `Release\`): +```ini +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_USER=root +DB_PASSWORD=tu_password_aqui +``` + +--- + +## 6. Firewall de Windows + +```powershell +# Ver perfil actual +Get-NetFirewallProfile + +# Permitir puertos del juego (22000-22010 TCP) +New-NetFirewallRule -DisplayName "DBO Game Ports" -Direction Inbound -Protocol TCP -LocalPort 22000-22010 -Action Allow + +# Permitir RDP solo desde red privada (opcional pero recomendado) +Set-NetFirewallRule -DisplayGroup "Remote Desktop" -Enabled True +# Si se quiere restringir por IP, usar: -RemoteAddress 10.0.0.0/24,192.168.10.0/24 + +# Permitir MariaDB solo local (si no se accede desde otra VM) +New-NetFirewallRule -DisplayName "MariaDB Local" -Direction Inbound -Protocol TCP -LocalPort 3306 -RemoteAddress 127.0.0.1 -Action Allow +``` + +--- + +## 7. Ejecución del servidor + +Los servidores de DBO Global típicamente son múltiples ejecutables: + +| Ejecutable | Puerto | Descripción | +|------------|--------|-------------| +| `AuthServer.exe` | 22000 | Autenticación | +| `CharServer.exe` | 22001 | Selección de personaje | +| `ChatServer.exe` | 22002 | Chat | +| `GameServer.exe` | 22003+ | Canales de juego | + +### Opción A: Ventanas individuales (desarrollo/pruebas) +```powershell +cd C:\dbo\DBOGLOBAL\Release +Start-Process .\AuthServer.exe +Start-Process .\CharServer.exe +Start-Process .\ChatServer.exe +Start-Process .\GameServer.exe +``` + +### Opción B: Servicio de Windows (producción) +Crear un servicio para cada componente usando `nssm` (Non-Sucking Service Manager): + +```powershell +# Instalar nssm +winget install --id NSSM.NSSM -e --source winget + +# Crear servicios +nssm install DBO-Auth "C:\dbo\DBOGLOBAL\Release\AuthServer.exe" +nssm install DBO-Char "C:\dbo\DBOGLOBAL\Release\CharServer.exe" +nssm install DBO-Chat "C:\dbo\DBOGLOBAL\Release\ChatServer.exe" +nssm install DBO-Game "C:\dbo\DBOGLOBAL\Release\GameServer.exe" + +# Iniciar +Start-Service DBO-Auth +Start-Service DBO-Char +Start-Service DBO-Chat +Start-Service DBO-Game +``` + +--- + +## 8. Verificación + +```powershell +# Ver procesos corriendo +Get-Process | Where-Object { $_.ProcessName -like "*Server*" } + +# Ver puertos escuchando +Get-NetTCPConnection -LocalPort 22000,22001,22002,22003 | Select-Object LocalPort, State, OwningProcess + +# Ver logs +# Los logs usualmente están en C:\dbo\DBOGLOBAL\Release\logs\ o salen por consola +``` + +Prueba desde otra máquina en la red: +```powershell +# En otra PC con PowerShell: +Test-NetConnection -ComputerName 192.168.10.109 -Port 22000 +``` + +--- + +## 9. Conexión de clientes + +1. Descargar el cliente DBO Global +2. Configurar el launcher para apuntar a: + ``` + 192.168.10.109:22000 + ``` +3. Crear cuenta (o usar cuenta por defecto si existe) + +Cuando se configure `play.consultoria-as.com`, actualizar el launcher al dominio. + +--- + +## 10. Backup de la base de datos + +```powershell +# Backup diario con mysqldump +$fecha = Get-Date -Format "yyyyMMdd-HHmm" +mysqldump -u root -p --all-databases > "C:\dbo\backups\db-$fecha.sql" +``` + +Programar con Task Scheduler para que corra todos los días. + +--- + +## Notas para Kimi en esta VM + +Cuando uses Kimi para administrar esta VM: +- Kimi tiene acceso a PowerShell, cmd, y puede editar archivos +- No todos los comandos de Linux funcionan — usar equivalentes de PowerShell +- Para editar archivos `.ini` o `.sql`, Kimi puede usar `Set-Content` o `notepad` +- Los binarios compilados de DBO no deben subirse a Git + +--- + +## Troubleshooting + +| Problema | Solución | +|----------|----------| +| "No compila en VS Build Tools" | Verificar que esté instalado **Desktop development with C++** y **MFC/ATL** | +| "MariaDB no conecta" | Verificar que el servicio esté corriendo: `Get-Service MariaDB` | +| "Cliente no se conecta" | Verificar firewall de Windows y que todos los puertos 22000-22010 estén abiertos | +| "Kimi no se instala" | Verificar `Set-ExecutionPolicy` y conexión a Internet | +| "Faltan DLLs al ejecutar" | Instalar **Visual C++ Redistributable** (x64) desde Microsoft |