Workload · Hosting a Hytale world

Hytale dedicated server: host your world on hardware nobody else uses

To host Hytale yourself you run Hypixel Studios' server program, HytaleServer.jar, on Java 25 with the game's Assets.zip beside it, and your friends connect over UDP port 5520. The official Hytale Server Manual asks for at least 4 GB of memory and works on x64 or arm64 hardware. Below you will find how big a machine to rent, how to install it on Linux in one sitting, how to sign it in, and how to keep it current so nobody gets locked out after a game patch.

The short version
  1. Runs on Java 25 with 4 GB of memory or more
  2. Players connect over UDP 5520 using QUIC
  3. One sign-in with a device code, kept encrypted on disk
  4. Fetches its own updates; start.sh swaps them in
  5. Automatic world backups every half hour

What your Hytale world will lean on

Hypixel's manual keeps the hardware story simple and honest: 4 GB of memory is the minimum, Java 25 is required, and how much more you need depends on how people play. Rather than promising a player count, it tells you which part of the machine each habit uses up.

  • The processor works harder as player numbers grow and as more creatures and NPCs move around.
  • Memory fills with the part of the world that is loaded. A long view distance and players wandering off in different directions both push it up; the manual suggests a view-distance limit of 12 chunks, or 384 blocks.
  • One core per world: every world gets its own main thread, with extra work spread over a shared pool.
  • The network is QUIC over UDP. You open a single UDP port and nothing on TCP.

Memory is the one to watch. Java decides how much it may use from the -Xmx setting, and the manual admits the real need is hard to judge without special tools. It says memory pressure usually shows up as extra CPU from garbage collection. So if CPU goes up while memory is close to your -Xmx value, try a larger heap; if memory still has room, the load is more likely coming from players and creatures.

The server that fits your group

Every machine on our game server hardware list clears 2,000 in PassMark's one-core benchmark, the threshold Satisfactory's server guide sets; Hytale's own manual does not quote a score. What you rent is the whole dedicated machine, so no other customer is competing for its cores or memory.

Your planWhere to start in the list
One world for friends or a small communityXeon E3-1585L v5, sold in all five cities, with 32 GB and NVMe in its entry build
Several worlds or servers on one boxA many-core EPYC or Xeon Gold line, with memory that can grow to 1 TB
Players spread across a continentWhichever city answers fastest from their homes

Once your order is approved, a machine that is already racked is in your hands about 30 minutes later; the payment check happens before that. Built to your own spec, it takes 4 to 24 hours if we hold the parts, more if one must be bought in first. Before you choose a city, open our server locations page: it gives a test address and a speed test for each of the five, so you and a friend abroad can each ping them from home.

Up and running in one sitting

These steps assume Ubuntu 24.04, picked at checkout, and that you are logged in as root. Each block prints STOP and goes no further if a step does not finish, so nothing half-configured gets started.

  1. Paste the first block. It turns the firewall on with SSH and 5520/udp allowed (IPv6 rules included), installs Java 25 from Adoptium's own repository, checks the version, creates a hytale user with /srv/hytale as home, then downloads and starts Hypixel's downloader tool. The manual calls the program ./hytale-downloader; inside the zip the Linux copy may have a longer name, so the block finds it for you. It asks you to sign in (it uses OAuth2) before it fetches the game. Running the block twice does no harm. If your SSH listens somewhere other than port 22, allow that port before you paste.
  2. Paste the second block. It unpacks the server only if that has not happened yet, writes a memory setting if none exists, and starts the server inside tmux so you can come back to its console later.
