Files
smirk-backend-core/examples/paid-relay/README.md
T
jwinterm d96f457b69 docs(examples): operator cookbook — six deployment recipes + premium-relay spec
Add ready-to-run .env + README recipes (personal, public-free, friends,
paid-access, paid-relay, community) and the premium-relay design overview,
with audit fixes to the config template and spec:

- Drop the inert INSTANCE_ID knob (config never read it) and document the real
  per-node id, which is derived from ADMIN_PUBLIC_URL.
- Warn that a placeholder PUBLIC_API_URL is rejected at boot in production
  (Nostr identity is on by default); soften the recipe "boots today" status.
- Remove dead template vars: BTC/LTC Core-RPC settings and the non-existent
  PUBLIC_EXPOSE_FEATURES (replaced with the real per-field landing switches).
- Mark ALTCHA_HMAC_KEY conditional in PoW-off recipes; blank placeholder
  payment creds so a recipe doesn't ship a key that fails validation.
- Fix premium-relay spec drift: the migration creates no premium_until index,
  disabled endpoints return 400/200 (not 404), and neutralize operator voice.
2026-07-02 19:47:46 -04:00

22 lines
1.4 KiB
Markdown

# paid-relay — free wallet, paid Nostr posting (the flagship)
A free wallet (open + PoW) **plus** a paid premium tier for **general** Nostr
posting to your relay. Wallet-functional events — encrypted DMs, tips, swap
coordination — stay **free** for registered users; premium unlocks general posting.
Recurring revenue tied to a real service. Implements the
[premium-relay feature](../../docs/design/premium-relay.md).
- **Config:** [`.env.example`](.env.example) — `RELAY_WRITE_POLICY=premium-post`,
`PREMIUM_ENABLED=true`, tiered `PREMIUM_PLANS` (a built-in discount curve), and the
`PAYMENT_*` processor block (reused from pay-to-register; BTCPay-compatible).
- **Free vs paid:** the relay is free for what makes the wallet work; you pay to use
it as your everyday relay. Reads stay open (v1); premium gates *writes*.
- **Money:** you sell access to your relay (a fee), non-custodial + pull-model —
never hold funds. `PAYMENT_CONFIRMATIONS >= 1`; validation rejects the unsafe combos.
- **Content:** running a relay means hosting user content — a DMCA designated agent,
a CSAM-reporting process, and acceptable-use terms apply. See
[`../LEGAL_AND_OPS.md`](../LEGAL_AND_OPS.md).
- **Resources:** the relay runs beside the wallet backend + LWS, so keep the size /
retention / connection / rate caps (in `.env.example` and the nostr-rs-relay config
under `deploy/relay`); move to `RELAY_MODE=external` on its own host if load climbs.