4.2 KiB
4.2 KiB
Iron Legion Homelab Services Stack — Service Catalog
Verified DockerHub Metadata (as of 2026-05-25)
Swarm Placement Legend
| Placement | Swarm Behavior |
|---|---|
| Global | One replica on EVERY node (including manager) |
| Replicated (N) | N replicas distributed across workers by scheduler |
| Manager Constraint | Only on manager node(s) |
| Label Constraint | Only on nodes with matching node.label |
Placement Rules for 5-Node Swarm (1 manager + 4 workers)
- MK7 = Manager (can run global services + manager-constrained services)
- MK33, MK34, MK39, MK42 = Workers (run global services + replicated services)
- No node labels yet — will label storage nodes (e.g., media storage) as Phase 3
Network Layer
| Service | Image | Pulls | Stars | Updated | Placement | Notes |
|---|---|---|---|---|---|---|
| Traefik | traefik |
3.49B | 3,634 | 2026-05-13 | Global | Every node receives ingress routing + Docker socket read-only |
| Technitium DNS | technitium/dns-server |
8.99M | 156 | 2026-05-09 | Manager Constraint | Single authoritative DNS — port 53 on MK7 only |
| AdGuard Home | adguard/adguardhome |
170.7M | 1,408 | 2026-05-25 | Replicated (2) | 2 replicas across workers for redundancy — port 3000 |
Monitoring / Observability
| Service | Image | Pulls | Stars | Updated | Placement | Notes |
|---|---|---|---|---|---|---|
| Prometheus | prom/prometheus |
1.97B | 2,064 | 2026-05-25 | Manager Constraint | Central scraping server on MK7 |
| Prometheus Node Exporter | prom/node-exporter |
— | — | — | Global | Runs on every node — scrapes CPU/mem/disk |
| Grafana | grafana/grafana |
5.22B | 3,540 | 2026-05-16 | Replicated (1) | Any worker (Phase 3, needs data history first) |
| Beszel Hub | henrygd/beszel |
12.58M | 32 | 2026-04-30 | Manager Constraint | Central hub on MK7 collects metrics from agents |
| Beszel Agent | henrygd/beszel-agent |
— | — | — | Global | Runs on every node — reports to hub |
| Dozzle | amir20/dozzle |
309.6M | 144 | 2026-05-25 | Replicated (1) | Any worker — read-only Docker socket |
Management / Dashboard
| Service | Image | Pulls | Stars | Updated | Placement | Notes |
|---|---|---|---|---|---|---|
| Portainer CE | portainer/portainer-ce |
1.46B | 2,665 | 2026-05-20 | Manager Constraint | MK7 only — agentless mode, no portainer-agent needed |
| Homepage | gethomepage/homepage |
1.31M | 40 | 2026-05-25 | Replicated (1) | Any worker — all endpoints via env vars |
Security / Identity
| Service | Image | Pulls | Stars | Updated | Placement | Notes |
|---|---|---|---|---|---|---|
| Vaultwarden | vaultwarden/server |
287.2M | 1,454 | 2026-05-17 | Replicated (1) | Any worker — persistent volume required |
| Authelia | authelia/authelia |
75.2M | 208 | 2026-05-25 | Replicated (1) | Any worker — Traefik ForwardAuth middleware |
Media Stack (*arr + Jellyfin)
| Service | Image | Pulls | Stars | Updated | Placement | Notes |
|---|---|---|---|---|---|---|
| Jellyfin | jellyfin/jellyfin |
370.4M | 1,535 | 2026-05-25 | Label Constraint | Nodes with node.label.storage=media (Phase 3) |
| Sonarr | linuxserver/sonarr |
2.34B | 2,118 | 2026-05-23 | Replicated (1) | Any worker — needs shared /downloads mount |
| Radarr | linuxserver/radarr |
2.36B | 1,791 | 2026-05-25 | Replicated (1) | Any worker — needs shared /downloads mount |
| Prowlarr | linuxserver/prowlarr |
35.9M | 403 | 2026-05-25 | Replicated (1) | Any worker — feeds Sonarr/Radarr via network |
File / Collaboration
| Service | Image | Pulls | Stars | Updated | Placement | Notes |
|---|---|---|---|---|---|---|
| Nextcloud | nextcloud |
1.01B | 4,485 | 2026-05-23 | Replicated (1) | Any worker — needs persistent volume + database |