Skip to main content

Uma breve introdução - Homelab - Parte 1

· 4 min read
Paulo Hernane
Software Engineer, Co-founder and CTO @ Takeode

Sempre quis ter um ambiente local confiável para testes, deploys, automações e fazer alguns experimentos. A ideia de montar meu próprio homelab surgiu da necessidade de ter mais controle sobre meus ambientes de desenvolvimento e de testar tecnologias de forma prática. Neste artigo, compartilho meu setup atual de homelab com o objetivo de inspirar outros desenvolvedores a montarem o seu próprio ambiente.

Hardware

Depois de um tempão tentando conseguir a VPS Free da Oracle eu acabei comprando um Mini PC no Mercado Livre, não custou nem 1.000 reais. Aqui está os detalhes dele:

  • Máquina principal: Mini PC com as seguintes especificações:
    • Intel Core i7-2600 (4 núcleos, 8 threads)
    • 16GB de RAM DDR3
    • SSD de 480GB
    • Placa-mãe com chipset H61

O PC veio com um cooler bem ruim, só fui perceber quando fui rodar alguns modelos no Ollama, mas eu acabei trocando, vou comentar como foi isso num outro post.

Sistema Operacional e Base

Como eu tenho apenas uma maquina, instalei direto o Ubuntu Server, hoje eu queria ter instalado o Fedora (não sou fã da canonnical), ou um proxmox. A escolha do Ubuntu Server foi por costume mesmo, antes sempre subi VPS com ele. Agora mexendo com o Amazon Linux na AWS eu queria ter o Fedora Server, experimentar com podman, etc.

  • Distribuição: Ubuntu Server 24.04.2 LTS
  • Kernel: Linux 6.8.0-57-generic
  • Gerenciamento de serviços: Docker como plataforma principal, utilizando Docker Compose dentro do Protainer para orquestração dos containers e definição de serviços
  • Gerenciamento de pacotes e atualizações: uso de apt, unattended-upgrades configurado para atualizações automáticas de segurança

Rede e Acesso

  • Interno: Tailscale para criação de uma VPN mesh entre meus dispositivos, permitindo acesso seguro via SSH e HTTP aos serviços internos.
  • Externo: Cloudflare Tunnel configurado com autenticação e DNS gerenciado via API do Cloudflare, garantindo acesso seguro a serviços públicos sem expor diretamente as portas do meu roteador.
  • Domínio: domínio próprio (02092000.xyz) gerenciado via Cloudflare, comprei esse dominio pois foi ~5 dolares e é um dominio fácil de lembrar pra mim, como é um homelab, não tem problema se não for um dominio .com.br ou algo assim. O domínio é usado para acessar os serviços públicos e também para o gerenciamento de DNS do Cloudflare.

Serviços Instalados

  • Portainer: interface de gerenciamento para Docker, facilita o monitoramento e gerenciamento de containers
  • Traefik: reverse proxy com suporte a TLS automático via Let's Encrypt usando DNS challenge com Cloudflare, gerenciamento dinâmico de rotas
  • Watchtower: atualização automática de imagens Docker, com notificações configuradas por webhook (configurei para o Discord)
  • Prometheus: monitoramento de métricas do sistema e containers, com alertas configurados via webhook
  • Grafana: visualização de métricas do Prometheus, com dashboards personalizados para monitoramento de containers e serviços
  • Gitea: repositório Git auto-hospedado, usado para versionamento de scripts e automações (ainda estou configurado)
  • Ollama: execução de modelos LLM localmente, com suporte a vários modelos.
  • Vaultwarden: gerenciador de senhas auto-hospedado.
  • Pihole: bloqueador de anúncios e rastreadores, tenho DNS over HTTPS configurado nele também (ainda to configurando)

Organização dos Containers

  • Containers divididos em stacks (ex: dev, media, infra).
  • Volumes persistentes organizados por serviço em /homelab/<stack>/<serviço>.
  • Rede Docker customizada para isolamento de serviços críticos.
  • Scripts de inicialização e atualização versionados em repositório Git privado.
  • Backups manuais em disco externo, ainda estou avaliando como melhorar isso.

Segurança

  • Acesso SSH e painéis administrativos via Tailscale.
  • Cloudflare Tunnel para evitar exposição de IP residencial
  • TLS obrigatório em todos os serviços públicos com certificados renovados automaticamente
  • Autenticação básica em serviços sensíveis, além de autenticação via token onde aplicável
  • Firewall configurado para bloquear tráfego externo direto nas portas padrão

Considerações Finais

Esse homelab tem sido essencial para meus testes com novas stacks, CI/CD e deploys rápidos. Ele serve como ambiente de experimentação, mas também já roda serviços úteis no meu dia a dia. Além de ser uma ótima forma de aprender mais sobre redes, segurança e automação, é um espaço onde posso testar ideias antes de levá-las à produção.

Ainda pretendo:

  • Centralizar logs com Loki + Grafana + Promtail
  • Melhorar a governança de containers com rotinas de limpeza e alertas