Introduzione

Minecraft è uno dei giochi più popolari di tutti i tempi. È un videogioco sandbox in cui i giocatori esplorano mondi infiniti e costruiscono strutture diverse da semplici case a grattacieli imponenti.

Questo tutorial spiega come creare un server Minecraft su Ubuntu 20.04 LTS Focal Fossa. Useremo Systemd per eseguire il server Minecraft e l'utility mcrcon per la connessione all'istanza in esecuzione. Ti mostreremo anche come creare un cronjob che esegua backup regolari del server.

Se desideri installare Minecraft su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Prerequisiti

Secondo il sito ufficiale di Minecraft, si consigliano 4 GB di RAM come configurazione minima per una configurazione tipica.

Installa i pacchetti richiesti per compilare lo strumento mcrcon:

sudo apt update
sudo apt install git build-essential

Installare Java Runtime Environment

Minecraft richiede Java 8 o versioni successive. Il server Minecraft non ha bisogno di un'interfaccia utente grafica, quindi installeremo la versione headless di Java. Questa versione è più adatta per le applicazioni server poiché ha meno dipendenze e utilizza meno risorse di sistema.

Eseguire il comando seguente per installare il pacchetto OpenJRE 11 senza testa:

sudo apt install openjdk-11-jre-headless

Verifica l'installazione stampando la versione java:

java -version
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)

Creare l'utente Minecraft

Per motivi di sicurezza, Minecraft non deve essere eseguito con l'utente root. Noi creare un nuovo utente di sistema e di gruppo con la home directory /opt/minecraft. L'utente disporrà delle autorizzazioni minime necessarie per eseguire il server Minecraft:

sudo useradd -r -m -U -d /opt/minecraft -s /bin/bash minecraft

Non imposteremo una password per questo utente. In questo modo, l'utente non sarà in grado di accedere tramite SSH e non potrà essere compromesso. Per passare all'utente minecraft, devi accedere al server come root o utente con privilegi sudo.

Installare Minecraft su Ubuntu

Prima di iniziare con il processo di installazione, passa all'utente minecraft:

sudo su - minecraft

Eseguire il comando seguente per creare tre nuove directory all'interno della home directory dell'utente:

mkdir -p ~/{backups,tools,server}
  • La directory backups memorizzerà i backup del tuo server Minecraft. È possibile sincronizzare questa directory con il server di backup remoto.
  • La directory tools conterrà il client mcrcon e lo script di backup.
  • La directory server conterrà l'attuale server Minecraft e i suoi dati.

Download e compilazione di mcrcon

RCON è un protocollo che ti consente di connetterti ai server Minecraft ed eseguire comandi. mcron è un client RCON scritto in C.

Scaricheremo il codice sorgente da GitHub e creeremo il binario mcrcon.

Clonare il repository Tiiffi/mcrcon da GitHub nella directory ~/tools/mcron con git:

git clone https://github.com/Tiiffi/mcrcon.git ~/tools/mcrcon

Al termine, passa alla directory mcron con il comando cd e crea l'utility:

cd ~/tools/mcrcon
gcc -std=gnu11 -pedantic -Wall -Wextra -O2 -s -o mcrcon mcrcon.c

Una volta completato, verificare che mcrcon sia stato compilato correttamente stampando la sua versione:

./mcrcon -v

L'output sarà simile al seguente:

mcrcon 0.7.1 (built: Jun 24 2020 17:16:11) - https://github.com/Tiiffi/mcrcon
Bug reports:
        tiiffi+mcrcon at gmail
        https://github.com/Tiiffi/mcrcon/issues/

Download di Minecraft Server

Esistono diverse mod del server Minecraft come Craftbukkit o Spigot che ti consentono di aggiungere funzionalità (plugin) sul tuo server e personalizzare ulteriormente e modificare le impostazioni del server.

In questa guida, installeremo l'ultimo server Minecraft vanilla ufficiale di Mojang. Le stesse istruzioni si applicano per l'installazione di altre mod del server.

Andate alla pagina di download Minecraft per ottenere il link per il download di file di archivio Java l'ultima del server Minecraft (JAR). Al momento della scrittura, l'ultima versione è 1.16.

Scarica il file jar nella directory ~/server con wget:

wget https://launcher.mojang.com/v1/objects/a0d03225615ba897619220e256a266cb33a44b6b/server.jar -P ~/server

Configurare Minecraft Server

Una volta completato il download, passa alla directory ~/server e avvia il server Minecraft:

cd ~/server
java -Xmx1024M -Xms1024M -jar server.jar nogui

Quando viene avviato per la prima volta, il server esegue alcune operazioni, crea i file server.properties e eula.txt e si ferma.

[17:17:07] [main/ERROR]: Failed to load properties from file: server.properties
[17:17:07] [main/WARN]: Failed to load eula.txt
[17:17:07] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

Per eseguire il server, è necessario accettare l'EULA di Minecraft, come indicato dall'output sopra. Apri il file eula.txt e modifica eula=false in eula=true:

nano ~/server/eula.txt
eula=true
~/server/eula.txt

Chiudi e salva il file.

Quindi, aprire il file server.properties e abilitare il protocollo rcon e impostare la password rcon:

nano ~/server/server.properties

Individua le seguenti righe e aggiorna i loro valori, come mostrato di seguito (la porta dovrebbe essere già impostata su 25575):

rcon.port=25575
rcon.password=tua-password
enable-rcon=true
~/server/server.properties

Non dimenticare di cambiare tua-password in qualcosa di più sicuro. Se non vuoi connetterti al server Minecraft da posizioni remote, assicurati che la porta rcon sia bloccata dal tuo firewall.

