Iglesias Server
Galaxy Grand Duos · GT-I9082 · lançado em 2013

Um servidor de Minecraft rodando num celular de 2013.

Um Samsung que ia para a gaveta virou servidor 24 horas. Android rooteado, Termux no lugar do painel de controle e o Cuberite, um servidor escrito em C++, ocupando menos memória que um app de mensagens.

2×1,2 GHzCortex-A9, dois núcleos
1 GBde RAM no aparelho inteiro
~25 MBde RAM usados pelo servidor
~8%de CPU com o servidor no ar
termux · boot.log

          
Toque no botão home para trocar a tela. Logs reais do aparelho, em modo avião só com Wi-Fi.
Como jogar

Entre no servidor em quatro passos

O servidor fala o protocolo do Minecraft Java Edition entre as versões 1.8 e 1.14.4. A 1.12.2 é a mais completa: é a única que carrega o livro de receitas inteiro.

  1. Escolha a versão no launcher

    No Minecraft Launcher, abra Instalações, crie uma nova e selecione release 1.12.2.

  2. Abra o Multijogador

    Inicie o jogo com essa instalação e vá em Multijogador → Adicionar servidor.

  3. Cole o endereço

    Copie o endereço ao lado e cole no campo Endereço do servidor. A porta é a padrão, 25565.

  4. Entre e explore

    Você nasce no spawn de um mundo com biomas variados, Nether e End liberados. Vale procurar as masmorras com baú.

Ao vivo

O que está acontecendo no servidor

Um plugin em Lua roda dentro do Cuberite e publica o estado do jogo a cada cinco segundos: mundos, jogadores e os últimos acontecimentos. Esta seção se atualiza sozinha.

ServidorConsultandoaguardando dados
Jogadores–conectados agora
No ar há–desde o último boot
RAM do Cuberite–memória física do processo
Chunks–carregados em memória
Versões–Minecraft Java

Jogadores online

0

Últimos acontecimentos

entradas, saídas e mortes
O hardware

Ficha técnica do servidor

Um intermediário de 2013, com bateria removível e Wi-Fi n. Nenhuma peça foi trocada: todo o ganho veio de software e ajuste fino.

ModeloGalaxy Grand DuosSamsung GT-I9082, dual chip, tela de 5"
SoCBroadcom BCM28155mesmo fabricante dos chips do Raspberry Pi
CPU2× Cortex-A9travada em 1,2 GHz; o kernel aceita 1,6 GHz, mas sem sensor térmico preferi o clock de fábrica
GPUVideoCore IVsem uso: o servidor não desenha nada
RAM1 GB824 MB visíveis para o sistema, sem swap no kernel
Armazenamento8 GB eMMCmais microSD; escalonador de I/O em deadline
RedeWi-Fi 802.11neconomia de energia desligada, rádio celular e Bluetooth em modo avião
Energia2100 mAhbateria removível, ligado na tomada; 28,3 °C no último boot
De fábrica Android 4.1.2

Jelly Bean com TouchWiz, aplicativos da Samsung e chip da operadora.

Hoje Android 7.1

LineageOS com root, sem Google Apps e com 47 apps de sistema desativados.

Bastidores

Do boot ao bloco

Ninguém precisa encostar na tela. Quando o Android liga, uma cadeia de scripts acorda o Termux, ajusta o sistema e deixa o servidor de pé.

  1. Android termina de ligar

    O sistema dispara o aviso BOOT_COMPLETED para os apps.

  2. Termux:Boot acorda o Termux

    Roda o script ~/.termux/boot/start em segundo plano, sem terminal.

  3. Script de boot

    Segura o wake-lock, liga o runit e espera o Wi-Fi ganhar rota antes de seguir.

  4. tune.sh como root

    Fixa a CPU, ajusta disco e memória, coloca o rádio em modo avião, desliga o Doze e protege os processos do servidor.

  5. runit mantém tudo vivo

    sshd na porta 8022 para administração e Cuberite na 25565. Se um cair, o runit sobe de novo.

