Hytale now ships with official dedicated server files, so anyone can host persistent worlds, private realms, or full public networks. The server runs as a standalone Java application and uses the same content assets as the client, with configuration and mods controlled entirely on the server side.
What the Hytale server files contain
The dedicated server lives in its own folder, usually alongside a copy of the game assets. A typical layout after first launch looks like this:
HytaleServer/
├── HytaleServer.jar
├── Assets.zip
├── config.json
├── permissions.json
├── whitelist.json
├── bans.json
├── mods/
├── universe/
│ └── worlds/
├── logs/
└── .cache/
HytaleServer.jar is the actual server executable. Assets.zip contains the game data the server needs to generate terrain, load entities, and keep logic in sync with the client. The JSON files in the root control global settings and player access, while the universe/ directory holds worlds and save data. Mods are loaded from the mods/ folder at startup.
System requirements for running a Hytale server
The dedicated server runs on Java 25 and supports both x64 and arm64 CPU architectures. Before working with the server files, install a Java 25 runtime and confirm it with:
java --version
Memory and disk performance matter more than high core counts. A practical starting point is at least 4 GB of RAM and SSD storage, then scaling up as player counts and view distance grow. NVMe disks help a lot with chunk loading and world saves.
| Concurrent players | CPU (approx.) | RAM (approx.) | Storage guidance |
|---|---|---|---|
| 1–10 | 2–3 fast cores | 4–6 GB | SSD, 20–40 GB |
| 10–30 | 4 fast cores | 8–12 GB | NVMe preferred, 40–80 GB |
| 30–75 | 6+ fast cores | 16–24 GB | NVMe, 80–150 GB |
| 75+ | High‑end dedicated CPU | 32 GB+ | NVMe + frequent backups |
Tip: if performance issues appear, the usual culprits are high view distance, low RAM, or slow storage rather than a lack of total cores.
Getting the official Hytale server files
The dedicated server files can be obtained in two main ways: copying them from an existing launcher installation or using the official downloader CLI.
Method 1: Copy from the game installation
Step 1: Install and update Hytale on your PC using your normal launcher, then close the game completely so no files are locked.
Step 2: Navigate to the game’s installation directory for your operating system and locate the latest package folder that holds the server and assets:
Windows: %appdata%\Hytale\install\release\package\game\latest
Linux: $XDG_DATA_HOME/Hytale/install/release/package/game/latest
macOS: ~/Application Support/Hytale/install/release/package/game/latest
Step 3: Create a new folder for your dedicated server (for example, C:\HytaleServer or /opt/hytale-server) and copy HytaleServer.jar plus Assets.zip into it.
Step 4: Keep this directory separate from your launcher install. All future server configuration and data will live here.
Method 2: Use the official downloader CLI
The downloader CLI automates fetching and updating server builds.
Step 1: Obtain the official downloader binary as described in the Hytale support documentation at https://support.hytale.com/, then place it in an empty server directory.
Step 2: Run the downloader once to grab the latest server files and assets, for example on Linux or macOS:
./hytale-downloader
Step 3: Use the helper flags to check versions and update status when needed:
./hytale-downloader -print-version
./hytale-downloader -check-update
Step 4: After the download completes, verify that HytaleServer.jar and Assets.zip are present in your server folder.
First server launch and authentication
Once the server files are in place, the first launch generates configuration and triggers authentication.
Step 1: Open a terminal or command prompt in the server directory and start the server, pointing it at your assets archive:
java -jar HytaleServer.jar --assets ./Assets.zip
Step 2: Wait for the initial startup to finish. The server will create folders such as universe/, logs/ and the root JSON configs.
Step 3: In the server console, run the device authentication flow:
/auth login device
Step 4: Follow the URL and code shown in the console to complete login in a browser. When the console confirms success, the server is authorized to accept real player connections.
Note: large hosting deployments can use token‑based authentication and automation, but the device flow is the straightforward option for a single server.
Network configuration and ports for Hytale servers
Hytale uses QUIC over UDP for networking. By default the server listens on 0.0.0.0:5520 and only needs a UDP port opened and forwarded.
Binding to an address and port
# Default port (5520)
java -jar HytaleServer.jar --assets ./Assets.zip --bind 0.0.0.0:5520
# Custom port example
java -jar HytaleServer.jar --assets ./Assets.zip --bind 0.0.0.0:25565
Opening the firewall
Step 1: On Windows Server or Windows 10/11, create an inbound rule for UDP on your chosen port:
New-NetFirewallRule -DisplayName "Hytale Server" -Direction Inbound -Protocol UDP -LocalPort 5520 -Action Allow
Step 2: On Linux with UFW, allow the UDP port:
sudo ufw allow 5520/udp
Step 3: On Linux with iptables, add a UDP accept rule:
sudo iptables -A INPUT -p udp --dport 5520 -j ACCEPT
Step 4: If the server is behind a home router, forward the same UDP port from the router to the server’s internal IP. Forwarding TCP only will not work, because the game expects QUIC over UDP.
Tip: if local connections work but remote players cannot join, check bind address, firewall, and router forwarding before debugging anything else.
Core configuration files and directory layout
After the first run, several configuration files appear in the server root. These files define permissions, bans, and global behavior, while worlds and per‑world settings live under universe/.
| File or folder | Location | Main purpose |
|---|---|---|
| config.json | Server root | Global server settings |
| permissions.json | Server root | Roles and permission rules |
| whitelist.json | Server root | Allowed players (if whitelist enabled) |
| bans.json | Server root | Banned players and reasons |
| mods/ | Server root | Mod and plugin files |
| universe/worlds/<WorldName>/ | Under universe/ | World data and per‑world config |
| logs/ | Server root | Startup, runtime, and error logs |
| .cache/ | Server root | Cached or optimized data |
Always stop the server completely before editing JSON files. Several settings can also be changed through in‑game tools or commands, which can overwrite manual edits if the server is running while files are modified.
World configuration and gameplay behaviour
Each world has its own config.json in universe/worlds/<WorldName>/. This file controls core gameplay rules such as PvP, fall damage, NPC spawning, and how the world is generated.
{
"Seed": 1767292261384,
"WorldGen": {
"Type": "Hytale",
"Name": "Default"
},
"IsTicking": true,
"IsBlockTicking": true,
"IsPvpEnabled": false,
"IsFallDamageEnabled": true,
"IsSpawningNPC": true,
"IsAllNPCFrozen": false,
"IsSavingPlayers": true,
"IsSavingChunks": true,
"IsUnloadingChunks": true
}
| Key field | Effect on the world |
|---|---|
| Seed | Controls world generation so the same seed recreates the same layout. |
| IsPvpEnabled | Enables or disables player‑versus‑player combat. |
| IsFallDamageEnabled | Toggles whether players take fall damage. |
| IsSpawningNPC | Turns creature and NPC spawning on or off. |
| IsAllNPCFrozen | Freezes NPC behavior when set, useful for special events or debugging. |
| IsTicking / IsBlockTicking | Controls whether the simulation runs and whether blocks update (for example crops or liquids). |
| IsSavingPlayers / IsSavingChunks | Determines whether player data and chunk changes are written to disk. |
| IsUnloadingChunks | Decides whether inactive chunks are unloaded from memory. |
These per‑world toggles allow creative, adventure, or special event worlds to coexist on the same server with different rules. Keep backups before changing them so you can revert if needed.
Installing and removing mods on a Hytale server
Mods are loaded purely from the server, and players receive required content automatically when they join. Installation comes down to placing compatible files into the mods/ folder and restarting.
Installing mods on a hosted server with a control panel
Step 1: Stop the server through the hosting control panel so no files are being read or written during changes.
Step 2: Open the panel’s file manager or connect via SFTP/FTP, then browse to the mods/ directory in the server root.
Step 3: Upload the mod files (usually .jar or .zip) directly into mods/ without extracting them.
Step 4: Start the server again and watch the console output to confirm each mod loads successfully or to catch any error messages.
Installing mods on a self‑hosted server
Step 1: Stop the server by typing stop in the console or closing the terminal window with Ctrl+C.
Step 2: Place downloaded mod archives into the mods/ folder next to HytaleServer.jar. Do not unpack them unless a specific mod instructs otherwise.
Step 3: Start the server normally and check the log file or live console to ensure the mods are detected and initialized.
Step 4: If a new mod prevents the server from starting, stop it again, remove that mod file from mods/, and restart to confirm stability before trying other changes.
Removing or updating mods
To remove a mod, stop the server, delete the corresponding file from mods/, and start the server again. Updating follows the same pattern: stop, delete the old version, copy in the new one, then restart. Always keep a backup of your world before removing large gameplay mods, as saved data may depend on them.
Server‑side vs client‑side mods
| Mod type | Where it lives | Typical use |
|---|---|---|
| Server‑side only | Server mods/ folder |
Admin tools, utilities, performance tweaks |
| Client‑side only | Player’s local game | Interface changes, purely visual effects |
| Both required | Server and clients | New items, blocks, or mechanics that alter gameplay |
Check the documentation for each mod to see which category it falls into and whether it expects other mods as dependencies.
Important launch options and JVM settings
The server accepts both JVM tuning options and Hytale‑specific command‑line flags. Combining them correctly improves stability and startup time.
| JVM option | Effect | Example |
|---|---|---|
| -Xms / -Xmx | Sets initial and maximum heap size | -Xms4G -Xmx4G |
| -XX:+UseG1GC | Enables G1 garbage collector (helpful for larger heaps) | -XX:+UseG1GC |
| -XX:AOTCache | Uses an AOT cache file to speed up startup | -XX:AOTCache=HytaleServer.aot |
| Server option | Description | Default |
|---|---|---|
| --assets <path> | Points to Assets.zip or an assets directory (required) |
None |
| --bind <ip:port> | IP and port to listen on | 0.0.0.0:5520 |
| --auth-mode <mode> | Chooses authenticated or offline mode |
authenticated |
| --backup | Turns on automatic backups | Disabled |
| --backup-dir <path> | Directory where backups are stored | ./backups |
| --backup-frequency <mins> | Backup interval in minutes | 60 |
| --disable-sentry | Disables crash reporting, useful for plugin development | Crash reporting enabled |
| --allow-op | Enables operator commands | Disabled |
| --accept-early-plugins | Loads experimental plugins (unsupported) | Disabled |
Example production launch script on Windows (in a start.bat file):
@echo off
java -Xms6G -Xmx6G -XX:+UseG1GC -XX:AOTCache=HytaleServer.aot -jar HytaleServer.jar --assets Assets.zip --backup --backup-frequency 60
pause
Example on Linux (in start.sh):
#!/bin/bash
java -Xms6G -Xmx6G -XX:+UseG1GC -XX:AOTCache=HytaleServer.aot -jar HytaleServer.jar --assets Assets.zip --backup --backup-frequency 60
For local testing or plugin development, an offline server with crash reporting disabled is often convenient:
java -Xms4G -Xmx4G -jar HytaleServer.jar --assets Assets.zip --auth-mode offline --disable-sentry
Backups, updates, and performance tuning
Proper handling of server files means regular backups, controlled updates, and a few careful performance choices.
Automatic backups from launch options
Step 1: Create a backups/ folder in your server directory or choose another path where backups should be stored.
Step 2: Start the server with backup options enabled, for example:
java -jar HytaleServer.jar --assets ./Assets.zip --backup --backup-frequency 30 --backup-dir ./backups
Step 3: Periodically test restoring from a backup on a separate copy of the server to ensure your process works before you need it.
Updating server files safely
When a new server version is released, the safest workflow is to stop the server, back up the entire directory (especially universe/), update the server executable and assets, then restart and monitor logs. The downloader CLI can check versions and apply updates consistently:
./hytale-downloader
./hytale-downloader -print-version
./hytale-downloader -check-update
Key performance levers
- View distance is usually the main driver of RAM usage and CPU load; start conservatively and only raise it once stability is confirmed.
- RAM limits should leave headroom; monitor memory during peak times and increase
-Xmxor reduce settings if you see frequent garbage collection or swapping. - Storage should ideally be SSD or NVMe, especially for public servers where many players explore new terrain.
- Mods can be heavy; add or update them one at a time so performance regressions are easy to track.
Using the AOT cache option (-XX:AOTCache=HytaleServer.aot) can noticeably reduce startup time, which is useful when frequent restarts are required for updates or testing.
Common mistakes with Hytale server files
- Opening only TCP ports instead of UDP, which prevents players from connecting because Hytale uses QUIC over UDP.
- Forgetting to complete device authentication, leaving the server running but unable to handle real player logins.
- Pushing view distance or other heavy settings too high before confirming hardware capacity, leading to lag and stutters.
- Running without any backup strategy and losing worlds when a disk fails or a mod corrupts data.
- Editing
config.jsonor permission files while the server is running, which risks changes being overwritten. - Installing or updating multiple mods at once directly on a live production server instead of testing on a staging instance.
Avoiding these pitfalls keeps the server environment predictable and protects both your world data and your players’ time.
Multi-server networks and server mesh features
Hytale includes built‑in mechanisms for handing players between servers, allowing multi‑world networks without relying on external proxies.
- Player referral uses a method such as
PlayerRef.referToServer(host, port, payload)to move an already‑connected player to another server, along with a small payload. - Connection redirect can use
PlayerSetupConnectEvent.referToServer(host, port)to send players elsewhere during the handshake.
The payload that accompanies referrals passes through the client, so it must be treated as untrusted. Signing data with a shared secret (for example via HMAC) lets the target server verify that payloads were generated by a trusted peer before acting on them.
More advanced setups can use QUIC‑capable libraries to implement custom proxy layers, using the packet definitions shipped inside HytaleServer.jar.
Quick checklist before inviting players
- The server starts cleanly, with no recurring errors in the latest log file.
- The game port is open for UDP on the operating system firewall and, if applicable, forwarded by the router.
- The bind address is set to
0.0.0.0(or another correct external address), not just127.0.0.1. - Automatic backups are enabled and a test restore has been performed on a copy of the server.
- Permission and operator roles follow a least‑privilege model so only trusted accounts have full control.
- A small staging instance exists for testing new mods, configs, and updates before rolling them into the main world.
- Basic monitoring is in place for CPU, RAM, disk usage, and network throughput.
- DDoS protection or upstream filtering is configured for any public‑facing server.
- There is a simple, repeatable update process that always begins with taking a fresh backup.
With official server files, Java 25, and a clear understanding of the directory structure and options, hosting Hytale becomes a matter of careful configuration rather than guesswork. Obtaining the files through the launcher or downloader, securing networking and authentication, and treating mods and backups with respect are the core steps that turn those raw server files into a durable multiplayer world.