How to Set Up a Hytale Dedicated Server

How to Set Up a Hytale Dedicated Server

How to Set Up a Hytale Dedicated Server (Ubuntu 18.04+)

Hosting your own Hytale server gives you full control over performance, mods, and uptime. This guide walks through installing Java 25, obtaining the official server files (recommended: Hytale Downloader CLI), authenticating the server, opening the correct UDP/QUIC port, and running it reliably via systemd. :contentReference[oaicite:0]{index=0}

⚙️ System Requirements

  • OS: Ubuntu 18.04+ (22.04+ recommended)
  • CPU: 2 cores minimum (more cores help with higher entity/player loads)
  • RAM: Minimum 4 GB (more recommended for higher view distance / more players) :contentReference[oaicite:1]{index=1}
  • Storage: At least 10–20 GB free (server + Assets + logs + worlds)
  • Network: UDP port 5520 open/forwarded (Hytale uses QUIC over UDP, not TCP) :contentReference[oaicite:2]{index=2}
  • Access: Root or sudo privileges

✈️ Step 1: Update Your Server

sudo apt update && sudo apt upgrade -y

👥 Step 2: Create a Dedicated User

sudo adduser hytale
sudo passwd hytale
su - hytale

🔐 Step 3: Install Required Packages

These utilities support downloading/unzipping server files, running a persistent session, and managing services.

sudo apt update
sudo apt install -y curl wget unzip nano screen ca-certificates

☕ Step 4: Install Java 25 (Temurin / Adoptium)

Hytale servers require Java 25. Adoptium (Eclipse Temurin) is a common recommended choice. :contentReference[oaicite:3]{index=3}

# Install repo prerequisites
sudo apt install -y wget apt-transport-https gpg

# Add Adoptium GPG key
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public \
  | gpg --dearmor \
  | sudo tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null

# Add Adoptium apt repo
echo "deb https://packages.adoptium.net/artifactory/deb $(lsb_release -cs) main" \
  | sudo tee /etc/apt/sources.list.d/adoptium.list

# Install Temurin 25
sudo apt update
sudo apt install -y temurin-25-jdk

Confirm installation:

java --version

📦 Step 5: Get the Hytale Server Files

You have two supported approaches: copy from a local launcher install (quick testing) or use the official Hytale Downloader CLI (recommended for production and easy updates). :contentReference[oaicite:4]{index=4}

Option A: Manually Copy from Launcher (Quick Testing)

Find the launcher installation path and copy the Server folder plus Assets.zip into your server directory. :contentReference[oaicite:5]{index=5}

# Create a destination folder on your server
mkdir -p ~/hytale-server

Example paths from the official manual (copy from your local machine): :contentReference[oaicite:6]{index=6}

  • 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

Option B: Hytale Downloader CLI (Recommended)

The official downloader fetches the latest server and assets using OAuth2 (device login). This is the simplest way to keep servers updated. :contentReference[oaicite:7]{index=7}

mkdir -p ~/hytale
cd ~/hytale

# Download the official CLI archive
wget -O hytale-downloader.zip https://downloader.hytale.com/hytale-downloader.zip

# Unzip it
unzip -o hytale-downloader.zip

# Make the Linux binary executable (name may vary slightly; list files first)
ls -la
chmod +x ./hytale-downloader*

Download the latest release into your server folder (example):

mkdir -p ~/hytale-server
./hytale-downloader -download-path ~/hytale-server/game.zip

Extract the server files and assets:

cd ~/hytale-server
unzip -o game.zip
ls -la

You should end up with HytaleServer.jar and Assets.zip in your chosen directory (layout depends on the release packaging). :contentReference[oaicite:8]{index=8}

🔑 Step 6: First Launch + Authenticate the Server

Start the server once, then authenticate via device login so it can access required services and accept player connections in authenticated mode. :contentReference[oaicite:9]{index=9}

cd ~/hytale-server

# Start the server (example from the official manual)
java -jar HytaleServer.jar --assets Assets.zip

