Como configurar um servidor Minecraft num Raspberry Pi

Um servidor Minecraft num Raspberry Pi imagem de título

Minecraft é um dos jogos mais populares já criados. Você pode jogá-lo com seus amigos no modo multiplayer. Você sabia que um Raspberry Pi 4 é poderoso o suficiente para rodar um servidor Minecraft? Neste artigo, você aprenderá o básico de quais variações diferentes existem, um pouco da história do Minecraft, e como configurar e operar seu próprio servidor Minecraft no seu Raspberry Pi.

A história dos servidores de Minecraft

Para falar sobre os servidores da Minecraft, temos que discutir brevemente os dois garfos "grandes" da Minecraft.

Mojang, os criadores da Minecraft, criaram originalmente a Minecraft em Java.

Nota lateral divertida: Embora o Java seja suposto ser realmente portátil ("escreva uma vez e corra em qualquer lugar"), o jogo depende de bibliotecas nativas que são x86. Isto significa que a versão Java do Minecraft não irá rodar em outras plataformas, como o Raspberry Pi. O Raspberry Pi é baseado no ARM (ARMv6 / ARMv7 / ARMv8, dependendo de qual Raspberry Pi você olha).

As explicações de Raspi Berry sobre Java

Esta versão do Minecraft Java roda em máquinas PC, Mac e Linux (x86).

Assim, existe software de servidor compatível com a edição Java (veja abaixo para uma discussão completa das diferentes opções disponíveis).

Uma segunda versão do Minecraft, escrita do zero, foi chamada MCPE (Minecraft Pocket Edition). Apareceu originalmente no Android, e foi escrito em C++. Esta edição foi portada para o Windows 10, iOS, PlayStation 4, XBox e Nintendo Switch. É agora conhecida como Edição Minecraft Bedrock. (Bedrock refere-se ao motor escrito em C++). Esta é agora a versão principal, incluindo o jogo em plataforma cruzada.

Infelizmente a edição Bedrock não é compatível com a edição Java. Isto significa que os jogadores Mac e Linux não podem participar no jogo de plataforma cruzada com ele.

Mais importante ainda, requer o seu próprio software de servidor, que iremos abordar, abaixo, brevemente.

A Xbox tem um vídeo que explica Bedrock vs. Java

Instalação do Spigot no Raspberry Pi OS 32 bit

Isto irá guiá-lo através da instalação do Spigot. Eu uso um Raspberry Pi 4 de 8 GB para isso, sob o sistema operacional padrão de 32 bits para começar.

Preparar a instalação

Abra um terminal, e execute os seguintes comandos:

sudo apt-get update
sudo apt-get install git openjdk-8-jre-headless
mkdir /home/pi/spigot-build
cd /home/pi/spigot-build

Isto irá actualizar a lista de pacotes, e instalar o git e o OpenJDK 8 (Java Runtime Environment, JRE). Além disso, ele irá criar um novo diretório para a construção do Spigot, e irá mudar para ele.

Depois, baixe o mais atual BuildTools.jar do site SpigotMC. Você pode usar wget para isto:

wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar

Este é um download rápido com cerca de 4 MB.

Construir torneira

Agora começa a construção:

java -jar BuildTools.jar

Eu comecei a construção em 13:00com o meu Raspberry Pi 4 8GB, e terminou em cerca de 13:15 - por isso demorou cerca de uma hora e 15 minutos. Aqui está uma captura de tela da saída inicial que você vai ver:

Começar a construir a saída do terminal Spigot

O processo de construção usa vários núcleos no seu Raspberry Pi:

saída de topo do processo de construção do Spigot

E aqui está a tela final que você vai ver:

Spigot build concluído, spigot-1.16.4.jar está pronto

Assim que a construção estiver concluída, você verá para onde o arquivo .jar do servidor Spigot terminado foi salvo. No meu caso (como ele construiu o spigot-1.16.4.jar), ele é:

/home/pi/spigot-build/./spigot-1.16.4.jar

Os arquivos restantes não são mais necessários, só precisamos do spigot final-*.jar

Instalar o seu novo servidor Minecraft

Sugiro instalar o servidor do Minecraft na hierarquia de diretórios /opt. Vamos fazer isso no próximo passo, e renomear o arquivo .jar para apenas spigot.jar:

sudo mkdir /opt/spigot
sudo mv /home/pi/spigot-build/spigot-*.jar /opt/spigot/spigot.jar
sudo chown -R pi:pi /opt/spigot

O último comando muda o dono deste diretório para o usuário pi, o que facilitará a você começar com os direitos necessários, sem ter que criar um novo usuário. Para um sistema que está em uso por várias pessoas, e para segurança extra / controle sobre os direitos, você pode querer criar seu próprio usuário de sistema para executar spigot under.

