Setting Up a Custom Domain for Your Server: Why It Matters and How to Do It
Table of Contents
Your server’s default address looks something like node-12.witchly.host:25565 or a raw IP like 45.x.y.z:25565. It works, but it’s forgettable, hard to share, and ties your community to whatever Witchly hostname you happen to be on.
A custom domain — play.yourcommunity.com, or even just yourgame.io — replaces all of that with something memorable. Players type the domain into Minecraft’s server browser; it resolves to your actual server. If you ever migrate to a different node, you update one DNS record and everyone reconnects automatically.
This post walks through what a custom domain actually does, what kind of domain to register, and the exact steps to wire one up.
What a custom domain gives you
Three concrete wins:
1. Memorability
play.aetherbound.gg is dramatically easier to remember than a hostname-and-port combo. Players who’d otherwise need to bookmark your IP just remember the domain.
2. Portability
If your server ever moves — different node, different IP, even a different host — your players don’t care. They reconnect using the same domain; only the DNS record behind it changes. This alone is worth the $10/year a domain costs.
3. Branding
A community with play.yourcommunity.com looks more legitimate and durable than one with a raw IP. It’s also easier to put on a Discord, a Reddit thread, a YouTube video, or a screenshot.
Do I need a domain at all?
If your server is for you and a few friends, no. The default hostname is fine and stable. Custom domains start mattering when:
- You’re sharing the server publicly (Reddit, Discord servers, video content)
- You’re growing a community where reconnecting after node changes matters
- You’re running a Minecraft server and want it findable in the in-game server browser by name
Most servers under 10 players don’t need one. Most servers over 30 do.
What kind of domain to register
You have two practical options, in order of recommendation:
Option A: Buy a top-level domain (recommended)
Register yourcommunity.com (or .gg, .io, .net, etc.) from any registrar. Annual cost is typically $10-15/year for .com, slightly more for newer TLDs like .gg.
You then create a subdomain specifically for your game server, like play.yourcommunity.com, leaving the apex domain (yourcommunity.com) free for a future website, Discord landing page, etc.
This is what we recommend. It scales with your community, you own the brand entirely, and you can move it to any provider in the future.
Option B: Use a free subdomain service
Services like Duck DNS or Afraid offer free subdomains under their own domain (e.g., yourcommunity.duckdns.org). They work, but:
- The branding is mediocre
- The provider can disappear or change rules at any time
- You can’t migrate the URL if you outgrow them
Use this only if you’re testing, or you genuinely don’t want to spend $10/year. For a serious community, just buy a domain.
We won’t recommend a specific registrar — most of the popular ones are fine, and pricing changes constantly. Pick whichever you trust.
How DNS connects your domain to your server
Once you own a domain, the connection between play.yourcommunity.com and your Witchly server is a single DNS record. DNS is the directory that translates domains into IP addresses; you’ll be adding one entry to your domain’s DNS zone.
There are two record types you might use:
A record (most common)
Points your domain directly at the server’s IPv4 address:
Name: play
Type: A
Value: 45.x.y.z (your server's IP from the dashboard)
TTL: 3600 (or whatever default the registrar uses)
When a player types play.yourcommunity.com, DNS resolves it to 45.x.y.z, and Minecraft connects on port 25565 (or whatever default port the game uses). Done.
This is the right choice when your server uses the default port for its game (25565 for Minecraft Java, 28015 for Rust, etc.). The game client connects directly to the IP on the standard port.
SRV record (when you have a non-standard port)
If your server is on a non-default port — for example, port 25571 instead of 25565 — players would normally have to type play.yourcommunity.com:25571. An SRV record lets the domain implicitly carry the port too, so players type just play.yourcommunity.com and the client auto-discovers the right port.
Name: _minecraft._tcp.play
Type: SRV
Priority: 0
Weight: 5
Port: 25571
Target: play.yourcommunity.com
TTL: 3600
Combined with the A record (which still points at the IP), the SRV record tells Minecraft “the actual port is 25571, not 25565.” Players see only the clean domain.
SRV records are Minecraft-specific; not every game supports them. For Rust, Palworld, and most non-Minecraft games, just use the A record on the standard port and move on.
The exact steps
- Get your server’s IP from the dashboard. Open your server’s manage page → the address is shown right under the server name (e.g.,
45.x.y.z:25565). - Sign in to your domain registrar. Find the DNS management section — every registrar has it, usually labelled “DNS,” “Nameservers,” or “Zone Editor.”
- Add an A record:
- Name (or “Host”):
play(or whatever subdomain you want) - Type: A
- Value (or “Target,” or “Points to”): your server’s IP
- TTL: leave at default (typically 3600 seconds = 1 hour)
- Name (or “Host”):
- Save the record.
- (Optional) If your server’s on a non-standard port and the game supports SRV:
- Add the SRV record with the format shown above
- Set the port to your server’s actual port
- Wait. DNS changes propagate over minutes to a few hours. Most modern registrars push updates in under 5 minutes; cached resolvers can take longer.
- Test. Try connecting to your custom domain in the game. If it doesn’t work immediately, give it 30 minutes — DNS caching is usually the only “issue.”
Common gotchas
”It worked yesterday, now it doesn’t connect”
Almost always: the server’s IP changed but the DNS record didn’t update. Check your server’s address in the dashboard against your DNS record. Update the A record if they differ.
This is rare but can happen if you delete-and-recreate a server, or migrate between nodes. Witchly tries to keep IPs stable, but it’s not guaranteed across deploys.
”Players say the domain doesn’t resolve”
DNS propagation. Some players’ ISPs will see the new record within minutes; others (looking at you, Comcast) cache for hours. After 24 hours, anyone still failing is on a cached resolver — they can usually fix it by flushing DNS (ipconfig /flushdns on Windows, sudo killall -HUP mDNSResponder on macOS) or just waiting another day.
”I added the record but it’s still showing the old IP”
Check your TTL. If your TTL is 86400 (1 day), the old record stays cached for up to a day after you change it. Lower TTLs (300-3600) propagate faster but mean DNS lookups happen more often. Default of 3600 is a reasonable middle ground.
”I want a wildcard so any subdomain works”
A wildcard DNS record (*.yourcommunity.com → server IP) catches every subdomain. Useful for sub-server setups (survival.yourcommunity.com, creative.yourcommunity.com), but only worth setting up if you’re actually running multiple servers under the same domain.
Cloudflare proxy confusion
If you use Cloudflare for your domain’s DNS (highly recommended for the speed and free DDoS protection), make sure the proxy is OFF (the cloud icon is grey, not orange) for the game-server record.
Cloudflare’s HTTP proxy doesn’t work for game-server traffic — TCP/UDP game protocols aren’t HTTP, so they pass through unchanged when proxy is off, and break when proxy is on.
(Cloudflare’s “Spectrum” product does proxy game-server traffic, but it’s an enterprise feature and not relevant here.)
”It says the address is invalid”
Make sure you’re entering the IP, not the hostname. Some registrars accept either; some only accept IP addresses. If your dashboard shows node-12.witchly.host, look up its IP first (or use the IP directly if the dashboard shows it).
Costs to expect
- Domain registration: $10-15/year for
.com, .net, etc. Newer TLDs like.gg,.io,.gamingrun $30-60/year. - DNS hosting: $0 if you use the registrar’s built-in DNS, or Cloudflare (free).
- Wildcards/extras: $0 unless you’re paying for a paid Cloudflare tier (the free tier covers 99% of game server use cases).
For a small community, $10/year is the entire annual cost. Worth it.
What about HTTPS / SSL?
Game servers don’t use HTTPS — Minecraft, Rust, and Palworld traffic is on raw TCP/UDP, not HTTP. SSL certificates aren’t relevant here.
The exception is web-facing things like:
- A custom dashboard or status page on a subdomain
- A Discord-bot web panel
- A mod-distribution website hosted alongside your server
Those need their own SSL certificates (Cloudflare provides them for free). If you’re not running anything web-facing, ignore SSL entirely for the game server.
Wrapping up
A custom domain is the smallest investment with the largest community-quality return: $10/year, 5 minutes of DNS setup, and your server now has a real address that survives migrations, looks professional, and is actually memorable.
If you’ve already got a domain for your community’s website, just add a subdomain (play.yourcommunity.com) — no new purchase needed. If you don’t, this is a great time to buy one.
For game-specific custom-domain walkthroughs (Minecraft SRV records, Rust, etc.), see the per-game docs: