bndw / nostr-relay-proxy

A fan-in / fan-out nostr relay proxy

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

nostr-relay-proxy

⚠️ WARNING: Experimental software. Use at your own risk.

A fan-in / fan-out nostr relay proxy. Instead of connecting your nostr client to many relays, connect it to a single nostr relay proxy and enjoy:

  • Efficient bandwidth usage: events are deduplicated before being sent to the client.
  • Increased performance: offloading deduplication in addition to event caching optimizes query performance.
  • Client IP obfuscation: upstream relays only see the IP of the nostr relay proxy, not the client.

Features

Authentication

Access to your nostr relay proxy may be restricted to a whitelist of allowed users. There are two layers of authentication employed to restrict access:

  1. Public key allowlist: A list of allowed_npubs in the config file restricts reads and writes to whitelisted users.
  2. NIP-42: Queries are restricted to authenticated clients only.

Local database

Events from upstream relays are stored locally on disk in a LMDB. As queries are received, the proxy will check its local database first and return matching events if found. This read-through style cache dramatically speeds up query responses.

Quickstart

  1. Build the source code
make build
  1. Create a config file
cp example.config.yaml config.yaml
  1. Run the nostr-relay-proxy
./bin/nostr-relay-proxy -config ./path/to/config.yaml

About

A fan-in / fan-out nostr relay proxy

License:GNU Affero General Public License v3.0


Languages

Language:Go 98.7%Language:Makefile 1.3%