Files
documentation/08-deployment-phases.md
jarvis f18b978602 fix(Chunk4): purge all Pi-hole references from split files
- 08-deployment-phases: Pi-hole → AdGuard Home in Phase 1 order
- 09-open-questions: blocker replaced, decision marked resolved
- 10-appendix: removed from DockerHub table, count 16→15, dir pihole/→adguard/
- 05-network-architecture: port allocation DNS label updated
- All mirrored to master PRD
2026-05-27 13:10:35 -04:00

3.0 KiB
Raw Blame History

Iron Legion Homelab Services Stack — Deployment Phases

Phase 1: Infrastructure (Critical Path)

Goal: Get DNS, proxy, and basic monitoring alive. Everything else depends on this.

Order Service Target Node Why First Dependencies
1 Technitium DNS MK7 Name resolution for internal services None
2 AdGuard Home MK7 Recursive DNS + ad-block Technitium (via conditional forwarding)
3 Traefik MK7 Edge router for all HTTP ingress DNS (needs *.labs.internal to resolve)
4 Authelia MK7 Auth layer before exposing any mgmt UI Traefik (depends on ForwardAuth middleware)
5 Portainer MK7 Container management UI Traefik + Authelia (for secured access)
6 Prometheus MK7 Metrics collection baseline None (scrape targets added in Phase 2)
7 Beszel MK7 Fleet resource overview None (agents installed per-node)
8 Dozzle MK7 Real-time log viewing None

Phase 1 milestone: All nodes report healthy in Beszel. Portainer accessible via auth portal. DNS resolves.


Phase 2: Media & File Collaboration

Goal: Self-hosted media acquisition and file sync.

Order Service Target Node Why Now Dependencies
9 Jellyfin MK7 Media playback (GPU transcode if MK7 has dGPU) None (file ingest later)
10 Sonarr MK7 TV management Jellyfin (pushes organized files)
11 Radarr MK7 Movie management Jellyfin (pushes organized files)
12 Prowlarr MK7 Indexer aggregation Sonarr + Radarr (feeds them)
13 Nextcloud MK7 File sync/collaboration PostgreSQL (on MK7)
14 Vaultwarden MK7 Password management None (standalone)

Phase 2 milestone: Media acquisition pipeline works end-to-end. Nextcloud syncs. Vaultwarden stores secrets.


Phase 3: Polish & Expansion

Goal: Dashboards, advanced monitoring, nice-to-haves.

Order Service Target Node Why Deferred Dependencies
15 Grafana MK7 Dashboards need metrics to be interesting Prometheus (needs data history)
16 Homepage MK7 Custom dashboard for everything All Phase 1+2 services (needs endpoints)
Promtail + Loki TBD Centralized logging Only if Dozzle is insufficient
Uptime-Kuma TBD External uptime monitoring Only if Beszel alerting is insufficient

Phase 3 milestone: Single-pane dashboard (Homepage) shows all services. Alerts route to Discord or email.

Deployment Cadence

  • One service per session. No mass deployments. Validate each before proceeding.
  • Rollback plan: docker compose down + mv /opt/iron-legion/service{,-failed-$(date +%s)}. Snapshot taken before each compose up.
  • Bobby approval required before Phase 2 begins. Phase 1 success must be demonstrated.