Starting the Server
Now that the server has been built, everything is run from the Distribution folder.
- Windows
- macOS
- Linux
Using Windows Terminal, Git Bash, or PowerShell, run:
cd Distribution
ModernUO.exe
Using terminal, run:
cd Distribution
dotnet ModernUO.dll
Using terminal, run:
cd Distribution
dotnet ModernUO.dll
First Launch
When you start ModernUO for the very first time, there is no Configuration/modernuo.json file yet. The server will walk you through an interactive setup to create one.
Step 1: Game Data Directory
The server prompts you for the absolute path to your Ultima Online game files (or ClassicUO installation directory):
Please enter the absolute path to your ClassicUO or Ultima Online data:
> C:\Program Files\Ultima Online
Added C:\Program Files\Ultima Online.
[enter to finish]>
You can enter multiple directories if your files are split across locations. Press Enter on a blank line to finish.
Step 2: Listener Address
Next, the server asks which IP address and port to listen on:
Please enter the IP and ports to listen:
- Only enter IP addresses directly bound to this machine
- To listen to all IP addresses enter 0.0.0.0
[0.0.0.0:2593]>
Added 0.0.0.0:2593.
Press Enter to accept the default (0.0.0.0:2593), which listens on all network interfaces on port 2593. This is the correct choice for most setups.
Step 3: Server Name
The server asks for your shard name, which is displayed in the server list:
Please enter the name of your shard:
[ModernUO]> My Shard
Server name set to My Shard.
Press Enter to accept the default name "ModernUO".
Step 4: Expansion and Maps
Finally, the server prompts you to select the target expansion (e.g., T2A, UOR, AOS, ML, SA, etc.) and which maps to enable. Your selection is saved to Configuration/expansion.json.
Step 5: Owner Account
If the server has no accounts (first launch), it offers to create the owner account:
[20:04:28 WRN] This server has no accounts.
[20:04:28 INF] Do you want to create the owner account now? (y/n):
y
[20:04:30 INF] Input Username:
admin
[20:04:32 INF] Input Password:
mypassword
[20:04:34 INF] Owner account created: admin
This account has full administrative access (AccessLevel.Owner) and is automatically added to the protected accounts list, meaning it cannot be banned or deleted through in-game commands. If you skip this step, you can create accounts later by connecting with auto-account creation enabled (the default).
Configuration Saved
After answering these prompts, the server writes its configuration files:
Configuration/modernuo.json-- main server settingsConfiguration/expansion.json-- expansion and map selectionConfiguration/server-access.json-- protected accounts
On every subsequent launch, the server reads these files and skips the prompts entirely. To re-run setup, delete these files and restart.
Expected Console Output
A successful startup looks like this (abbreviated):
ModernUO - [https://github.com/modernuo/modernuo] Version 0.15.6.6
Copyright 2019-2026 ModernUO Development Team
[20:04:29 INF] Reading server configuration from Configuration/modernuo.json...
[20:04:29 INF] Running on .NET 10.0.5
[20:04:32 INF] Loading Map Definitions
[20:04:32 INF] Loading map definitions done (7 maps, 0 failures)
[20:04:33 INF] Protected accounts registered: admin
[20:04:33 INF] Automatically detected client version 7.0.103.0
[20:04:33 INF] Encryption support enabled: Both
[20:04:35 INF] Loading regions done (385 regions)
[20:04:38 INF] Loading world done (230276 items, 43358 mobiles) (2.63 seconds)
[20:04:38 INF] Auto-detected public IP address (47.154.82.160)
[20:04:39 INF] Feature Flag system initialized with 10 flags
[20:04:39 INF] Listening: 192.168.1.100:2593
[20:04:39 INF] Listening: 127.0.0.1:2593
[20:04:39 INF] Listening: 192.168.1.100:12000 (Pings)
[20:04:39 INF] Listening: 127.0.0.1:12000 (Pings)
Once you see the Listening: lines, the server is running and ready to accept connections. Port 2593 is the game port; port 12000 is for ping/status queries.
Game Files
Ultima Online game files are required to run the server. These include map data, art, and other client assets that the server uses for world simulation.
Game files are not distributed with ModernUO. Download the latest client from the UO client download page. After installing, point ModernUO to the directory containing the .mul and .uop files.
If you already have a ClassicUO installation, ModernUO can automatically detect the game files directory from ClassicUO's settings.json. You can also point the server directly at the ClassicUO data folder.
Connecting to the Server
Using ClassicUO
- Open ClassicUO and go to the server configuration screen.
- Set the Server IP to the address of the machine running ModernUO.
- Set the Server Port to
2593(or whichever port you configured). - Enter any username and password. If auto-account creation is enabled (the default), a new account is created on first login.
Local Testing
For testing on the same machine that runs the server, use 127.0.0.1 as the server address with port 2593.
Connecting from Another Machine
If connecting from a different machine on your local network, use the server machine's LAN IP address (e.g., 192.168.1.100). For connections over the internet, you need to forward port 2593 (TCP) on your router to the server machine.
Basic Troubleshooting
Port Already in Use
Error: Address already in use
Another process is using port 2593. Either stop the conflicting process or change the listener port in Configuration/modernuo.json:
"listeners": ["0.0.0.0:2594"]
- Windows
- macOS
- Linux
Find what is using the port:
netstat -ano | findstr :2593
Find what is using the port:
lsof -i :2593
Find what is using the port:
ss -tlnp | grep 2593
Missing Game Files or Wrong Data Directory
If the server cannot find required .mul or .uop files, it will fail during world loading. Verify that:
- The path in
Configuration/modernuo.jsonunder"dataDirectories"points to the correct location. - The directory contains files like
map0.mul,statics0.mul,tiledata.mul, or their.uopequivalents. - The UO client has been fully installed (not just the launcher).
To fix the path, either edit Configuration/modernuo.json directly or delete it and re-run the server to go through the setup prompts again.
.NET SDK Not Found
- Windows
- macOS
- Linux
If you see errors about the .NET runtime or SDK not being found, run the build tool in interactive mode. It will detect and offer to install the correct .NET SDK:
./publish.cmd
If you see errors about the .NET runtime or SDK not being found, run the build tool in interactive mode. It will detect and offer to install the correct .NET SDK:
./publish.sh
If you see errors about the .NET runtime or SDK not being found, run the build tool in interactive mode. It will detect and offer to install the correct .NET SDK:
./publish.sh
The interactive build tool is the easiest way to resolve SDK issues. It checks your environment and offers to install missing dependencies automatically.
Permission Denied on Linux
Do not run ModernUO as the root user. Create a dedicated user account for the server:
sudo useradd -m modernuo
sudo su - modernuo
If you need to bind to a port below 1024 (not typical for UO), grant the binary the capability instead of running as root:
sudo setcap 'cap_net_bind_service=+ep' /path/to/Distribution/dotnet
Server Starts but Clients Cannot Connect
- Make sure you are connecting to the correct IP address and port.
- Check that no firewall is blocking port 2593 (TCP).
- If connecting over the internet, verify that port forwarding is configured on your router.
- On Linux, check
iptablesorufwrules allow inbound traffic on port 2593.