V2.1-beta
Move terms.txt to public/ to fix Terms page loading
Noderunners Relay
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
Features
- ⚡ Lightning Network integration for payments
- 🔒 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)
Tech Stack
- Frontend: React + TypeScript + Vite
- Styling: Tailwind CSS
- Icons: Lucide React
- Payment: LNbits Integration
- Authentication: Nostr Protocol
- State Management: Zustand
Environment Variables
Create a .env file in the root directory with the following variables:
# LNbits Configuration
VITE_LNBITS_URL="your-lnbits-url"
VITE_LNBITS_API_KEY="your-api-key"
# 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 Settings
VITE_NOSTR_RELAY_URL="wss://your-relay-url"
VITE_API_URL="your-api-url"
VITE_SUPPORTED_NIPS="1,2,4,9,11,22,28,40,70,77"
VITE_RELAY_SOFTWARE="strfry v1.0.3"
# Payment Settings
VITE_MIN_PAYMENT_AMOUNT=10000
VITE_PAYMENT_MEMO="Noderunners Relay Access"
VITE_PAYMENT_CURRENCY="sat"
VITE_WEBHOOK_URL="your-webhook-url"
# 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"
Development
- Install dependencies:
npm install
- Start the development server:
npm run dev
- Build for production:
npm run build
Authentication Methods
The application supports multiple authentication methods:
-
Nostr Extension
- Uses browser extensions like Alby for seamless authentication
- Automatically retrieves the user's public key
-
Manual Entry
- Users can manually input their 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...
Iframe Integration
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>
API Services
LNbits Integration
- Invoice creation
- Payment verification
- Exchange rate conversion
- Wallet information
Relay API
- User information
- Whitelist management
- Payment processing
- Status monitoring
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
Languages
TypeScript
97.2%
JavaScript
1.3%
CSS
0.9%
HTML
0.6%
