Como configurar um servidor Minecraft num Raspberry Pi
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.
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:
O processo de construção usa vários núcleos no seu Raspberry Pi:
E aqui está a tela final que você vai ver:
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 mundosComo 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.
Durante este tempo, a sua carga de CPU estará próxima de 100 % em todos os núcleos:
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:
Interagir com o servidor Spigot
Tipo
help
a esta hora (sem a /), para obter uma lista de comandos possíveis:
Por exemplo, com o comando listavocê pode ver quantos jogadores estão 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.
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:
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 :
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.
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:
Ao lançar o Minecraft, você será presenteado com uma tela de login:
Após o login, você verá uma tela de síntese, com um botão play.
Depois de terminado o download, a tela principal do jogo irá aparecer:
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).
Agora você terá um prompt de segurança do Windows (se você estiver jogando no Windows):
Clique em Permitir o acesso aqui ("Zugriff zulassen" em alemão).
Você verá agora o seguinte ecrã:
Para começar rapidamente, clique em Direct Connection, e digite aqui o endereço IP do seu servidor (veja acima como descobrir o que é):
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:
Clique em "Voltar ao Jogo" para começar a jogar no seu novo servidor 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:
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:
Criação de um serviço de sistema
https://github.com/sindastra/systemd-minecraft
Tratamento de erros
memória insuficiente
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
- Um pouco de história dos Servidores Minecraft (principalmente Bukkit / Spigot / Bedrock) (sindastra.de)
- Bitloco.org (comunidade de servidores Minecraft Java Edition)
- Guia de instalação do Spigot (Spigotmc.org)
[...] 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 [...]