Skip to main content

Come creare un server Minecraft su un VPS o server dedicato

Questa guida spiega come installare e configurare un server Minecraft Java Edition sul tuo VPS o server dedicato Linux.

Ordina un Server

Per ospitare il tuo server Minecraft, HostMyServers offre diverse opzioni ottimizzate per il gaming:

Prerequisiti

  • Accesso SSH come root o utente con privilegi sudo
  • Sistema Debian/Ubuntu aggiornato
  • Minimo 2 GB di RAM (4 GB consigliati per 10+ giocatori)
  • Porta 25565 accessibile (TCP)
  • Connessione internet stabile

Configurazione richiesta

Numero di giocatoriRAM minimaRAM consigliata
1-51 GB2 GB
5-102 GB4 GB
10-204 GB6 GB
20+6 GB8 GB+

Aggiornamento del sistema

sudo apt update && sudo apt upgrade -y

Installazione di Java

Minecraft 1.17+ richiede Java 17 come minimo. Per le versioni recenti (1.20+), Java 21 è consigliato.

Installare Java 21 (consigliato)

sudo apt install -y openjdk-21-jdk

Verificare l'installazione

java --version

Dovresti vedere un output simile a:

openjdk 21.0.x 2024-xx-xx
OpenJDK Runtime Environment (build 21.0.x+xx-xx)
OpenJDK 64-Bit Server VM (build 21.0.x+xx-xx, mixed mode, sharing)

Creazione di un utente dedicato

Per motivi di sicurezza, non eseguire mai il server come root. Crea un utente dedicato:

sudo adduser --system --home /opt/minecraft --shell /bin/bash minecraft

Installazione degli strumenti necessari

sudo apt install -y screen wget curl unzip
  • screen: mantiene il server attivo dopo la disconnessione SSH
  • wget/curl: per scaricare file
  • unzip: per estrarre archivi

Download del server Minecraft

Connettiti come utente minecraft

sudo -u minecraft bash
cd /opt/minecraft
mkdir server
cd server

Scarica il server ufficiale

Ottieni il link dell'ultima versione da minecraft.net/download/server poi:

wget -O server.jar https://piston-data.mojang.com/v1/objects/XXXXXXX/server.jar
Nota

Sostituisci l'URL con il link ufficiale della versione desiderata.

Accettazione dell'EULA

Devi accettare il contratto di licenza di Minecraft:

echo "eula=true" > eula.txt

Primo avvio

Avvia il server per la prima volta per generare i file di configurazione:

java -Xms1G -Xmx2G -jar server.jar nogui

Parametri di memoria:

  • -Xms1G: memoria iniziale (1 GB)
  • -Xmx2G: memoria massima (2 GB)
  • nogui: disabilita l'interfaccia grafica

Ferma il server con stop o Ctrl+C dopo il primo avvio.

Configurazione del server

Modifica il file server.properties secondo le tue esigenze:

nano server.properties

Impostazioni importanti

# Porta del server (predefinita: 25565)
server-port=25565

# Numero massimo di giocatori
max-players=20

# Modalità di gioco (survival, creative, adventure, spectator)
gamemode=survival

# Difficoltà (peaceful, easy, normal, hard)
difficulty=normal

# Messaggio visualizzato nella lista dei server
motd=Il mio Server Minecraft

# Distanza di rendering (ridurre se lag)
view-distance=10

# Attivare la whitelist
white-list=false

# Modalità online (verifica account Mojang)
online-mode=true

# Attivare il PvP
pvp=true

# Protezione spawn (raggio in blocchi)
spawn-protection=16

Configurazione del firewall

Apri la porta Minecraft nel firewall:

Con UFW

sudo ufw allow 25565/tcp
sudo ufw reload

Con iptables

sudo iptables -A INPUT -p tcp --dport 25565 -j ACCEPT
sudo iptables-save | sudo tee /etc/iptables/rules.v4

Avvio con screen

Per mantenere il server attivo dopo la disconnessione SSH:

Avviare il server in screen

screen -S minecraft
cd /opt/minecraft/server
java -Xms1G -Xmx2G -jar server.jar nogui

Staccare la sessione

Premi Ctrl+A poi D per staccare la sessione.

Tornare alla sessione

screen -r minecraft

Elencare le sessioni

screen -ls

Configurazione come servizio systemd

Per l'avvio automatico al boot del server:

Creare il file di servizio

sudo nano /etc/systemd/system/minecraft.service

Contenuto del file:

[Unit]
Description=Minecraft Java Server
After=network.target

