Installation

Requirements

RequirementRecommended minimum
OSLinux (Ubuntu 20.04+ / Debian 11+)
RAM2 GB
CPU2 vCPU
Docker24.0+
Docker Compose2.20+

Required firewall ports

Open these ports in your VPS firewall before connecting the client:

PortProtocolService
44405TCPConnectServer
55601UDPConnectServer
55901TCPGameServer
8085TCPWeb panel (optional, admin only)

With UFW:

ufw allow 44405/tcp
ufw allow 55601/udp
ufw allow 55901/tcp

Installation steps

1. Clone the repository

git clone https://github.com/EmanuelCatania/Mu-Linux-0.97k.git
cd Mu-Linux-0.97k

2. Configure environment variables

cp .env.example .env
nano .env

Required values to change before starting:

# Your VPS public IP (the client connects to this)
PUBLIC_IP=123.456.789.0

# MySQL passwords (change to strong values)
MYSQL_ROOT_PASSWORD=strong_root_password
MYSQL_PASSWORD=strong_user_password

# Session secret (any long random string)
SESSION_SECRET=change-this-to-a-long-random-string

# Admin panel credentials
ADMIN_USER=admin
ADMIN_PASS=change_this_password

3. Start the stack

docker compose up -d

This downloads the Docker Hub images (first time only) and starts all services: MySQL, ConnectServer, GameServer, JoinServer, DataServer and the web panel.

To watch logs in real time:

docker compose logs -f

To verify all containers are running:

docker compose ps

4. Access the web panel

Once all containers are healthy, the web panel is available through the domain configured in your reverse proxy:

https://your-domain.com/

Or directly by IP if you have no reverse proxy:

http://YOUR_IP:8085

Use the credentials you set in .env (ADMIN_USER / ADMIN_PASS). The admin panel is at /admin/.

With the server editor (optional)

The editor API adds per-file backups and full snapshots of the MuServer/Data directory.

# Enable in .env
EDITOR_ENABLED=1
EDITOR_API_URL=http://mu-editor:8090

# Start with the extended compose file
docker compose -f docker-compose.yml -f docker-compose.editor.yml up -d

Updating images

docker compose pull
docker compose up -d

Recreating the database

If you change MySQL credentials after the first start, you need to recreate the volume:

docker compose down -v
docker compose up -d

⚠️ This deletes all server data. Make a backup first if you have important data.

Troubleshooting

Server doesn’t appear in client: check that PUBLIC_IP in .env is the correct public IP and that the firewall ports are open.

Web panel doesn’t load: wait a few seconds for MySQL to pass its health check. Check docker compose ps for the status of each service.

GameServer error logs: run docker compose logs mu-server to see specific errors.