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
5520open/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.aotis shipped, starting with-XX:AOTCache=HytaleServer.aotcan 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)