set -o pipefail
sed -i 's/^IPV6=.*/IPV6=yes/' /etc/default/ufw && ufw allow OpenSSH && ufw --force enable && ufw allow 5520/udp && \
apt update && apt install -y curl wget apt-transport-https gpg unzip tmux && \
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null && \
. /etc/os-release && echo "deb https://packages.adoptium.net/artifactory/deb ${VERSION_CODENAME} main" | tee /etc/apt/sources.list.d/adoptium.list && \
apt update && apt install -y temurin-25-jdk && java --version | head -n 1 | grep -q '^openjdk 25' && \
{ id hytale > /dev/null 2>&1 || useradd --system --create-home --home-dir /srv/hytale --shell /bin/bash hytale; } && \
cd /srv/hytale && sudo -u hytale curl -fLo hytale-downloader.zip https://downloader.hytale.com/hytale-downloader.zip && \
sudo -u hytale unzip -o hytale-downloader.zip -d downloader && \
dl=$(ls -d downloader/hytale-downloader* 2>/dev/null | grep -v '\.exe$' | head -n 1) && [ -n "$dl" ] && chmod +x "$dl" && \
sudo -u hytale "./$dl" -download-path game.zip && \
echo "ok - game.zip downloaded" || echo "STOP - something above did not finish; if no downloader was found, read downloader/QUICKSTART.md"
h=/srv/hytale/game
cd /srv/hytale && if [ -d "$h" ]; then echo "game folder already there, skipping the unpack"; else sudo -u hytale unzip -q game.zip -d "$h" || echo "STOP - could not unpack game.zip"; fi
[ -f "$h/Assets.zip" ] && [ -f "$h/Server/HytaleServer.jar" ] && [ -f "$h/start.sh" ] && \
{ [ -e "$h/jvm.options" ] || printf '%s\n' -Xms4G -Xmx12G | sudo -u hytale tee "$h/jvm.options" > /dev/null; } && \
sudo -u hytale tmux new-session -d -s hytale "bash $h/start.sh" && \
echo "ok - running, open the console with: sudo -u hytale tmux a -t hytale" || \
echo "STOP - start.sh or another file is missing (see the note below), or a hytale session is already running"

The -Xms4G and -Xmx12G values are our suggestion for a machine with 16 GB or more, leaving the rest to Linux; the manual's own example shows 2G and 4G and asks you to experiment.

If the second block complains that start.sh is missing, run sudo -u hytale bash -c 'cd /srv/hytale/game/Server && java -jar HytaleServer.jar --assets ../Assets.zip', then enter /update setup in that console (the manual says it writes the start scripts into the folder above), press Ctrl+C to stop it, and paste the second block again. On an arm64 machine the manual names no downloader build, so use its bootstrap route there: HytaleServer.jar from a launcher install, started with --bootstrap.

Letting the server sign in

Your server has to be authenticated with Hytale before anyone can join; the manual says this keeps it talking to Hytale's services and helps counter abuse. You do it once from the console:

  1. Open the console: sudo -u hytale tmux a -t hytale.
  2. Type /auth login device. The server prints a short code and the address accounts.hytale.com/device.
  3. Open that address on your phone or laptop, enter the code within 15 minutes, and approve it.
  4. Enter /auth persistence Encrypted; that saves the login on disk instead of only in memory. Then /auth status shows whether it took.
  5. Leave the console running with Ctrl+B and then D.

Hypixel's Server Provider Authentication Guide offers two storage modes, Memory and Encrypted, and the manual shows the saved files as auth.enc and auth.key inside Server/. Keep those two files private, like a password. A server that stays online refreshes its own tokens; the guide says you only sign in again if it has been switched off for over 30 days. One licence is good for as many as 500 servers.

Staying on the version your players have

This is the part people miss: a Hytale client only connects to a server whose protocol version matches its own exactly. The day a patch reaches your players, an un-updated server turns them all away. The server can fetch updates by itself: it looks for a new build every hour and downloads it into updater/staging/. Applying it is a separate step. When it happens the server exits with code 8, the signal for start.sh to swap in the new files and start again, and your config, saves and mods are left as they were.

  • To update by hand, use /update check, then /update download, then /update apply --confirm.
  • To let it apply on its own, set AutoApplyMode in the Update part of config.json. Out of the box it is Disabled, so updates wait for you; WhenEmpty waits until nobody is online, and Scheduled goes ahead after AutoApplyDelayMinutes (30 unless you change it) and warns players along the way.
  • Stop the server before you edit config.json. The manual warns that edits made while it is running will probably be written over.

Keeping copies of your world

You get backups without lifting a finger: start.sh starts the server with backups switched on every 30 minutes, written into /srv/hytale/game/Server/backups. Those copies live on the machine they protect, though, so take some away. Run this line as root; it bundles the backups, your mods, the JSON settings and jvm.options into one dated archive, reads it back to make sure it is whole, deletes nothing, and refuses if the server has not made a backup yet:

`set -o pipefail; out=/root/hytale-copies; cd /srv/hytale/game/Server && mkdir -p -m 700 "$out" && if find backups -mindepth 1 -print -quit 2>/dev/null | grep -q .; then name="$out/world-$(date +%F-%H%M%S).tar.gz"; tar -czf "$name" $(ls -d *.json mods ../jvm.options backups 2>/dev/null) && tar -tzf "$name" > /dev/null && echo "ok - saved $name" || echo "STOP - nothing saved"; else echo "STOP - the server has made no backup yet; wait half an hour after the first start"; fi`

Your world is inside those built-in backups only; the live universe folder is not copied, and the auth.enc and auth.key login files are deliberately left out. Download the archives to your own computer with scp and tidy up old ones there whenever you like.

Need one back? Stop the server first (Ctrl+C at its console), put the archive's file name on the arc= line and paste the block below as root. It unpacks into a fresh folder, parks the files it is about to replace under Server/, in a pre-restore- folder stamped with the time, then copies the archive's files in, gives them back to the hytale user and starts the server. Changed your mind? Stop the server, move those restored items out and move the parked ones back, with jvm.options returning to the game folder.

set -o pipefail
arc=/root/hytale-copies/world-DATE.tar.gz   # change to the archive you want back
now=$(date +%F-%H%M%S); h=/srv/hytale/game; sv=$h/Server; tmp=/root/hytale-unpack-$now; old=$sv/pre-restore-$now
[ -f "$arc" ] && tar -tzf "$arc" > /dev/null && ! sudo -u hytale tmux has-session -t hytale 2> /dev/null && \
mkdir -m 700 "$tmp" && tar -xzf "$arc" -C "$tmp" && mkdir "$old" && \
( cd "$sv" && for i in backups mods *.json; do [ ! -e "$i" ] || mv "$i" "$old/" || exit 1; done ) && \
{ [ ! -e "$h/jvm.options" ] || mv "$h/jvm.options" "$old/"; } && \
{ [ ! -e "$tmp/jvm.options" ] || mv "$tmp/jvm.options" "$h/"; } && \
cp -a "$tmp"/. "$sv"/ && chown -R hytale:hytale "$sv" && { [ ! -e "$h/jvm.options" ] || chown hytale:hytale "$h/jvm.options"; } && \
sudo -u hytale tmux new-session -d -s hytale "bash $h/start.sh" && \
echo "ok - copy restored, the files it replaced are in $old" || echo "STOP - nothing started: check the archive name, stop the server first, or read the message above"

That puts the backups folder, mods and settings back, not the live world. Hypixel has not documented the backup format or a way to roll a world back from one, so practise on a spare install while nothing is at stake, and if you ever swap the world itself, rename the current universe folder with mv rather than deleting it.

Things to know before you invite everyone

  • Crashes do not restart it. The wrapper only loops on exit code 8. After a crash, or once the machine reboots, start the tmux session again yourself; sudo -u hytale tmux ls shows whether it is there.
  • Rolling back an update uses updater/backup/. The manual's recipe starts by deleting Server/ and Assets.zip, yet your world, settings and login files live inside Server/. Instead, rename Server/ as Server.new and Assets.zip as Assets.zip.new, bring the old files out of updater/backup/, and carry universe, mods, backups, every .json file and the two auth files over from Server.new before you start it.
  • No SRV records yet. The manual says they are unsupported for now, so if you change the port with --bind, players have to type it after the address. Remember to open the new port in ufw too.
  • A public server list is described as a future addition in the manual, so for now you share your address directly.

Curious about other voxel worlds? Our Luanti world guide sets up an open-source engine on the same kind of hardware.

Questions people ask

Do I need to own Hytale to run a server?
The server signs in with a Hytale account before it lets anyone join, and the manual counts servers against a game licence, up to 500 each. The downloader also asks you to sign in before it fetches the files.
What should I open on the firewall?
Just UDP 5520, unless you picked another port with --bind. Hytale uses QUIC, which travels over UDP, so there is no TCP port to forward.
How many players will a 32 GB machine hold?
Hypixel does not publish a per-player figure. Memory depends on the loaded area of the world, so view distance and how far apart people roam matter more than the head count. Start with a sensible -Xmx, watch memory and CPU during a busy evening, and adjust.
Why did my friends get kicked out after a patch?
Client and server have to run the same protocol version exactly. Apply the waiting update with /update apply --confirm, or switch AutoApplyMode to WhenEmpty, which updates the moment nobody is connected.
Can I add mods?
Yes. Put the mod files, .zip or .jar, into the mods folder inside Server/ and restart the server. The manual mentions CurseForge as one place to find them.

Start your Hytale world

Choose a fast machine near your players, get it monthly with no contract, and ask a person on chat whenever you want one.

Find your game server

Read next