In the server console, run device authentication (example): :contentReference[oaicite:10]{index=10}

/auth login device

You will be shown a URL and a code. Complete the authorization in your browser. Once successful, your server can accept connections. :contentReference[oaicite:11]{index=11}

🛠 Step 7: Create a Startup Script

nano ~/hytale-server/start_hytale.sh

Paste the following content:

#!/bin/bash

SERVER_DIR="$HOME/hytale-server"
PORT="5520"
BIND_ADDR="0.0.0.0:$PORT"

# Recommended: leverage the shipped AOT cache if present

# (Improves startup by skipping some JIT warmup)

AOT_CACHE="HytaleServer.aot"

cd "$SERVER_DIR" || exit 1

if [ -f "$AOT_CACHE" ]; then
java -XX:AOTCache="$AOT_CACHE" -jar HytaleServer.jar --assets Assets.zip --bind "$BIND_ADDR"
else
java -jar HytaleServer.jar --assets Assets.zip --bind "$BIND_ADDR"
fi

Make it executable:

chmod +x ~/hytale-server/start_hytale.sh

Notes: The default port is 5520, and it can be changed using --bind. Hytale uses QUIC over UDP. :contentReference[oaicite:12]{index=12}

🚀 Step 8: Start / Stop the Server

Start:

sh ~/hytale-server/start_hytale.sh

If you want it to keep running after you disconnect, run it inside screen:

screen -S hytale
sh ~/hytale-server/start_hytale.sh

Detach (leave it running): Ctrl+A, then D

Re-attach:

screen -r hytale

Stop the server (from another shell):

screen -S hytale -X quit

🌐 Step 9: Configure Firewall

Hytale uses QUIC over UDP. Open/forward UDP port 5520 (or your custom port). TCP forwarding is not required. :contentReference[oaicite:13]{index=13}

UFW (Ubuntu):

sudo ufw allow 5520/udp
sudo ufw reload
sudo ufw status

iptables:

sudo iptables -A INPUT -p udp --dport 5520 -j ACCEPT

✅ Step 10: Optional – Create a systemd Service

This makes the server start on boot and restart on failures.

sudo nano /etc/systemd/system/hytale.service

Paste this:

[Unit]
Description=Hytale Dedicated Server
After=network.target

[Service]
User=hytale
WorkingDirectory=/home/hytale/hytale-server
ExecStart=/home/hytale/hytale-server/start_hytale.sh
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable hytale
sudo systemctl start hytale
sudo systemctl status hytale

🔄 Step 11: Update the Server

If you used the Hytale Downloader CLI, update by re-running it and replacing server binaries while keeping your universe/config files backed up. The official docs recommend the downloader for easy updates. :contentReference[oaicite:14]{index=14}

cd ~/hytale

# Download the newest release (example)
./hytale-downloader -download-path ~/hytale-server/game.zip

cd ~/hytale-server
unzip -o game.zip

Restart (if using systemd):

sudo systemctl restart hytale

🧩 Step 12: Mods, AOT Cache, and Crash Reporting

  • Mods: Place mod files into mods/ (as supported by your server build). :contentReference[oaicite:15]{index=15}
  • AOT Cache: If HytaleServer.aot is shipped, starting with -XX:AOTCache=HytaleServer.aot can improve startup behavior. :contentReference[oaicite:16]{index=16}
  • Disable Sentry (optional): If you are actively developing/testing and want to avoid crash submissions, start with --disable-sentry. :contentReference[oaicite:17]{index=17}

Example (manual run):

java -XX:AOTCache=HytaleServer.aot -jar HytaleServer.jar --assets Assets.zip --disable-sentry

🎮 Step 13: Connect to Your Server

  • Launch Hytale
  • Add/connect to <your-public-ip>:5520 (or your custom bind port)
  • If hosted behind a router, confirm UDP port forwarding is configured correctly

🎉 Conclusion

Your Hytale dedicated server is now live with Java 25 installed, authenticated operation, correct UDP/QUIC networking, and optional systemd automation. 

Comments (0)
Login or create account to leave comments