Cómo instalar un servidor Minecraft en un VPS Linux: Vanilla, Paper y NeoForge
Instalar un servidor Minecraft en un VPS te da control total sobre los archivos, Java, los puertos, los plugins, los mods, las copias de seguridad y los reinicios automáticos. La desventaja es que hay que ser preciso: una versión de Java incorrecta, un puerto ocupado o un servicio systemd mal escrito puede impedir el arranque.
Esta guía parte de un VPS Ubuntu o Debian con acceso SSH y permisos sudo. Muestra tres instalaciones prácticas: un servidor Minecraft vanilla, un servidor Paper con un plugin y un servidor NeoForge con un mod. Los ejemplos usan directorios y puertos separados para que puedas probar sin mezclar archivos:
- Vanilla:
/opt/minecraft/vanilla, serviciominecraft, puerto25565 - Paper:
/opt/minecraft/paper, serviciominecraft-paper, puerto25566 - NeoForge:
/opt/minecraft/neoforge, serviciominecraft-neoforge, puerto25567
En producción, normalmente eliges un solo tipo de servidor y mantienes el puerto 25565. No ejecutes los tres al mismo tiempo en un VPS pequeño: con -Xmx8G por servidor, tres servicios pueden consumir mucha memoria.
El 28 de junio de 2026, el manifest oficial de Mojang devuelve Minecraft 26.2 como última versión estable, y esa versión necesita Java 25. Para mantener los bloques copiables simples, los ejemplos siguientes usan 26.2 y versiones explícitas para LuckPerms, NeoForge y spark. Sustituye esos valores si apuntas a otra versión.
1. Instalar Java y las herramientas comunes
Conéctate a tu VPS por SSH e instala Java, curl y jq. curl descarga archivos, y jq lee las respuestas JSON de las APIs de Mojang y Paper.
sudo apt update
sudo apt install -y openjdk-25-jre-headless curl jq ca-certificates
java -version
Si tu distribución todavía no ofrece OpenJDK 25, actualízala o instala una distribución Java mantenida para tu sistema. Una versión Java demasiado antigua suele fallar antes de que el servidor pueda crear todos sus archivos.
Crea un usuario de sistema dedicado y los tres directorios de ejemplo.
id minecraft >/dev/null 2>&1 || sudo useradd --system --home-dir /opt/minecraft --create-home --shell /usr/sbin/nologin minecraft
sudo install -d -o minecraft -g minecraft /opt/minecraft/vanilla /opt/minecraft/paper /opt/minecraft/neoforge
Así evitas ejecutar Minecraft como root y reduces el impacto de un plugin, mod o script problemático.
2. Instalar un servidor Minecraft vanilla
Vanilla es el servidor oficial de Mojang. Es el mejor punto de partida para comprobar Java, los puertos y el servicio Linux antes de añadir plugins o mods.
cd /opt/minecraft/vanilla
MC_VERSION="26.2"
MANIFEST="https://piston-meta.mojang.com/mc/game/version_manifest_v2.json"
VERSION_URL=$(curl -fsSL "$MANIFEST" | jq -r --arg version "$MC_VERSION" '.versions[] | select(.id == $version) | .url')
sudo curl -fLo server.jar "$(curl -fsSL "$VERSION_URL" | jq -r '.downloads.server.url')"
sudo chown minecraft:minecraft server.jar
Acepta el EULA y crea un server.properties mínimo. Vanilla conserva el puerto estándar 25565.
cd /opt/minecraft/vanilla
echo "eula=true" | sudo tee eula.txt >/dev/null
sudo tee server.properties >/dev/null <<'EOF'
server-port=25565
motd=Servidor Minecraft Vanilla en VPS
online-mode=true
view-distance=8
simulation-distance=6
EOF
sudo chown minecraft:minecraft eula.txt server.properties
Haz un primer arranque manual. Espera la línea Done ( en la consola y detén con Ctrl+C.
cd /opt/minecraft/vanilla
sudo -u minecraft java -Xms2G -Xmx8G -jar server.jar nogui
Ahora crea el servicio systemd.
sudo tee /etc/systemd/system/minecraft.service >/dev/null <<'EOF'
[Unit]
Description=Minecraft Vanilla server
After=network.target
[Service]
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/vanilla
ExecStart=/usr/bin/java -Xms2G -Xmx8G -jar server.jar nogui
Restart=on-failure
RestartSec=10
SuccessExitStatus=0 130 143
KillSignal=SIGINT
TimeoutStopSec=60
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable minecraft
sudo systemctl start minecraft
sudo systemctl status minecraft --no-pager
Sigue los logs vanilla con:
sudo journalctl -u minecraft -f
3. Instalar Paper y añadir un plugin
Paper es una base habitual para servidores con plugins. En este ejemplo descargamos el último build Paper disponible para MC_VERSION y luego instalamos el plugin LuckPerms en el directorio plugins.
Paper exige un User-Agent explícito en su API. Puedes reemplazar [email protected] por tu email de administración.
cd /opt/minecraft/paper
MC_VERSION="26.2"
USER_AGENT="MinecraftVpsTutorial/1.0 (contact: [email protected])"
PAPER_BUILDS="https://fill.papermc.io/v3/projects/paper/versions/$MC_VERSION/builds"
PAPER_URL=$(curl -fsSL -H "User-Agent: $USER_AGENT" "$PAPER_BUILDS" | jq -r '.[0].downloads["server:default"].url')
sudo curl -fL -H "User-Agent: $USER_AGENT" -o server.jar "$PAPER_URL"
sudo chown minecraft:minecraft server.jar
Crea el EULA y la configuración. Este ejemplo usa 25566 para evitar conflictos con vanilla. Si solo usas Paper, puedes volver a server-port=25565.
cd /opt/minecraft/paper
echo "eula=true" | sudo tee eula.txt >/dev/null
sudo tee server.properties >/dev/null <<'EOF'
server-port=25566
motd=Servidor Paper en VPS
online-mode=true
view-distance=8
simulation-distance=6
EOF
sudo chown minecraft:minecraft eula.txt server.properties
Instala ahora un plugin Paper. Para mantener el comando legible, este ejemplo usa una URL directa de LuckPerms alojada por Modrinth.
cd /opt/minecraft/paper
sudo install -d -o minecraft -g minecraft plugins
LUCKPERMS_URL="https://cdn.modrinth.com/data/Vebnzrzj/versions/MBSY8toc/LuckPerms-Bukkit-5.5.53.jar"
sudo curl -fL -o plugins/LuckPerms.jar "$LUCKPERMS_URL"
sudo chown -R minecraft:minecraft plugins
Inicia Paper una primera vez. En los logs deberías ver Paper arrancar y LuckPerms cargarse.
cd /opt/minecraft/paper
sudo -u minecraft java -Xms2G -Xmx8G -jar server.jar nogui
Después de Ctrl+C, crea el servicio minecraft-paper.
sudo tee /etc/systemd/system/minecraft-paper.service >/dev/null <<'EOF'
[Unit]
Description=Minecraft Paper server
After=network.target
[Service]
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/paper
ExecStart=/usr/bin/java -Xms2G -Xmx8G -jar server.jar nogui
Restart=on-failure
RestartSec=10
SuccessExitStatus=0 130 143
KillSignal=SIGINT
TimeoutStopSec=60
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable minecraft-paper
sudo systemctl start minecraft-paper
sudo systemctl status minecraft-paper --no-pager
Sigue Paper en directo con:
sudo journalctl -u minecraft-paper -f
4. Instalar NeoForge y añadir un mod
NeoForge sirve para ejecutar servidores moddeados. Su instalación es distinta a vanilla y Paper: descargas un installer, genera run.sh, y luego el servidor arranca mediante ese script. El ejemplo usa NeoForge 26.2.0.7-beta, que puedes sustituir si un build más reciente corresponde a tu servidor.
cd /opt/minecraft/neoforge
NEOFORGE_VERSION="26.2.0.7-beta"
sudo curl -fLo neoforge-installer.jar "https://maven.neoforged.net/releases/net/neoforged/neoforge/$NEOFORGE_VERSION/neoforge-$NEOFORGE_VERSION-installer.jar"
sudo chown minecraft:minecraft neoforge-installer.jar
sudo -u minecraft java -jar neoforge-installer.jar --installServer
sudo chmod +x run.sh
NeoForge lee las opciones Java desde user_jvm_args.txt. Pon la memoria ahí, no directamente en el servicio systemd.
cd /opt/minecraft/neoforge
sudo tee user_jvm_args.txt >/dev/null <<'EOF'
-Xms2G
-Xmx8G
EOF
sudo chown minecraft:minecraft user_jvm_args.txt
Crea el EULA y server.properties. El ejemplo usa 25567 para evitar conflictos con vanilla o Paper.
cd /opt/minecraft/neoforge
echo "eula=true" | sudo tee eula.txt >/dev/null
sudo tee server.properties >/dev/null <<'EOF'
server-port=25567
motd=Servidor NeoForge en VPS
online-mode=true
view-distance=8
simulation-distance=6
EOF
sudo chown minecraft:minecraft eula.txt server.properties
Instala ahora un mod. El ejemplo descarga spark, un mod de profiling útil para entender el rendimiento del servidor, con una URL de versión explícita para evitar un bloque API demasiado largo. En un servidor moddeado real, los jugadores suelen necesitar el mismo loader y los mods necesarios en el cliente.
cd /opt/minecraft/neoforge
sudo install -d -o minecraft -g minecraft mods
SPARK_URL="https://cdn.modrinth.com/data/l6YH9Als/versions/DdMsOH3O/spark-1.10.173-neoforge.jar"
sudo curl -fL -o mods/spark.jar "$SPARK_URL"
sudo chown -R minecraft:minecraft mods
Arranca NeoForge una primera vez con run.sh. Espera el final del arranque y detén con Ctrl+C.
cd /opt/minecraft/neoforge
sudo -u minecraft bash run.sh nogui
Por último, crea el servicio minecraft-neoforge.
sudo tee /etc/systemd/system/minecraft-neoforge.service >/dev/null <<'EOF'
[Unit]
Description=Minecraft NeoForge server
After=network.target
[Service]
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/neoforge
ExecStart=/usr/bin/bash /opt/minecraft/neoforge/run.sh nogui
Restart=on-failure
RestartSec=10
SuccessExitStatus=0 130 143
KillSignal=SIGINT
TimeoutStopSec=60
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable minecraft-neoforge
sudo systemctl start minecraft-neoforge
sudo systemctl status minecraft-neoforge --no-pager
Lee los logs de NeoForge con:
sudo journalctl -u minecraft-neoforge -f
5. Crear un comando all-in-one para start, stop, restart, logs, save y restore
systemctl funciona bien, pero un solo comando es más práctico en el día a día. El script siguiente crea mcserver, capaz de controlar los tres servicios de ejemplo, crear copias de seguridad y restaurar archivos.
sudo tee /usr/local/bin/mcserver >/dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
SERVER="${1:-}"
ACTION="${2:-}"
usage() {
echo "Usage: mcserver {vanilla|paper|neoforge} {start|stop|restart|status|logs|save|restore}"
echo "Restore: mcserver {vanilla|paper|neoforge} restore /path/to/backup.tar.gz"
}
case "$SERVER" in
vanilla) SERVICE="minecraft"; SERVER_DIR="vanilla" ;;
paper) SERVICE="minecraft-paper"; SERVER_DIR="paper" ;;
neoforge) SERVICE="minecraft-neoforge"; SERVER_DIR="neoforge" ;;
*)
usage
exit 1
;;
esac
case "$ACTION" in
start|stop|restart|status)
sudo systemctl "$ACTION" "$SERVICE"
;;
logs)
sudo journalctl -u "$SERVICE" -f
;;
save)
BACKUP_FILE="$HOME/minecraft-$SERVER-backup-$(date +%F-%H%M%S).tar.gz"
sudo systemctl stop "$SERVICE"
sudo tar -czf "$BACKUP_FILE" -C /opt/minecraft "$SERVER_DIR"
sudo systemctl start "$SERVICE"
echo "Backup created: $BACKUP_FILE"
;;
restore)
BACKUP_FILE="${3:-}"
if [ -z "$BACKUP_FILE" ] || [ ! -f "$BACKUP_FILE" ]; then
usage
exit 1
fi
ROLLBACK_DIR="/opt/minecraft/${SERVER_DIR}.before-restore-$(date +%F-%H%M%S)"
sudo systemctl stop "$SERVICE"
if [ -d "/opt/minecraft/$SERVER_DIR" ]; then
sudo mv "/opt/minecraft/$SERVER_DIR" "$ROLLBACK_DIR"
fi
sudo tar -xzf "$BACKUP_FILE" -C /opt/minecraft
sudo chown -R minecraft:minecraft "/opt/minecraft/$SERVER_DIR"
sudo systemctl start "$SERVICE"
echo "Restored $SERVER from $BACKUP_FILE"
echo "Previous folder kept at: $ROLLBACK_DIR"
;;
*)
usage
exit 1
;;
esac
EOF
sudo chmod +x /usr/local/bin/mcserver
Ahora puedes gestionar los servidores con comandos cortos.
mcserver vanilla start
mcserver vanilla stop
mcserver vanilla restart
mcserver vanilla status
mcserver vanilla logs
mcserver vanilla save
mcserver vanilla restore "$HOME/minecraft-vanilla-backup-2026-07-01-142600.tar.gz"
mcserver paper restart
mcserver paper save
mcserver neoforge logs
mcserver neoforge restore "$HOME/minecraft-neoforge-backup-2026-07-01-142600.tar.gz"
Si solo usas un servidor en producción, conserva únicamente su línea en el script, o sigue usando directamente un comando como mcserver vanilla restart. Para restaurar, sustituye la ruta del archivo por la que muestra el comando save.
6. Abrir los puertos en el firewall
Si pruebas los tres ejemplos, abre los tres puertos. Si solo conservas un servidor, abre únicamente el puerto de ese servidor. Empieza añadiendo las reglas y después comprueba el estado de UFW.
sudo ufw status
sudo ufw allow OpenSSH
sudo ufw allow 25565/tcp comment "Minecraft Vanilla"
sudo ufw allow 25566/tcp comment "Minecraft Paper"
sudo ufw allow 25567/tcp comment "Minecraft NeoForge"
sudo ufw status
Si UFW está inactivo y quieres usarlo como firewall local, actívalo solo después de autorizar el acceso SSH de administración.
sudo ufw enable
Con iptables, una regla mínima equivalente se parece a esta:
sudo iptables -A INPUT -p tcp -m multiport --dports 25565,25566,25567 -j ACCEPT
Comprueba también el firewall externo de tu proveedor VPS si hay un firewall de red en su panel.
7. Hacer una copia de seguridad limpia
El script mcserver también gestiona las copias de seguridad. La acción save detiene el servicio, archiva el directorio correspondiente y vuelve a iniciar el servidor.
mcserver paper save
mcserver neoforge save
El comando muestra la ruta del archivo creado, por ejemplo $HOME/minecraft-paper-backup-2026-07-01-142600.tar.gz. Para restaurar, pasa ese archivo a la acción restore.
mcserver paper restore "$HOME/minecraft-paper-backup-2026-07-01-142600.tar.gz"
mcserver neoforge restore "$HOME/minecraft-neoforge-backup-2026-07-01-142600.tar.gz"
Durante una restauración, el directorio actual se conserva en /opt/minecraft/<servidor>.before-restore-... antes de extraer el archivo. Conserva varias copias y prueba al menos una restauración. Una copia nunca restaurada es solo una hipótesis.
8. ¿Qué tipo de servidor elegir?
Vanilla es la opción más simple si quieres el comportamiento oficial de Minecraft sin plugins ni mods. Paper es mejor si quieres plugins como permisos, protección de terrenos, economía o comandos de administración. NeoForge es la opción adecuada para un servidor moddeado, con mods instalados en el servidor y a menudo también en el cliente.
Si quieres conservar el control total de Linux y aplicar este tutorial en tu propia máquina, puedes empezar con un plan VPS de BoxToPlay, y luego instalar el tipo de servidor Minecraft que prefieras. Si prefieres evitar la administración Linux, los servicios systemd, los puertos y las copias manuales, también puedes lanzar un servidor Minecraft automáticamente con BoxToPlay. El panel gestiona la instalación y las acciones comunes, mientras tú conservas el control del gameplay, los plugins y la configuración.