Mentre sei qui, puoi anche regolare le proprietà predefinite del server. Per ulteriori informazioni sulle impostazioni del server, visitare la pagina server.properties.

Creare il file di unità Systemd

Invece di avviare manualmente il server Minecraft, creeremo un file di unità Systemd ed eseguiremo Minecraft come servizio.

Torna al tuo utente sudo digitando exit:

exit

Apri il tuo editor di testo e crea un file chiamato minecraft.service nella directory /etc/systemd/system/:

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

Incolla la seguente configurazione:

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

[Service]
User=minecraft
Nice=1
KillMode=none
SuccessExitStatus=0 1
ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xmx1024M -Xms1024M -jar server.jar nogui
ExecStop=/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p tua-password stop

[Install]
WantedBy=multi-user.target
/etc/systemd/system/minecraft.service

Modificare i flag Xmx e Xms in base alle risorse del server. Il flag Xmx definisce il pool di allocazione di memoria massimo per una macchina virtuale Java (JVM), mentre Xms definisce il pool di allocazione di memoria iniziale. Inoltre, assicurati di utilizzare la porta rcon e la password corrette.

Salvare il file e ricaricare la configurazione del gestore di sistema:

sudo systemctl daemon-reload

Ora puoi avviare il server Minecraft digitando:

sudo systemctl start minecraft

La prima volta che avvierai il servizio, verranno generati diversi file e directory di configurazione, incluso il mondo Minecraft.

Controlla lo stato del servizio con il seguente comando:

sudo systemctl status minecraft
● minecraft.service - Minecraft Server
     Loaded: loaded (/etc/systemd/system/minecraft.service; disabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-06-24 17:23:45 CEST; 3s ago
   Main PID: 11959 (java)
      Tasks: 12 (limit: 2286)
     Memory: 56.6M
     CGroup: /system.slice/minecraft.service
             └─11959 /usr/bin/java -Xmx1024M -Xms1024M -jar server.jar nogui

Jun 24 17:23:45 TEST-SERVER-1 systemd[1]: Started Minecraft Server.

Infine, abilita il servizio Minecraft per essere avviato automaticamente all'avvio:

sudo systemctl enable minecraft

Regolare il firewall

Ubuntu viene fornito con uno strumento di configurazione del firewall chiamato UFW. Se il firewall è abilitato sul tuo sistema e desideri accedere al server Minecraft dall'esterno della tua rete locale, devi aprire la porta 25565:

sudo ufw allow 25565/tcp

Configurare il backup

In questa sezione, creeremo uno script della shell di backup e cronjob per eseguire automaticamente il backup del server Minecraft.

Passa all'utente minecraft con il comando su:

sudo su - minecraft

Apri il tuo editor di testo e crea il seguente file:

nano /opt/minecraft/tools/backup.sh

Incolla la seguente configurazione:

#!/bin/bash

function rcon {
  /opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p strong-password "$1"
}

rcon "save-off"
rcon "save-all"
tar -cvpzf /opt/minecraft/backups/server-$(date +%F-%H-%M).tar.gz /opt/minecraft/server
rcon "save-on"

## Delete older backups
find /opt/minecraft/backups/ -type f -mtime +7 -name '*.gz' -delete
/opt/minecraft/tools/backup.sh

Salvare il file e rendere eseguibile lo script:

chmod +x /opt/minecraft/tools/backup.sh

Quindi, crea un cron job che verrà eseguito una volta al giorno automaticamente a un orario fisso.

Apri il file crontab digitando:

crontab -e

Per eseguire lo script di backup ogni giorno alle 23:00, incolla la seguente riga:

0 23 * * * /opt/minecraft/tools/backup.sh

Accedere alla console di Minecraft

Per accedere alla console di Minecraft, utilizzare l'utility mcrcon. È necessario specificare l'host, la porta rcon, la password rcon e utilizzare l'opzione -t che abilita la modalità terminale mcrcon.

Verifica lo stato del server Minecraft:

sudo systemctl status minecraft

Assicurati che il server sia pronto:

Jun 24 17:26:16 TEST-SERVER-1 java[11959]: [17:26:16] [Worker-Main-2/INFO]: Preparing spawn area: 99%
Jun 24 17:26:16 TEST-SERVER-1 java[11959]: [17:26:16] [Server thread/INFO]: Time elapsed: 103220 ms
Jun 24 17:26:16 TEST-SERVER-1 java[11959]: [17:26:16] [Server thread/INFO]: Done (126.416s)! For help, type "help"
Jun 24 17:26:16 TEST-SERVER-1 java[11959]: [17:26:16] [Server thread/INFO]: Starting remote control listener
Jun 24 17:26:16 TEST-SERVER-1 java[11959]: [17:26:16] [Server thread/INFO]: Thread RCON Listener started
Jun 24 17:26:16 TEST-SERVER-1 java[11959]: [17:26:16] [RCON Listener #1/INFO]: RCON running on 0.0.0.0:25575

Quindi connettiti tramite l'utility mcrcon:

/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p tua-password -t
Logged in. Type "Q" to quit!
> 

Quando accedi alla console di Minecraft da una posizione remota, assicurati che la porta rcon non sia bloccata.

Se ti connetti regolarmente alla console di Minecraft, invece di digitare questo comando lungo, crei un alias bash.

Conclusione

In questo tutorial abbiamo visto come creare un server Minecraft su Ubuntu 20.04 LTS Focal Fossa e configurare un backup giornaliero.