diff --git a/infrastructure/docker-compose.staging.yml b/infrastructure/docker-compose.staging.yml index ce4140c..0d4da27 100644 --- a/infrastructure/docker-compose.staging.yml +++ b/infrastructure/docker-compose.staging.yml @@ -109,12 +109,9 @@ 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 + # Staging/preview services attach only to trails-shared — created (and + # IPv6-enabled) by the production compose project. There is no per-project + # default network here, so v6 egress comes from trails-shared itself. trails-shared: external: true name: trails-shared diff --git a/infrastructure/docker-compose.yml b/infrastructure/docker-compose.yml index 37c591b..ac25be8 100644 --- a/infrastructure/docker-compose.yml +++ b/infrastructure/docker-compose.yml @@ -261,8 +261,12 @@ networks: # staging compose project can attach to it via `external: true`. Only # postgres is joined here on the production side; staging containers join # to reach postgres by hostname. + # IPv6-enabled so staging/preview journals — whose only network this is — + # get v6 federation egress like production. Recreating it on a live host + # requires detaching staging, previews, and postgres first. trails-shared: name: trails-shared + enable_ipv6: true volumes: caddy_data: