1 unstable release
|0.7.2||Nov 19, 2022|
#18 in #nostr
This is a nostr relay, written in Rust. It currently supports the entire relay protocol, and has a SQLite persistence layer.
The project master repository is available on sourcehut, and is mirrored on GitHub.
NIPs with a relay-specific implementation are listed here.
- NIP-01: Basic protocol flow description
- Core event model
- Hide old metadata events
- Id/Author prefix search
- NIP-02: Contact List and Petnames
- NIP-03: OpenTimestamps Attestations for Events
- NIP-05: Mapping Nostr keys to DNS-based internet identifiers
- NIP-09: Event Deletion
- NIP-11: Relay Information Document
- NIP-12: Generic Tag Queries
- NIP-15: End of Stored Events Notice
- NIP-16: Event Treatment
- NIP-20: Command Results
- NIP-22: Event
created_atlimits (future-dated events only)
- NIP-26: Event Delegation
Dockerfile will compile and build the server
application. Use a bind mount to store the SQLite database outside of
the container image, and map the container's 8080 port to a host port
(7000 in the example below).
$ docker build -t nostr-rs-relay . $ docker run -it -p 7000:8080 \ --mount src=$(pwd)/data,target=/usr/src/app/db,type=bind nostr-rs-relay [2021-12-31T19:58:31Z INFO nostr_rs_relay] listening on: 0.0.0.0:8080 [2021-12-31T19:58:31Z INFO nostr_rs_relay::db] opened database "/usr/src/app/db/nostr.db" for writing [2021-12-31T19:58:31Z INFO nostr_rs_relay::db] DB version = 2
nostr client such as
noscl to publish and query
$ noscl publish "hello world" Sent to 'ws://localhost:8090'. Seen it on 'ws://localhost:8090'. $ noscl home Text Note [81cf...2652] from 296a...9b92 5 seconds ago hello world
A pre-built container is also available on DockerHub: https://hub.docker.com/r/scsibug/nostr-rs-relay
config.toml file demonstrates the
configuration available to the relay. This file is optional, but may
be mounted into a docker container like so:
$ docker run -it -p 7000:8080 \ --mount src=$(pwd)/config.toml,target=/usr/src/app/config.toml,type=bind \ --mount src=$(pwd)/data,target=/usr/src/app/db,type=bind \ nostr-rs-relay
Options include rate-limiting, event size limits, and network address settings.
Reverse Proxy Configuration
For examples of putting the relay behind a reverse proxy (for TLS termination, load balancing, and other features), see Reverse Proxy.
For development discussions, please feel free to use the sourcehut mailing list. Or, drop by the Nostr Telegram Channel.
To chat about
nostr itself; visit our channel on anigma or another client that supports NIP-28 chats:
This project is MIT licensed.