45 lines
1.9 KiB
YAML
45 lines
1.9 KiB
YAML
# Standalone Nosterm home relay deployment.
|
|
#
|
|
# Runs ONLY the relay: a minimal NIP-29 managed-group Nostr relay with the
|
|
# Nosterm capability handshake. It listens on port 3334 and persists its BoltDB
|
|
# event store to a named volume so rooms/messages survive restarts.
|
|
#
|
|
# cp .env.example .env # then set RELAY_SECRET_KEY (see .env.example)
|
|
# docker compose up -d --build
|
|
|
|
services:
|
|
relay:
|
|
build:
|
|
context: .
|
|
image: nostermd:latest
|
|
environment:
|
|
# Stable 64-char hex identity that signs group metadata/rosters. REQUIRED
|
|
# when RELAY_ENV=production (the relay refuses to start without it, since a
|
|
# fresh key each boot corrupts signed rosters). In dev it is persisted to
|
|
# the data volume automatically. Generate with: openssl rand -hex 32
|
|
RELAY_SECRET_KEY: ${RELAY_SECRET_KEY:-}
|
|
RELAY_ENV: ${RELAY_ENV:-}
|
|
RELAY_NAME: ${RELAY_NAME:-Nosterm Home Relay}
|
|
RELAY_DESCRIPTION: ${RELAY_DESCRIPTION:-}
|
|
RELAY_CONTACT: ${RELAY_CONTACT:-relay@nosterm.com}
|
|
RELAY_MOTD: ${RELAY_MOTD:-}
|
|
# Retention: prune old CHAT messages so the store doesn't grow unbounded.
|
|
# 0 = unlimited. Group membership/metadata is never pruned.
|
|
RELAY_RETENTION_DAYS: ${RELAY_RETENTION_DAYS:-0}
|
|
RELAY_RETENTION_MAX_MESSAGES: ${RELAY_RETENTION_MAX_MESSAGES:-0}
|
|
RELAY_RETENTION_INTERVAL_MINUTES: ${RELAY_RETENTION_INTERVAL_MINUTES:-60}
|
|
# Optional federation: mirror/ingest NIP-29 CHAT with peer relays. Empty =
|
|
# disabled. Format: "url|mode:channels" entries separated by ';', where
|
|
# mode is mirror (bidirectional) or ingest (read-only) and channels is a
|
|
# comma list or '*'. e.g.
|
|
# wss://peer-a.example|mirror:general,dev;wss://peer-b.example|ingest:*
|
|
RELAY_FEDERATION_PEERS: ${RELAY_FEDERATION_PEERS:-}
|
|
volumes:
|
|
- relay-data:/data
|
|
ports:
|
|
- '3334:3334'
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
relay-data:
|