This commit performs general code cleanup to improve quality and address compiler warnings. Unused import statements have been removed from several files, including `HashSet`, `anyhow`, `log::error`, `serde::Deserialize`, and `serde_json::Value`. This declutters the code and makes dependencies clearer. Additionally, the `Result` returned by `RelayMessage::send_ok` and `RelayMessage::send_notice` is now explicitly ignored. This resolves `must_use` warnings for these fire-and-forget message sending functions, where error handling is not critical to the application's flow.
About
This is a nostr relay running on rust and tokio. A Rust learning project with poor code quality.
Usage
Running Locally
Run cargo run with environment variable DB_PATH set to the path of the database file.
RUST_LOG=info BIND_ADDR="0.0.0.0:8080" DB_PATH=./nostr.db AUTH_REQUIRED=True cargo run
Docker
Run with a persistent database volume
docker run -p 8080:8080 -v /path/to/your/db:/usr/local/bin/nostr.db laoxong/nostr_demo:master
docker run -p 8080:8080 -e AUTH_REQUIRED=true laoxong/nostr_demo:master
Docker Compose
nostr-relay:
image: laoxong/nostr_demo:master
container_name: nostr-relay
volumes:
- ./nostr-relay/:/etc/nostr
environment:
- DB_PATH=/etc/nostr/nostr.db
- AUTH_REQUIRED=False
Env
-
DB_PATH: Path to the SQLite database file. Defaults to
nostr.db. -
BIND_ADDR: The address and port to bind the server to. Defaults to
0.0.0.0:8080. -
RUST_LOG: Log level. Defaults to
warn -
AUTH_REQUIRED: Set to
trueto enable authentication for publishing events (NIP-42). Defaults tofalse. If enabled, only authenticated clients whose pubkey is in the relay's trust list can publish events.
Features
- NIP-1
- NIP-2
- NIP-5
- NIP-9
- NIP-12
- NIP-42
- NIP-65