Installation
This guide walks you through installing all prerequisites and setting up your Hytale dedicated server.
Installing Java 25
Section titled “Installing Java 25”Hytale servers require Java 25 or higher. We recommend using Adoptium (Temurin).
Windows
Section titled “Windows”winget install --id EclipseAdoptium.Temurin.25.JREUsing Homebrew:
brew install --cask temurin@25Or download directly from Adoptium and run the installer.
Ubuntu/Debian
Section titled “Ubuntu/Debian”# Add Adoptium repositorywget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo apt-key add -echo "deb https://packages.adoptium.net/artifactory/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
# Install Java 25sudo apt updatesudo apt install temurin-25-jdkFedora/RHEL
Section titled “Fedora/RHEL”sudo dnf install java-25-openjdkVerify Installation
Section titled “Verify Installation”Open a terminal and verify Java is installed correctly:
java -versionYou should see output indicating Java 25 or higher.
Getting Server Files
Section titled “Getting Server Files”- Locate your Hytale installation folder
- Copy the Server folder to your desired server location
- Note the path to your HytaleAssets folder (or copy it alongside the server)
Your server directory should contain:
my-server/├── HytaleServer.jar└── (config files will be generated on first run)
# Assets can be in a sibling directory or specified with --assets flag../HytaleAssets/ # Default location the server looks forLaunching the Server
Section titled “Launching the Server”Basic Launch
Section titled “Basic Launch”Run the server with minimum and maximum memory allocation:
java -Xms4G -Xmx4G -jar HytaleServer.jar --assets ../HytaleAssets-Xms4G- Minimum memory (4GB)-Xmx4G- Maximum memory (4GB)--assets- Path to your assets directory or.zipfile
Command-Line Arguments
Section titled “Command-Line Arguments”| Argument | Description |
|---|---|
--assets <Path> | Path to assets directory or .zip file (default: ../HytaleAssets) |
-b, --bind <Address> | Address and port to listen on, comma-separated for multiple (default: 0.0.0.0:5520) |
-t, --transport <Type> | Transport type: TCP or QUIC (default: QUIC) |
--auth-mode <Mode> | Authentication mode: AUTHENTICATED, OFFLINE, or INSECURE (default: AUTHENTICATED) |
--universe <Path> | Path to the universe directory (default: universe) |
--mods <Paths> | Comma-separated list of additional mod directories |
--world-gen <Path> | World generation directory |
--backup | Enable automatic backups |
--backup-dir <Path> | Directory for backup files (required if --backup is set) |
--backup-frequency <Minutes> | Backup interval in minutes (default: 30) |
--backup-max-count <Count> | Maximum number of backups to keep (default: 5) |
--boot-command <Commands> | Comma-separated commands to run on server start (executed synchronously in order) |
--validate-assets | Exit with an error code if any assets are invalid |
--validate-prefabs <Options> | Exit with an error code if any prefabs are invalid (optional comma-separated validation options) |
--validate-world-gen | Exit with an error code if default world generation is invalid |
--shutdown-after-validate | Automatically shutdown the server after validation |
--generate-schema | Generate schema, save it to the assets directory, and exit |
--log <Logger:Level> | Set logger levels (comma-separated, e.g., com.example:INFO) |
--bare | Run the server bare (without loading worlds, binding to ports, or creating directories) |
--help | Print help message |
--version | Print version information |
Advanced Options
Section titled “Advanced Options”| Argument | Description |
|---|---|
--prefab-cache <Path> | Prefab cache directory for immutable assets |
--disable-cpb-build | Disable building of compact prefab buffers |
--disable-file-watcher | Disable file watching for asset changes |
--disable-sentry | Disable Sentry error reporting |
--disable-asset-compare | Disable asset comparison |
--force-network-flush <Boolean> | Force network flush (default: true) |
--allow-op | Allow self-op command |
Early Plugin Options
Section titled “Early Plugin Options”| Argument | Description |
|---|---|
--accept-early-plugins | Acknowledge that loading early plugins is unsupported and may cause stability issues |
--early-plugins <Paths> | Comma-separated list of early plugin directories to load from |
Singleplayer Options
Section titled “Singleplayer Options”| Argument | Description |
|---|---|
--singleplayer | Run in singleplayer mode |
--owner-name <Name> | Owner player name |
--owner-uuid <UUID> | Owner player UUID |
--client-pid <PID> | Client process ID |
Authentication Options
Section titled “Authentication Options”| Argument | Description |
|---|---|
--session-token <Token> | Session token for Session Service API |
--identity-token <JWT> | Identity token (JWT) |
Migration Options
Section titled “Migration Options”| Argument | Description |
|---|---|
--migrations <Mappings> | Migrations to run (format: name=path,name2=path2) |
--migrate-worlds <Worlds> | Comma-separated list of worlds to migrate (requires --migrations) |
Debug Options
Section titled “Debug Options”| Argument | Description |
|---|---|
--event-debug | Enable event debugging |
Custom Port Example
Section titled “Custom Port Example”To run on a different port:
java -Xms4G -Xmx4G -jar HytaleServer.jar --assets ../HytaleAssets --bind 0.0.0.0:25565To bind to multiple addresses:
java -Xms4G -Xmx4G -jar HytaleServer.jar --assets ../HytaleAssets --bind 0.0.0.0:5520,0.0.0.0:5521Create a Start Script
Section titled “Create a Start Script”Windows (start.bat)
Section titled “Windows (start.bat)”@echo offjava -Xms4G -Xmx4G -jar HytaleServer.jar --assets ../HytaleAssetspauseLinux/macOS (start.sh)
Section titled “Linux/macOS (start.sh)”#!/bin/bashjava -Xms4G -Xmx4G -jar HytaleServer.jar --assets ../HytaleAssetsMake it executable:
chmod +x start.shFirewall Configuration
Section titled “Firewall Configuration”By default, Hytale uses UDP with the QUIC protocol. However, the server also supports TCP transport via the --transport TCP flag.
Windows Firewall
Section titled “Windows Firewall”netsh advfirewall firewall add rule name="Hytale Server" dir=in action=allow protocol=UDP localport=5520Linux (UFW)
Section titled “Linux (UFW)”sudo ufw allow 5520/udpLinux (firewalld)
Section titled “Linux (firewalld)”sudo firewall-cmd --permanent --add-port=5520/udpsudo firewall-cmd --reloadPort Forwarding
Section titled “Port Forwarding”If hosting behind a router/NAT:
- Access your router’s admin panel (usually
192.168.1.1) - Find Port Forwarding settings
- Create a new rule:
- Protocol: UDP
- External Port: 5520
- Internal Port: 5520
- Internal IP: Your server’s local IP address
First Run
Section titled “First Run”On first launch, the server will:
- Generate default configuration files
- Create the
universe/worlds/directory structure - Start listening for connections
You’ll see output like:
[INFO] Loading assets from Assets.zip[INFO] Server started on 0.0.0.0:5520[INFO] Ready for connectionsConnecting to Your Server
Section titled “Connecting to Your Server”- Local: Connect to
localhost:5520 - LAN: Connect to your machine’s local IP (e.g.,
192.168.1.100:5520) - Internet: Connect to your public IP or domain name
Next Steps
Section titled “Next Steps”Your server is now running! Continue with Server Configuration to customize your server settings.