Tempo fa avevo creato un server Minecraft (Java) per far giocare i miei figli con gli amici senza dover effettuare sottoscrizioni a servizi di hosting (chi ha detto realms?) e senza costringere tutti a disconnettersi se qualcuno hostava il mondo e doveva spegnere il PC (...è prontooooo...), avevo utilizzato un Raspberry Pi4 con 4Gb di Ram.
Ha funzionato egregiamente finché non hanno aggiornato alla 1.17 che richiede la versione 16 di Java, allora, visti i limiti della macchina ho deciso di fare un saltino spostando tutto su un computer inutilizzato, un Quad Core con un po' di ram ed un SSD da battaglia.
Ho deciso di rivolgermi sempre a linux per mettere su il server, sarà una macchina headless ovviamente.
Scriverò tutta la procedura seguita, mettendo insieme tutte le informazioni reperite sulla rete, non ho inventato nulla, la cosa è più semplice di quanto si immagini.
Non allegherò screenshot o altro materiale visivo, in quanto dovendo lavorare solo sa shell non c'è motivo, dovessero esserci dubbi o problemi, basta chiedere.
Spero possa tornare utile a qualcuno.
installare poi da DVD o USB seguendo le normali procedure. (ricordare di abilitare ssh durante l'installazione)
sudo apt install wget screen nmap
adesso pensiamo a Java aggiungendo prima il repo
sudo add-apt-repository ppa:linuxuprising/java
diamo conferma ed attendiamo che finisca la procedura, poi
sudo apt update
e
sudo apt install oracle-java16-installer
alla fine, potremo verificare di aver installato la versione 16 di Java digitando
java --version
poi riavviamo
sudo reboot
A questo punto creiamo un nuovo utente (lo chiameremo minecraft), nelle cui cartelle verranno ospitati i file relativi al server, così non correremo il rischio di incasinare il sistema (cosa che avevo fatto nel Rasp)
sudo useradd -m -r -d /opt/minecraft minecraft
creiamo anche la password per il nuovo utente con
sudo passwd minecraft
ora creiamo la directory dove ospiteremo i file, come scritto prima (il nome della cartella è a piacere, ricordate nel caso di variare il nome anche nei comandi che daremo dopo)
sudo mkdir /opt/minecraft/survival
procuriamoci il file del server da quì copiando semplicemente il link che troviamo in corrispondenza dell' 1.17, in questo caso il comando sarà
sudo wget -O /opt/minecraft/survival/minecraft_server.jar https://launcher.mojang.com/v1/objects/0a269b5f2c5b93b1712d0f5dc43b6182b9ab254e/server.jar
è tutto su una linea mi raccomando, ovviamente nel caso cambiasse versione l'indirizzo cambierà e dovrete semplicemente copiarlo e sostituirlo a quanto scritto
una volta scaricato, dobbiamo accettare i termini della licenza
sudo bash -c "echo eula=true > /opt/minecraft/survival/eula.txt"
ora assegnamo la proprietà del server all'utente prescelto
sudo chown -R minecraft /opt/minecraft/survival/
adesso creiamo uno script che avvii in automatico il tutto come servizio
sudo nano /etc/systemd/system/minecraft@.service
incolliamo quanto scritto di seguito nell'editor
[Unit]
Description=Minecraft Server: %i
After=network.target
[Service]
WorkingDirectory=/opt/minecraft/%i
User=minecraft
Group=minecraft
Restart=always
ExecStart=/usr/bin/screen -DmS mc-%i /usr/bin/java -Xmx2G -jar minecraft_server.jar nogui
ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "say SERVER SHUTTING DOWN IN 5 SECONDS. SAVING ALL MAPS..."5'
ExecStop=/bin/sleep 5
ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "save-all"5'
ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "stop"5'
[Install]
WantedBy=multi-user.target
ATTENZIONE! nella linea 13 viene indicato quanta memoria può utilizzare minecraft, potete cambiare il quantitativo modificando
-Xmx2G (2 Gb assegnati) con -Xmx4G (assegnando 4Gb ad esempio) come per tutto, più ram c'è meglio è, all'aumentare dei giocatori aumenta la richiesta, regolatevi
ricordate di salvare ed uscite
Ora avviamo il server
sudo systemctl start minecraft@survival
possiamo controllare il suo stato
sudo systemctl status minecraft@survival
e quando abbiamo conferma che tutto è andato per il meglio impostarlo in maniera che si avvii automaticamente ad ogni accensione (o anche riavvio) della macchina
sudo systemctl enable minecraft@survival
Nel caso avessimo necessità di intervenire sul server e volessimo interrompere il servizio, ci basterà digitare
sudo systemctl stop minecraft@survival
adesso verifichiamo che il server sia in ascolto sulla sua porta di default
nmap -p 25565 localhost
se è tutto ok (deve esserlo, sennò avete sbagliato qualche passaggio) siamo pronti per andare avanti.
Si ma come ti trovo?
Per essere sempre raggiungibili anche dall'esterno, ci serve un indirizzo fisso da poter comunicare a chi vogliamo, per questo ci rivolgeremo a no-ip ad esempio e registreremo un indirizzo da impostare come quello del server, che chi si vorrà connettere dovrà quindi digitare come indirizzo del server in minecreaft.
Una volta completata la registrazione ed attivato l'indirizzo, dovremo procedere così, sempre da ssh:
cd /usr/local/src/
poi
sudo wget http://www.noip.com/client/linux/noip-duc-linux.tar.gz
una volta completato il download
sudo tar xf noip-duc-linux.tar.gz
non dimentichiamo di installare build-essential e make prima
sudo apt install build-essential make
finita l'installazione, spostiamoci
cd noip-2.1.9-1
ed ora possiamo dare il comando
sudo make install
Prestare molta attenzione a questo passaggio, infatti al termine dell'installazione verrà effettuata la configurazione dell'account che avete registrato prima, vi verranno chiesti email e password per loggarvi al servizio no-ip, una volta immessi vi verranno elencati gli indirizzi registrati e quali volete aggiornare ad ogni avvio del servizio, anche l'intervallo dopo il quale volete effettuare gli aggiornamenti.
Nel caso ci siano variazioni da fare, il file di configurazione nel quale abbiamo appena salvato i dati, si trova in
/usr/local/etc/no-ip2.conf
editando questo possiamo fare tutte le modifiche del caso.
Una volta completato, passiamo alla creazione ed avvio del servizio noip2 per l’indirizzo dinamico in automatico, quindi come prima, creiamo il file
sudo nano /lib/systemd/system/noip2.service
nel file appena creato scrivere quanto segue
[Unit]
Description=noip2 service
[Service]
Type=forking
ExecStart=/usr/local/bin/noip2
Restart=always
[Install]
WantedBy=default.target
quindi digitare
sudo systemctl daemon-reload
per rendere systemd consapevole della nuova unità (systemd memorizza nella cache i file delle unità e questo comando fa sì che systemd riconsideri la sua cache).
Adesso possiamo controllare il servizio come descritto prima col servizio di avvio del server
sudo systemctl status noip2
sudo systemctl start noip2
sudo systemctl status noip2sudo systemctl stop noip2
sudo systemctl status noip2
per far partire il servizio all’avvio della macchina dobbiamo abilitarlo digitando:
sudo systemctl enable noip2
per disabilitarlo (in caso di manutenzione) dovrai invece digitare:
sudo systemctl disable noip2
Mi pare di aver scritto tutto, non ci resta che mettere la macchina in un angolo (vicino ad una presa di rete)avviarla e goderci il nostro server con avvio automatico, direttamente puntando l'indirizzo da noi registrato, garantisco che i vostri figli ne saranno orgogliosi, personalmente cerco di far fare installazione/manutenzione direttamente a loro, almeno capiscono cosa significa gestire un piccolo server e come si fa, che non fa mai male.
Dovesse interessare, a breve, aggiungerò anche una piccola descrizione di come ho effettuato la migrazione del mondo costruito sull'altro server, direttamente in quello nuovo, così non si perde nulla!
Buon divertimento!
b4nd1t0