Tutoriales de VPS
Montar un servidor Minecraft Java en un VPS (2026): Paper, Docker, plugins, lista blanca y copias de seguridad
Despliega Minecraft Java 26.2 con Paper en un VPS usando Docker Compose, con Java 25, lista blanca, plugins, RCON, copias de seguridad automáticas, simulacros de restauración, actualizaciones seguras y diagnóstico de lag de TPS.

Montar un servidor Minecraft Java en un VPS (2026): Paper, Docker, plugins, lista blanca y copias de seguridad
Si quieres jugar a Minecraft Java en modo supervivencia con amigos a largo plazo, alquilar un VPS y montar tu propio servidor suele ser más estable que hacer que alguien deje el ordenador encendido todo el tiempo, y además te permite instalar plugins de Paper libremente, gestionar los mapas y controlar las copias de seguridad. Pero "arranca" y "funciona de forma estable" son cosas muy distintas: el rendimiento mononúcleo de la CPU, la latencia del centro de datos, la asignación de memoria, la distancia de visión, la lista blanca y las copias de seguridad del mundo afectan directamente a la experiencia.
Este tutorial usa como ejemplo las versiones estables actuales Minecraft Java 26.2 y Paper 26.2, desplegadas con Docker Compose y itzg/minecraft-server. La configuración incluye Java 25, Paper, lista blanca, RCON Secret, copias de seguridad automáticas del mundo, instalación de plugins, actualizaciones y diagnóstico de lag, y es adecuada para un servidor de supervivencia pequeño de 3-10 jugadores.
Primero confirma qué cliente usan tus jugadores, para no descubrir tras montar el servidor que no pueden entrar.
| Escenario | Opción recomendada | Notas |
|---|---|---|
| Todos los jugadores usan Java Edition en Windows, macOS o Linux | Servidor Paper Java | Compatible con plugins Bukkit/Paper, ecosistema maduro |
| Los jugadores usan principalmente móviles, consolas o Bedrock Edition | Bedrock Dedicated Server | El puerto predeterminado y el programa de servidor son distintos; esta configuración no se puede aplicar directamente |
| Gestionar varios servidores de juegos en una máquina o entregarlo a varios administradores | Pterodactyl | Tiene panel, cuotas de recursos, gestión de archivos y usuarios, pero el despliegue es más complejo |
| Ejecutar solo un servidor de supervivencia Java para 3-10 jugadores | El Docker Compose de este artículo | Menos componentes, ruta de actualización y migración clara |
Paper es un software de servidor Minecraft Java orientado a servidores de producción, que ofrece mejor rendimiento, opciones de configuración y una API de plugins. No es un cargador de mods; si necesitas modpacks de Forge, NeoForge o Fabric, el tipo de servidor, la versión de Java y los mods del cliente deben volver a coincidir.
Si necesitas gestionar varias instancias de Minecraft, Rust o CS2, continúa con Montar un panel de servidor de juegos Pterodactyl en un VPS.
El bucle principal de juego de un servidor Minecraft es sensible al rendimiento mononúcleo. En lugar de comprar muchos vCPU compartidas de baja frecuencia, prioriza una CPU de alta frecuencia y rendimiento estable, disco NVMe y un centro de datos cercano a los jugadores.
| Escala | VPS sugerido | Heap de Java | Distancia de visión sugerida |
|---|---|---|---|
| 2-4 jugadores, supervivencia pura, pocos plugins | 2-4 núcleos, 4-6GB, 40GB NVMe | 3-4GB | 6-8 |
| 5-10 jugadores, plugins de administración habituales | 4 núcleos, 8GB, 60GB NVMe | 6GB | 8 |
| 10-20 jugadores, granjas de redstone o exploración frecuente | 4-6 núcleos de alto rendimiento, 12-16GB | 8-12GB | Empezar probando 6-8 |
| Modpacks grandes o servidores públicos | Prueba de carga por separado | Según los requisitos del modpack | No aplicar directamente los parámetros de este artículo |
El heap de Java no debe consumir todo el VPS. El contenedor, la memoria no-heap de la JVM, Docker y Linux necesitan espacio; la documentación de itzg/minecraft-server recomienda reservar aproximadamente un 25% de la memoria total del contenedor para las partes no-heap. Este artículo asigna MEMORY=6G en un VPS de 8GB.
Elige una ubicación del centro de datos cercana a los jugadores principales. Antes de comprar, puedes consultar la Guía de recomendaciones y configuración de VPS para servidores de juegos para valorar las rutas de red, la protección DDoS y el rendimiento mononúcleo.
El sistema de ejemplo es Ubuntu 24.04 LTS. Minecraft Java usa TCP 25565 por defecto; tanto el grupo de seguridad como el firewall del host deben permitir este puerto.
Si quieres que los jugadores entren mediante un dominio, añade un registro A para mc.example.com que apunte a la IPv4 pública del VPS. Si usas Cloudflare DNS, configúralo como DNS only; el proxy normal de nube naranja no reenvía el tráfico TCP de Minecraft.
Comprueba si el puerto está ocupado:
sudo ss -lntp | grep ':25565'
Continúa solo si no hay salida. Luego instala Docker Engine y Compose v2, y confirma las versiones:
docker --version
docker compose version
Crea los directorios de datos, copias de seguridad y Secret:
sudo mkdir -p /opt/minecraft/{data,backups,secrets}
sudo chown -R "$USER":"$USER" /opt/minecraft
cd /opt/minecraft
openssl rand -base64 36 > secrets/rcon_password
chmod 600 secrets/rcon_password
RCON se usa para detener el servidor de forma segura, ejecutar comandos de consola y coordinar las copias de seguridad. Este artículo no mapea 25575 a la internet pública; el contenedor de copias de seguridad solo accede a él a través de la red interna de Compose.
Si aún no estás familiarizado con las comprobaciones de estado, la rotación de logs, los límites de recursos y la gestión de Secret en entornos de producción, puedes leer primero la Guía de configuración de entorno de producción con Docker Compose en VPS. La configuración siguiente está adaptada a Minecraft con versiones fijadas, persistencia, dependencias de salud y orquestación de copias de seguridad.
Crea /opt/minecraft/compose.yaml:
services:
mc:
image: itzg/minecraft-server:2026.5.4-java25
container_name: minecraft-paper
restart: unless-stopped
tty: true
stdin_open: true
ports:
- "25565:25565/tcp"
environment:
EULA: "TRUE"
TYPE: "PAPER"
VERSION: "26.2"
MEMORY: "6G"
ONLINE_MODE: "TRUE"
ENABLE_WHITELIST: "TRUE"
ENFORCE_WHITELIST: "TRUE"
WHITELIST: |-
PlayerName1
PlayerName2
MAX_PLAYERS: "10"
VIEW_DISTANCE: "8"
SIMULATION_DISTANCE: "6"
DIFFICULTY: "normal"
MOTD: "Private survival server"
ENABLE_RCON: "TRUE"
RCON_PASSWORD_FILE: /run/secrets/rcon_password
STOP_SERVER_ANNOUNCE_DELAY: "30"
TZ: "Asia/Shanghai"
volumes:
- ./data:/data
secrets:
- rcon_password
stop_grace_period: 90s
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
backups:
image: itzg/mc-backup:latest
container_name: minecraft-backups
restart: unless-stopped
depends_on:
mc:
condition: service_healthy
environment:
RCON_HOST: mc
RCON_PASSWORD_FILE: /run/secrets/rcon_password
BACKUP_NAME: minecraft-paper
BACKUP_INTERVAL: "6h"
INITIAL_DELAY: "0"
PRUNE_BACKUPS_DAYS: "7"
TZ: "Asia/Shanghai"
volumes:
- ./data:/data:ro
- ./backups:/backups
secrets:
- rcon_password
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
secrets:
rcon_password:
file: ./secrets/rcon_password
Aquí se fijan la versión de herramientas de la imagen del servidor Minecraft y Java 25, y la versión del juego se fija en 26.2. La documentación oficial de Paper indica que 26.1 y superiores requieren Java 25; si necesitas ejecutar mundos antiguos o plugins antiguos de 1.20 a 1.21.11, cambia a una imagen de Java 21 y vuelve a verificar la compatibilidad.
La etiqueta latest de itzg/mc-backup cambia. Tras la primera verificación estable, puedes usar docker image inspect para registrar el RepoDigest actual y luego fijar el digest en la configuración de producción. No sigas automáticamente versiones mayores desconocidas sin una copia de seguridad completa.
Establecer EULA=TRUE significa aceptar el EULA de Minecraft. Antes de publicar, lee el EULA y las Usage Guidelines vigentes, y asegúrate de que el cobro, el contenido y el uso de la marca del servidor cumplen los requisitos.
Primero resuelve Compose y descarga la imagen:
cd /opt/minecraft
docker compose config >/dev/null
docker compose pull
docker compose up -d
docker compose ps
docker compose logs -f mc
El primer arranque descarga Paper 26.2 y genera el mundo. Cuando el log muestre algo como Done, pulsa Ctrl+C para salir de los logs; esto no detiene el contenedor.
Confirma la salud del contenedor, la versión y la lista de jugadores:
docker compose ps
docker compose exec mc rcon-cli version
docker compose exec mc rcon-cli list
docker compose exec mc rcon-cli whitelist list
mc debe mostrar healthy. El contenedor de copias de seguridad espera a que el servidor de juego esté healthy antes de conectarse por RCON.
Permite TCP 25565 en el firewall en la nube del VPS. Con UFW puedes añadir:
sudo ufw allow 25565/tcp
sudo ufw status numbered
Los puertos publicados por Docker pueden saltarse las reglas INPUT simples de UFW, así que revisa también el firewall en la nube y las cadenas de reenvío de Docker. Este artículo solo publica 25565; RCON 25575, la API de Docker y los puertos de administración SSH nunca deben exponerse sin protección.
Prueba desde un ordenador en otra red:
nc -vz mc.example.com 25565
Los jugadores añaden en el multijugador de Minecraft Java Edition:
mc.example.com
El puerto predeterminado 25565 no necesita escribirse después de la dirección. Si usas otro puerto, los jugadores deben introducir 域名:端口, o debes configurar además un registro SRV.
Los servidores privados deben tener la lista blanca activada por defecto. WHITELIST en el Compose resuelve los nombres de usuario durante la inicialización; sustituye los nombres de jugador de ejemplo antes de publicar.
Añadir o eliminar jugadores en tiempo de ejecución:
docker compose exec mc rcon-cli whitelist add PlayerName
docker compose exec mc rcon-cli whitelist remove PlayerName
docker compose exec mc rcon-cli whitelist list
Conceder permisos de administrador:
docker compose exec mc rcon-cli op PlayerName
docker compose exec mc rcon-cli deop PlayerName
Da OP solo a administradores de confianza. Cuando los jugadores normales necesiten teletransporte, protección de terrenos o comandos básicos, usa un plugin de permisos para conceder el mínimo privilegio; no pongas a todos como OP por comodidad.
Mantén ONLINE_MODE=TRUE para que el servidor verifique las cuentas de los jugadores. Desactivar la verificación en línea elimina la validación oficial de identidad y puede provocar inicios de sesión suplantados y desorden en inventarios y permisos; si una red de proxy tiene necesidades especiales, configúrala según el esquema de reenvío seguro de Velocity/Paper en lugar de desactivarla directamente.
Los plugins de Paper van en el directorio del host:
/opt/minecraft/data/plugins/
Proceso de instalación:
- Descarga solo desde el sitio oficial del plugin, Hangar, Modrinth o el GitHub del proyecto;
- Confirma que el plugin admite explícitamente Paper 26.2 y Java 25;
- Realiza primero una copia de seguridad del mundo;
- Coloca el JAR en
data/plugins/; - Reinicia completamente el servidor y revisa los logs.
docker compose exec backups backup now
docker compose restart mc
docker compose logs --tail=200 mc
docker compose exec mc rcon-cli plugins
No uses /reload ni plugins de conexión en caliente. La documentación de Paper indica explícitamente que la recarga en tiempo de ejecución no está soportada; las actualizaciones, eliminaciones y cambios de dependencias de plugins deben hacerse mediante un reinicio completo.
Cambia solo un plugin a la vez y registra la versión y la fuente de descarga. Si el servidor empieza a fallar o el TPS baja, revierte el último cambio primero en lugar de sustituir todos los plugins a la vez.
itzg/mc-backup ejecuta comandos de guardado por RCON, pausa la escritura del mundo, empaqueta los datos y luego reanuda la escritura. Este artículo hace copia de seguridad cada 6 horas y conserva 7 días.
Ver el estado de las copias de seguridad:
docker compose logs --tail=200 backups
ls -lh /opt/minecraft/backups
Crear una copia de seguridad inmediatamente:
docker compose exec backups backup now
Las copias de seguridad locales no pueden hacer frente a fallos del disco del VPS, bloqueos de cuenta o incidentes del centro de datos. Cifra y sincroniza /opt/minecraft/backups con otro almacenamiento de objetos o un servidor externo, y establece un periodo de retención independiente. Para un simulacro de copia de seguridad externa y restauración más completo, consulta la Guía de simulacros de copia de seguridad y restauración en VPS.
No pruebes restauraciones con sobrescritura directamente en el mundo de producción. Prepara un VPS de prueba o un directorio vacío nuevo:
- Copia
compose.yaml, el Secret y la copia de seguridad elegida; - Mantén el 25565 de la máquina de prueba cerrado a la internet pública, o cambia a otro puerto;
- Confirma que el directorio
dataestá vacío; - Usa el
restore-tar-backupde la imagen de copias de seguridad para restaurar el archivo más reciente; - Inicia
mcy verifica el mundo, los inventarios, los cofres del End, los datos de plugins y la lista blanca.
Antes de restaurar, lista los archivos y confirma que la hora y el tamaño son razonables. Que el mundo cargue no significa que la restauración esté completa; entra también en las distintas dimensiones y revisa las bases de datos de los plugins.
Las actualizaciones del formato del mundo de Minecraft 26.2 y Paper pueden ser irreversibles. Las notas de la versión de Paper 26.2 exigen explícitamente una copia de seguridad antes de actualizar, e indican que tras actualizar a 26.2 no se puede volver a una versión inferior.
Proceso de actualización segura:
cd /opt/minecraft
docker compose exec backups backup now
docker compose exec mc rcon-cli save-all flush
docker compose stop mc
# 修改 VERSION 或镜像标签前,先核对 Paper 与插件兼容性
docker compose pull
docker compose up -d mc
docker compose logs -f mc
Tras verificar el mundo, las tres dimensiones, los datos de los jugadores y los plugins, inicia el servicio de copias de seguridad:
docker compose up -d backups
docker compose ps
No cambies simplemente VERSION a LATEST y reinicies sin supervisión. Prueba primero la nueva versión en una copia de seguridad, revisando especialmente la economía, los permisos, la protección de terrenos y los plugins de mapas entre versiones.
El TPS objetivo de Paper es 20; el MSPT debe mantenerse por debajo de 50 para mantener 20 TPS. Cuando haya lag, recopila datos primero:
docker stats --no-stream
docker compose exec mc rcon-cli tps
docker compose exec mc rcon-cli mspt
docker compose exec mc rcon-cli "spark profiler start --timeout 300"
Deja que el problema ocurra realmente durante el periodo de muestreo de 5 minutos y luego revisa el enlace del informe que devuelve spark. No añadas RAM inmediatamente solo porque el uso de memoria sea alto; la generación de chunks, las entidades, los tolvas, la redstone, un plugin concreto y la E/S de disco pueden ser cuellos de botella.
Prioriza en este orden:
- Baja
VIEW_DISTANCEde 8 a 6; - Baja
SIMULATION_DISTANCEde 6 a 4; - Limita las granjas densas en entidades y los chunks cargados continuamente;
- Actualiza o elimina los plugins de alto consumo según el informe de spark;
- Pre-genera el borde del mundo para servidores con exploración frecuente;
- Confirma que el VPS no tiene problemas de CPU steal, E/S de disco o swapping de memoria.
Aumentar simplemente el heap de Java puede alargar los tiempos de recolección de basura. Tras ajustar la memoria, pasa al menos por un periodo de máxima carga antes de comparar TPS, MSPT e informes de spark.
docker compose ps
docker compose logs --tail=200 mc
sudo ss -lntp | grep ':25565'
Si la máquina local está escuchando pero las conexiones externas agotan el tiempo de espera, revisa el firewall en la nube, las reglas de reenvío del host y la resolución del dominio. Si el dominio tiene por error el proxy normal de Cloudflare activado, cámbialo a DNS only.
El cliente debe usar una versión de Minecraft Java compatible con el servidor. Comprueba:
docker compose exec mc rcon-cli version
grep '^VERSION' compose.yaml
No conectes un cliente Bedrock directamente a un servidor Java. Si necesitas interoperabilidad entre versiones o con Bedrock, evalúa por separado la compatibilidad y la seguridad de identidad de ViaVersion, Geyser y Floodgate.
docker compose logs --tail=300 mc
docker compose config
Las causas comunes incluyen no aceptar el EULA, una versión de Paper inexistente, versión de Java incorrecta, ruta del Secret incorrecta y problemas de permisos del directorio de datos. No borres el directorio data para "reinstalar"; contiene el mundo y los datos de los jugadores.
Confirma que ambos servicios montan el mismo Secret rcon_password, y que RCON_HOST=mc. Tras cambiar el Secret, reconstruye ambos contenedores:
docker compose up -d --force-recreate mc backups
docker compose logs --tail=100 backups
No mapees 25575 a la internet pública para probar; diagnostica dentro de la red interna de Compose.
El porcentaje de CPU de toda la máquina oculta el caso en que un solo núcleo ya está al máximo. Ejecuta spark para analizar el hilo principal y revisa los chunks recién generados, la IA de entidades, los tolvas, la redstone y las tareas de plugins. Comprar más núcleos lentos normalmente no resuelve los cuellos de botella del hilo principal.
- La versión de Minecraft Java, la versión de Paper y Java 25 son compatibles
- 25565/TCP es accesible desde redes externas, RCON 25575 no está expuesto a la internet pública
- El dominio usa DNS only y resuelve al VPS correcto
- La lista blanca está activada y los nombres de jugador de ejemplo se han sustituido
-
ONLINE_MODE=TRUE, solo administradores de confianza tienen OP -
dataes persistente, el mundo sigue existiendo tras reconstruir el contenedor - Las copias de seguridad automáticas se ejecutan correctamente y tienen copias externas
- Se ha completado un simulacro de restauración en un directorio de prueba
- Las fuentes, versiones y compatibilidad de los plugins están registradas
- Se completó la copia de seguridad antes de la actualización y se verificó el riesgo de no poder degradar
- El TPS en horas punta se acerca a 20, el MSPT se mantiene por debajo de 50
Solo después de completar estas comprobaciones este VPS es un servidor Minecraft Java mantenible a largo plazo, y no solo un servidor temporal. Para un servidor de supervivencia pequeño, lo más importante no es llenarlo de plugins o añadir memoria sin límite, sino un rendimiento mononúcleo estable, una distancia de visión razonable, una lista blanca estricta y copias de seguridad del mundo que realmente se puedan restaurar.