Infraestrutura como Código do Homelab - Terraform, Ansible, Docker Compose
- Remove old content (next steps executados, arquitetura defasada) - Add clean repo structure - Document how Picsur deploy works - Add inventory files table - Add next steps roadmap |
||
|---|---|---|
| .gitea/workflows | ||
| gitea-runner | ||
| inventory | ||
| services | ||
| .gitignore | ||
| README.md | ||
Homelab — Infraestrutura como Código
Guardiã: Gaia (Agente Hermes) Dono: João Paulo Ferreira (jp@iamferreirajp.com) Repo: gaia/homelab
Visão Geral
Todo o homelab versionado como IaC — Infrastructure as Code. O objetivo: ter o ambiente completo documentado e reproduzível, do físico ao serviço.
Arquitetura em 4 camadas
inventory/ # Camada 0 — Single Source of Truth (máquinas, IPs, discos)
terraform/ # Camada 1 — Provisão (VMs, pools, rede)
ansible/ # Camada 2 — Configuração de OS
services/ # Camada 3 — Aplicações (Docker Compose)
Inventário
| Arquivo | Conteúdo |
|---|---|
inventory/physical.yaml |
Máquinas físicas, MACs, IPs |
inventory/proxmox.yaml |
VMs e LXC no Proxmox |
inventory/truenas.yaml |
Discos ZFS, pools, datasets |
inventory/network.yaml |
VLANs, subnets, DNS |
Serviços ativos
services/dockerino/ # 11 serviços via Docker Compose
├── picsur/ # Galeria de imagens
├── adguard/ # DNS + bloqueador
├── nginx-proxy/ # Reverse proxy + Let's Encrypt
├── outline/ # Wiki colaborativa
├── bookstack/ # Wiki/notes
├── homer/ # Dashboard
└── ... (mais)
services/media/ # Jellyfin (media server)
CI/CD — Gitea Actions
Workflows em .gitea/workflows/:
picsur.yml— valida e faz deploy do Picsur via SSH no Dockerino
Como funciona o deploy do Picsur
- PR aberto → Gitea Actions valida (
docker compose config,docker compose pull) - Merge para
main→ deploy automático via SSH:ssh root@10.0.0.50 rsync -avz services/dockerino/picsur/ /root/dockerino/picsur/ docker compose up -d
Próximos passos
- Preencher
inventory/com dados reais do Proxmox e TrueNAS - Configurar Terraform Cloud via API (state versionado)
- Migrar deploy do Picsur para ler do inventory (não hardcoded)
- Expandir para os outros serviços
Estrutura atual do repo
homelab/
├── .gitea/workflows/ # CI/CD
├── ansible/ # (em construção)
├── gitea-runner/ # Runner de CI/CD
├── inventory/ # Single Source of Truth
├── services/ # Docker Compose por serviço
│ ├── dockerino/ # 11 serviços
│ └── media/ # Jellyfin
└── terraform/ # (em construção)