Hytale-broccoli

Hytale-broccoli

Docker app from Judd's Repository

Overview

A dedicated server for Hytale. The server files are downloaded and updated with the official Hytale Downloader. First start: you must sign in with your Hytale account. Open the container log, go to the URL that it shows, and sign in. When the server has started, the log shows a second link. Open it and authorize again. View distance has the largest effect on RAM use. Set MAX_MEMORY to match the RAM you give the server. Hytale uses QUIC over UDP. Forward UDP port 5520 on your router. If you change the port, also change DEFAULT_PORT. To install mods, put .jar or .zip files in the mods folder of the server files and restart the container. Docker image by indifferentbroccoli.

marketing_assets_banner GitHub License GitHub Release GitHub Repo stars Discord Docker Pulls

Game server hosting

Fast RAM, high-speed internet

Eat lag for breakfast

Try our Hytale server hosting free for 2 days!

Hytale Dedicated Server Docker

A Docker container for running a Hytale dedicated server with automatic downloading and updates using the official Hytale Downloader CLI.

Server Requirements

Resource Minimum Recommended
CPU 4 cores 8+ cores
RAM 4GB 8GB+
Storage 10GB 20GB

[!NOTE]

  • Hytale requires Java 25 (included in the Docker image)
  • Server resource usage depends heavily on player count and view distance
  • Higher view distances significantly increase RAM usage
  • Hytale uses QUIC over UDP (not TCP) on port 5520
  • ARM64/Apple Silicon supported - The x86_64 downloader runs via QEMU emulation, while the Java server runs natively

[!IMPORTANT] First-Time Setup: Authentication Required

On first startup, you'll need to authenticate via your browser. The server will display a URL in the console - just visit it and log in with your Hytale account. You will then need to authorize again from the link that appears once the server has started.

How to use

Copy the .env.example file to a new file called .env and adjust the settings as needed.

Quick Start

# 1. Start server
docker-compose up -d

# 2. Check logs for OAuth URL
docker-compose logs -f

# 3. Visit the URL in your browser and authenticate
# Server continues automatically after authentication

Docker Compose

Then use either docker compose or docker run:

services:
  hytale:
    image: indifferentbroccoli/hytale-server-docker
    restart: unless-stopped
    container_name: hytale
    stop_grace_period: 30s
    ports:
      - 5520:5520/udp
    env_file:
      - .env
    volumes:
      - ./server-files:/home/hytale/server-files
    stdin_open: true
    tty: true

Then run:

docker-compose up -d

Docker Run

docker run -d \
    --restart unless-stopped \
    --name hytale \
    --stop-timeout 30 \
    -p 5520:5520/udp \
    --env-file .env \
    -v ./server-files:/home/hytale/server-files \
    -it \
    indifferentbroccoli/hytale-server-docker

Environment Variables

You can use the following values to change the settings of the server on boot.

Variable Default Description
PUID 1000 User ID for file permissions
PGID 1000 Group ID for file permissions
SERVER_NAME hytale-server-docker Name of the server
DEFAULT_PORT 5520 The port the server listens on (UDP only)
MAX_PLAYERS 20 Maximum number of players allowed on the server
VIEW_DISTANCE 12 View distance in chunks (12 chunks = 384 blocks). Higher values require more RAM
AUTH_MODE authenticated Authentication mode: authenticated or offline
ENABLE_BACKUPS false Enable automatic world backups
BACKUP_FREQUENCY 30 Backup interval in minutes (if backups are enabled)
BACKUP_MAX_COUNT 5 How many previous backups to retain
BACKUP_DIR /home/hytale/server-files/backups Directory path for storing backups
DISABLE_SENTRY true Disable Sentry crash reporting
USE_AOT_CACHE true Use Ahead-of-Time compilation cache for faster startup
ACCEPT_EARLY_PLUGINS false Allow early plugins (may cause stability issues)
MIN_MEMORY Minimum JVM heap size (e.g., 4G). Leave unset to omit -Xms flag
MAX_MEMORY 8G Maximum JVM heap size (e.g., 8G, 8192M)
JVM_ARGS Custom JVM arguments (optional)
PATCHLINE release Selects the patchline for the game (release or pre-release)
DOWNLOAD_ON_START true Automatically download/update server files on startup
AUTH_SELECT_PROFILE 1 Sets which profile to auth the server too if multiple are linked to the account

Port Configuration

Hytale uses the QUIC protocol over UDP (not TCP). Make sure to:

  1. Open UDP port 5520 (or your custom port) in your firewall
  2. Forward UDP port 5520 in your router if hosting from home
  3. Configure firewall rules for UDP only

File Structure

After first run, the following structure will be created in your server-files directory:

server-files/
├── Server/
│   ├── HytaleServer.jar       # Main server executable
│   └── HytaleServer.aot       # AOT cache for faster startup
├── Assets.zip                 # Game assets
├── downloader/                # Hytale downloader CLI
├── .cache/                    # Optimized file cache
├── logs/                      # Server log files
├── mods/                      # Installed mods (place .jar or .zip files here)
├── universe/                  # World and player save data
│   └── worlds/                # Individual world folders
├── bans.json                  # Banned players
├── config.json                # Server configuration
├── permissions.json           # Permission configuration
└── whitelist.json             # Whitelisted players

