𝔩𝔢𝔩𝕠𝔭𝔢𝔷
Theme

Homelab

Minecraft playit.gg Public Access

Adding playit.gg Public Access to Your Minecraft Kubernetes Server

Overview

This article adds playit.gg tunnels to your Minecraft server for public access. Friends can connect directly using a public address without needing to install Tailscale or any VPN software on their devices.

Tip

Having trouble? See v0.12.1 for what your setup should look like after completing this article.

Before You Begin

Prerequisites

Create playit.gg Account

playit.gg1 provides free tunnels for game servers. Minecraft Java is specifically supported on the free tier.

  1. Go to playit.gg and create an account
  2. Navigate to AgentsAdd Agent
  3. Copy the secret key (you'll need this for the Kubernetes secret)

Add playit.gg Manifests

Secret

k8s/apps/minecraft/secret.sops.yaml (before encryption):

---
apiVersion: v1
kind: Secret
metadata:
    name: playit-secret
    namespace: minecraft
type: Opaque
stringData:
    secret-key: <your-secret-key>

Encrypt:

sops --encrypt --in-place k8s/apps/minecraft/secret.sops.yaml

HelmRelease (Sidecar)

Add postRenderers to k8s/apps/minecraft/helmrelease.yaml under the spec: section:

spec:
    # ... existing chart, values sections ...
    postRenderers:
        - kustomize:
              patches:
                  - target:
                        kind: Deployment
                        name: minecraft
                    patch: |
                        - op: add
                          path: /spec/template/spec/containers/-
                          value:
                            name: playit-agent
                            image: ghcr.io/playit-cloud/playit-agent:1.0.5
                            args:
                              - "--socket-path"
                              - "/tmp/playitd.sock"
                            env:
                              - name: SECRET_KEY
                                valueFrom:
                                  secretKeyRef:
                                    name: playit-secret
                                    key: secret-key
Note

Pin the agent image tag. This article originally used :latest, which resolves at pull time - a pod restart months later can silently pull a newer agent that breaks the sidecar. The pinned 1.0.5 with --socket-path routing the agent's IPC socket to /tmp is the configuration running in v1.13.1.

Kustomization (Update)

Add the secret to k8s/apps/minecraft/kustomization.yaml:

---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
    - namespace.yaml
    - pvc.yaml
    - secret.sops.yaml
    - helmrelease.yaml

Deploy playit.gg

Commit Changes

git add k8s/apps/minecraft/
git commit -m "feat(minecraft): add playit.gg for public access"
git push

Reconcile Flux

flux reconcile source git flux-system && flux reconcile kustomization sync

Verify playit.gg

Agent Status

After the pod restarts with the sidecar (2/2 containers), verify the agent is connected:

kubectl get pods -n minecraft
kubectl logs -n minecraft -l app=minecraft -c playit-agent

You should see "tunnel running" - the agent authenticates automatically using the SECRET_KEY.

Tunnel Configuration

  1. Go to your agent page in playit.gg (same page where you got the secret key)
  2. Add new tunnel:
    • Protocol: TCP (Minecraft Java uses TCP)
    • Local Address: 127.0.0.1
    • Local Port: 25565
  3. Save and note your public address (format: xx.ip.gl.ply.gg:xxxxx)

Public Access

Give friends your playit.gg address. They connect directly in Minecraft - no Tailscale needed.

Next Steps

With public access configured, import an existing world or add Bedrock support.

See: Minecraft Import Existing World

Resources

Footnotes

  1. playit.gg, "playit-agent Docker," github.com. Accessed: Dec. 30, 2025. [Online]. Available: https://github.com/playit-cloud/playit-agent

Previous
Minecraft Paper Server