O que foi ajustado

  • CPU travada no clock máximo de fábricaperformance
  • Escalonador de disco mais leve para eMMCdeadline
  • Wi-Fi sem economia de energiapower_save off
  • Celular e Bluetooth desligados, Wi-Fi ativoairplane_mode
  • Modo de economia do Android desligadodeviceidle off
  • Servidor protegido do low memory killeroom -800
  • Apps de sistema que não servem a um servidor47 off
  • Chunks salvos com compressão levezlib 1
Memória medida no htop: 170 MB de 805 MB
Cuberite ~25 MB Android e serviços livre
O mundo

Biomas pequenos, viagem curta

O terreno é gerado pelo próprio Cuberite, com o gerador TwoLevel configurado com metade do tamanho padrão. Em poucos minutos de caminhada você atravessa deserto, mesa, floresta e neve.

Regiões de 512 blocos

Cada região define o clima: temperado, gelado, quente, coníferas, mesa ou selva. TwoLevelLargeCellSize=512

Biomas de 64 blocos

Dentro de cada região, os biomas trocam rápido, com bordas suavizadas. TwoLevelSmallCellSize=64

Masmorras e vilas

Salas com spawner e baú, minas abandonadas, templos na selva e no deserto, cabanas de bruxa.

Física econômica

Água e lava já assentadas na geração e TNT sem estilhaços voando, para poupar os dois núcleos.

Nether

Fortalezas, glowstone e lava. Portais funcionam a partir do mundo principal.

The End

Pilares de obsidiana e a arena do dragão gerados pelo servidor.

Tecnologias e fontes

O que roda dentro do celular

Tudo é software livre. Os links levam para o projeto original de cada peça.

LineageOS

sistema

ROM comunitária com Android 7.1 e root, no lugar do Android 4 de fábrica.

lineageos.org

Termux 0.119

ambiente

Terminal com gerenciador de pacotes Linux, instalado pelo F-Droid.

f-droid.org/packages/com.termux

Termux:Boot 0.8.1

inicialização

Roda os scripts de ~/.termux/boot quando o Android termina de ligar.

f-droid.org/packages/com.termux.boot

termux-services

supervisão

runit para manter sshd e Cuberite rodando e reiniciar se algo cair.

wiki.termux.com/wiki/Termux-services

Cuberite

servidor do jogo

Servidor compatível com Minecraft escrito em C++, com plugins em Lua e build oficial para Android.

cuberite.org

OpenSSH

administração

Acesso remoto pela porta 8022, com chave. A tela do celular fica apagada.

openssh.com

iw

rede

Desliga a economia de energia do Wi-Fi direto no driver, a cada boot.

wireless.docs.kernel.org

htop e btop

monitoramento

Acompanhamento de CPU, memória e processos pelo SSH.

htop.dev

StatusJson

plugin Lua

Plugin feito para este projeto. Usa a API do Cuberite para gravar mundos, jogadores e eventos num arquivo JSON.

api.cuberite.org

BusyBox httpd

site

Servidor web de poucos kilobytes que entrega esta página e o status direto do celular.

busybox.net
Doe hardware antigo

Aquele aparelho na gaveta pode virar o próximo servidor

Este projeto começou com um celular que ninguém usava mais. Se você tem eletrônico parado em casa, ele pode ganhar uma segunda vida como servidor, laboratório ou tema de live, em vez de virar lixo eletrônico.

Quem fez

Igor Iglesias

Engenheiro de software e tech lead no Rio de Janeiro, sócio da Visie Padrões Web e da Agência Camp. Antes do código, passou cinco anos em infraestrutura de provedor de internet, e esse gosto por hardware no limite nunca foi embora. No canal, mostra ao vivo projetos como este, de infraestrutura, programação e hardware hacking.

Fale comigo no WhatsApp