Installing Mods

  1. Download mods (.jar or .zip files) from sources like CurseForge
  2. Place them in the server-files/mods/ directory
  3. Restart the server

View Distance & Performance

View distance is the primary driver for RAM usage:

  • Default: 12 chunks (384 blocks) ≈ 24 Minecraft chunks
  • Recommended Max: 12 chunks for optimal performance
  • RAM Impact: Higher view distances exponentially increase memory requirements

Tune MAX_MEMORY and VIEW_DISTANCE based on:

  • Number of concurrent players
  • How spread out players are in the world
  • Available server resources

Useful Commands

View server logs

docker logs hytale -f
# or
docker-compose logs -f

Stop the server

docker-compose down

Restart the server

docker-compose restart

Update server files

Server files are automatically updated on restart if DOWNLOAD_ON_START=true. To force an update:

docker-compose restart

Send commands to the server console

# Send a command to the running server
docker exec -u hytale hytale command.sh "/auth status"

# Other examples
docker exec -u hytale hytale command.sh "/eventtitle 'Hello Indifferent Server'"
docker exec -u hytale hytale command.sh "/kick player"
docker exec -u hytale hytale command.sh "/op add player"

Support

License

This project is licensed under the MIT License - see the LICENSE file for details.

Media gallery

1 / 3

Install Hytale-broccoli on Unraid in a few clicks.

Find Hytale-broccoli in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Hytale-broccoli Review the template variables and paths Click Install

Requirements

4 CPU cores, 4 GB RAM (8 GB recommended), 10 GB storage. A Hytale account to authenticate the server.

Categories

Download Statistics

187,955
Total Downloads
29,568
This Month
28,383
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
indifferentbroccoli/hytale-server-docker:latest
Last Updated2026-04-12
First Seen2026-01-15

Runtime arguments

Network
bridge
Shell
bash
Privileged
false
Extra Params
--restart=unless-stopped --stop-timeout=30

Template configuration

Game PortPortudp

UDP game port (QUIC). Forward it on your router. Must be the same as DEFAULT_PORT.

Target
5520
Default
5520
Value
5520
Server FilesPathrw

Server files, worlds, mods, config, backups, and saved authentication.

Target
/home/hytale/server-files
Default
/mnt/user/appdata/hytale
Value
/mnt/user/appdata/hytale
Server NameVariable

Name of the server.

Target
SERVER_NAME
Default
HytaleServer
Value
HytaleServer
Max PlayersVariable

Maximum number of players on the server.

Target
MAX_PLAYERS
Default
20
Value
20
View DistanceVariable

View distance in chunks. 12 chunks is 384 blocks. Higher values need more RAM.

Target
VIEW_DISTANCE
Default
12
Value
12
Max MemoryVariable

Maximum Java heap size, for example 8G or 8192M. Include the unit.

Target
MAX_MEMORY
Default
8G
Value
8G
Enable BackupsVariable

Make automatic world backups (true or false).

Target
ENABLE_BACKUPS
Default
false
Value
false
Backup FrequencyVariable

Minutes between backups, when backups are on.

Target
BACKUP_FREQUENCY
Default
30
Value
30
Backup Max CountVariable

Number of backups to keep.

Target
BACKUP_MAX_COUNT
Default
5
Value
5
Min MemoryVariable

Minimum Java heap size, for example 4G. Leave empty to not set a minimum.

Target
MIN_MEMORY
JVM ArgumentsVariable

Optional extra Java arguments, for example -XX:+UseG1GC.

Target
JVM_ARGS
Auth ModeVariable

authenticated or offline. Use offline only for testing, because it lets players join without authentication.

Target
AUTH_MODE
Default
authenticated
Value
authenticated
Auth Select ProfileVariable

Profile number to authenticate the server with, if your account has more than one profile.

Target
AUTH_SELECT_PROFILE
Default
1
Value
1
PatchlineVariable

Game patchline: release or pre-release.

Target
PATCHLINE
Default
release
Value
release
Download On StartVariable

Download and update the server files on each start. Set to false to skip.

Target
DOWNLOAD_ON_START
Default
true
Value
true
Default PortVariable

UDP port the server listens on. Must be the same as the Game Port.

Target
DEFAULT_PORT
Default
5520
Value
5520
Backup DirectoryVariable

Folder in the container for backups. Keep it inside /home/hytale/server-files so backups persist.

Target
BACKUP_DIR
Default
/home/hytale/server-files/backups
Value
/home/hytale/server-files/backups
Use AOT CacheVariable

Use the ahead-of-time compilation cache for a faster start.

Target
USE_AOT_CACHE
Default
true
Value
true
Accept Early PluginsVariable

Allow early plugins. These can make the server unstable.

Target
ACCEPT_EARLY_PLUGINS
Default
false
Value
false
Disable SentryVariable

Turn off Sentry crash reporting.

Target
DISABLE_SENTRY
Default
true
Value
true
PUIDVariable

User ID for file permissions.

Default
99
Value
99
PGIDVariable

Group ID for file permissions.

Default
100
Value
100