Instalación
Esta guía levanta el servidor. Para que los jugadores se conecten, después hay que compilar el cliente apuntando a tu servidor: ver Cliente del juego.
Requisitos
| Requisito | Mínimo recomendado |
|---|---|
| Sistema | Linux x86_64 (amd64) o ARM64 |
| RAM | 2 GB |
| CPU | 2 vCPU |
| Docker | 24.0+ |
| Docker Compose | 2.20+ |
Las imágenes publicadas sirven para linux/amd64 y linux/arm64, y la de la base de datos usa MySQL 8.4 LTS.
En equipos ARM con 1 GB de RAM o menos, habilitá 2 GB de swap antes de compilar las imágenes.
Puertos
| Puerto | Protocolo | Servicio |
|---|---|---|
44405 |
TCP | ConnectServer (lista de servidores) |
55601 |
UDP | ConnectServer |
55901 |
TCP | GameServer |
8085 |
TCP | Panel web (opcional) |
Con UFW:
ufw allow 44405/tcp
ufw allow 55601/udp
ufw allow 55901/tcp
Instalar con Docker
1. Clonar el repositorio
git clone https://github.com/EmanuelCatania/Mu-Linux-0.97k.git
cd Mu-Linux-0.97k
2. Configurar el .env
cp .env.example .env
nano .env
Antes del primer arranque cambiá como mínimo:
# IP pública del VPS: es la que el ConnectServer le pasa al cliente
PUBLIC_IP=203.0.113.10
# Contraseñas de MySQL
MYSQL_ROOT_PASSWORD=contraseña_segura_root
MYSQL_PASSWORD=contraseña_segura_user
DB_PASS=contraseña_segura_user
# Secreto de las sesiones web (un texto aleatorio largo)
SESSION_SECRET=cambia-esto-por-un-texto-aleatorio-largo
DB_PASS tiene que ser igual a MYSQL_PASSWORD. La referencia completa está en Configuración.
3. Levantar el stack
Con las imágenes publicadas en Docker Hub, sin compilar nada (recomendado):
docker compose -f docker-compose.images.yml up -d
O compilando las imágenes desde el código del repositorio:
docker compose up -d --build
Se levantan MySQL, el servidor (ConnectServer, JoinServer, DataServer y GameServer) y el panel web.
docker compose ps # estado de los contenedores
docker compose logs -f # logs en tiempo real
Al arrancar, el servidor muestra su versión y el cliente compatible:
MU Linux server 0.97.30 | Cliente compatible: https://github.com/EmanuelCatania/Mu-97k-Client-Source/releases/tag/0.97.30
Con el compose de imágenes, agregá -f docker-compose.images.yml a cada comando docker compose.
4. Entrar al panel web
El panel queda en el puerto 8085 (http://TU_IP:8085) o en el dominio de tu proxy inverso. El administrador está en /admin/.
El usuario inicial es admin / 123456, y el primer ingreso obliga a cambiar la contraseña. Después, un asistente te deja elegir el idioma por defecto del sitio (español, inglés o portugués) y el diseño. Ver Panel Admin.
5. Compilar el cliente
Con el servidor andando, compilá el cliente con la dirección de tu servidor: Cliente del juego.
Editor de archivos (opcional)
El editor agrega backups por archivo, snapshots completos de los datos del servidor y la recarga automática al guardar desde el panel:
# En el .env
EDITOR_ENABLED=1
EDITOR_API_URL=http://mu-editor:8090
docker compose -f docker-compose.yml -f docker-compose.editor.yml up -d --build
Actualizar
docker compose -f docker-compose.images.yml pull mu-server
docker compose -f docker-compose.images.yml up -d --no-deps mu-server
Para fijar una versión en vez de latest, cambiá la imagen de mu-server a emapupi/mu-linux-97k:0.97.30.
Los datos del juego no se actualizan con la imagen. Viven en un volumen persistente (/opt/mu/Data dentro del contenedor) para que no se pierdan tus cambios. Cada versión nueva indica en las notas de su Release qué archivos hay que integrar a mano. Por ejemplo, para pasar a 0.97.30 hay que agregar las filas de los comandos GM nuevos: ver Comandos GM y recargas.
Actualizá el cliente a la misma versión que el servidor.
Pterodactyl
Hay eggs para el servidor y la web en la carpeta Pterodactyl eggs del repositorio, y cada Release trae los archivos que usa el instalador (mu-linux-97k-server-amd64.tar.gz, mu-linux-97k-server-arm64.tar.gz y mu-linux-97k-web.tar.gz).
- Importá los eggs en el panel de Pterodactyl.
- En el servidor, elegí la versión en la variable
MU_RELEASE_TAG(por ejemplo0.97.30). - Instalá: el instalador descarga el archivo de tu arquitectura desde el Release.
Para actualizar una instalación existente, no reinstales: el instalador también extrae configuraciones y datos. Con el servidor detenido, extraé el archivo de tu arquitectura en una carpeta temporal, reemplazá los cuatro binarios y start.sh, e integrá los cambios de Data que indique el Release.
Sin Docker
El servidor también se puede compilar a mano con CMake, en Linux (x64 y ARM64) y en Windows (x86 y x64). Los pasos están en el README del servidor.
La instalación recomendada y con soporte es la de Docker en Linux. El servidor compila en Windows, pero no se da soporte a esa instalación.
Recrear la base de datos
Si cambiás las credenciales de MySQL después del primer arranque, hay que recrear el volumen de la base:
docker compose down -v
docker compose up -d
⚠️ Esto borra cuentas y personajes. Hacé un backup antes.
Resolución de problemas
El servidor no aparece en el cliente: verificá que PUBLIC_IP sea la IP pública correcta, que los puertos estén abiertos y que el cliente esté compilado con la dirección de tu servidor.
El cliente conecta pero no entra: el CustomerName, el ServerSerial o la versión del cliente no coinciden con los del servidor. Ver Cliente del juego.
El panel web no carga: esperá a que MySQL pase su health check y revisá docker compose ps.
Errores del GameServer: docker compose logs mu-server.