Over-engineered play stack for infinidim.net — Stalwart wired into the shared Postgres + Redis + Garage S3 over the tailnet, with no WAN presence. Public mail ports are fronted by a separate caddy-l4 layer-4 proxy (caddy/) that can run on any tailnet host tagged tag:reverse-proxy — decoupled from the mailbox. - docker-compose.yml: ts-stalwart sidecar + stalwart, backends via MagicDNS - config/config.toml: PG (data/fts) + Redis (lookup) + S3 (blob) strawman - caddy/: xcaddy build with caddy-l4, JSON layer-4 mail proxy, own compose - acl-snippet.hujson: tag:stalwart owner + backend/edge grants - .env.example + gitignored .env (pulled from shared infra) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
16 lines
610 B
Docker
16 lines
610 B
Docker
# Custom Caddy with the layer-4 (TCP/UDP) app so it can proxy raw mail ports,
|
|
# not just HTTP. caddy-ratelimit is included to match the house build on `box`.
|
|
#
|
|
# docker build -t tailwart-caddy ./caddy
|
|
#
|
|
# Pinned to 2.11 to match box's Caddy. Bump deliberately.
|
|
FROM caddy:2.11-builder AS build
|
|
RUN xcaddy build \
|
|
--with github.com/mholt/caddy-l4 \
|
|
--with github.com/mholt/caddy-ratelimit
|
|
|
|
FROM caddy:2.11
|
|
COPY --from=build /usr/bin/caddy /usr/bin/caddy
|
|
# Proof the L4 module is in the binary (fails the build if not):
|
|
RUN caddy list-modules | grep -q 'layer4' || (echo 'caddy-l4 missing!' && exit 1)
|