diff --git a/infrastructure/docker-compose.staging.yml b/infrastructure/docker-compose.staging.yml index fe71e9b..ce4140c 100644 --- a/infrastructure/docker-compose.staging.yml +++ b/infrastructure/docker-compose.staging.yml @@ -109,6 +109,12 @@ services: memory: 256M networks: + # IPv6 egress for staging/preview journals, matching production — see + # the production compose file for details. Preview networks are created + # fresh per PR; the persistent staging network needs a one-time + # down/up to pick this up. + default: + enable_ipv6: true trails-shared: external: true name: trails-shared diff --git a/infrastructure/docker-compose.yml b/infrastructure/docker-compose.yml index 1390257..37c591b 100644 --- a/infrastructure/docker-compose.yml +++ b/infrastructure/docker-compose.yml @@ -250,7 +250,13 @@ services: networks: # Default project network — kept implicit for production services. + # IPv6 is enabled so the journal can federate with v6-only instances + # (e.g. social.ullrich.is). Docker ≥27 auto-allocates a ULA subnet and + # NAT66-masquerades egress via the host's public v6 address. + # NOTE: flipping this on an existing deployment requires recreating the + # network: `docker compose down && docker compose --env-file .env up -d`. default: + enable_ipv6: true # Created by this compose project with a fixed (un-namespaced) name so the # staging compose project can attach to it via `external: true`. Only # postgres is joined here on the production side; staging containers join