Tomes of Knowledge

Guides

Three scrolls to take you from bare metal to a realm of your own. Read them in order, or descend straight to the one you need.

Raise Your First Gate

Provision a VPS, install the DevXH server, open port 6112, and run it as a systemd service that survives reboots.

Beginner ◆ 10 min read

ZeroTier Private Realms

Create a ZeroTier network, add your server and friends as members, and host a game nobody can see but your circle.

Intermediate ◆ 15 min read

Joining a Public Game

Point stock DevilutionX at a DevXH gate and walk into town — plus the idle bot mode for automated companions.

Beginner ◆ 5 min read

Whispers Answered

Hosting FAQ

The questions every gate operator asks. Type to filter — the labyrinth remembers. Every guide page links here too.

What kind of server do I need to host a gate?

Almost anything. DevXH is headless — no display, no window manager — and idles around 2% CPU with a few dozen MB of RAM. The cheapest VPS tier at any provider is plenty for one gate. See Raise Your First Gate.

Which ports does a gate need open?

TCP 6112 by default for TCP/IP games. Change it with --port N if it's taken and forward the same port. ZeroTier games need no open ports at all — they tunnel out via UDP 9993 to ZeroTier's roots.

How many players can join one game?

Four total — and the gate itself occupies one slot as the idle host, leaving three human slots. Want more people? Run several gates on one VPS, each with its own --port and --name.

Is a public gate safe to expose to the internet?

The server only listens on its game port and speaks the DevilutionX protocol — there's no shell, no admin panel, nothing else to attack. For privacy, add --password, or use ZeroTier so the game is invisible to anyone outside your network.

Do I need to own the game? Where do the MPQs come from?

Yes — you must own Hellfire (and/or Diablo). DevXH never distributes game assets; you supply your own MPQ files (hellfire.mpq, hfmonk.mpq, …) and point the server at them with --data-dir.

Players report lag. What affects it?

DevilutionX multiplayer is a lockstep simulation: the slowest connection sets the pace for everyone. Server load is rarely the cause (the gate idles at ~2% CPU) — it's almost always distance. Host the gate near your players, or run multiple regional gates. The --verbose flag helps diagnose persistent desync.

Can I make a gate private but still public-facing?

Yes — start it with --password "secret". The game still appears in the lobby, but joiners must enter the password. For total invisibility, use a ZeroTier realm instead.

What happens if the server crashes or the VPS reboots?

With the systemd unit from the deployment guide, systemd restarts it (Restart=on-failure) and it comes back after reboot (WantedBy=multi-user.target). The idle hero's save persists in --save-dir, so level and gear carry over across restarts.

How do I make the gate start automatically on boot?

Install it as a systemd service — the full unit file is in Raise Your First Gate. The short version: systemctl enable --now devxh. Logs land in journald: journalctl -u devxh -f.

Can I run several gates on one VPS?

Yes — each gate is just another process. Give each a unique --port, --name, and --save-dir (so heroes don't overlap), then create one systemd unit per gate. Resources scale fine: a small VPS can comfortably host several idle gates.

My players are behind CGNAT / strict firewalls. Options?

ZeroTier was built for exactly this: everyone joins one virtual network, no port forwarding, no public IP needed. The game shows up in the lobby as if you all shared a LAN.

Can the server join someone else's game as an idle player?

Yes — bot mode. --join ADDRESS connects the idle hero to any TCP/IP host (or ZeroTier game name) instead of hosting, with --hero-name/--hero-class to customize it. Useful for keeping a friend's game warm or testing your own gate.

How do I get my gate on the public server list?

Registration opens with the membership backend — it's the next major piece of DevXH. Until then, share your gate's IP directly with players. Watch the Downloads section for the announcement.