- README.md: project overview, server status, quick start guide, architecture diagram, tech stack, and content inventory - docs/architecture.md: technical architecture, service diagram, component details, and design decisions - docs/game-servers.md: setup and operation guide for OpenFusion, MapleStory 2, and Minecraft FTB Infinity Evolved - docs/cms-content.md: Strapi content model, i18n strategy, documentary structure, and API endpoints - docs/deployment.md: local dev, production deploy, CI/CD, SSL setup, backup procedures, and monitoring Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
7.8 KiB
Servidores de Juegos
Guia de setup, operacion y troubleshooting de cada servidor de juegos.
OpenFusion (FusionFall)
Resumen
| Dato | Valor |
|---|---|
| Emulador | OpenFusion |
| Lenguaje | C++ |
| Puerto | 23000 (login), 23001 (shard) |
| Base de datos | SQLite (embebida) |
| RAM | ~254 MB |
Archivos
servers/openfusion/
├── Dockerfile # Ubuntu 24.04, copia binario + config
├── docker-entrypoint.sh # Genera config.ini desde env vars
├── config.ini # Configuracion del servidor
├── fusion # Binario compilado (no en git)
├── sql/ # Migraciones SQLite
└── tdata/ # Datos del juego (NPCs, mobs, drops)
Configuracion
Variables de entorno en docker-compose.dev.yml:
OPENFUSION_SHARD_IP: IP publica del servidor (default: 192.168.10.234)OPENFUSION_MOTD: Mensaje del dia
Conexion de cliente
- Descargar el cliente FusionFall
- Usar el launcher de OpenFusion apuntando a
192.168.10.234:23000
Troubleshooting
- "Connection refused": Verificar que el contenedor esta corriendo y los puertos estan mapeados
- Datos de juego: Los archivos
tdata/contienen los NPCs, mobs y drops. Si faltan, el mundo estara vacio
MapleStory 2
Resumen
| Dato | Valor |
|---|---|
| Emulador | Maple2 |
| Lenguaje | C# / .NET 8 |
| Puertos | 20001 (login), 21001 (world), 20002/21002 (game), 4000 (web) |
| Base de datos | MySQL 8.0 (puerto 3307) |
| RAM total | ~1.4 GB (5 contenedores) |
Arquitectura Multi-Servicio
maple2-mysql (3307)
│
├── maple2-world (21001) ← Coordinador central, gRPC
│ │
│ ├── maple2-login (20001) ← Autenticacion, seleccion de personaje
│ │
│ └── maple2-game-ch0 (20002/21002) ← Canal de juego
│
└── maple2-web (4000) ← API web auxiliar
Los servidores se comunican entre si via gRPC (HTTP/2). El World server actua como coordinador central. Los Game servers se conectan al World al iniciar.
Setup Inicial (Primera Vez)
1. Clonar el repositorio
cd servers/
git clone --recurse-submodules https://github.com/MS2Community/Maple2.git maple2
2. Descargar datos del cliente
Se necesita el cliente de MapleStory 2 (~14 GB). Los archivos se colocan en servers/maple2/client-data/Data/.
Fuentes del cliente:
- adventure-island-online-2 releases (6 partes ZIP)
- Extraer todo a
servers/maple2/client-data/
3. Aplicar XML Patches
Descargar MapleStory2-XML v1.2.1 y copiar los archivos Server.m2d, Server.m2h, Xml.m2d, Xml.m2h a servers/maple2/client-data/Data/ (reemplazar los originales).
4. Configurar .env
cp servers/maple2/.env.example servers/maple2/.env
# Editar con las IPs correctas:
# GAME_IP=192.168.10.234
# LOGIN_IP=192.168.10.234
5. Verificar .dockerignore
El archivo servers/maple2/.dockerignore DEBE incluir:
client-data
client-download
xml-patches
Sin esto, el build de Docker intentara copiar 14 GB de datos al contexto.
6. Ingestar datos del juego
cd docker/
docker compose -f docker-compose.maple2.yml up -d maple2-mysql
# Esperar a que MySQL este healthy
docker compose -f docker-compose.maple2.yml run --rm maple2-file-ingest \
bash -c "cd /app && dotnet restore && cd Maple2.File.Ingest && dotnet run"
Este proceso importa todos los datos del cliente a MySQL. Toma ~10 minutos.
7. Construir y levantar servidores
docker compose -f docker-compose.maple2.yml build
docker compose -f docker-compose.maple2.yml up -d
Conexion de cliente
- Tener el cliente de MapleStory 2 instalado
- El cliente debe apuntar a
192.168.10.234:20001(Login Server) - Las IPs se configuran en
servers/maple2/.env(GAME_IP,LOGIN_IP)
Troubleshooting
- "No space left on device" al buildear: Verificar
.dockerignoreincluyeclient-data - "Scripting/Scripts not found": Ya corregido — se removio la linea COPY del Dockerfile del Game server
- "project.assets.json not found" en file-ingest: Ejecutar
dotnet restoreantes dedotnet run - Servidores no se conectan entre si: Verificar que
GRPC_WORLD_IP=maple2-worldyGRPC_GAME_IP=maple2-game-ch0estan configurados en el compose
Agregar mas canales de juego
Para agregar un segundo canal, duplicar el servicio maple2-game-ch0 en el compose cambiando:
- Nombre:
maple2-game-ch1 - Puertos:
20003:20003y21003:21003 GRPC_GAME_IP: maple2-game-ch1
Minecraft: FTB Infinity Evolved
Resumen
| Dato | Valor |
|---|---|
| Imagen Docker | itzg/minecraft-server:java8 |
| Modpack | FTB Infinity Evolved v3.1.0 |
| Minecraft | 1.7.10 |
| Forge | 10.13.4.1614 |
| Puerto | 25565 |
| RAM | ~3.5 GB (6 GB JVM heap, 8 GB limite contenedor) |
| Mods | ~175 |
Configuracion
El servidor se configura via variables de entorno en docker-compose.dev.yml:
environment:
EULA: "TRUE"
TYPE: FTBA
FTB_MODPACK_ID: 23
FTB_MODPACK_VERSION_ID: 99
MEMORY: 6G
MAX_MEMORY: 6G
MOTD: "Project Afterlife - FTB Infinity Evolved"
DIFFICULTY: normal
MAX_PLAYERS: 20
VIEW_DISTANCE: 10
JVM_DD_OPTS: "fml.queryResult=confirm"
PRE_LAUNCH_CMD: "cp -n /data/minecraft_server.jar /data/minecraft_server.1.7.10.jar 2>/dev/null; true"
Fix Conocido: Classpath de Forge 1.7.10
El MANIFEST.MF del jar de Forge 1.7.10 referencia minecraft_server.1.7.10.jar en su Class-Path, pero la imagen itzg renombra el archivo a minecraft_server.jar. Sin el fix, Forge no encuentra log4j2 y crashea con NoClassDefFoundError.
Solucion: El PRE_LAUNCH_CMD copia el archivo con el nombre correcto antes de cada inicio. Si recreas el volumen, este fix se aplica automaticamente.
Primer inicio
El primer inicio toma 5-10 minutos porque:
- Descarga el FTB App installer
- Descarga los ~175 mods del modpack
- Instala Forge 10.13.4.1614
- Genera el mundo
Conexion de cliente
- Instalar FTB App, MultiMC, ATLauncher, o Prism Launcher
- Instalar modpack FTB Infinity Evolved version 3.1.0
- Multiplayer > Add Server:
192.168.10.234:25565
Modo Experto
Para activar el modo experto (recetas mas complejas):
/ftb_mode set expert
Ejecutar desde la consola del servidor o como operador in-game.
Troubleshooting
- "NoClassDefFoundError: org/apache/logging/log4j/Level": El fix de classpath no se aplico. Ejecutar manualmente:
docker exec minecraft-ftb cp /data/minecraft_server.jar /data/minecraft_server.1.7.10.jary reiniciar - Server lag: Reducir
VIEW_DISTANCEde 10 a 8, o aumentarMEMORYsi hay RAM disponible - Pastebin 403: Error inocuo — Pastebin bloquea requests automaticos. Solo afecta a los badges de FTB Utilities, no a la funcionalidad del juego
Operaciones Comunes
Ver logs de un servidor
docker logs -f minecraft-ftb # Minecraft
docker logs -f maple2-world # MapleStory 2 World
docker logs -f docker-openfusion-1 # OpenFusion
Reiniciar un servidor
docker restart minecraft-ftb
docker restart maple2-world maple2-login docker-maple2-game-ch0-1
docker restart docker-openfusion-1
Ver uso de recursos
docker stats --no-stream
Backup de datos
# PostgreSQL (CMS)
docker exec docker-postgres-1 pg_dump -U afterlife afterlife > backup_cms.sql
# MySQL (MapleStory 2)
docker exec maple2-db mysqldump -u root -pmaplestory --databases maple-data game-server > backup_ms2.sql
# Minecraft (mundo completo)
docker cp minecraft-ftb:/data/world ./backup_minecraft_world/