Files
smirk-backend-core/deploy/relay/docker-compose.yml
T
jwinterm 17bb7bcc20 docs(relay): packaging (deploy/relay) + operator guide + .env.example
Completes the operator side of the relay integration:

- deploy/relay/: reference docker-compose + config.toml for a locked-down
  nostr-rs-relay wired to the backend's gRPC admission (host networking so the
  loopback admission socket stays private). Clearly marked a template to pin/
  verify against the operator's nostr-rs-relay version.
- docs/operations/RELAY.md: what it is (inbox relay, not the only relay), the
  admission architecture, the three write policies + NIP-13 PoW, bundled vs
  external, verification, and the seam's modularity. Linked from OPERATOR_SETUP.
- .env.example: the RELAY_* block (all off/placeholder).

Backend relay integration (config → seam → policy → gRPC admission →
capabilities → NIP-05 → packaging/docs) is now complete. Client DM stack next.
2026-07-02 07:06:36 -04:00

36 lines
1.5 KiB
YAML

# Bundled, locked-down Nostr relay for a self-hosted Smirk backend.
#
# This runs nostr-rs-relay as the messaging-plane relay. WRITE ADMISSION is
# delegated to the Smirk backend's gRPC service (RELAY_ADMISSION_BIND, default
# 127.0.0.1:8090) via nostr-rs-relay's [grpc] event_admission_server hook — so
# the RELAY_WRITE_POLICY (inbox-outbox / author-allowlist / open) + NIP-13 PoW
# are enforced by the backend, not baked into this file.
#
# Networking: the relay uses the HOST network so it can reach the backend's
# loopback admission socket (127.0.0.1:8090) while keeping that socket private.
# host networking is Linux-only; on other hosts, bind RELAY_ADMISSION_BIND to a
# docker-reachable address behind your firewall and drop `network_mode: host`,
# adding `extra_hosts: ["host.docker.internal:host-gateway"]` + a port mapping.
#
# This is a REFERENCE template — verify the config keys against the nostr-rs-relay
# version you pin (https://github.com/scsibug/nostr-rs-relay).
services:
relay:
image: ghcr.io/scsibug/nostr-rs-relay:latest # pin a digest in production
restart: unless-stopped
network_mode: host # reach the backend admission socket on 127.0.0.1
user: "1000:1000"
volumes:
- ./config.toml:/usr/src/app/config.toml:ro
- relay-data:/usr/src/app/db
environment:
RUST_LOG: info
# Modest, self-host-friendly resource ceilings.
deploy:
resources:
limits:
memory: 512M
volumes:
relay-data: