Skip to content

Installation

Install Minecraft Operator using the Helm chart from the GitHub Container Registry.

Install Operator

A single Helm install deploys a fully working operator. CRDs are embedded in the operator binary and applied automatically at startup via server-side apply.

helm install minecraft-operator \
  oci://ghcr.io/lexfrei/charts/minecraft-operator \
  --namespace minecraft-operator-system \
  --create-namespace

Embedded CRDs

CRDs (PaperMCServer, Plugin) are embedded in the operator binary and applied at startup using server-side apply. This is required because the PaperMCServer CRD exceeds the 262KB annotation limit for client-side apply. The Helm value crds.manage (default: true) controls whether the operator manages CRDs.

Verify Installation

Check that the operator is running:

kubectl get pods --namespace minecraft-operator-system

Expected output:

NAME                                  READY   STATUS    RESTARTS   AGE
minecraft-operator-xxxxxxxxxx-xxxxx   1/1     Running   0          30s

Configuration Options

Common Values

Value Description Default
replicaCount Number of operator replicas 1
image.repository Container image ghcr.io/lexfrei/minecraft-operator
image.tag Image tag Chart appVersion
resources.requests.memory Memory request 128Mi
resources.limits.memory Memory limit 256Mi
webui.enabled Enable Web UI true
webui.port Web UI port 8082

Custom Values File

Create a values.yaml for customization:

replicaCount: 1

resources:
  requests:
    cpu: 100m
    memory: 128Mi
  limits:
    memory: 256Mi

webui:
  enabled: true
  port: 8082

# Leader election for HA (if running multiple replicas)
leaderElection:
  enabled: true

Install with custom values:

helm install minecraft-operator \
  oci://ghcr.io/lexfrei/charts/minecraft-operator \
  --namespace minecraft-operator-system \
  --values values.yaml

Upgrade

Upgrade the operator to a new version:

helm upgrade minecraft-operator \
  oci://ghcr.io/lexfrei/charts/minecraft-operator \
  --namespace minecraft-operator-system

CRDs are automatically updated at operator startup via server-side apply.

Uninstall

Remove the operator:

helm uninstall minecraft-operator --namespace minecraft-operator-system

CRDs are NOT automatically removed (Kubernetes safety). To remove them manually:

# WARNING: deletes all PaperMCServer and Plugin custom resources!
kubectl delete crd papermcservers.mc.k8s.lex.la plugins.mc.k8s.lex.la

Data Loss Warning

Deleting CRDs will delete all custom resources (PaperMCServer, Plugin). Minecraft world data on PVCs is NOT deleted automatically.

Next Steps

Proceed to Quick Start to create your first Minecraft server.