
Amate Minecraft? I vostri figli amano Minecraft? Volete giocare o farli giocare on line in un ambiente controllato? Create un server tutto vostro.
Esistono due tipi di server Minecraft:
Avendo acquistato la versione mobile del gioco ho scelto la versione Bedrock.
Il tutorial (vedi fonte) che ho seguito viene segnalato come funzionante con Ubuntu (e derivate) ma ho installato il tutto con successo su una Debian 11.
Per prima cosa è necessario installare alcuni pacchetti
sudo apt install curl jq wget unzip grep screen openssl -y
Curl e wget sono utili al download dell'archivio contenente il server, jq ci permette di leggere un JSON per recuperare l'URL più recente, unzip ha un nome piuttosto esplicativo mentre screen ci servirà per interagire con il server.
Un server è un servizio particolare, per motivi di sicurezza è bene non farlo operare con pieni poteri, creiamo quindi un utente per il nostro servizio:
sudo useradd mcserver
Assieme all'utente abbiamo creato anche un gruppo nel quale inseriamo il nostro utente preferito che per comodità deve poter operare con i file:
sudo usermod -a -G mcserver $USER
Per rendere effettive le modifiche dobbiamo effettuare il logout, non è necessario un riavvio.
Creiamo una cartella dalla quale eseguire il server, io ho optato per una subdirectory di /opt
sudo mkdir -p /opt/minecraft_bedrock
L'opzione -p fa si che non vengano mostrati errori se la directory esiste già.
Adesso possiamo scaricare il pacchetto utilizzando curl e wget. Il primo comando serve a settare una serie di parametri che ci permetteranno di scaricare da linea di comando come se fossimo da web, con tanto di accettazione della licenza, il secondo per il download vero e proprio (all'interno della cartella da noi specificata):
DOWNLOAD_URL="$(curl -s https://net-secondary.web.minecraft-services.net/api/v1.0/download/links | jq -r '.result.links[] | select(.downloadType=="serverBedrockLinux") | .downloadUrl')"
sudo wget -U "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; BEDROCK-UPDATER)" $DOWNLOAD_URL -O /opt/bedrock-server.zip
Scompattiamo il pacchetto all'interno della nostra cartella:
sudo unzip /opt/minecraft_bedrock/bedrock-server.zip -d /opt/minecraft_bedrock/
Per i motivi di sicurezza di cui sopra cambiamo il proprietario dei file all'interno della cartella (utente mcserver, gruppo mcserver)
sudo chown -R mcserver:mcserver /opt/minecraft_bedrock
L'opzione -R ha il significato di recursive quindi si applica i permessi a tutti i file di tutte le sotto cartelle
Adesso possiamo configurare il nostro server, si opera direttamente sul file di configurazione (un semplice file di testo):
sudo nano /opt/minecraft_bedrock/server.properties
Per la configurazione completa vi rimando alla documentazione ufficiale, vediamo però le opzioni più comuni:
E' arrivato il momento possiamo provare il nostro server, avviiamolo:
cd /opt/minecraft_bedrock
sudo LD_LIBRARY_PATH=. ./bedrock_server
Prima di avviare il server abbiamo settato la cartella dalla quale leggere le librerie di sistema.
Se tutto è andato per il verso giusto il nostro terminale mostra una serie di messaggi e rimane occupato. Nei messaggi possiamo leggere buona parte delle impostazioni che abbiamo settato e la porta di connessione (di default 19132) Anche se non mostra un prompt il terminale accetta i comandi minecraft, per fermare il server possiamo digitare stop.
Apriamo l'applicazione Minecraft sul nostro dispositivo preferito e selezioniamo Gioca dopo di che la scheda Server.


Scorrendo alla fine della videata troviamo Aggiungi Server, qui possiamo inserire

Con Salva (e accettando alcune condizioni) nella lista dei server appare una nuova voce selezioniamola e clicchiamo Entra nel server (se tutto funziona vediamo quanti utenti sono collegati al server e abbiamo un valore di ping).

Attendiamo qualche secondo così che il server ed il client creino il mondo.

Si gioca.

Nota: perché l tutto funzioni il server ed il client devono avere lo stesso numero di versione.
Se abbiamo un server dedicato o una macchina che rimane online è conveniente far partire il server all'avvio della macchina, vediamo come
Nella cartella /opt creiamo uno script:
sudo nano /opt/start_server.sh
#!/usr/bin/env bash
SERVER_PATH=/opt/minecraft_bedrock
/usr/bin/screen -dmS mcbedrock /bin/bash -c "LD_LIBRARY_PATH=$SERVER_PATH ${SERVER_PATH}bedrock_server"
/usr/bin/screen -rD mcbedrock -X multiuser on
/usr/bin/screen -rD mcbedrock -X acladd root
Se facciamo partire il server con uno script non possiamo interagirvi quindi dobbiamo ricorrere a screen che crea un terminale "virtuale" richiamabile alla bisogna.
Diamo allo script i permessi di esecuzione:
sudo chmod +x /opt/start_server.sh
Necessitiamo anche di uno script che stoppi i servizio (nel caso volessimo fermarlo/riavviarlo)
sudo nano /opt/stop_server.sh
Lo scipt è il seguente:
#!/usr/bin/env bash
/usr/bin/screen -Rd mcbedrock -X stuff "stop \r"
Anche qui diamo i permessi di esecuzione:
sudo chmod +x /opt/stop_server.sh
Facciamo si che l'utente mcserver possa usare gli script
sudo chown mcserver: /opt/*.sh
I servizi saranno oggetto di un tutorial specifico quindi per adesso commenterò i comandi al minimo
sudo nano /etc/systemd/system/mcbedrock.service
Nel file scriviamo:
[Unit]
Description=Minecraft Bedrock Server
Wants=network-online.target
After=network-online.target
[Service]
Type=forking
User=mcserver
Group=mcserver
ExecStart=/usr/bin/bash /opt/start_server.sh
ExecStop=/usr/bin/bash /opt/stop_server.sh
WorkingDirectory=/opt/minecraft_bedrock
Restart=always
TimeoutStartSec=600
[Install]
WantedBy=multi-user.target
Attiviamo il servizio:
sudo systemctl enable mcbedrock
Adesso possiamo farlo partire con:
sudo systemctl start mcbedrock
e stopparlo con
sudo systemctl stop mcbedrock
Possiamo disabilitare il servizio con
sudo systemctl enable mcbedrock
Avendo fatto partire il servizio con una shell screen possiamo richiamarla quando vogliamo:
sudo screen -r mcserver/mcbedrock
Come detto in precedenza il client ed il server devono avere lo stesso numero di versione quindi periodicamente (visto che spesso l'app mobile si aggiorna in automatico) dovremo aggiornare il server.
L'aggiornamento riscrive tutti file quindi ci conviene copiare il file server.properties su una cartella diversa
sudo cp /opt/minecraft_bedrock/server.properties /home/$USER
Per evitare esplosioni del tutto dobbiamo prima fare qualsiaisi cosa stoppare il servizio:
sudo systemctl stop mcbedrock
Ripetiamo l'operazione di download:
DOWNLOAD_URL="$(curl -s https://net-secondary.web.minecraft-services.net/api/v1.0/download/links | jq -r '.result.links[] | select(.downloadType=="serverBedrockLinux") | .downloadUrl')"
sudo wget -U "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; BEDROCK-UPDATER)" $DOWNLOAD_URL -O /opt/bedrock-server.zip
Scompattiamo l'archivio
sudo unzip -o /opt/minecraft_bedrock/bedrock-server.zip -d /opt/minecraft_bedrock/
sudo cp /home/$USER/server.properties /opt/minecraft_bedrock/server.properties
sudo chown -R mcserver:mcserver /opt/minecraft_bedrock/
sudo systemctl start mcbedrock
Fonte: https://pimylifeup.com/ubuntu-minecraft-bedrock-server/