Just a little Helm chart for the new TS6 Server
A Kubernetes Helm chart for deploying TeamSpeak 6 Server with optional MariaDB persistence, ingress support, autoscaling, and network policies.
This Helm chart deploys a stateful TeamSpeak 6 Server instance on Kubernetes. It includes:
tsserver.yaml).Designed for production-like setups, with configurable persistence via PVC.
/var/tsserver for database, logs, and config.tsserver.yaml templating via helpers.Add the repo (if hosted) and install:
# Add repository (replace with actual repo URL if published)
helm repo add sidler1 https://sidler1.github.io/teamspeak-helm-chart
helm repo update
# Install the chart
helm install my-teamspeak . -n teamspeak --create-namespace -f values.yaml
# Or with custom values
helm install my-teamspeak . -n teamspeak --create-namespace --set mariadb.enabled=true,mariadb.auth.rootPassword=securepass
Verify deployment:
kubectl get sts -n teamspeak
kubectl get svc -n teamspeak
kubectl get pvc -n teamspeak # If persistence enabled
Post-install notes will display automatically (or view with helm get notes my-teamspeak -n teamspeak).
Key values in values.yaml:
| Parameter | Description | Default |
|---|---|---|
replicaCount |
Number of replicas | 1 |
image.repository |
TeamSpeak image repo | teamspeaksystems/teamspeak6-server |
image.tag |
Image tag (falls back to appVersion) |
"" |
service.type |
Service type (ClusterIP/NodePort/LoadBalancer) | LoadBalancer |
voice.port |
Voice UDP port | 9987 |
filetransfer.port |
File transfer TCP port | 30033 |
webquery.port |
Query HTTP port | 10080 |
persistence.enabled |
Enable PVC for data | true |
persistence.size |
PVC size | 8Gi |
mariadb.enabled |
Enable MariaDB backend | false |
mariadb.auth.database |
MariaDB DB name | teamspeak |
mariadb.auth.username |
MariaDB user | ts |
mariadb.auth.password |
MariaDB password (set securely!) | tspass |
autoscaling.enabled |
Enable HPA | false |
networkPolicy.enabled |
Enable NetworkPolicies | false |
ingress.enabled |
Enable Ingress for query | false |
licenseAccepted |
Accept EULA in config | true |
customer |
Custom label | "sidler1" |
For full config, see values.yaml.
Override via --set or custom YAML:
# Custom values example
mariadb:
enabled: true
auth:
rootPassword: "supersecret"
password: "supersecret"
persistence:
size: 10Gi
Upgrade:
helm upgrade my-teamspeak . -n teamspeak -f custom-values.yaml
telnet <IP> 10080, then login serveradmin <pass>).kubectl port-forward svc/my-teamspeak 9987:9987/udp -n teamspeak
# Connect to localhost:9987
kubectl logs sts/my-teamspeak -n teamspeak -f/var/tsserver/sql/teamspeak.mariadb -h my-teamspeak-mariadb -u ts -p.helm uninstall my-teamspeak -n teamspeak
kubectl delete namespace teamspeak # If created via chart
Warning: This deletes PVCs and data unless --keep-history is used.
git checkout -b feature/AmazingFeature).git commit -m 'Add some AmazingFeature').git push origin feature/AmazingFeature).Lint and test:
helm lint .
helm template . --debug
Apache 2.0 - see LICENSE.
For issues or support: @Sidler12 on X or Mail.