Table of Contents

Quick Start Guide

Get Moongate v2 running locally with the current server behavior.

Prerequisites

  • .NET SDK 10.0.x
  • Ultima Online client data directory
  • Git

1. Clone

git clone https://github.com/moongate-community/moongatev2.git
cd moongatev2

2. Build

dotnet restore
dotnet build -c Release

3. Run

You must provide UO directory (CLI or env var).

dotnet run --project src/Moongate.Server -- \
  --rootDirectory ./moongate \
  --uoDirectory /path/to/uo

Or with env var:

export MOONGATE_UO_DIRECTORY=/path/to/uo
dotnet run --project src/Moongate.Server

4. Verify

HTTP checks:

  • http://localhost:8088/healthok
  • http://localhost:8088/metrics → Prometheus payload (or config message)
  • http://localhost:8088/scalar → OpenAPI UI (if enabled)

5. Console Commands

Built-in default commands currently include:

  • help / ? (console + in-game, minimum Regular)
  • lock / * (console only, minimum Administrator)
  • exit / shutdown (console only, minimum Administrator)

Command source and authorization rules:

  • Console commands are always treated as AccountType.Administrator.
  • In-game commands use the authenticated GameSession.AccountType.
  • In-game command input is triggered by Unicode speech starting with . (example: .help).

6. Docker (optional)

Build image:

./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 \
  --name moongate \
  moongate-server:local

Troubleshooting

  • If startup fails with UO directory error, set --uoDirectory or MOONGATE_UO_DIRECTORY.
  • If ports are busy, stop conflicting process or remap ports.

Previous: Introduction | Next: Installation Guide