Realm

Requirements

What you need before hosting a Realm dedicated server.

VPS or dedicated server

You need a Linux VPS (or bare metal) where you control the firewall. The server must be able to expose both TCP and UDP ports directly to the internet.

See Hosting Providers for a compatibility table. Hetzner Cloud (~€4/mo) and DigitalOcean Droplets ($6/mo) are the two most common choices.

Minimum specs:

ResourceMinimumRecommended
CPU1 vCPU2 vCPU
RAM512 MB1 GB+
Disk10 GB20 GB+
Bandwidth1 TB/moUnmetered

Memory scales with concurrent voice users. Each voice worker uses roughly 50-100 MB. 512 MB is fine for a small community (10-20 people). For 50+ concurrent voice users, plan for at least 1-2 GB.

Docker

Docker is strongly recommended. The server image bundles the runtime, all native dependencies, and the app itself.

# Install Docker on Ubuntu / Debian
curl -fsSL https://get.docker.com | sh

If you prefer to run without Docker, you'll need Node.js 22+ and a compatible database.

Database

The Docker Compose setup starts the database automatically in a separate container. If you already have a database instance running elsewhere, point the server at it with REALM_STORAGE_MONGO_URL.

Open ports

The following ports must be reachable from the internet:

PortProtocolPurpose
5000TCPHTTP API + WebSocket signaling
40000-49999UDPVoice (WebRTC RTP media)

Ports 80 and 443 are only needed if you add a reverse proxy for SSL.

Voice requires UDP. Without those ports open, text chat will work but voice connections will stall. ICE state stays new and 0 bytes flow. There is no workaround at the platform level.

A public IP or hostname

Your server needs a stable public IP address or a DNS hostname that resolves to one. This is used for:

  • WebRTC ICE candidates (so voice media reaches your server)
  • Server registration with Realm
  • Client connections

Set REALM_WEBRTC_ANNOUNCED_IP to this value. Without it, voice will not work even if the UDP ports are open.

On this page