Go to file
2022-11-19 07:32:17 -06:00
.cargo feat: enable use of tokio-console with diagnostics.tracing setting 2022-09-11 12:44:45 -05:00
docs feat: limit event publishing to NIP-05 verified users 2022-02-12 09:29:25 -06:00
src feat(NIP-20): advertise support for NIP-20 in relay info/readme 2022-11-12 09:22:43 -06:00
tests test: improve port selection 2022-09-28 07:55:06 -05:00
.build.yml build: add release flags, save artifacts 2022-09-11 10:21:29 -05:00
.gitignore feat: store events in SQLite and allow querying 2021-12-11 15:48:59 -06:00
.pre-commit-config.yaml build: add pre-commit config 2022-09-06 05:44:22 -05:00
Cargo.lock improvement: upgrade multiple dependencies 2022-11-19 06:52:06 -06:00
Cargo.toml docs: add Cargo package metadata 2022-11-19 07:32:17 -06:00
config.toml feat: add network.ping_interval setting 2022-11-05 07:40:28 -05:00
Dockerfile improvement: build auditable binary in docker 2022-11-19 07:11:39 -06:00
LICENSE docs: add MIT license 2021-12-11 15:52:25 -06:00
mk-platform-agnostic-dockerfile.sh feat: quick script for making non-x86 Dockerfiles 2022-10-13 18:35:33 -05:00
README.md feat(NIP-20): advertise support for NIP-20 in relay info/readme 2022-11-12 09:22:43 -06:00
reverse-proxy.md docs: add NGINX configuration example 2022-08-20 09:35:01 -07:00
rustfmt.toml chore: formatting 2022-08-21 09:51:34 -07:00

nostr-rs-relay

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.

builds.sr.ht status

Features

NIPs with a relay-specific implementation are listed here.

Quick Start

The provided 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

Use a nostr client such as noscl to publish and query events.

$ 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

Configuration

The sample 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.

Dev Channel

For development discussions, please feel free to use the sourcehut mailing list. Or, drop by the Nostr Telegram Channel.

To chat about nostr-rs-relay on nostr itself; visit our channel on anigma or another client that supports NIP-28 chats:

  • 2ad246a094fee48c6e455dd13d759d5f41b5a233120f5719d81ebc1935075194

License

This project is MIT licensed.