Skip to content

HORNET-Storage/HORNETS-Nostr-Relay

Repository files navigation

nostr Badge Go Badge

H.O.R.N.E.T Storage Nostr Relay 🐝

Unleashing the power of Nostr with a configurable all-in-one relay supporting unchunked files as Blossom Blobs, chunked files as Scionic Merkle Trees, and various social media features as Nostr kind numbers.

Choose Kind Numbers and File Extensions

Relay operators can select which file types and nostr features to enable in the H.O.R.N.E.T Storage Relay Panel with elegant GUI toggles, displayed alongside diagrams and graphs to visualize the amount of data hosted over time.

17 Supported Nostr Features (NIPs)

✅ - Implemented: Features that are currently available and fully operational. ⚠️ - In-Progress: Features that are currently under development and not yet released.

NIP Number NIP Description Kind Number Description
NIP-01 Basic Nostr Protocol kind0 → User Metadata ✅

kind1 → Short Text Post [Immutable] ✅
NIP-02 Following List kind3 → List of Users You Follow ✅
NIP-05 Mapping Nostr Address to DNS No Specific Kinds Listed ✅
NIP-09 Delete Note kind5 → Delete Request ✅
NIP-11 Relay Info Document No Specific Kinds Listed ✅
NIP-18 Reposts kind6 → Repost of Kind1 Notes ✅

kind16 → Repost of All Other Kind Notes ✅
NIP-23 Formatted Articles kind30023 → Markdown Post [Updatable] ✅
NIP-25 Reactions kind7 → Like, Heart, or Custom Reaction ✅
NIP-45 Counting Followers & more... No Specific Kinds Listed ✅
NIP-50 Search Capability No Specific Kinds Listed ✅
NIP-51 Custom Lists kind10000 → Mute List ✅

kind10001 → Pinned Note ✅

kindxxxx → Private Follow List [Encrypted] ⚠️

kindxxxx → Private Bookmark [Encrypted] ⚠️

kind30000 → Public Follow List [Unencrypted] ✅
NIP-56 Reporting kind1984 → Report a User, Post, or Relay ✅
NIP-57 Lightning Zaps kind9735 → Lightning Zap Receipt ✅
NIP-58 Badges kind8 → Badge Award ✅

kind30008 → Profile Badge ✅

kind30009 → Badge Definition ✅
NIP-65 Propagate Tiny Relay Lists kind10002 → Tiny Relay List [Outbox Model] ✅
NIP-84 Highlights kind9802 → Snippet of a Post or Article ✅
NIP-116 Event Paths kind30079 → Paths Instead of Kind Numbers ✅

⚙️ Developer Requirements & Build Instructions

📦 System Requirements

To build and run HORNETS-Nostr-Relay from source, ensure the following tools are installed:

Go 1.22+ Official Go programming language environment. Download from: https://golang.org/dl/

GCC (GNU Compiler Collection) Required for building C-based dependencies via cgo.


If On Linux or Debian Then Run:

sudo apt update
sudo apt install build-essential

If On macOS Then Run:

xcode-select --install

If On Windows Then Run:

Recommended: MSYS2

pacman -S base-devel gcc

Alternatively: MinGW-w64


🚀 QUICK SETUP: Building Relay with Panel (Production Mode)

After cloning the repository,

git clone https://github.com/HORNET-Storage/HORNETS-Nostr-Relay.git
cd HORNETS-Nostr-Relay

Optional: To change the server port, copy and edit config.example.yaml before building:

cp config.example.yaml config.yaml
# Edit config.yaml and change the port value under server:

On Linux or macOS:

Run this script found in the main directory:

./build-panel.sh

On Windows:

Run this script found in the main directory:

.\build-panel.bat

The compiled binary (hornet-storage or hornet-storage.exe) will be created in the project root directory.

📌 Port Info: The web panel runs on base port +2. The default base port is 11000, so the panel will be at http://localhost:11002. (Base port can be changed by renaming config.example.yaml to config.yaml before building, or by editing the auto-generated config.yaml after the first build.)


🚀 Building Relay with Panel (Hot Reload Dev Mode)

Use this mode when modifying the panel source code in /panel-source.

After cloning the repository,

git clone https://github.com/HORNET-Storage/HORNETS-Nostr-Relay.git
cd HORNETS-Nostr-Relay

Optional: To change the server port, copy and edit config.example.yaml before building:

cp config.example.yaml config.yaml
# Edit config.yaml and change the port value under server:

On Linux or macOS:

Run this script found in the main directory:

./build-panel-devmode.sh

On Windows:

Run this script found in the main directory:

.\build-panel-devmode.bat

The compiled binary (hornet-storage or hornet-storage.exe) will be created in the project root directory.

📌 Port Info: In dev mode, the React dev server runs on base port +3. The default base port is 11000, so access the panel at http://localhost:11003. (Base port can be changed by renaming config.example.yaml to config.yaml before building, or by editing the auto-generated config.yaml after the first build.)


🚀 Building Relay without Panel

After cloning the repository,

git clone https://github.com/HORNET-Storage/HORNETS-Nostr-Relay.git
cd HORNETS-Nostr-Relay
If On Linux or macOS Then Run:

Run this script found in the main directory:

./build.sh
If On Windows Then Run:

Run this script found in the main directory:

.\build.bat

The compiled binary (hornet-storage or hornet-storage.exe) will be created in the project root directory.


🔑 Configuration Setup

On first run the relay will automatically generate a config.yaml with a default configuration and a new private key which makes getting started nice and easy.

There are also example configs included for specific situations. The config.example.dev has all content moderation disabled and allows all kinds and users with no restrictions.

You can copy and rename manually or use the following if you wish to use any of the example configurations.

Bash

cp config.example.dev.yaml config.yaml

Powershell

copy config.example.dev.yaml config.yaml

If copying an example config make sure to update the private key.

Set the private_key field to a valid Nostr private key in either nsec bech32 format or hexadecimal format. This key identifies your relay on the Nostr network and is required for operation.

Additional Services

The relay is designed to run with optional services along side it and those can be found here:

Super Neutrino Wallet

  • Paid relay features using a bitcoin wallet

NestShield

  • Content moderation using python

Ollama

  • More advanced and resource intensive content moderation

Disclaimer

WARNING: Relay is still being developed and is not ready for production use yet. More details will be provided soon.

About

Nostr Relay with Dashboard🌐 Choose Paid, Public or Invite-Only Mode👥 Self-Host Your Posts and Code📂

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 7

Languages