homelabs21.duckdns.org
host S21+ · SM-G996B env Termux · Android 15 ONLINE
SITE EM DESENVOLVIMENTO
> Construindo interface... _
▲ diário técnico do projeto

Um celular com a tela quebrada virou servidor doméstico.

Este é o registro de como um Samsung Galaxy S21+ fora de uso passou a hospedar um site, uma API e um domínio próprio — e de todos os problemas reais que apareceram no caminho.

servidorGalaxy S21+ 5G · SM-G996B
ambienteTermux sobre Android 15
domíniohomelabs21.duckdns.org
oficinaFedora Linux
o caminho de uma requisição clique em cada ponto

como começou

De aparelho quebrado a laboratório de estudo

A tela do S21+ parou de funcionar, mas o resto do aparelho continuava perfeito: processador, memória, rede, bateria. Em vez de deixar guardado, a ideia foi transformá-lo em um pequeno servidor doméstico.

A primeira decisão importante veio logo no início: em vez de tentar dar root ou trocar o sistema operacional, o Android ficou como está — sem root, com SELinux em modo Enforcing. Todo o trabalho de servidor acontece dentro do Termux, um ambiente Linux de usuário que roda sobre o próprio kernel do Android.

Isso manteve o aparelho estável e, ao mesmo tempo, deu acesso a um ambiente Linux completo: SSH, Python, NGINX, supervisor de serviços, tudo isso sem tocar no sistema base.

modeloGalaxy S21+ 5G (SM-G996B)
arquiteturaARM64 / aarch64
android15
kernelLinux 5.4.242
ram~7,4 GB
armazenamento~106 GB em /data
rootdesativado (proposital)

a jornada, passo a passo

Da primeira porta aberta ao HTTPS válido

Cada etapa resolveu um problema criado pela etapa anterior. A ordem importa — é assim que um servidor de verdade evolui.


nem tudo funcionou de primeira

Três problemas reais (e o que eles ensinaram)

Um homelab de verdade não é só configuração bem-sucedida — é também diagnóstico. Estes foram os bugs mais instrutivos do projeto.


como tudo se encaixa hoje

Arquitetura atual do servidor

Internetvisitante → homelabs21.duckdns.org
↓ DNS / DDNS ↓
Gateway / RoteadorNAT · 443 público → 8443 privado
↓ LAN Privada (IP fixo DHCP) ↓
S21+ · Host Local
runit
sshd (LAN)
nginx :8443
crond → DuckDNS
↓
site estático
/api/status → reverse proxy
↓
Python :8090 (127.0.0.1 apenas)

o painel de status

Uma API que prefere dizer "não sei" a inventar um número

O Android 15 restringe o acesso a partes do /proc. Quando a API não consegue medir algo com confiança — como o uso de CPU — ela retorna null em vez de simular um valor.

GET /api/status
{ "status": "online", "cpu": null, // não medível com segurança no Android "ram": 63.2, "storage": 20.2, "uptime": "13m", "services": { "nginx": true, "python": true } }

estado atual

O que já roda e o que ainda está em aberto

concluído

  • Termux + estrutura ~/lab
  • servidor Python + NGINX
  • SSH por chave Ed25519 (sem senha)
  • IP fixo via reserva DHCP
  • runit supervisionando os serviços
  • NAT/port forwarding 443 → 8443
  • domínio homelabs21.duckdns.org
  • DDNS automático a cada 5 min
  • HTTPS válido via Let's Encrypt
  • API de monitoramento + reverse proxy
  • Fedora com VS Code, Git, Node.js

em aberto

  • persistência completa após reboot
  • corrigir falso positivo do monitor NGINX
  • VPN para administração remota
  • HSTS e vhost TLS padrão
  • repositório Git + primeiro commit
  • API em Node.js + SQLite
  • sistema de comentários com moderação
  • site como diário de estudos completo
  • jogo "Entregue o Pacote"
  • bloqueador de anúncios para a LAN

o próximo capítulo

Duas máquinas, dois papéis

A decisão mais recente do projeto: separar onde se aprende de onde se serve.

oficina

Fedora

Onde o código nasce, é testado e versionado antes de ir para produção.

  • VS Code + Git 2.55
  • Node.js 24 + npm
  • Insomnia e SQLite (planejados)
produção

S21+

Onde o site, a API e o HTTPS realmente ficam no ar para o mundo.

  • NGINX + site + /api/status
  • DuckDNS + Let's Encrypt
  • runit supervisionando tudo
Fedora → git commit → deploy → S21+