Why it exists
Ghost stores media on local disk by default, which doesn't survive a container being recreated. This image bundles the S3 storage adapter in so images and uploads point at an S3-compatible bucket instead, MinIO on the homelab in my case, without patching the container by hand every time it rebuilds.
What I learned
Baking a plugin into the image at build time, rather than mounting it in at runtime, is the difference between "works until the next rebuild" and "just works." Small distinction, saved a lot of repeated setup.
Status
Active. Runs the blog on the homelab today.