Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/avlo/superconductor
Nostr Relay - Java/Spring/WebSocketSession Implementation
https://github.com/avlo/superconductor
Last synced: 1 day ago
JSON representation
Nostr Relay - Java/Spring/WebSocketSession Implementation
- Host: GitHub
- URL: https://github.com/avlo/superconductor
- Owner: avlo
- License: mit
- Created: 2023-11-21T17:29:56.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-05-18T01:32:23.000Z (9 months ago)
- Last Synced: 2024-05-18T18:52:42.721Z (9 months ago)
- Language: Java
- Homepage:
- Size: 235 KB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-nostr - SuperConductor - Java Nostr-Relay Framework & Web Application. Java 20, Spring WebSocketSession 3.2.2, Spring Boot 3.2.4, atop [nostr-java library](https://github.com/tcheeric/nostr-java). Simple. Clean. OO. (Relays / Implementations)
README
```java
███████╗██╗ ██╗██████╗ ███████╗██████╗ ██████╗ ██████╗ ███╗ ██╗██████╗ ██╗ ██╗ ██████╗████████╗ ██████╗ ██████╗
██╔════╝██║ ██║██╔══██╗██╔════╝██╔══██╗██╔════╝██╔═══██╗████╗ ██║██╔══██╗██║ ██║██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗
███████╗██║ ██║██████╔╝█████╗ ██████╔╝██║ ██║ ██║██╔██╗ ██║██║ ██║██║ ██║██║ ██║ ██║ ██║██████╔╝
╚════██║██║ ██║██╔═══╝ ██╔══╝ ██╔══██╗██║ ██║ ██║██║╚██╗██║██║ ██║██║ ██║██║ ██║ ██║ ██║██╔══██╗
███████║╚██████╔╝██║ ███████╗██║ ██║╚██████╗╚██████╔╝██║ ╚████║██████╔╝╚██████╔╝╚██████╗ ██║ ╚██████╔╝██║ ██║
╚══════╝ ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝
```
# Java Nostr-Relay Framework & Web Application### Supported Nips
- [NIP-01](https://nostr-nips.com/nip-01) (Basic protocol & Standard Tags)
- [NIP-02](https://nostr-nips.com/nip-02) (Contact List and Petnames)
- [NIP-03](https://nostr-nips.com/nip-03) (OpenTimestamps Attestations for Events)
- [NIP-04](https://nostr-nips.com/nip-04) (Encrypted Direct Message)
- [NIP-05](https://nostr-nips.com/nip-05) (DNS-based internet identifiers)
- [NIP-06](https://nostr-nips.com/nip-06) (Basic key derivation from mnemonic seed phrase)
- [NIP-07](https://nostr-nips.com/nip-07) (window.nostr capability for web browsers)
- [NIP-08](https://nostr-nips.com/nip-08) (Handling Mentions)
- [NIP-10](https://nostr-nips.com/nip-10) (Marked "e" tags)
- [NIP-11](https://nostr-nips.com/nip-11) (Relay Information Document)
- [NIP-12](https://nostr-nips.com/nip-12) (Generic Tag Queries)
- [NIP-14](https://nostr-nips.com/nip-14) (Subject tag in Text events)
- [NIP-16](https://nostr-nips.com/nip-16) (Event treatment)
- [NIP-18](https://nostr-nips.com/nip-18) (Reposts)
- [NIP-19](https://nostr-nips.com/nip-19) (Bech-32 encoded entities)
- [NIP-20](https://nostr-nips.com/nip-20) (Command Results)
- [NIP-21](https://nostr-nips.com/nip-21) (URI scheme)
- [NIP-22](https://nostr-nips.com/nip-22) (Event "created_at" limits)
- [NIP-25](https://nostr-nips.com/nip-25) (Reactions)
- [NIP-27](https://nostr-nips.com/nip-27) (Text Note References)
- [NIP-28](https://nostr-nips.com/nip-28) (Public Chat)
- [NIP-30](https://nostr-nips.com/nip-30) (Custom Emoji)
- [NIP-31](https://nostr-nips.com/nip-31) (Unknown event kinds)
- [NIP-33](https://nostr-nips.com/nip-33) (Parameterized Replaceable Events)
- [NIP-36](https://nostr-nips.com/nip-36) (Sensitive Content / Content Warning)
- [NIP-38](https://nostr-nips.com/nip-38) (User Statuses)
- [NIP-39](https://nostr-nips.com/nip-39) (External Identities in Profiles)
- [NIP-42](https://nostr-nips.com/nip-42) (Authentication of clients to relays)
- [NIP-46](https://nostr-nips.com/nip-46) (Nostr Connect)
- [NIP-48](https://nostr-nips.com/nip-48) (Proxy Tags)
- [NIP-52](https://nostr-nips.com/nip-52) (Calendar Events)
- [NIP-53](https://nostr-nips.com/nip-53) (Live Activities)
- [NIP-56](https://nostr-nips.com/nip-56) (Reporting)
- [NIP-57](https://nostr-nips.com/nip-57) (Lightning Zaps)
- [NIP-58](https://nostr-nips.com/nip-58) (Badges)
- [NIP-89](https://nostr-nips.com/nip-89) (Recommended Application Handlers)
- [NIP-99](https://nostr-nips.com/nip-99) (Classified Listings)
- used by [Barchetta](https://github.com/avlo/barchetta) Smart-Contract Negotiation Protocol (in progress) atop [Bitcoin](https://en.wikipedia.org/wiki/Bitcoin) [Lightning-Network](https://en.wikipedia.org/wiki/Lightning_Network) [RGB](https://rgb.tech/)
----
### Normal/Production Mode (for most users) Instructions:
#### Confirm docker requirements$ docker --version
> Docker version 27.5.0
$ docker compose version
> Docker Compose version v2.32.4(Download links for the above)
- [Docker](https://hub.docker.com/_/docker) 27.5.0
- [Docker Compose](https://docs.docker.com/compose/install/) v2.32.4_(note: Confirmed compatible with Docker 27.0.3 and Docker Compose version v2.28.1 or higher. Earlier versions are at the liability of the developer/administrator)_
----
#### Download Superconductor Docker Image from [hub.docker](https://hub.docker.com/repository/docker/avlo/superconductor-app/tags)
$ docker pull avlo/superconductor:1.10.1----
#### Configure SuperConductor security level, 3 options:
Highest | SSL Certificate (WSS/HTTPS)
-
Obtain an SSL certificate -
Install the certificate - Download application-prod_wss.properties file & configure SSL settings
- Download docker-compose-prod_wss.yml file (and optionally edit relevant parameters as applicable)
Medium | Self-Signed Certificate (WSS/HTTPS)
-
Create a Self-Signed Certificate -
Install the certificate - Download application-prod_wss.properties file & configure SSL settings
- Download docker-compose-prod_wss.yml file (and optionally edit relevant parameters as applicable)
Lowest | Non-secure / Non-encrypted (WS/HTTP)
- Security-related configuration(s) not required
- Download docker-compose-prod_ws.yml file (and optionally edit relevant parameters as applicable)
----
#### Run SuperConductor
WSS/HTTPS
run without logging:
docker compose -f docker-compose-prod_wss.yml up
run with container logging displayed to console:
docker compose -f docker-compose-prod_wss.yml up --abort-on-container-failure --attach-dependencies
run with docker logging displayed to console:
docker compose -f docker-compose-prod_wss.yml up -d && dcls | grep 'superconductor-app' | awk '{print $1}' | xargs docker logs -f
WS/HTTP
run without logging:
docker compose -f docker-compose-prod_ws.yml up
run with container logging displayed to console:
docker compose -f docker-compose-prod_ws.yml up --abort-on-container-failure --attach-dependencies
run with docker logging displayed to console:
docker compose -f docker-compose-prod_ws.yml up -d && dcls | grep 'superconductor-app' | awk '{print $1}' | xargs docker logs -f
----
##### Stop SuperConductor
WSS/HTTPS
docker compose -f docker-compose-prod_wss.yml stop superconductor superconductor-db
WS/HTTP
docker compose -f docker-compose-prod_ws.yml stop superconductor superconductor-db
----
##### Remove SuperConductor docker containers
WSS/HTTPS
docker compose -f docker-compose-prod_wss.yml down --remove-orphans
WS/HTTP
docker compose -f docker-compose-prod_ws.yml down --remove-orphans
#### [Development Mode Instructions](DEVELOPMENT.md)