Hytale has been in Early Access since 13 January 2026, and unlike many games you can run your own dedicated server from day one. If you jump in now, you are early: the community is growing, and so is the demand for hosting. This guide sets up a Hytale server on Ubuntu, with Java 25 and the official server setup.
20 minBeginnerTested on Ubuntu 24.04 + Java 25Updated 2026-07-10
In short
Install Java 25, download the server files with the Hytale downloader, start the server with ./start.sh and authenticate with /auth login device, then open UDP port 5520 in the firewall. Hytale uses QUIC over UDP, not TCP.
Early Access
Hytale evolves quickly. Server files, commands, and requirements can change with updates. This guide follows the official server manual, so check it if anything differs.
The official manual is very clear on one point: the server load runs primarily on single threads. A quad-core at 4.5 GHz beats an eight-core at 3.0 GHz. That is exactly what our EPYC Turin cores (Zen 5) are built for, high performance per core instead of many slow cores. For a Hytale server, this is the decisive factor.
On top of that come fast NVMe SSD for world data, full root access, and hosting in Germany. The Bremen plans ship with plenty of traffic and low pings for players across the DACH region. A Hytale server runs from 4 GB of RAM per the manual, so plan for more with additional players and higher view distance. The Bremen Mini plan with 8 GB is a good starting point.
Hytale needs Java 25. Temurin from Adoptium is recommended. Since the Ubuntu package sources do not always include Java 25 yet, add the Adoptium repository:
The Hytale downloader is the easiest way for a headless server. It signs in via OAuth2, downloads the server and assets, and sets up the launcher scripts. Create a folder and run it:
On the first run, the downloader shows a sign-in link. Open it in your browser, sign in with your Hytale account, and approve access. It then downloads the current version.
Start the server through the included launcher script. It automatically handles updates and regular backups:
On the first start, you authenticate the server. In the server console, enter:
The server shows a code and the address https://accounts.hytale.com/device. Open the page in your browser, enter the code, and confirm. From now on the server accepts connections.
Hytale hangs on single-core performance. EPYC Turin plus NVMe SSD and 8 GB RAM from €6.49/month.
This is where Hytale differs from most games: it uses the QUIC protocol over UDP, not TCP. The default port is 5520. Open it as a UDP port in the firewall, see Set up a firewall with ufw:
UDP, not TCP
A common mistake: players cannot get in because only TCP was opened. Hytale speaks QUIC over UDP exclusively. Open the port as /udp, otherwise every connection fails.
The biggest RAM driver is view distance. Hytale's default is 384 blocks, roughly 24 Minecraft chunks, and it eats memory accordingly. The manual recommends limiting the maximum view distance to 12 chunks, for both performance and gameplay.
You cap the RAM through a jvm.options file in the server folder. One argument per line:
The minimum is 4 GB. For several players and normal view distance, 6 to 16 GB is realistic. The biggest factor is view distance, not raw player count. Watch usage and adjust the limit.
Does a Hytale server run on Linux?
Yes. The official server setup supports Linux (Ubuntu and Debian, 64-bit), plus Windows and macOS. Both x64 and arm64 work.
Which port does Hytale use?
By default UDP port 5520 over the QUIC protocol. TCP is not needed. You can change the port with the --bind start argument.
Client and server must run the same protocol version. The server updates itself, so after a game update the server must be current too.
Do I need a license to host a server?
You need a Hytale account to authenticate the server. Up to 500 servers per license are currently allowed, which is more than enough for a private server.
How do I update the server?
The server has a built-in update system. Through the launcher scripts it applies new versions itself. Use /update check to check for updates manually.