Infraestrutura como Código do Homelab - Terraform, Ansible, Docker Compose
Go to file
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
.gitea/workflows refactor: move docker/ → services/ 2026-04-09 12:13:10 -03:00
gitea-runner chore(gitea-runner): clean up binary/credentials, update docs 2026-04-09 12:12:26 -03:00
inventory fix(inventory): fill Hestia real data — MACs, IP, disk size 2026-04-09 12:30:53 -03:00
services refactor: move docker/ → services/ 2026-04-09 12:13:10 -03:00
.gitignore chore(gitea-runner): clean up binary/credentials, update docs 2026-04-09 12:12:26 -03:00
README.md docs: rewrite README with clean structure and 4-layer architecture overview 2026-04-09 12:44:52 -03:00

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

  1. PR aberto → Gitea Actions valida (docker compose config, docker compose pull)
  2. 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

  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)