Nipsr is a distributed Nostr relay implementation using Quarkus and Kotlin for the server and Astro for the client.
It aims to be eficient, scalable and simple to maintain and deploy (with docker) while also simplifying the process of running, managing and configuring an either free or paid relay.
The project is in it's early stages, so expect a lot of changes and a few bugs.
- Public relay
wss://public.nipsr.com
Private relay(pending)wss://private.nipsr.com
- Registration page
https://nipsr.com
Get an identifier here! (coming soon)
Available domains:
- nipsr.io
- nipsr.com
- nipsr.com.br
- NIP-01 - Basic protocol flow description
- NIP-02 - Contact List and Petnames
- 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-13 - Proof of Work
- NIP-15 - End of Stored Events Notice
- NIP-16 - Event Treatment
- NIP-20 - Command Results
- NIP-22 - Event created_at Limits
- Relay - Websocket server that handles the communication with Nostr clients
- Processor - Consumes the events from the relay and handles database persistence
- Management - Manages users data like NIP-05 identifiers and relay access
- Payload - Contains the data model and the serialization/deserialization logic
- Client - Frontend client for NIP-05 identifier registration
- Nginx - Reverse proxy server
- RabbitMQ - Message broker
- MongoDB - Primary database
Redis - Cache database(to be implemented)
You can always run a non-containerized version of every software but the following guides assume you have Docker installed to run the broker and database.
- Package applications on
server
with./mvnw package
- Enter the
local
directory. - Start docker compose
docker compose up
ordocker-compose up
depending on your docker version.
Now the application should be accessible at ws://localhost
for the relay websocker endpoint and http://localhost:8080
for the client and management api.
TODO