Helm chart for Hytale
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
@SakulFlee | Lukas Weber 743a3d8a53
All checks were successful
Build and Publish Helm Chart / build-and-publish (push) Successful in 9s
fix: default image.repository to forgejo containers/hytale and pullPolicy Always
Align the chart's default image path with where the Container CI actually
publishes (containers/hytale) and keep pullPolicy: Always so the moving
latest tag is re-pulled.
2026-08-29 00:34:50 +02:00
.forgejo/workflows Fix OCI push: use external https host for helm registry login 2026-08-28 20:30:49 +02:00
.github/workflows Removed latest version push 2026-01-27 04:35:00 +01:00
templates Added deployment strategy 2026-02-05 18:09:51 +01:00
Chart.yaml Version bump 2026-02-05 18:09:56 +01:00
README.md fix: default image.repository to forgejo containers/hytale and pullPolicy Always 2026-08-29 00:34:50 +02:00
renovate.json Add renovate.json 2026-01-27 02:00:21 +00:00
values.yaml fix: default image.repository to forgejo containers/hytale and pullPolicy Always 2026-08-29 00:34:50 +02:00

📦 Hytale Helm Chart

Origin: Forgejo Mirror: GitHub

Based on: HytaleContainer

A feature rich Helm Chart for running Hytale servers!

Features

  • Authentication token caching
  • Automatic updating upon restart
  • [Planned] Mod downloading

Running

Install the Helm Chart:

# From GitHub Container Registry (mirror)
helm install hytale oci://ghcr.io/sakulflee/charts/hytale

# From Forgejo (origin)
helm install hytale oci://forgejo.sakul-flee.de/sakulflee/hytalehelmchart

Then following instructions in Helm!
Most setups you won't need to change the values.

Values

General

Key Type Default Description
name string "hytale" Name of container
labels object {}

Persistence

Key Type Default Description
persistence.size string "10Gi"
persistence.storageClass string ""

Resources

Key Type Default Description
resources.limits.cpu string "4000m"
resources.limits.memory string "8Gi"
resources.requests.cpu string "2000m"
resources.requests.memory string "4Gi"

Note

Increasing the memory here doesn't automatically give the Hytale server more! Check JVM Arguments (-Xmx) for further adjustments.

Service

Key Type Default Description
service.port int 5520
service.type string "LoadBalancer"
service.udpPort int 520

Credentials

Key Type Default Description
credentials.credentialsKey string "credentials.json" Key inside secret
credentials.secretName string "hytale-credentials" Name of secret (can be empty; see below!)

Note

This is optional, you can set the secretName to an empty string and use the interactive authentication instead.

Warning

If the downloader logs an oauth2: "invalid_grant" (or similar auth) error, the refresh token in this secret is expired or revoked. The launcher detects this and automatically starts a browser-based device re-authentication on the next start — watch the pod logs (kubectl logs -f -n <ns> <release>) for the authorization URL/code, authenticate in your browser, and the download continues. Once authenticated, the refreshed credentials are saved on the /opt/hytale volume and take precedence over this secret, so they survive restarts. To rotate via the secret instead, delete .hytale-downloader-credentials.json from the volume and recreate the secret with fresh credentials.

JVM Arguments

Key Type Default Description
jvm.additionalOptions[0] string "-server"
jvm.additionalOptions[1] string "-XX:+UseG1GC"
jvm.additionalOptions[2] string "-XX:+UseStringDeduplication"
jvm.additionalOptions[3] string "-Xmx4G" Max Java memory usage, adjust with requests & limits!
jvm.additionalOptions[4] string "-Xms512M"
jvm.additionalOptions[5] string "-server"

Note

This is a map that can be overwritten.

Image

Key Type Default Description
image.pullPolicy string "IfNotPresent"
image.repository string "forgejo.sakul-flee.de/containers/hytale"
image.tag string "latest"

Probes

Key Type Default Description
probes.liveness.initialDelaySeconds int 30
probes.liveness.periodSeconds int 30
probes.startup.failureThreshold int 100
probes.startup.file string "/tmp/.ready"
probes.startup.periodSeconds int 30

Security

Key Type Default Description
securityContext.fsGroup int 1000
securityContext.runAsGroup int 1000
securityContext.runAsNonRoot bool true
securityContext.runAsUser int 1000

License

This project is licensed under Apache License 2.0.