A high-performance Nostr relay built by Bitcoiners, for Bitcoiners. This project provides a web interface for managing access to the Noderunners relay service.
wss://relay.noderunners.network
- Lightning payments via the relay API (invoice creation and status)
- Secure authentication with Nostr
- Modern, responsive web interface
- Real-time relay statistics
- Uptime monitoring
- Iframe support for embedding
- Multiple login methods (Extension, Manual, URL-based)
- Frontend: React + TypeScript + Vite
- Styling: Tailwind CSS
- Icons: Lucide React
- Payments: NIP-05 relay API (
/v1/pricing,/v1/invoices,/v1/users/…) - Authentication: Nostr Protocol
- State Management: Zustand
Create a .env file in the root directory with the following variables:
# App Settings
VITE_APP_NAME="Noderunners Relay"
VITE_APP_DESCRIPTION="A high-performance Nostr relay built by Bitcoiners, for Bitcoiners"
VITE_LOGO_URL="your-logo-url"
VITE_GITHUB_URL="your-github-url"
# Nostr — relay URL for clients; API URL serves /.well-known/nostr.json and /v1/*
VITE_NOSTR_RELAY_URL="wss://your-relay-url"
VITE_API_URL="https://your-api-host"
VITE_SUPPORTED_NIPS="1,2,4,9,11,22,28,40,70,77"
VITE_RELAY_SOFTWARE="strfry v1.0.3"
# Feature Flags
VITE_ENABLE_WHITELIST=true
VITE_ENABLE_PAYMENT_VERIFICATION=true
VITE_ENABLE_DEMO=false
# Uptime Monitoring
VITE_UPTIME_KUMA_URL="your-uptime-kuma-url"
VITE_UPTIME_KUMA_ID="1"- Install dependencies:
npm install- Start the development server:
npm run dev- Build for production:
npm run buildThe application supports multiple authentication methods:
-
Nostr Extension
- Uses browser extensions like Alby for seamless authentication
- Automatically retrieves your public key
-
Manual Entry
- You can manually input your npub or hex public key
- Supports both formats for maximum flexibility
-
URL-based Authentication
- Automatically logs in using URL parameters
- Supports both
npubandpubkeyparameters - Example URLs:
https://your-domain.com?npub=npub1... https://your-domain.com?pubkey=abc123...
The application supports iframe embedding with a clean interface. Add ?iframe=1 to the URL to:
- Hide header and footer
- Show a logout button on the dashboard
- Maintain a minimal interface
Example:
<iframe src="https://your-relay-domain.com?iframe=1" width="100%" height="600px"></iframe>You can combine iframe mode with URL-based authentication:
<iframe src="https://your-relay-domain.com?iframe=1&npub=npub1..." width="100%" height="600px"></iframe>This project is licensed under the MIT License - see the LICENSE file for details.
- Built by the Noderunners community
- Powered by strfry
