Dei um tapa na arquitetura do Trampar de Casa.
Logo agora que já tava funcional, resolvi inovar e saí do docker compose + GitHub Actions rodando em 1 único nó (xenão) para um cluster k3s com 3 nós, multi-arquitetura, formado por:
- Xenão (Ubuntu) — Intel Xeon 24 cores, 32GB de RAM
- Xubuntu — notebook velho de guerra (i5, 8 cores, 16GB de RAM)
- Oracle AlwaysFree VPS — ARM dificulta um pouco, mas 24GB de RAM e 4 cores não dá pra reclamar
GitOps com ArgoCD + Gitea self-hosted
Resolvi colocar ArgoCD com GitOps rodando no servidor de git self-hosted (Gitea), que roda dentro do cluster k3s.
A cada merge na main:
- Faz build na imagem e publica para o registry
- ArgoCD identifica que o serviço está atrasado
- Atualiza a versão sem downtime
Rede privada com Tailscale + Cloudflare
Os serviços se conectam ao Tailscale (private mesh) e não possuem portas abertas.
Eles utilizam Cloudflare Tunnel e Cloudflare DNS para fazer a conexão com a internet.
App of Apps
Li que é boa prática usar uma App das Apps para monitorar todos os outros serviços, a estrutura final acabou ficando assim:
system/ # cluster services
deployment/argocd/ # GitOps controller
source-control/gitea/ # Git hosting
observability/
prometheus/ # Prometheus + Alertmanager
grafana/ # Dashboards + datasources
secrets/1password/ # ClusterSecretStore + ESO config
projects/
trampar-de-casa/
app/ # web (Next.js)
data/
postgres/ # PostgreSQL
redis/ # Redis
crawlers/ # CronJobs (morning/afternoon/evening)
analytics/plausible/ # Plausible + ClickhouseAgora ficou chique porque tem validação de lint/sintaxe nos PRs, ao mergear pra main o ArgoCD identifica o drift (diferença), e aplica as mudanças.
Segredos com 1Password Connect
Os segredos ficam armazenados em um vault específico do 1Password, que usa 1Password Connect para adicionar as variáveis de ambiente aos serviços.
Agora que o cluster está estável e funcional, vou começar a migrar mais serviços — começando com o vaultwarden (gerenciador de senhas OSS e gratuito) para parar de pagar o 1Password hehe.
Backups no R2
Já tenho alguns backups configurados que salvam snapshots no R2 (S3 da Cloudflare, que tem 0 egress fee).
Custo total: R$0
Mas é isso, tem sido bem maneiro. Grafana é fera, Tailscale também, Cloudflare então, nem se fala. O custo para hospedar tudo isso é: R$0,00 (se você ignorar a energia e internet).
A ideia é usar o projeto para aprender sobre k3s/k8s e sistemas distribuídos. Completamente desnecessário para o tamanho do projeto, mas vale como estudo.
