1  Ecosystem Choices

Note

The three big decisions: immutable OS, container runtime, and identity provider. Everything else follows from these.

1.1 The three-layer model

  • Host as firmware: bootc image-based Linux, rebuilt in CI, no runtime mutation
  • Workloads in rootless Podman pods, one service user per application, managed by systemd via quadlet
  • Identity and access through Authentik as a single family IDP

1.2 Why CentOS Stream

  • CentOS Stream 10 as RHEL’s upstream, not its rebuild
  • Stable kernel ABI for out-of-tree modules (ZFS, NVIDIA)
  • bootc is a Red Hat project; CentOS Stream is its primary target
  • Alternative considered: Fedora (faster kernel, less stable ABI, shorter support window)

1.3 Why Podman over Docker

  • Rootless by default, no daemon, no root socket
  • Quadlet units are systemd-native: dependencies, ordering, journal logging for free
  • Pod model maps naturally to sidecar patterns (app + Caddy per pod)
  • OCI compatible: same images, same registries

1.4 Why Authentik over the alternatives

1.5 Upstream health as a selection criterion

  • Every component here is selected partly on the vitality of its upstream: release cadence, security response, community size
  • Single-maintainer stack means you inherit upstream’s maintenance posture
  • Components that stall or go hostile get replaced; the image-based model makes this cheaper than it sounds