dica de segurança

Agora você pode tentar iniciar o seu novo servidor Minecraft, alocando 2 GB de RAM para ele:

java -Xms2G -Xmx2G -XX:+UseG1GC -jar spigot.jar nogui

A alocação de mais de 2700M para spigot em um Raspberry Pi OS de 32bit resultou no servidor não começar para mim:

[47.195s][aviso][os,thread] Falha em iniciar thread - pthread_create failed (EAGAIN) para atributos: stacksize: 320k, guardardsize: 0k, detached.
[07:57:48] [Rosca do servidor/ERROR]: Encontrou uma excepção inesperada
java.lang.OutOfMemoryError: incapaz de criar fio condutor nativo: possivelmente fora da memória ou dos limites de processo/recurso atingidos
at java.lang.Thread.start0(Native Method) ~[?:?]
at java.lang.Thread.start(Thread.java:803) ~[?:?]
em java.util.Timer.(Timer.java:177) ~[?:?]
at org.spigotmc.Metrics.start(Metrics.java:217) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at org.spigotmc.SpigotConfig.registerCommands(SpigotConfig.java:91) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:149) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:809) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at java.lang.Thread.run(Thread.java:834) [?:?]
[07:57:48] [Rosca do servidor/ERROR]: Este relatório de crash foi guardado: /opt/spigot/./crash-reports/crash-2020-11-23_07.57.48-server.txt
[07:57:48] [Linha do servidor/INFO]: Parar servidor
[07:57:48] [Linha do servidor/INFO]: Salvar jogadores
[07:57:49] [Linha do servidor/INFO]: Salvando mundos

Como descrito abaixo (manipulação de erros / memória insuficiente), mesmo que o servidor comece bem, ele pode travar com erros fora da memóriase lhe dermos demasiada memória - é por isso que estamos a ficar com um cofre. máximo de 2 GB aqui. Em um SO de 64 bits que pode ser mais alto, assim você pode usar mais da RAM do Raspberry Pi 4 / 8 GB.

Limites de memória Spigot em 32 bit Raspberry Pi OS

Spigot irá agora gerar dois novos ficheiros (eula.txt & server.properties) e um diretório (troncos). Você verá um erro na primeira corrida, porque o EULA ainda não foi aceito:

A carregar bibliotecas, por favor, espere...
[15:01:09] [main/ERROR]: Falha ao carregar propriedades do arquivo: server.properties
[15:01:09] [main/WARN]: Falha no carregamento do eula.txt
[15:01:09] [main/INFO]: Você precisa concordar com o EULA para poder executar o servidor. Vá para eula.txt para mais informações.

Se você der uma olhada no eula.txt, você verá o seguinte:

#Ao alterar a configuração abaixo para VERDADEIRO você está indicando a sua concordância com o nosso EULA (https://account.mojang.com/documents/minecraft_eula).
#Sun Nov 22 15:01:09 CET 2020
eula=falso

Por favor, dirija-se ao site da Mojang e leia o EULA (contrato de licença de utilizador final), antes de o aceitar de facto.

Aqui está como você aceita. Corre

nano /opt/spigot/eula.txt

E edite a última linha para ler

eula=true

Salvar com Ctrl + O (e pressione Enter), e Sair com Ctrl + X

Iniciando Spigot a partir da linha de comando

Agora tente executar o comando para iniciar o servidor novamente:

java -Xms2G -Xmx2G -XX:+UseG1GC -jar spigot.jar nogui

O servidor Spigot Minecraft irá agora começar e inicializar.

O Spigot começa com sucesso depois de ter aceite o EULA

Durante este tempo, a sua carga de CPU estará próxima de 100 % em todos os núcleos:

Parada mostrando a carga do sistema durante a inicialização do Spigot

Durante o início, algumas informações úteis serão mostradas (extraído aqui):

[15:09:05] [Linha do servidor/INFO]: Iniciar minecraft server versão 1.16.4
[15:09:06] [Linha do servidor/INFO]: Tipo de jogo predefinido: SURVIVAL
[15:09:09] [Linha do servidor/INFO]: Iniciando o servidor do Minecraft em *:25565

A última linha citada acima mostra que o seu servidor Minecraft se liga a todos os endereços IP no Raspberry Pi, e a porta 25565 sobre esses endereços IP.

O arranque demorou 190.812 s (ou cerca de três minutos) no meu stock Raspbery Pi 4 / 8GB. Uma vez terminado, você verá um prompt:

O prompt que pode utilizar para interagir com o servidor

Interagir com o servidor Spigot

Tipo

help

a esta hora (sem a /), para obter uma lista de comandos possíveis:

