# Local development only. Replace every credential outside a developer workstation. # Required for a local workstation, and only ever correct there. Anything else — including an # unset value — is validated as production, which requires certificate-verified PostgreSQL TLS # (EKKLESIA_DATABASE_TLS_MODE defaults to verify-full) and rejects loopback/http identity origins. # The plaintext loopback DATABASE_URL below is therefore only usable with this set. NODE_ENV=development POSTGRES_DB=ekklesia POSTGRES_USER=ekklesia POSTGRES_PASSWORD=ekklesia-development-only POSTGRES_PORT=5432 DATABASE_URL=postgresql://ekklesia:ekklesia-development-only@127.0.0.1:5432/ekklesia # Ekklesia's object-storage provider (ADR 0030). Absent S3_ENDPOINT means this installation has no # object storage, which is a complete deployment: only a module that declares a logical bucket in its # manifest is affected, and it is reported blocked rather than breaking anything. Production requires # https, exactly as the database transport requires verified TLS. # # These are host infrastructure. No module ever sees them: a module names a logical bucket and the # host resolves the binding. S3_ACCESS_KEY=ekklesia-development S3_SECRET_KEY=ekklesia-development-secret S3_ENDPOINT=http://127.0.0.1:8333 S3_PORT=8333 S3_REGION=us-east-1 S3_FORCE_PATH_STYLE=true # The origin a *browser* reaches object storage on, used only when signing temporary read URLs for # direct delivery (ADR 0031). Leave it unset whenever S3_ENDPOINT is itself reachable from a browser, # which is the case for this development stack: Compose publishes the service on loopback, so the # endpoint above serves both roles and direct delivery works with no extra configuration. # # Set it when Core reaches storage by a name a browser cannot resolve — a Compose service name such # as http://object-storage:8333, for instance — and browsers reach it through a public origin: # S3_DELIVERY_ENDPOINT=https://storage.example.org # It must be the origin the browser actually requests. An S3-compatible signature covers the request # Host, so a URL signed for one origin cannot be rewritten to another afterwards; a reverse proxy in # front of storage must therefore pass the original Host header through unchanged. The scheme is not # signed, so terminating TLS at that proxy and forwarding plaintext to the service is fine. # S3_DELIVERY_ENDPOINT= # Namespaces every physical bucket this installation owns, so several Ekklesia-compatible deployments # can share one S3-compatible service. Optional; defaults to "ekklesia". S3_BUCKET_PREFIX=ekklesia # Consumed only by the development Compose service's own bootstrap, never by Ekklesia's provider — # physical buckets are derived from a module's manifest declaration, not configured here. S3_BUCKET=ekklesia-development