Installation Guide
Install and run Moongate v2 with the current runtime requirements.
Requirements
- .NET SDK 10.0.x
- Git
- Ultima Online data directory (path passed with
--uoDirectoryorMOONGATE_UO_DIRECTORY)
Clone And Build
git clone https://github.com/moongate-community/moongatev2.git
cd moongatev2
dotnet restore
dotnet build -c Release
Run (Local)
dotnet run --project src/Moongate.Server -- \
--rootDirectory ./moongate \
--uoDirectory /path/to/uo \
--loglevel Information
Equivalent with environment variable:
export MOONGATE_UO_DIRECTORY=/path/to/uo
dotnet run --project src/Moongate.Server
NativeAOT Publish (Optional)
Example for Linux x64:
dotnet publish src/Moongate.Server/Moongate.Server.csproj \
-c Release \
-r linux-x64 \
--self-contained true
Use project scripts for reproducible AOT builds where available (scripts/run_aot.sh).
Docker
Build:
./scripts/build_image.sh -t moongate-server:local
Run:
docker run --rm -it \
-p 2593:2593 \
-p 8088:8088 \
-v /path/to/moongate-data:/app \
-v /path/to/uo:/uo:ro \
moongate-server:local
Recommended env vars in container:
MOONGATE_ROOT_DIRECTORY=/appMOONGATE_UO_DIRECTORY=/uoMOONGATE_IS_DOCKER=true
Verify Startup
curl http://localhost:8088/health
Expected response:
ok
Metrics endpoint:
curl http://localhost:8088/metrics
If metrics are enabled/configured, response is Prometheus text format.
Configuration File
If <root>/moongate.json does not exist, server generates one.
Current top-level model includes:
rootDirectoryuoDirectorylogLevellogPacketDataisDeveloperModehttpgamemetricspersistence
Note: bootstrap currently merges a subset explicitly (RootDirectory, UODirectory, LogLevel, LogPacketData, Persistence).
Previous: Quick Start | Next: Configuration Guide