uma lista de comandos possíveis para interagir com o servidor é mostrada

Por exemplo, com o comando listavocê pode ver quantos jogadores estão online:

A lista mostra que não há jogadores com um máximo de 20 jogadores online.

Usando o comando versãoVocê pode ver a versão atual do seu servidor, e se um servidor mais novo está disponível. Note que você terá que reconstruir o spigot.jar para atualizar o servidor.

Saída da versão. Este servidor está a executar a versão do CraftBukkit git-Spigot-a19903d-167ff59 (MC: 1.16.4) (Implementando a versão 1.16.4-R0.1-SNAPSHOT da API). Está a executar a versão mais recente

Não consigo acompanhar! O servidor está sobrecarregado? O funcionamento do aviso

É muito provável que você veja resultados tais como

[08:06:11] [Linha do servidor/WARN]: Não consigo acompanhar! O servidor está sobrecarregado? Correndo 8444ms ou 168 ticks atrás

Encontre o endereço IP do seu servidor Raspberry Pi Minecraft

Se você não tem certeza de qual é o endereço IP do seu Raspberry Pi, você pode simplesmente encontrá-lo digitando:

ip -4 addr show

Isto mostrará resultados semelhantes aos seguintes:

O ip -4 addr mostra a saída no Raspberry Pi

Procure a entrada eth0 (2 no meu caso), que é a LAN no Raspberry Pi. O endereço IP é o bit depois do inet, e antes da barra. No meu caso, o 192.168.1.235 :

As partes importantes onde o endereço IP pode ser encontrado

Conecte-se ao seu servidor Minecraft

