79 lines
2.5 KiB
Markdown
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)
|
||
|
|
```
|