Skip to content
This repository has been archived by the owner on Sep 12, 2024. It is now read-only.
/ nipsr-kt Public archive

Nostr distributed relay implementation with Kotlin

Notifications You must be signed in to change notification settings

morum/nipsr-kt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nipsr

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.

Use Nipsr

Running now

  • Public relay wss://public.nipsr.com
  • Private relay wss://private.nipsr.com (pending)
  • Registration page https://nipsr.com

NIP-05

Get an identifier here! (coming soon)

Available domains:

  • nipsr.io
  • nipsr.com
  • nipsr.com.br

Features

  • 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

Architecture

Nipsr

Server

  • 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

  • Client - Frontend client for NIP-05 identifier registration

Additional technologies

  • Nginx - Reverse proxy server
  • RabbitMQ - Message broker
  • MongoDB - Primary database
  • Redis - Cache database (to be implemented)

Quickstart

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.

  1. Package applications on server with ./mvnw package
  2. Enter the local directory.
  3. Start docker compose docker compose up or docker-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.

Production Setup

TODO