Você vai (claro que 🙂 precisa de Minecraft, que você pode obter em o site oficial da Minecraft. Você precisa da versão Java do Minecraft, como discutido anteriormente.

Clique em Minecraft Java Edition

Se você ainda não tem Minecraft, e precisa comprá-lo, você precisará criar uma conta Mojang. Você receberá um e-Mail com a sua compra, que inclui os links para download para Windows, macOS, Linux, Arch Linux e Debian (note que estes têm que ser sistemas x86 como discutido anteriormente!)

Para Windows, por exemplo, você terá o MinecraftInstaller.msi:

Assistente de Configuração do Minecraft Launcher

Ao lançar o Minecraft, você será presenteado com uma tela de login:

Minecraft log in screen

Após o login, você verá uma tela de síntese, com um botão play.

Quando você clicar em Play, Minecraft irá primeiro baixar o último lançamento, no meu caso 1.16.4

Depois de terminado o download, a tela principal do jogo irá aparecer:

Tela principal do jogo oferecendo a você uma escolha de Singleplayer, Multiplayer e Minecraft Realms

Clique em Multiplayer aqui. Você receberá um aviso sobre o jogo online de terceiros, clique em prosseguir aqui (opcional: você também pode marcar a caixa não mostrar esta tela novamente).

Cuidado: Jogo Online de Terceiros

Agora você terá um prompt de segurança do Windows (se você estiver jogando no Windows):

Windows Firewall de segurança

Clique em Permitir o acesso aqui ("Zugriff zulassen" em alemão).

Você verá agora o seguinte ecrã:

Jogue Multiplayer, procurando por jogos na sua rede local

Para começar rapidamente, clique em Direct Connection, e digite aqui o endereço IP do seu servidor (veja acima como descobrir o que é):

Ligação Directa, com a capacidade de introduzir o Endereço do Servidor e de aderir a um Servidor

Minecraft lembrará o endereço IP para a próxima sessão, e sugeri-lo-á automaticamente

Clique em Join Server. Ele se conectará, e mostrará brevemente uma tela de carregamento:

ip -4 addr show

Finalmente, você verá o Menu do Jogo:

Menu do jogo

Clique em "Voltar ao Jogo" para começar a jogar no seu novo servidor Minecraft!

Minecraft Multiplayer no seu próprio servidor Raspberry Pi Minecraft!

Você pode pressionar F3 enquanto joga, para mostrar uma sobreposição com informações, onde você pode ver que você está realmente conectado a um servidor Spigot, e verifique a versão Minecraft:

F3 abre uma sobreposição com algumas estatísticas e informações de depuração em Minecraft (enquanto F11 fará com que fique em tela cheia)
Se você deixar seu jogo sem supervisão por algum tempo no modo de sobrevivência, você provavelmente morrerá. "buyzero foi morto por Zumbi", dando-te uma opção de Respawn ou ir para a Tela do Título

Saída no seu servidor Raspberry Pi Minecraft

Uma vez conectado, há alguma saída adicional no seu servidor Minecraft:

[15:53:32] [Autenticador do Utilizador #1/INFO]: UUID do player buyzero é e76a3199-3ed0-4064-8086-d9f565235f71
[15:53:33] [File do servidor/INFO]: buyzero[/192.168.1.202:51388] logado com a entidade id 435 em ([mundo]25.5, 64.0, 137.5)

O comando lista agora mostra-lhe que um utilizador está ligado:

[15:57:05] [Linha do servidor/INFO]: Há 1 de um máximo de 20 jogadores online: buyzero

Além disso, serão mostrados eventos relativos aos seus jogadores:

[16:04:24] [Fio do servidor/INFO]: buyzero foi assassinado por Zumbi

Usando o comando op buyzero você pode fazer o usuário comprarzero um operador de servidor (substitua seu nome de usuário conforme apropriado):

op buyzero
[08:09:18] [Linha do servidor/INFO]: Fez do buyzero um operador de servidor

Parar o servidor do Spigot Minecraft

Se você estiver no prompt do seu servidor Minecraft, digite parar seguido por Enter. Isto irá parar o servidor, salvar o mundo e retorná-lo ao prompt de linha de comando:

parar

[08:36:57] [Linha do servidor/INFO]: Parar o servidor
[08:36:57] [Linha do servidor/INFO]: Parar servidor
[08:36:57] [Linha do servidor/INFO]: Salvar jogadores
[08:36:57] [Rosca do servidor/INFO]: buyzero perdeu a conexão: Servidor fechado
[08:36:57] [Tópico do servidor/INFO]: buyzero deixou o jogo
[08:36:57] [Linha do servidor/INFO]: Salvando mundos
[08:36:57] [Linha do servidor/INFO]: Salvando pedaços para nível 'ServerLevel[world]'/minecraft:overworld
[08:37:02] [Linha do servidor/INFO]: ThreadedAnvilChunkStorage (mundo): Todos os bocados são salvos
[08:37:02] [Linha do servidor/INFO]: Salvando pedaços para o nível 'ServerLevel[world_nether]'/minecraft:the_nether
[08:37:05] [Linha do servidor/INFO]: ThreadedAnvilChunkStorage (DIM-1): Todos os bocados são guardados
[08:37:05] [Linha do servidor/INFO]: Salvando pedaços para o nível 'ServerLevel[world_the_end]'/minecraft:the_end
[08:37:10] [Linha do servidor/INFO]: ThreadedAnvilChunkStorage (DIM1): Todos os bocados são guardados
[08:37:10] [Linha do servidor/INFO]: ThreadedAnvilChunkStorage (mundo): Todos os bocados são salvos
[08:37:10] [Linha do servidor/INFO]: ThreadedAnvilChunkStorage (DIM-1): Todos os bocados são guardados
[08:37:10] [Linha do servidor/INFO]: ThreadedAnvilChunkStorage (DIM1): Todos os bocados são guardados

Seus usuários verão a seguinte tela:

Conexão Perdida / Servidor fechado / Voltar à Lista de Servidores

Criação de um serviço de sistema

https://github.com/sindastra/systemd-minecraft

Tratamento de erros

memória insuficiente

Conexão Perdida, Exceção Interna: java.io.IOException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen (o hospedeiro remoto fechou a conexão existente)

A captura de tela acima mostra a mensagem de erro que os jogadores conectados ao seu servidor verão, enquanto no lado do servidor, você verá a seguinte saída de log:

Não há memória suficiente para que o Java Runtime Environment continue.
A alocação de memória nativa (malloc) não alocou 1438248 bytes para Chunk::new
Um arquivo de relatório de erro com mais informações é salvo como:
/opt/spigot/hs_err_pid1531.log

Os dados de reprodução do compilador são guardados como:
/opt/spigot/replay_pid1531.log

Neste caso, você precisa ajustar suas configurações de memória. Como por recomendação deste artigoO Raspberry Pi deve ser cerca de 1000 MB a 1500 MB mais baixo do que a memória do sistema disponível no seu Raspberry Pi. Considere, que para um SO de 32bit o processo só pode endereçar um pouco menos de 4 GB de RAM no total, então mesmo com um Raspberry Pi de 32 bits, o total que você dá ao seu servidor Minecraft deve ser inferior a 2500 MB - 2000 MB para estar no lado seguro (2GB).

Conclusão

Seguindo este guia, você poderá rodar seus próprios servidores Raspberry Pi Minecraft e jogar junto com seus amigos.

Referências / Leitura adicional

"Minecraft" é uma marca comercial da Mojang Synergies AB
Este sítio Web não está associado ao Minecraft.

1 comentário

  1. [...] pode utilizar um Raspberry Pi como um servidor Web, um servidor de ficheiros, um servidor de impressão, um servidor multimédia, um servidor Minecraft e um servidor IoT [...]

Deixe um comentário