Despliega tu propio servidor Minecraft multijugador con Dynmap en Kubernetes
¿Sabías que puedes levantar un servidor de Minecraft profesional en tu VPS con Kubernetes y, además, añadir un mapa interactivo en tiempo real gracias a Dynmap? Hoy te enseño cómo hacerlo, paso a paso, con todos los archivos yaml
necesarios y explicando cada parte, para que hasta tu grupo de amigos se quede flipando.
¿Por qué Minecraft + Dynmap en Kubernetes?
- Kubernetes gestiona la infraestructura: tendrás reinicio automático si algo falla.
- Escalabilidad fácil: puedes añadir más recursos cuando crezca tu comunidad.
- Dynmap proporciona un mapa web interactivo: sigue tu mundo desde cualquier navegador.
- Perfecto para una experiencia anti-lagg y con resiliencia incluso en VPS baratos.
Arquitectura del despliegue
- minecraft-server: Contenedor Bukkit, PaperMC o Spigot, con Dynmap instalado como plugin.
- Servicio Dynmap: Se expone el mapa por el puerto 8123.
- Volúmenes persistentes: Para que el mundo y la config sobrevivan a reinicios del pod.
- Recurso Ingress (opcional): Facilita el acceso externo seguro al mapa desde internet.
Preparando tu manifest completo
¡Aquí tienes todos los YAMLs listos para copiar y pegar! No olvides cambiar tu-dominio.com
por el tuyo, y revisa el storage según tu Cloud o VPS. Puedes adaptar la imagen de Minecraft a la que prefieras, aquí usamos itzg/minecraft-server
porque es muy compatible.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: minecraft-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: minecraft-server
spec:
selector:
matchLabels:
app: minecraft
replicas: 1
template:
metadata:
labels:
app: minecraft
spec:
containers:
- name: minecraft
image: itzg/minecraft-server:latest
env:
- name: EULA
value: "TRUE"
- name: TYPE
value: "SPIGOT"
- name: ENABLE_RCON
value: "true"
- name: RCON_PASSWORD
value: "supersecreto"
- name: MEMORY
value: "2G"
- name: VERSION
value: "LATEST"
- name: SPIGET_RESOURCES
value: "274,Dynmap" # Dynmap descargado automáticamente
ports:
- containerPort: 25565 # Puerto Minecraft
- containerPort: 8123 # Puerto Dynmap web
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
persistentVolumeClaim:
claimName: minecraft-data
---
apiVersion: v1
kind: Service
metadata:
name: minecraft-service
spec:
selector:
app: minecraft
type: NodePort
ports:
- name: minecraft
protocol: TCP
port: 25565
targetPort: 25565
nodePort: 30065
- name: dynmap
protocol: TCP
port: 8123
targetPort: 8123
nodePort: 31812
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dynmap-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: mapa.tu-dominio.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: minecraft-service
port:
number: 8123
Explicación rápida de cada componente
- PersistentVolumeClaim: Garantiza que tu mundo de Minecraft y la config de Dynmap sean permanentes.
- Deployment: Lanza el servidor con Dynmap ya listo. Puedes modificar recursos, versión, y usar mods/plugins.
- Service: Expone tanto el juego (puerto 25565) como el mapa web (8123). Puedes cambiar los
nodePort
si necesitas otros. - Ingress: Accede a tu mapa escribiendo http://mapa.tu-dominio.com; configúralo en tu DNS para que apunte al Ingress Controller de tu VPS o clúster.
Consejos extra y troubleshooting
- Si Dynmap no aparece, revisa en la consola los logs del container para ver si falta algún permiso o plugin.
- Puedes personalizar Dynmap desde el archivo
/data/plugins/dynmap/configuration.txt
montado en el PVC. - ¿El mundo no se guarda? Asegúrate de que tu PersistentVolume está correctamente configurado y soporta los modos RW necesarios.
- Para producción: considera un mecanismo de backup sencillo: rsync del volumen, o snapshots automáticos según tu proveedor de VPS.
¿Te animas?
Este proyecto es perfecto para sorprender y aprender, y puedes evolucionar este despliegue con mods, balanceo, o servicios complementarios (como Discord bots para la comunidad). Kubernetes no es solo para empresas: ¡también para gamers premium como tú!