homelab/README.md
gaia 112e62fed6 docs: rewrite README with clean structure and 4-layer architecture overview
- 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
2026-04-09 12:44:52 -03:00

79 lines
2.5 KiB
Markdown

# Homelab — Infraestrutura como Código
> Guardiã: **Gaia** (Agente Hermes)
> Dono: João Paulo Ferreira (jp@iamferreirajp.com)
> Repo: [gaia/homelab](https://gitea.hackerfortress.cc/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
1. PR aberto → Gitea Actions valida (`docker compose config`, `docker compose pull`)
2. Merge para `main` → deploy automático via SSH:
```bash
ssh root@10.0.0.50
rsync -avz services/dockerino/picsur/ /root/dockerino/picsur/
docker compose up -d
```
## Próximos passos
1. Preencher `inventory/` com dados reais do Proxmox e TrueNAS
2. Configurar Terraform Cloud via API (state versionado)
3. Migrar deploy do Picsur para ler do inventory (não hardcoded)
4. 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)
```