Architecture
An overview of how the homelab infrastructure layers connect.
Pipeline
The deployment follows a four-stage pipeline:
graph LR
A[Packer] -->|VM templates| B[Terraform]
B -->|Provisioned VMs| C[Ansible]
C -->|Configured hosts| D[Docker]
- Packer builds base VM templates (Ubuntu/Debian) on Proxmox with cloud-init
- Terraform provisions VMs from those templates across environments
- Ansible configures the VMs, installs Docker, and deploys services
- Docker Compose runs all application containers
Environments
| Environment | Purpose | Location |
|---|---|---|
| WIL | Development and primary | Local |
| NYC | Production | Remote |
Key Design Decisions
- Docker Compose over Kubernetes for simplicity
- Split-horizon DNS with BIND9 for internal resolution
- SOPS + Age for secrets encryption at rest
- Caddy for automatic HTTPS with minimal configuration
- Task runner for unified command interface