How to Install a Hytale Server on Linux VPS
1. Introduction
What is Hytale?
Hytale is a sandbox game developed by Hypixel Studios, released in early access on January 13, 2026. It combines exploration, construction, combat, and content creation in a rich procedural universe. The dedicated server allows hosting persistent multiplayer games.
Main Features
- Procedural worlds with diverse biomes
- Mod system and advanced customization
- Modern QUIC over UDP network protocol
- Support for x64 and arm64 architectures
- Management of permissions and multiple worlds
- Integrated authentication system via Hytale account
Typical Use Cases
- Private server among friends (5-10 players)
- Public community server (20-50 players)
- Custom mini-games server
- Creative server with mods
Documented Version
- Hytale Server: v1.0.0 (January 2026)
- Required Java: OpenJDK 25 LTS (Temurin)
🚀 Prefer a turnkey solution?
With OuiHeberg, your Hytale server is pre-installed and ready to play in less than 60 seconds. No technical configuration, automatic updates, 24/7 support, and DDoS protection included.
2. Prerequisites
Hardware Configuration
| Resource | Minimum | Recommended | Performance |
|---|---|---|---|
| RAM | 4 GB | 8 GB | 16 GB |
| CPU | 2 vCores | 4 vCores | 6+ vCores |
| Storage | 10 GB SSD | 20 GB SSD | 50 GB NVMe |
| Bandwidth | 100 Mbps | 1 Gbps | 1 Gbps |
| Supported Players | 5-10 | 10-30 | 50+ |
💡 Tip: CPU speed (core frequency) is more important than the number of cores for Hytale.
Required Software
| Software | Version | Required |
|---|---|---|
| Debian / Ubuntu | 12+ / 22.04+ | ✅ |
| Java (OpenJDK) | 25 LTS | ✅ |
| unzip | Latest | ✅ |
| UFW (Firewall) | Latest | Recommended |
Network Ports
| Port | Protocol | Usage | Required |
|---|---|---|---|
| 5520 | UDP | Hytale Server (QUIC) | ✅ |
| 22 | TCP | SSH (administration) | ✅ |
⚠️ Important: Hytale exclusively uses UDP via the QUIC protocol. Do not open the port in TCP.
Required Server Files
| File | Size | Description |
|---|---|---|
HytaleServer.jar |
~50 MB | Server executable |
Assets.zip |
~3.2 GB | Game resources (textures, sounds, models) |
3. Step-by-Step Installation
Step 1: System Update
sudo apt update && sudo apt upgrade -y
ℹ️ This command updates the package list and installs the latest available versions.
Step 2: Install Java 25
Add the Adoptium repository and install OpenJDK 25:
# Install dependencies
sudo apt install -y wget apt-transport-https gnupg
# Add Adoptium GPG key
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo tee /usr/share/keyrings/adoptium.asc
# Add repository
echo "deb [signed-by=/usr/share/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
# Install Java 25
sudo apt update
sudo apt install -y temurin-25-jdk
Verification Point:
java --version
Expected result:
openjdk 25.0.1 2025-10-21 LTS
OpenJDK Runtime Environment Temurin-25.0.1+8 (build 25.0.1+8-LTS)
OpenJDK 64-Bit Server VM Temurin-25.0.1+8 (build 25.0.1+8-LTS, mixed mode, sharing)
Step 3: Create a Dedicated User
For security reasons, create a non-root system user:
sudo adduser --system --group --home /opt/hytale --shell /bin/bash hytale
💡 Best Practice: Never run a game server as root.
Step 4: Prepare Directory Structure
# Create directories
sudo mkdir -p /opt/hytale/server
sudo mkdir -p /opt/hytale/backups
# Set permissions
sudo chown -R hytale:hytale /opt/hytale
Step 5: Download Server Files
Use the official hytale-downloader tool to download server files directly to your VPS:
# Connect as hytale user
sudo su - hytale
cd /opt/hytale/server
# Download the tool
wget -q https://downloader.hytale.com/hytale-downloader.zip
# Extraction
unzip hytale-downloader.zip
# Set execution permissions
chmod +x bin/hytale-downloader
# Download server files (HytaleServer.jar + Assets.zip)
./bin/hytale-downloader --server
ℹ️ The tool will prompt you to authenticate with your Hytale account during the first download.
Verification Point:
ls -lh /opt/hytale/server/
Expected result:
-rw-r--r-- 1 hytale hytale 50M jan 15 10:00 HytaleServer.jar
-rw-r--r-- 1 hytale hytale 3.2G jan 15 10:05 Assets.zip
drwxr-xr-x 2 hytale hytale 4.0K jan 15 10:00 bin/
Step 6: Firewall Configuration
# Enable UFW if necessary
sudo ufw enable
# Open SSH port (if not already done)
sudo ufw allow 22/tcp
# Open Hytale port (UDP only)
sudo ufw allow 5520/udp
# Reload rules
sudo ufw reload
# Check status
sudo ufw status verbose
Expected result:
5520/udp ALLOW IN Anywhere
4. Configuration
Startup Script
Create the file /opt/hytale/server/start.sh:
sudo -u hytale nano /opt/hytale/server/start.sh
Script content:
#!/bin/bash
#
# Hytale Server Startup Script
# OuiHeberg - Installation Guide
#
cd /opt/hytale/server
# JVM Configuration
JAVA_OPTS="-Xms4G -Xmx6G"
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC"
JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=200"
JAVA_OPTS="$JAVA_OPTS -XX:+ParallelRefProcEnabled"
JAVA_OPTS="$JAVA_OPTS -XX:+UnlockExperimentalVMOptions"
JAVA_OPTS="$JAVA_OPTS -XX:+DisableExplicitGC"
# Server Startup
java $JAVA_OPTS -jar HytaleServer.jar \
--assets Assets.zip \
--bind 0.0.0.0:5520
Make the script executable:
sudo chmod +x /opt/hytale/server/start.sh
sudo chown hytale:hytale /opt/hytale/server/start.sh
JVM Optimization based on number of players
| Players | VPS RAM | JVM Parameters |
|---|---|---|
| 5-10 | 6 GB | -Xms3G -Xmx5G -XX:+UseG1GC |
| 10-20 | 8 GB | -Xms4G -Xmx6G -XX:+UseG1GC -XX:MaxGCPauseMillis=200 |
| 20-40 | 16 GB | -Xms8G -Xmx12G -XX:+UseG1GC -XX:MaxGCPauseMillis=200 |
| 50+ | 32 GB | -Xms16G -Xmx24G -XX:+UseZGC |
⚠️ Important: Always leave 1-2 GB of RAM available for the operating system.
Server Configuration (config.json)
After the first startup, edit /opt/hytale/server/config.json:
{
"Version": 3,
"ServerName": "My Hytale Server",
"MOTD": "Welcome to our server!",
"Password": "",
"MaxPlayers": 20,
"MaxViewRadius": 16,
"LocalCompressionEnabled": false,
"Defaults": {
"World": "default",
"GameMode": "Adventure"
},
"ConnectionTimeouts": {
"JoinTimeouts": {}
},
"RateLimit": {},
"Modules": {},
"LogLevels": {},
"Mods": {},
"DisplayTmpTagsInStrings": false,
"PlayerStorage": {
"Type": "Hytale"
}
}
Important Settings:
| Parameter | Recommended Value | Description |
|---|---|---|
ServerName | Your Name | Name displayed in server list |
MaxPlayers | 20 | Maximum number of simultaneous players |
MaxViewRadius | 16 | Render distance (32 = high, consumes a lot) |
Password | "" | Blank = public server, otherwise password required |
GameMode | Adventure | Default mode: Adventure, Creative, Survival |
💡 Optimization: Reducing
MaxViewRadiusfrom 32 to 16 significantly reduces RAM and CPU consumption.
Systemd Service (Automatic Startup)
Create the file /etc/systemd/system/hytale.service:
sudo nano /etc/systemd/system/hytale.service
Content:
[Unit]
Description=Hytale Dedicated Server
Documentation=https://support.hytale.com
After=network.target
[Service]
Type=simple
User=hytale
Group=hytale
WorkingDirectory=/opt/hytale/server
ExecStart=/opt/hytale/server/start.sh
ExecStop=/bin/kill -SIGINT $MAINPID
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=hytale
# Security
NoNewPrivileges=true
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Enable and start the service:
sudo systemctl daemon-reload
sudo systemctl enable hytale
sudo systemctl start hytale
5. First Use
First Startup
sudo systemctl start hytale
Monitor real-time logs:
sudo journalctl -u hytale -f
Expected Output:
[INFO] Starting Hytale Server v1.0.0
[INFO] Loading Assets.zip... (1-2 minutes)
[INFO] World generation complete
[WARN] Server requires authentication
[INFO] Use command: /auth login device
[INFO] Server online on port 5520
Server Authentication
Access the server console:
sudo -u hytale screen -S hytale
Or via systemd:
sudo systemctl stop hytale
sudo -u hytale /opt/hytale/server/start.sh
In the console, type:
/auth login device
A code will appear:
===================================================================
DEVICE AUTHORIZATION
===================================================================
Visit: https://accounts.hytale.com/device
Enter code: ABCD-1234
===================================================================
- Go to https://accounts.hytale.com/device
- Enter the displayed code (e.g.,
ABCD-1234) - Authenticate with your Hytale account
⚠️ Important: The code expires after 15 minutes. Authentication is mandatory for players to connect.
Player Connection
Players can connect via:
- Direct IP:
your-public-ip:5520 - Domain:
play.yourdomain.com:5520
6. Maintenance
Service Management Commands
| Action | Command |
|---|---|
| Start | sudo systemctl start hytale |
| Stop | sudo systemctl stop hytale |
| Restart | sudo systemctl restart hytale |
| Status | sudo systemctl status hytale |
| Real-time Logs | sudo journalctl -u hytale -f |
| Full Logs | sudo journalctl -u hytale --no-pager |
Server Update
# Stop the server
sudo systemctl stop hytale
# Backup before update
sudo -u hytale cp -r /opt/hytale/server /opt/hytale/backups/server-$(date +%Y%m%d)
# Download new files
sudo su - hytale
cd /opt/hytale/server
./bin/hytale-downloader --server --update
# Restart
exit
sudo systemctl start hytale
Automatic Backup
Create a backup script /opt/hytale/backup.sh:
#!/bin/bash
#
# Hytale Backup Script
#
BACKUP_DIR="/opt/hytale/backups"
SERVER_DIR="/opt/hytale/server"
DATE=$(date +%Y%m%d-%H%M%S)
RETENTION_DAYS=7
# Create backup
tar -czf "$BACKUP_DIR/hytale-$DATE.tar.gz" \
-C "$SERVER_DIR" \
config.json \
universe/ \
mods/ \
--exclude='*.log'
# Delete old backups
find "$BACKUP_DIR" -name "hytale-*.tar.gz" -mtime +$RETENTION_DAYS -delete
echo "Backup completed: hytale-$DATE.tar.gz"
Make it executable and schedule it:
sudo chmod +x /opt/hytale/backup.sh
sudo chown hytale:hytale /opt/hytale/backup.sh
# Add to cron (daily backup at 4am)
echo "0 4 * * * hytale /opt/hytale/backup.sh" | sudo tee /etc/cron.d/hytale-backup
Restoration
# Server shutdown
sudo systemctl stop hytale
# Restore from backup
cd /opt/hytale/server
sudo -u hytale tar -xzf /opt/hytale/backups/hytale-YYYYMMDD-HHMMSS.tar.gz
# Restart
sudo systemctl start hytale
Monitoring
Monitor server resources:
# Java process memory usage
ps aux | grep HytaleServer
# Real-time CPU and RAM usage
htop -p $(pgrep -f HytaleServer)
# Disk space
df -h /opt/hytale
7. Troubleshooting
Common Issues
| Issue | Cause | Solution |
|---|---|---|
Incorrect Java version | Java < 25 | Install Java 25 via Adoptium |
Assets.zip not found | Missing file | Place Assets.zip in /opt/hytale/server/ |
Port 5520 already in use | Another active instance | sudo lsof -i :5520 then kill PID |
OutOfMemoryError | Insufficient RAM | Increase -Xmx or reduce MaxViewRadius |
| Players unable to connect | Firewall / authentication | Check UFW + /auth login device |
Diagnostic Commands
# Check if server is listening
sudo ss -ulnp | grep 5520
# Check error logs
sudo journalctl -u hytale --since "1 hour ago" | grep -i error
# Test UDP connectivity (from another server)
nc -vzu your-ip 5520
# Check Java version
java --version
# Check permissions
ls -la /opt/hytale/server/
Common Errors in Logs
Error: GC overhead limit exceeded
# Increase allocated RAM
-Xmx8G instead of -Xmx6G
Error: Unable to bind to address
# Check if no other process is using the port
sudo fuser -k 5520/udp
Error: Authentication required
# Restart authentication
/auth login device
8. Resources
Official Documentation
| Resource | URL |
|---|---|
| Official server manual | https://support.hytale.com/hc/en-us/articles/45326769420827-Hytale-Server-Manual |
| Hytale official site | https://hytale.com |
| Authentication | https://accounts.hytale.com/device |
| Adoptium (Java 25) | https://adoptium.net |
Community
| Platform | Link |
|---|---|
| Official Discord | https://discord.gg/hytale |
| https://reddit.com/r/hytale | |
| Official Forums | https://forums.hytale.com |
💡 Find the installation complex?
Save time with a pre-installed Hytale server at OuiHeberg:
- ✅ Server ready in 60 seconds
- ✅ Simplified management panel
- ✅ 1-click updates
- ✅ Automatic backups
- ✅ 24/7 technical support
- ✅ Included DDoS protection
Summary of Commands
# === COMPLETE INSTALLATION ===
# 1. System update
sudo apt update && sudo apt upgrade -y
# 2. Install Java 25
sudo apt install -y wget apt-transport-https gnupg unzip
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo tee /usr/share/keyrings/adoptium.asc
echo "deb [signed-by=/usr/share/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
sudo apt update && sudo apt install -y temurin-25-jdk
# 3. Create user
sudo adduser --system --group --home /opt/hytale --shell /bin/bash hytale
# 4. Prepare folders
sudo mkdir -p /opt/hytale/{server,backups}
sudo chown -R hytale:hytale /opt/hytale
# 5. Firewall
sudo ufw allow 5520/udp
sudo ufw reload
# 6. Download server files
sudo su - hytale
cd /opt/hytale/server
wget -q https://downloader.hytale.com/hytale-downloader.zip
unzip hytale-downloader.zip
chmod +x bin/hytale-downloader
./bin/hytale-downloader --server
exit
# 7. Create start.sh and hytale.service (see above sections)
# 8. Start
sudo systemctl daemon-reload
sudo systemctl enable hytale
sudo systemctl start hytale
# 9. Authentication
# In the console: /auth login device
# Then validate on https://accounts.hytale.com/device
Guide written by OuiHeberg — Last updated: January 15, 2026

