2021-12-11 23:19:49 -05:00
|
|
|
# [nostr-rs-relay](https://git.sr.ht/~gheartsfield/nostr-rs-relay)
|
2021-12-11 16:58:45 -05:00
|
|
|
|
|
|
|
This is a [nostr](https://github.com/fiatjaf/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](https://sr.ht/~gheartsfield/nostr-rs-relay/), and is
|
|
|
|
mirrored on [GitHub](https://github.com/scsibug/nostr-rs-relay).
|
|
|
|
|
2022-01-16 09:16:42 -05:00
|
|
|
## Features
|
|
|
|
|
2022-01-26 22:39:03 -05:00
|
|
|
NIPs with a relay-specific implementation are listed here.
|
2022-01-16 09:16:42 -05:00
|
|
|
|
|
|
|
- [x] NIP-01: Core event model
|
|
|
|
- [x] NIP-01: Hide old metadata events
|
2022-01-26 08:24:04 -05:00
|
|
|
- [x] NIP-01: Id/Author prefix search (_experimental_)
|
2022-01-16 09:16:42 -05:00
|
|
|
- [x] NIP-02: Hide old contact list events
|
|
|
|
- [ ] NIP-03: OpenTimestamps
|
2022-02-12 17:19:46 -05:00
|
|
|
- [x] NIP-05: Mapping Nostr keys to DNS identifiers
|
2022-02-27 12:34:10 -05:00
|
|
|
- [x] NIP-09: Event deletion
|
2022-01-16 09:16:42 -05:00
|
|
|
- [x] NIP-11: Relay information document
|
2022-01-26 08:24:04 -05:00
|
|
|
- [x] NIP-12: Generic tag search (_experimental_)
|
2022-01-16 09:16:42 -05:00
|
|
|
|
2021-12-11 23:19:49 -05:00
|
|
|
## Quick Start
|
|
|
|
|
2021-12-31 15:08:04 -05:00
|
|
|
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).
|
2021-12-11 23:19:49 -05:00
|
|
|
|
|
|
|
```console
|
|
|
|
$ docker build -t nostr-rs-relay .
|
2021-12-31 15:08:04 -05:00
|
|
|
|
|
|
|
$ docker run -it -p 7000:8080 \
|
2021-12-31 16:28:26 -05:00
|
|
|
--mount src=$(pwd)/data,target=/usr/src/app/db,type=bind nostr-rs-relay
|
|
|
|
|
2021-12-31 15:08:04 -05:00
|
|
|
[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
|
2021-12-11 23:19:49 -05:00
|
|
|
```
|
|
|
|
|
2021-12-31 15:08:04 -05:00
|
|
|
Use a `nostr` client such as
|
|
|
|
[`noscl`](https://github.com/fiatjaf/noscl) to publish and query
|
|
|
|
events.
|
2021-12-11 23:19:49 -05:00
|
|
|
|
|
|
|
```console
|
|
|
|
$ 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
|
|
|
|
```
|
|
|
|
|
2022-01-01 13:27:09 -05:00
|
|
|
A pre-built container is also available on DockerHub:
|
2022-01-20 23:02:42 -05:00
|
|
|
https://hub.docker.com/r/scsibug/nostr-rs-relay
|
2022-01-01 13:27:09 -05:00
|
|
|
|
2021-12-31 15:08:04 -05:00
|
|
|
## Configuration
|
|
|
|
|
2022-01-15 12:41:31 -05:00
|
|
|
The sample [`config.toml`](config.toml) file demonstrates the
|
2021-12-31 15:08:04 -05:00
|
|
|
configuration available to the relay. This file is optional, but may
|
|
|
|
be mounted into a docker container like so:
|
|
|
|
|
|
|
|
```console
|
|
|
|
$ 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 \
|
2021-12-31 16:28:26 -05:00
|
|
|
nostr-rs-relay
|
2021-12-31 15:08:04 -05:00
|
|
|
```
|
|
|
|
|
|
|
|
Options include rate-limiting, event size limits, and network address
|
|
|
|
settings.
|
|
|
|
|
2022-01-15 12:41:31 -05:00
|
|
|
## Reverse Proxy Configuration
|
|
|
|
|
|
|
|
For examples of putting the relay behind a reverse proxy (for TLS
|
|
|
|
termination, load balancing, and other features), see [Reverse
|
|
|
|
Proxy](reverse-proxy.md).
|
|
|
|
|
2022-01-17 09:35:13 -05:00
|
|
|
## Dev Channel
|
2022-02-28 18:19:24 -05:00
|
|
|
|
|
|
|
For development discussions, please feel free to use the [sourcehut
|
|
|
|
mailing list](https://lists.sr.ht/~gheartsfield/nostr-rs-relay-devel).
|
|
|
|
Or, drop by the [Nostr Telegram Channel](https://t.me/nostr_protocol).
|
2022-01-17 09:35:13 -05:00
|
|
|
|
2021-12-11 16:58:45 -05:00
|
|
|
License
|
|
|
|
---
|
|
|
|
This project is MIT licensed.
|