[Service]
User=minecraft
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xms1G -Xmx2G -jar /opt/minecraft/server/server.jar nogui
ExecStop=/bin/kill -SIGINT $MAINPID
Restart=on-failure
RestartSec=20
StandardInput=null

[Install]
WantedBy=multi-user.target

Attivare e avviare il servizio

sudo systemctl daemon-reload
sudo systemctl enable minecraft.service
sudo systemctl start minecraft.service

Comandi di gestione

# Verificare lo stato
sudo systemctl status minecraft.service

# Fermare il server
sudo systemctl stop minecraft.service

# Riavviare il server
sudo systemctl restart minecraft.service

# Vedere i log
sudo journalctl -u minecraft.service -f

Gestione del server

Comandi console utili

Una volta connesso alla console del server (tramite screen):

ComandoDescrizione
stopFerma il server correttamente
save-allSalva il mondo
listMostra i giocatori connessi
op <giocatore>Dà i diritti admin a un giocatore
deop <giocatore>Rimuove i diritti admin
kick <giocatore>Espelle un giocatore
ban <giocatore>Banna un giocatore
whitelist add <giocatore>Aggiunge un giocatore alla whitelist
whitelist remove <giocatore>Rimuove un giocatore dalla whitelist
gamemode <modalità> <giocatore>Cambia la modalità di gioco
difficulty <livello>Cambia la difficoltà

Ottimizzazione delle prestazioni

Script di avvio ottimizzato

Crea uno script di avvio con flag ottimizzati:

nano /opt/minecraft/server/start.sh
#!/bin/bash
cd /opt/minecraft/server

java -Xms2G -Xmx4G \
-XX:+UseG1GC \
-XX:+ParallelRefProcEnabled \
-XX:MaxGCPauseMillis=200 \
-XX:+UnlockExperimentalVMOptions \
-XX:+DisableExplicitGC \
-XX:+AlwaysPreTouch \
-XX:G1NewSizePercent=30 \
-XX:G1MaxNewSizePercent=40 \
-XX:G1HeapRegionSize=8M \
-XX:G1ReservePercent=20 \
-XX:G1HeapWastePercent=5 \
-XX:G1MixedGCCountTarget=4 \
-XX:InitiatingHeapOccupancyPercent=15 \
-XX:G1MixedGCLiveThresholdPercent=90 \
-XX:G1RSetUpdatingPauseTimePercent=5 \
-XX:SurvivorRatio=32 \
-XX:+PerfDisableSharedMem \
-XX:MaxTenuringThreshold=1 \
-jar server.jar nogui

Rendi lo script eseguibile:

chmod +x /opt/minecraft/server/start.sh

Ridurre il lag

In server.properties:

# Ridurre la distanza di rendering
view-distance=8

# Ridurre la distanza di simulazione
simulation-distance=6

# Limitare le entità
max-tick-time=60000

Backup automatico

Script di backup

sudo nano /opt/minecraft/backup.sh
#!/bin/bash
BACKUP_DIR="/opt/minecraft/backups"
SERVER_DIR="/opt/minecraft/server"
DATE=$(date +%Y-%m-%d_%H-%M-%S)

mkdir -p $BACKUP_DIR

# Backup del mondo
tar -czf $BACKUP_DIR/world_$DATE.tar.gz -C $SERVER_DIR world world_nether world_the_end

# Eliminare i backup più vecchi di 7 giorni
find $BACKUP_DIR -name "world_*.tar.gz" -mtime +7 -delete

echo "Backup completato: world_$DATE.tar.gz"
chmod +x /opt/minecraft/backup.sh

Pianificare il backup

sudo crontab -e

Aggiungi:

# Backup giornaliero alle 4 del mattino
0 4 * * * /opt/minecraft/backup.sh

Connessione al server

I giocatori possono connettersi utilizzando:

  • Indirizzo: IP_DEL_TUO_SERVER o tuo_dominio.com
  • Porta: 25565 (predefinita)

In Minecraft: Multiplayer → Aggiungi server → Inserisci l'indirizzo

In caso di problemi

Il server non si avvia

  • Controlla i log: tail -f /opt/minecraft/server/logs/latest.log
  • Verifica che Java sia installato: java --version
  • Verifica che l'EULA sia accettato: cat eula.txt

I giocatori non riescono a connettersi

  • Verifica che la porta 25565 sia aperta: sudo ufw status
  • Verifica che il server sia in esecuzione: sudo systemctl status minecraft.service
  • Testa la porta: nc -zv IP_SERVER 25565

Problemi di prestazioni

  • Aumenta la RAM allocata (-Xmx)
  • Riduci view-distance in server.properties
  • Usa Paper o Spigot invece del server vanilla per migliori prestazioni