mirror of
https://github.com/permissionlesstech/georelays.git
synced 2026-07-25 04:05:18 +00:00
Merge pull request #3 from permissionlesstech/concurrent-relay-discovery
feat: concurrent relay discovery
This commit is contained in:
@@ -46,7 +46,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Update relay discovery results
|
- name: Update relay discovery results
|
||||||
run: |
|
run: |
|
||||||
python3 nostr_relay_discovery.py wss://relay.damus.io --output relay_discovery_results.json
|
python3 nostr_relay_discovery.py wss://relay.damus.io --output relay_discovery_results.json --batch-size 20
|
||||||
|
|
||||||
- name: Update relay geolocation data
|
- name: Update relay geolocation data
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
+142
-47
@@ -60,12 +60,13 @@ class RelayDiscoveryStats:
|
|||||||
class NostrRelayDiscovery:
|
class NostrRelayDiscovery:
|
||||||
"""Nostr relay discovery tool using breadth-first search through follow lists"""
|
"""Nostr relay discovery tool using breadth-first search through follow lists"""
|
||||||
|
|
||||||
def __init__(self, initial_relay: str, max_depth: int = 3, connection_timeout: int = 5, output_file: str = "relay_discovery_results.json", save_point: int = SAVE_POINT):
|
def __init__(self, initial_relay: str, max_depth: int = 3, connection_timeout: int = 5, output_file: str = "relay_discovery_results.json", save_point: int = SAVE_POINT, batch_size: int = 10):
|
||||||
self.initial_relay = initial_relay
|
self.initial_relay = initial_relay
|
||||||
self.max_depth = max_depth
|
self.max_depth = max_depth
|
||||||
self.connection_timeout = connection_timeout
|
self.connection_timeout = connection_timeout
|
||||||
self.output_file = output_file
|
self.output_file = output_file
|
||||||
self.save_point = save_point
|
self.save_point = save_point
|
||||||
|
self.batch_size = batch_size
|
||||||
|
|
||||||
# Discovery state
|
# Discovery state
|
||||||
self.to_visit: deque = deque() # (relay_url, depth) - will be populated by load_existing_results
|
self.to_visit: deque = deque() # (relay_url, depth) - will be populated by load_existing_results
|
||||||
@@ -197,6 +198,38 @@ class NostrRelayDiscovery:
|
|||||||
logger.debug(f"Failed to connect to {relay_url}: {e}")
|
logger.debug(f"Failed to connect to {relay_url}: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
async def test_relays_connections(self, relay_urls: List[str]) -> Dict[str, bool]:
|
||||||
|
"""Test multiple relays concurrently and return a dict of relay_url -> functioning status"""
|
||||||
|
if not relay_urls:
|
||||||
|
return {}
|
||||||
|
|
||||||
|
logger.info(f"Testing {len(relay_urls)} relays concurrently")
|
||||||
|
|
||||||
|
# Create tasks for concurrent testing
|
||||||
|
tasks = []
|
||||||
|
for relay_url in relay_urls:
|
||||||
|
task = asyncio.create_task(self.test_relay_connection(relay_url))
|
||||||
|
tasks.append((relay_url, task))
|
||||||
|
|
||||||
|
# Wait for all tasks to complete
|
||||||
|
results = {}
|
||||||
|
for relay_url, task in tasks:
|
||||||
|
try:
|
||||||
|
is_functioning = await task
|
||||||
|
results[relay_url] = is_functioning
|
||||||
|
if is_functioning:
|
||||||
|
logger.info(f"✓ Relay {relay_url} is functioning")
|
||||||
|
else:
|
||||||
|
logger.warning(f"✗ Relay {relay_url} is not functioning")
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error testing relay {relay_url}: {e}")
|
||||||
|
results[relay_url] = False
|
||||||
|
|
||||||
|
functioning_count = sum(1 for status in results.values() if status)
|
||||||
|
logger.info(f"Batch test completed: {functioning_count}/{len(relay_urls)} relays functioning")
|
||||||
|
|
||||||
|
return results
|
||||||
|
|
||||||
async def fetch_events(self, relay_url: str) -> List[Dict]:
|
async def fetch_events(self, relay_url: str) -> List[Dict]:
|
||||||
"""Fetch kind 3 events (follow lists) or kind 10002 (NIP-66) from a relay"""
|
"""Fetch kind 3 events (follow lists) or kind 10002 (NIP-66) from a relay"""
|
||||||
follow_events = []
|
follow_events = []
|
||||||
@@ -257,6 +290,35 @@ class NostrRelayDiscovery:
|
|||||||
logger.info(f"Collected {len(follow_events)} follow events from {relay_url}")
|
logger.info(f"Collected {len(follow_events)} follow events from {relay_url}")
|
||||||
return follow_events
|
return follow_events
|
||||||
|
|
||||||
|
async def fetch_events_from_relays(self, relay_urls: List[str]) -> Dict[str, List[Dict]]:
|
||||||
|
"""Fetch events from multiple relays concurrently and return a dict of relay_url -> events"""
|
||||||
|
if not relay_urls:
|
||||||
|
return {}
|
||||||
|
|
||||||
|
logger.info(f"Fetching events from {len(relay_urls)} relays concurrently")
|
||||||
|
|
||||||
|
# Create tasks for concurrent event fetching
|
||||||
|
tasks = []
|
||||||
|
for relay_url in relay_urls:
|
||||||
|
task = asyncio.create_task(self.fetch_events(relay_url))
|
||||||
|
tasks.append((relay_url, task))
|
||||||
|
|
||||||
|
# Wait for all tasks to complete
|
||||||
|
results = {}
|
||||||
|
for relay_url, task in tasks:
|
||||||
|
try:
|
||||||
|
events = await task
|
||||||
|
results[relay_url] = events
|
||||||
|
logger.info(f"✓ Fetched {len(events)} events from {relay_url}")
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error fetching events from relay {relay_url}: {e}")
|
||||||
|
results[relay_url] = []
|
||||||
|
|
||||||
|
total_events = sum(len(events) for events in results.values())
|
||||||
|
logger.info(f"Batch fetch completed: {total_events} total events from {len(relay_urls)} relays")
|
||||||
|
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
def extract_relays_from_events(self, events: List[Dict]) -> Set[str]:
|
def extract_relays_from_events(self, events: List[Dict]) -> Set[str]:
|
||||||
"""Extract relay URLs from follow list events"""
|
"""Extract relay URLs from follow list events"""
|
||||||
@@ -325,60 +387,79 @@ class NostrRelayDiscovery:
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
async def discover_relays(self) -> Set[str]:
|
async def discover_relays(self) -> Set[str]:
|
||||||
"""Main discovery method using breadth-first search"""
|
"""Main discovery method using breadth-first search with concurrent processing"""
|
||||||
# First, try to load existing results and verify them
|
# First, try to load existing results and verify them
|
||||||
logger.info("Checking for existing results to build upon...")
|
logger.info("Checking for existing results to build upon...")
|
||||||
await self.load_existing_results()
|
await self.load_existing_results()
|
||||||
|
|
||||||
logger.info(f"Starting relay discovery from existing verified relays or {self.initial_relay}")
|
logger.info(f"Starting relay discovery with batch size {self.batch_size}")
|
||||||
logger.info(f"Maximum depth: {self.max_depth}")
|
logger.info(f"Maximum depth: {self.max_depth}")
|
||||||
|
|
||||||
while self.to_visit:
|
while self.to_visit:
|
||||||
current_relay, depth = self.to_visit.popleft()
|
# Collect a batch of relays to process
|
||||||
self.to_visit_set.remove(current_relay)
|
current_batch = []
|
||||||
|
batch_depth_map = {}
|
||||||
|
|
||||||
# Skip if already visited
|
# Get up to batch_size relays from the queue
|
||||||
if current_relay in self.visited_relays:
|
for _ in range(min(self.batch_size, len(self.to_visit))):
|
||||||
continue
|
if not self.to_visit:
|
||||||
|
break
|
||||||
# Skip if depth exceeds maximum
|
|
||||||
if depth > self.max_depth:
|
current_relay, depth = self.to_visit.popleft()
|
||||||
logger.info(f"Reached maximum depth {self.max_depth}, stopping exploration")
|
self.to_visit_set.remove(current_relay)
|
||||||
continue
|
|
||||||
|
|
||||||
logger.info(f"Processing relay {current_relay} at depth {depth}")
|
|
||||||
self.visited_relays.add(current_relay)
|
|
||||||
|
|
||||||
if await self.test_relay_connection(current_relay):
|
|
||||||
logger.info(f"✓ Relay {current_relay} is functioning")
|
|
||||||
self.functioning_relays.add(current_relay)
|
|
||||||
self.stats.functioning_relays += 1
|
|
||||||
|
|
||||||
# Only fetch follow lists if we haven't reached max depth
|
# Skip if already visited
|
||||||
if depth < self.max_depth:
|
if current_relay in self.visited_relays:
|
||||||
try:
|
continue
|
||||||
# Fetch follow lists from this relay
|
|
||||||
events = await self.fetch_events(current_relay)
|
# Skip if depth exceeds maximum
|
||||||
|
if depth > self.max_depth:
|
||||||
if events:
|
logger.info(f"Reached maximum depth {self.max_depth}, stopping exploration")
|
||||||
# Extract new relays from follow lists
|
continue
|
||||||
new_relays = self.extract_relays_from_events(events)
|
|
||||||
|
|
||||||
# Add new relays to visit queue for next depth level
|
|
||||||
for relay_url in new_relays:
|
|
||||||
if relay_url not in self.visited_relays and relay_url not in self.to_visit_set:
|
|
||||||
self.to_visit.append((relay_url, depth + 1))
|
|
||||||
self.to_visit_set.add(relay_url)
|
|
||||||
self.stats.total_relays_found += 1
|
|
||||||
logger.debug(f"Added {relay_url} to visit queue at depth {depth + 1}")
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"Error processing relay {current_relay}: {e}")
|
|
||||||
|
|
||||||
else:
|
current_batch.append(current_relay)
|
||||||
logger.warning(f"✗ Relay {current_relay} is not functioning")
|
batch_depth_map[current_relay] = depth
|
||||||
|
self.visited_relays.add(current_relay)
|
||||||
|
|
||||||
# Save progress periodically every save_point relays processed
|
if not current_batch:
|
||||||
|
break
|
||||||
|
|
||||||
|
logger.info(f"Processing batch of {len(current_batch)} relays")
|
||||||
|
|
||||||
|
# Test all relays in the batch concurrently
|
||||||
|
test_results = await self.test_relays_connections(current_batch)
|
||||||
|
|
||||||
|
# Collect functioning relays for event fetching
|
||||||
|
functioning_relays_batch = []
|
||||||
|
for relay_url, is_functioning in test_results.items():
|
||||||
|
if is_functioning:
|
||||||
|
self.functioning_relays.add(relay_url)
|
||||||
|
self.stats.functioning_relays += 1
|
||||||
|
|
||||||
|
# Only add to event fetching if we haven't reached max depth
|
||||||
|
depth = batch_depth_map[relay_url]
|
||||||
|
if depth < self.max_depth:
|
||||||
|
functioning_relays_batch.append(relay_url)
|
||||||
|
|
||||||
|
# Fetch events from all functioning relays concurrently
|
||||||
|
if functioning_relays_batch:
|
||||||
|
events_results = await self.fetch_events_from_relays(functioning_relays_batch)
|
||||||
|
|
||||||
|
# Process events and extract new relays
|
||||||
|
for relay_url, events in events_results.items():
|
||||||
|
if events:
|
||||||
|
depth = batch_depth_map[relay_url]
|
||||||
|
new_relays = self.extract_relays_from_events(events)
|
||||||
|
|
||||||
|
# Add new relays to visit queue for next depth level
|
||||||
|
for new_relay_url in new_relays:
|
||||||
|
if new_relay_url not in self.visited_relays and new_relay_url not in self.to_visit_set:
|
||||||
|
self.to_visit.append((new_relay_url, depth + 1))
|
||||||
|
self.to_visit_set.add(new_relay_url)
|
||||||
|
self.stats.total_relays_found += 1
|
||||||
|
logger.debug(f"Added {new_relay_url} to visit queue at depth {depth + 1}")
|
||||||
|
|
||||||
|
# Save progress periodically
|
||||||
if len(self.visited_relays) % self.save_point == 0:
|
if len(self.visited_relays) % self.save_point == 0:
|
||||||
logger.info(f"Progress checkpoint: Saving results after processing {len(self.visited_relays)} relays")
|
logger.info(f"Progress checkpoint: Saving results after processing {len(self.visited_relays)} relays")
|
||||||
self.save_results()
|
self.save_results()
|
||||||
@@ -400,7 +481,8 @@ class NostrRelayDiscovery:
|
|||||||
"initial_relay": self.initial_relay,
|
"initial_relay": self.initial_relay,
|
||||||
"max_depth": self.max_depth,
|
"max_depth": self.max_depth,
|
||||||
"connection_timeout": self.connection_timeout,
|
"connection_timeout": self.connection_timeout,
|
||||||
"save_point": self.save_point
|
"save_point": self.save_point,
|
||||||
|
"batch_size": self.batch_size
|
||||||
},
|
},
|
||||||
"progress_info": {
|
"progress_info": {
|
||||||
"relays_processed": len(self.visited_relays),
|
"relays_processed": len(self.visited_relays),
|
||||||
@@ -442,7 +524,7 @@ async def main():
|
|||||||
"--timeout",
|
"--timeout",
|
||||||
type=int,
|
type=int,
|
||||||
default=5,
|
default=5,
|
||||||
help="Connection timeout in seconds (default: 10)"
|
help="Connection timeout in seconds (default: 5)"
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--output",
|
"--output",
|
||||||
@@ -455,6 +537,12 @@ async def main():
|
|||||||
default=SAVE_POINT,
|
default=SAVE_POINT,
|
||||||
help=f"Save progress every N relays processed (default: {SAVE_POINT})"
|
help=f"Save progress every N relays processed (default: {SAVE_POINT})"
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--batch-size",
|
||||||
|
type=int,
|
||||||
|
default=10,
|
||||||
|
help="Number of relays to process concurrently (default: 10)"
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--verbose",
|
"--verbose",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
@@ -467,7 +555,14 @@ async def main():
|
|||||||
logging.getLogger().setLevel(logging.DEBUG)
|
logging.getLogger().setLevel(logging.DEBUG)
|
||||||
|
|
||||||
# Validate initial relay URL
|
# Validate initial relay URL
|
||||||
discovery = NostrRelayDiscovery(args.initial_relay, args.max_depth, args.timeout, args.output, args.save_point)
|
discovery = NostrRelayDiscovery(
|
||||||
|
args.initial_relay,
|
||||||
|
args.max_depth,
|
||||||
|
args.timeout,
|
||||||
|
args.output,
|
||||||
|
args.save_point,
|
||||||
|
args.batch_size
|
||||||
|
)
|
||||||
if not discovery.is_valid_relay_url(args.initial_relay):
|
if not discovery.is_valid_relay_url(args.initial_relay):
|
||||||
print(f"Error: Invalid relay URL: {args.initial_relay}")
|
print(f"Error: Invalid relay URL: {args.initial_relay}")
|
||||||
print("Relay URL should start with ws:// or wss://")
|
print("Relay URL should start with ws:// or wss://")
|
||||||
|
|||||||
+258
-258
@@ -1,265 +1,265 @@
|
|||||||
Relay URL,Latitude,Longitude
|
Relay URL,Latitude,Longitude
|
||||||
nostr.red5d.dev,37.7621,-122.3971
|
|
||||||
wot.soundhsa.com,39.0997,-94.5786
|
|
||||||
relay.utxo.farm,34.7331,135.8183
|
|
||||||
nostr.satstralia.com,64.1355,-21.8954
|
|
||||||
relay.satlantis.io,32.8546,-79.9748
|
|
||||||
relay.bullishbounty.com,37.7621,-122.3971
|
|
||||||
relay.hook.cafe,37.7621,-122.3971
|
|
||||||
wot.sebastix.social,51.3700,6.1681
|
|
||||||
khatru.nostrver.se,51.3700,6.1681
|
|
||||||
wheat.happytavern.co,37.7621,-122.3971
|
|
||||||
nostrue.com,40.8043,-74.0121
|
|
||||||
relay.javi.space,43.4628,11.8807
|
|
||||||
nostr.pleb.one,38.6273,-90.1979
|
|
||||||
relay.snort.social,53.3331,-6.2489
|
|
||||||
relay.letsfo.com,52.2298,21.0118
|
|
||||||
n.ok0.org,-36.8485,174.7635
|
|
||||||
relay.nostromo.social,49.4542,11.0775
|
|
||||||
nostr.zenon.network,40.7143,-74.0060
|
|
||||||
relay02.lnfi.network,39.0997,-94.5786
|
|
||||||
relay.agorist.space,52.3740,4.8897
|
|
||||||
nostr.carroarmato0.be,50.8517,3.6089
|
|
||||||
nostr-02.czas.top,51.2217,6.7762
|
|
||||||
relay.moinsen.com,50.4779,12.3713
|
|
||||||
nostr.thaliyal.com,40.8220,-74.4488
|
|
||||||
nostream.breadslice.com,37.7621,-122.3971
|
|
||||||
cyberspace.nostr1.com,40.7143,-74.0060
|
|
||||||
relay5.bitransfer.org,37.7621,-122.3971
|
|
||||||
relay.artiostr.ch,37.7621,-122.3971
|
|
||||||
nostr.data.haus,50.4779,12.3713
|
|
||||||
relay.jeffg.fyi,43.7064,-79.3986
|
|
||||||
nostrelites.org,41.8500,-87.6500
|
|
||||||
wot.dtonon.com,37.7621,-122.3971
|
|
||||||
relay.exit.pub,50.4779,12.3713
|
|
||||||
nostr.spicyz.io,37.7621,-122.3971
|
|
||||||
black.nostrcity.club,41.8119,-87.6873
|
|
||||||
nostr.jfischer.org,49.4453,11.0222
|
|
||||||
relay04.lnfi.network,39.0997,-94.5786
|
|
||||||
solo.itsalldance.space,32.7244,-96.6755
|
|
||||||
relay.2nix.de,60.1695,24.9354
|
|
||||||
relay.fountain.fm,39.0997,-94.5786
|
|
||||||
relay.chakany.systems,37.7621,-122.3971
|
|
||||||
nostr.mom,50.4779,12.3713
|
|
||||||
relay.mess.ch,47.1345,9.0964
|
|
||||||
inbox.azzamo.net,52.2284,21.0522
|
|
||||||
relay.siamdev.cc,13.9178,100.4240
|
|
||||||
nostr.openhoofd.nl,51.5717,3.7042
|
|
||||||
relay.cypherflow.ai,48.8534,2.3488
|
|
||||||
nos.lol,50.4779,12.3713
|
|
||||||
relay.tagayasu.xyz,45.4112,-75.6981
|
|
||||||
relay.puresignal.news,37.7621,-122.3971
|
|
||||||
nos.xmark.cc,51.0344,2.3768
|
|
||||||
relay.bitcoinartclock.com,50.4779,12.3713
|
|
||||||
nostr.tadryanom.me,37.7621,-122.3971
|
|
||||||
relay.nostx.io,37.7621,-122.3971
|
|
||||||
nostr.einundzwanzig.space,50.1155,8.6842
|
|
||||||
nostr-relay.online,37.7621,-122.3971
|
|
||||||
relay.arx-ccn.com,50.4779,12.3713
|
|
||||||
no.str.cr,9.9339,-84.0849
|
|
||||||
relay.g1sms.fr,43.9298,2.1480
|
|
||||||
r.bitcoinhold.net,37.7621,-122.3971
|
|
||||||
relay.nostr.net,50.4779,12.3713
|
|
||||||
nostr.makibisskey.work,37.7621,-122.3971
|
|
||||||
relay.endfiat.money,37.7621,-122.3971
|
|
||||||
strfry.bonsai.com,37.8716,-122.2728
|
|
||||||
relay.nostrhub.fr,50.1155,8.6842
|
|
||||||
srtrelay.c-stellar.net,37.7621,-122.3971
|
|
||||||
prl.plus,55.7522,37.6156
|
|
||||||
vitor.nostr1.com,40.7143,-74.0060
|
|
||||||
librerelay.aaroniumii.com,37.7621,-122.3971
|
|
||||||
relay.coinos.io,37.7621,-122.3971
|
|
||||||
nostr-relay.psfoundation.info,39.0437,-77.4875
|
|
||||||
ithurtswhenip.ee,50.7990,-1.0913
|
|
||||||
nostr.myshosholoza.co.za,52.3710,4.9042
|
|
||||||
nostr.lojong.info,37.7621,-122.3971
|
|
||||||
relay.mattybs.lol,37.7621,-122.3971
|
|
||||||
relay.olas.app,50.4779,12.3713
|
|
||||||
nostr.azzamo.net,52.2284,21.0522
|
|
||||||
relay.goodmorningbitcoin.com,37.7621,-122.3971
|
|
||||||
relay.bitcoinveneto.org,64.1355,-21.8954
|
|
||||||
relay.fr13nd5.com,50.1155,8.6842
|
|
||||||
nostr-relay-1.trustlessenterprise.com,37.7621,-122.3971
|
|
||||||
relay.cosmicbolt.net,37.3924,-121.9623
|
|
||||||
purpura.cloud,37.7621,-122.3971
|
|
||||||
nostr-rs-relay.dev.fedibtc.com,39.0437,-77.4875
|
|
||||||
nostr.massmux.com,50.1155,8.6842
|
|
||||||
nostr.21crypto.ch,46.5160,6.6328
|
|
||||||
slick.mjex.me,39.0437,-77.4875
|
|
||||||
nostr-03.dorafactory.org,1.2897,103.8501
|
|
||||||
relayone.geektank.ai,17.1210,-61.8433
|
|
||||||
relay.barine.co,37.7621,-122.3971
|
|
||||||
nostr.2b9t.xyz,34.0522,-118.2437
|
|
||||||
relay.nostr.vet,52.5273,5.7228
|
|
||||||
relay.holzeis.me,37.7621,-122.3971
|
|
||||||
nostr.sagaciousd.com,49.2497,-123.1193
|
|
||||||
fanfares.nostr1.com,40.7143,-74.0060
|
|
||||||
pyramid.fiatjaf.com,50.1155,8.6842
|
|
||||||
santo.iguanatech.net,40.8344,-74.1377
|
|
||||||
dev-relay.lnfi.network,39.0997,-94.5786
|
|
||||||
strfry.shock.network,41.8847,-88.2040
|
|
||||||
nostr.liberty.fans,38.8003,-90.6265
|
|
||||||
wot.geektank.ai,17.1210,-61.8433
|
|
||||||
relay.mostro.network,40.8344,-74.1377
|
|
||||||
relay.toastr.net,40.8043,-74.0121
|
|
||||||
nostr.camalolo.com,24.1469,120.6839
|
|
||||||
relay.illuminodes.com,47.6062,-122.3321
|
|
||||||
relay03.lnfi.network,39.0997,-94.5786
|
|
||||||
relayone.soundhsa.com,39.0997,-94.5786
|
|
||||||
nostr.jerrynya.fun,31.2222,121.4581
|
|
||||||
nostr-02.yakihonne.com,1.3215,103.6957
|
|
||||||
nostr.blankfors.se,60.1695,24.9354
|
|
||||||
a.nos.lol,50.4779,12.3713
|
|
||||||
relay.nostrhub.tech,49.4453,11.0222
|
|
||||||
wot.nostr.net,37.7621,-122.3971
|
|
||||||
relayrs.notoshi.win,37.7621,-122.3971
|
|
||||||
fenrir-s.notoshi.win,37.7621,-122.3971
|
|
||||||
relay.nostrdice.com,-33.8678,151.2073
|
|
||||||
nostr.hekster.org,37.3924,-121.9623
|
|
||||||
nostr.mikoshi.de,51.2217,6.7762
|
|
||||||
theoutpost.life,64.1355,-21.8954
|
|
||||||
nostr.overmind.lol,37.7621,-122.3971
|
|
||||||
relay.nostar.org,37.7621,-122.3971
|
|
||||||
satsage.xyz,37.3924,-121.9623
|
|
||||||
nostr-relay.shirogaku.xyz,37.7621,-122.3971
|
|
||||||
nostr-rs-relay-ishosta.phamthanh.me,37.7621,-122.3971
|
|
||||||
nostr-relay.cbrx.io,37.7621,-122.3971
|
|
||||||
relay.wavlake.com,41.2619,-95.8608
|
|
||||||
nostr.l484.com,30.2960,-97.6396
|
|
||||||
wot.codingarena.top,50.4779,12.3713
|
|
||||||
wot.nostr.party,36.1659,-86.7844
|
|
||||||
relay.21e6.cz,50.0880,14.4208
|
|
||||||
dev-nostr.bityacht.io,25.0531,121.5264
|
|
||||||
nostr.vulpem.com,49.4542,11.0775
|
|
||||||
soloco.nl,37.7621,-122.3971
|
|
||||||
relay.copylaradio.com,50.7990,-1.0913
|
|
||||||
nostr.notribe.net,40.8344,-74.1377
|
|
||||||
inbox.mycelium.social,38.6273,-90.1979
|
|
||||||
relay2.angor.io,50.1155,8.6842
|
|
||||||
relay.nostraddress.com,37.7621,-122.3971
|
|
||||||
temp.iris.to,37.7621,-122.3971
|
|
||||||
nostr.thebiglake.org,32.7244,-96.6755
|
|
||||||
relay.dwadziesciajeden.pl,52.2298,21.0118
|
|
||||||
nostr.roundrockbitcoiners.com,40.8043,-74.0121
|
|
||||||
inbox.relays.land,50.1155,8.6842
|
|
||||||
premium.primal.net,37.7621,-122.3971
|
|
||||||
relay.lumina.rocks,49.4453,11.0222
|
|
||||||
adre.su,59.9386,30.3141
|
|
||||||
social.proxymana.net,60.1695,24.9354
|
|
||||||
nostrelay.circum.space,51.4566,7.0123
|
|
||||||
zap.watch,45.5088,-73.5878
|
|
||||||
relay.nostriot.com,43.7064,-79.3986
|
relay.nostriot.com,43.7064,-79.3986
|
||||||
schnorr.me,37.7621,-122.3971
|
relay.satlantis.io,32.8546,-79.9748
|
||||||
relay.credenso.cafe,43.4254,-80.5112
|
|
||||||
nostr-2.21crypto.ch,46.5160,6.6328
|
|
||||||
nproxy.kristapsk.lv,60.1695,24.9354
|
|
||||||
purplerelay.com,50.1155,8.6842
|
|
||||||
nostr.smut.cloud,37.7621,-122.3971
|
|
||||||
nostr.coincards.com,43.7064,-79.3986
|
|
||||||
nostr-relay.amethyst.name,35.7721,-78.6386
|
|
||||||
kitchen.zap.cooking,37.7621,-122.3971
|
|
||||||
nostr.huszonegy.world,47.4984,19.0404
|
|
||||||
nostr.rblb.it,37.7621,-122.3971
|
|
||||||
nostr.rikmeijer.nl,50.4779,12.3713
|
|
||||||
nostr.yael.at,52.3740,4.8897
|
|
||||||
nostr.rtvslawenia.com,49.4542,11.0775
|
|
||||||
noxir.kpherox.dev,34.8436,135.5084
|
|
||||||
nostr.4rs.nl,49.4453,11.0222
|
|
||||||
shu02.shugur.net,21.4901,39.1862
|
|
||||||
relay.freeplace.nl,52.3740,4.8897
|
|
||||||
relay.evanverma.com,40.8344,-74.1377
|
|
||||||
nostr.community.ath.cx,45.5088,-73.5878
|
|
||||||
nostr.n7ekb.net,47.5707,-122.2221
|
|
||||||
relay.mwaters.net,50.9519,1.8563
|
|
||||||
freelay.sovbit.host,64.1355,-21.8954
|
|
||||||
relay.electriclifestyle.com,26.1223,-80.1434
|
|
||||||
relay.nostr.band,60.1695,24.9354
|
|
||||||
relay.notoshi.win,13.3622,100.9835
|
|
||||||
relay.0xchat.com,1.2897,103.8501
|
|
||||||
relay.chorus.community,50.1155,8.6842
|
|
||||||
relay.nostr.wirednet.jp,35.9356,139.3044
|
|
||||||
relay.magiccity.live,25.8130,-80.2320
|
|
||||||
shu04.shugur.net,25.0772,55.3093
|
|
||||||
relay.stream.labs.h3.se,59.3294,18.0687
|
|
||||||
nostr-01.yakihonne.com,1.3215,103.6957
|
|
||||||
relay.hasenpfeffr.com,39.0437,-77.4875
|
|
||||||
relay.artx.market,43.7064,-79.3986
|
|
||||||
relay.satsdays.com,1.2897,103.8501
|
|
||||||
portal-relay.pareto.space,49.4453,11.0222
|
|
||||||
vidono.apps.slidestr.net,48.8534,2.3488
|
|
||||||
nostr.kungfu-g.rip,33.7865,-84.4454
|
|
||||||
nostr.plantroon.com,50.1025,8.6299
|
|
||||||
relay.lifpay.me,1.2897,103.8501
|
|
||||||
relay-rpi.edufeed.org,49.4453,11.0222
|
|
||||||
nostr.stakey.net,52.5250,5.7181
|
|
||||||
wot.sudocarlos.com,43.7064,-79.3986
|
|
||||||
relay.orangepill.ovh,49.0127,1.9694
|
|
||||||
relay.digitalezukunft.cyou,45.5088,-73.5878
|
|
||||||
nostr.chaima.info,50.1155,8.6842
|
|
||||||
relay.degmods.com,50.4779,12.3713
|
|
||||||
relay.varke.eu,52.6958,6.1944
|
|
||||||
relay-testnet.k8s.layer3.news,37.3394,-121.8950
|
|
||||||
strfry.felixzieger.de,50.1025,8.6299
|
|
||||||
relay.lnfi.network,38.9209,-77.5039
|
|
||||||
x.kojira.io,37.7621,-122.3971
|
|
||||||
nostr.sathoarder.com,48.5839,7.7455
|
|
||||||
relay-dev.satlantis.io,40.8344,-74.1377
|
|
||||||
relay.getsafebox.app,43.7064,-79.3986
|
|
||||||
gnostr.com,42.6975,23.3241
|
|
||||||
wot.brightbolt.net,47.6928,-116.7850
|
|
||||||
shu05.shugur.net,48.8534,2.3488
|
|
||||||
relay.nsnip.io,60.1695,24.9354
|
|
||||||
nostr.bilthon.dev,25.8130,-80.2320
|
|
||||||
relay.sincensura.org,37.7621,-122.3971
|
|
||||||
nostr.tac.lol,47.4740,-122.2610
|
|
||||||
yabu.me,35.6090,139.7302
|
|
||||||
travis-shears-nostr-relay-v2.fly.dev,41.8119,-87.6873
|
|
||||||
nostrja-kari.heguro.com,37.7621,-122.3971
|
|
||||||
orangesync.tech,50.9333,6.9500
|
|
||||||
nostr.agentcampfire.com,52.3740,4.8897
|
|
||||||
relay.angor.io,50.1155,8.6842
|
|
||||||
nostr.middling.mydns.jp,35.8089,140.1185
|
|
||||||
nostr.spaceshell.xyz,37.7621,-122.3971
|
|
||||||
relay.13room.space,37.7621,-122.3971
|
|
||||||
nostr.snowbla.de,60.1695,24.9354
|
|
||||||
relay.laantungir.net,45.5088,-73.5878
|
relay.laantungir.net,45.5088,-73.5878
|
||||||
nostr.rohoss.com,48.1374,11.5755
|
relay.2nix.de,60.1695,24.9354
|
||||||
nostr.diakod.com,37.7621,-122.3971
|
relay.artx.market,43.7064,-79.3986
|
||||||
nostr.hifish.org,47.3667,8.5500
|
|
||||||
nostr.0x7e.xyz,47.5056,8.7241
|
|
||||||
relay.wolfcoil.com,35.6090,139.7302
|
|
||||||
relay.davidebtc.me,50.1155,8.6842
|
|
||||||
relay.hodl.ar,-32.9468,-60.6393
|
relay.hodl.ar,-32.9468,-60.6393
|
||||||
relay.etch.social,41.2619,-95.8608
|
relay.0xchat.com,1.2897,103.8501
|
||||||
strfry.openhoofd.nl,51.5717,3.7042
|
relay.nostar.org,37.7621,-122.3971
|
||||||
relay.ru.ac.th,13.7540,100.5014
|
wot.dtonon.com,37.7621,-122.3971
|
||||||
relay.ngengine.org,53.3331,-6.2489
|
relayone.soundhsa.com,39.0997,-94.5786
|
||||||
nostr.kalf.org,52.3740,4.8897
|
|
||||||
relay.nosto.re,51.3700,6.1681
|
|
||||||
nostr.now,35.6090,139.7302
|
|
||||||
wot.nostr.place,30.2672,-97.7431
|
|
||||||
relay.damus.io,37.7621,-122.3971
|
|
||||||
relay.primal.net,37.7621,-122.3971
|
relay.primal.net,37.7621,-122.3971
|
||||||
relay.zone667.com,60.1695,24.9354
|
relay.holzeis.me,37.7621,-122.3971
|
||||||
relay.usefusion.ai,38.7135,-78.1594
|
nostr.overmind.lol,37.7621,-122.3971
|
||||||
relay.mccormick.cx,52.3740,4.8897
|
relay.chakany.systems,37.7621,-122.3971
|
||||||
alien.macneilmediagroup.com,37.7621,-122.3971
|
x.kojira.io,37.7621,-122.3971
|
||||||
orangepiller.org,60.1695,24.9354
|
relay.mostro.network,40.8344,-74.1377
|
||||||
offchain.pub,34.0522,-118.2437
|
|
||||||
nostr-relay.zimage.com,34.0522,-118.2437
|
|
||||||
tollbooth.stens.dev,51.4566,7.0123
|
|
||||||
relay.vrtmrz.net,37.7621,-122.3971
|
|
||||||
nostrelay.memory-art.xyz,37.7621,-122.3971
|
|
||||||
relay-admin.thaliyal.com,40.8220,-74.4488
|
|
||||||
relay.tapestry.ninja,40.8043,-74.0121
|
relay.tapestry.ninja,40.8043,-74.0121
|
||||||
nostr.oxtr.dev,50.4779,12.3713
|
relay.satsdays.com,1.2897,103.8501
|
||||||
articles.layer3.news,37.3394,-121.8950
|
|
||||||
relay.conduit.market,37.7621,-122.3971
|
|
||||||
internationalright-wing.org,-22.5986,-48.8003
|
|
||||||
relay01.lnfi.network,39.0997,-94.5786
|
|
||||||
nostr-02.dorafactory.org,1.2897,103.8501
|
|
||||||
nostr.coincrowd.fund,39.0437,-77.4875
|
|
||||||
ribo.eu.nostria.app,52.3740,4.8897
|
|
||||||
nostr.night7.space,50.4779,12.3713
|
|
||||||
relay.bitcoindistrict.org,37.7621,-122.3971
|
|
||||||
relay.sigit.io,50.4779,12.3713
|
relay.sigit.io,50.4779,12.3713
|
||||||
|
nostr-02.yakihonne.com,1.3215,103.6957
|
||||||
|
inbox.azzamo.net,52.2284,21.0522
|
||||||
|
ribo.eu.nostria.app,52.3740,4.8897
|
||||||
|
nostr.coincrowd.fund,39.0437,-77.4875
|
||||||
|
relay.snort.social,53.3331,-6.2489
|
||||||
|
wheat.happytavern.co,37.7621,-122.3971
|
||||||
|
relay.mess.ch,47.1345,9.0964
|
||||||
|
zap.watch,45.5088,-73.5878
|
||||||
|
relay.exit.pub,50.4779,12.3713
|
||||||
|
nostr-relay.zimage.com,34.0522,-118.2437
|
||||||
|
relay.illuminodes.com,47.6062,-122.3321
|
||||||
|
nostr.massmux.com,50.1155,8.6842
|
||||||
|
nostr.zenon.network,40.7143,-74.0060
|
||||||
|
strfry.openhoofd.nl,51.5717,3.7042
|
||||||
|
nostr-rs-relay.dev.fedibtc.com,39.0437,-77.4875
|
||||||
|
vidono.apps.slidestr.net,48.8534,2.3488
|
||||||
|
r.bitcoinhold.net,37.7621,-122.3971
|
||||||
|
nostr-relay.cbrx.io,37.7621,-122.3971
|
||||||
|
relay.chorus.community,50.1155,8.6842
|
||||||
|
relay.tagayasu.xyz,45.4112,-75.6981
|
||||||
|
wot.downisontheup.ca,47.6062,-122.3321
|
||||||
|
nostr.snowbla.de,60.1695,24.9354
|
||||||
|
relay.lnfi.network,37.3394,-121.8950
|
||||||
|
satsage.xyz,37.3924,-121.9623
|
||||||
|
relay.usefusion.ai,38.7135,-78.1594
|
||||||
|
nostr.red5d.dev,37.7621,-122.3971
|
||||||
|
nostr-relay.shirogaku.xyz,37.7621,-122.3971
|
||||||
|
social.proxymana.net,60.1695,24.9354
|
||||||
|
cyberspace.nostr1.com,40.7143,-74.0060
|
||||||
|
relay.g1sms.fr,43.9298,2.1480
|
||||||
|
prl.plus,55.7522,37.6156
|
||||||
|
nos.lol,50.4779,12.3713
|
||||||
|
wot.nostr.place,30.2672,-97.7431
|
||||||
|
nostrelay.circum.space,51.4566,7.0123
|
||||||
|
strfry.felixzieger.de,50.1025,8.6299
|
||||||
|
relay.nosto.re,51.3700,6.1681
|
||||||
|
relay01.lnfi.network,39.0997,-94.5786
|
||||||
|
relay.ngengine.org,53.3331,-6.2489
|
||||||
|
relay.bullishbounty.com,37.7621,-122.3971
|
||||||
|
nostr.openhoofd.nl,51.5717,3.7042
|
||||||
|
nostr.0x7e.xyz,47.5056,8.7241
|
||||||
|
relay-rpi.edufeed.org,49.4453,11.0222
|
||||||
|
relayrs.notoshi.win,37.7621,-122.3971
|
||||||
|
temp.iris.to,37.7621,-122.3971
|
||||||
|
nostr.spaceshell.xyz,37.7621,-122.3971
|
||||||
|
relay.jeffg.fyi,43.7064,-79.3986
|
||||||
|
nostr.rohoss.com,48.1374,11.5755
|
||||||
|
nostr.vulpem.com,49.4542,11.0775
|
||||||
|
nostr-02.czas.top,51.2217,6.7762
|
||||||
|
a.nos.lol,50.4779,12.3713
|
||||||
|
nostr.pleb.one,38.6273,-90.1979
|
||||||
|
relay.nostrdice.com,-33.8678,151.2073
|
||||||
|
relay.credenso.cafe,43.4254,-80.5112
|
||||||
|
relay.wolfcoil.com,35.6090,139.7302
|
||||||
|
no.str.cr,9.9339,-84.0849
|
||||||
|
relay-dev.satlantis.io,40.8344,-74.1377
|
||||||
|
nostr.liberty.fans,38.8003,-90.6265
|
||||||
|
relay.bitcoindistrict.org,37.7621,-122.3971
|
||||||
|
relay.arx-ccn.com,50.4779,12.3713
|
||||||
|
relay.conduit.market,37.7621,-122.3971
|
||||||
|
nostr.rikmeijer.nl,50.4779,12.3713
|
||||||
|
nostr.sathoarder.com,48.5839,7.7455
|
||||||
|
nostrelites.org,41.8500,-87.6500
|
||||||
|
relay.mattybs.lol,37.7621,-122.3971
|
||||||
|
nostr.spicyz.io,37.7621,-122.3971
|
||||||
|
fanfares.nostr1.com,40.7143,-74.0060
|
||||||
|
nostr.coincards.com,43.7064,-79.3986
|
||||||
|
nostr.tac.lol,47.4740,-122.2610
|
||||||
|
relay.copylaradio.com,50.7990,-1.0913
|
||||||
|
dev-nostr.bityacht.io,25.0531,121.5264
|
||||||
|
relay.olas.app,50.4779,12.3713
|
||||||
|
articles.layer3.news,37.3394,-121.8950
|
||||||
|
nostr.diakod.com,37.7621,-122.3971
|
||||||
|
relay.nostraddress.com,37.7621,-122.3971
|
||||||
|
relay.sincensura.org,37.7621,-122.3971
|
||||||
|
relay.vrtmrz.net,37.7621,-122.3971
|
||||||
|
nostr.mikoshi.de,51.2217,6.7762
|
||||||
|
nostr.thaliyal.com,40.8220,-74.4488
|
||||||
|
shu05.shugur.net,48.8534,2.3488
|
||||||
|
orangepiller.org,60.1695,24.9354
|
||||||
|
relay.mockingyou.com,37.5483,-121.9886
|
||||||
|
nostr.primz.org,37.7621,-122.3971
|
||||||
|
nostr-relay.amethyst.name,35.7721,-78.6386
|
||||||
|
relay.lifpay.me,1.2897,103.8501
|
||||||
|
nproxy.kristapsk.lv,60.1695,24.9354
|
||||||
|
relay.etch.social,41.2619,-95.8608
|
||||||
|
relay.siamdev.cc,13.9178,100.4240
|
||||||
|
relay.goodmorningbitcoin.com,37.7621,-122.3971
|
||||||
|
nostr.rblb.it,37.7621,-122.3971
|
||||||
|
relay.nsnip.io,60.1695,24.9354
|
||||||
|
nostr.myshosholoza.co.za,52.3710,4.9042
|
||||||
|
relay.varke.eu,52.6958,6.1944
|
||||||
|
nostr.agentcampfire.com,52.3740,4.8897
|
||||||
|
relay.barine.co,37.7621,-122.3971
|
||||||
|
gnostr.com,42.6975,23.3241
|
||||||
|
offchain.pub,34.0522,-118.2437
|
||||||
|
strfry.shock.network,41.8847,-88.2040
|
||||||
|
relay03.lnfi.network,39.0997,-94.5786
|
||||||
|
nostr.tadryanom.me,37.7621,-122.3971
|
||||||
|
relay.zone667.com,60.1695,24.9354
|
||||||
|
relay.21e6.cz,50.0880,14.4208
|
||||||
|
nostrue.com,40.8043,-74.0121
|
||||||
|
nostr.kalf.org,52.3740,4.8897
|
||||||
|
relay.cosmicbolt.net,37.3924,-121.9623
|
||||||
|
relay04.lnfi.network,39.0997,-94.5786
|
||||||
|
relay.freeplace.nl,52.3740,4.8897
|
||||||
|
relay02.lnfi.network,39.0997,-94.5786
|
||||||
|
relay2.angor.io,50.1155,8.6842
|
||||||
|
relay.mccormick.cx,52.3740,4.8897
|
||||||
|
nostr.kungfu-g.rip,33.7865,-84.4454
|
||||||
|
nostr.n7ekb.net,47.5707,-122.2221
|
||||||
|
nostr.jerrynya.fun,31.2222,121.4581
|
||||||
|
travis-shears-nostr-relay-v2.fly.dev,41.8119,-87.6873
|
||||||
|
nostr.l484.com,30.2960,-97.6396
|
||||||
|
purplerelay.com,50.1155,8.6842
|
||||||
|
soloco.nl,37.7621,-122.3971
|
||||||
|
nostr.oxtr.dev,50.4779,12.3713
|
||||||
|
nostr-relay.online,37.7621,-122.3971
|
||||||
|
relay.nostr.wirednet.jp,35.9356,139.3044
|
||||||
|
nostr-rs-relay-ishosta.phamthanh.me,37.7621,-122.3971
|
||||||
|
wot.sudocarlos.com,43.7064,-79.3986
|
||||||
|
relay.lumina.rocks,49.4453,11.0222
|
||||||
|
relay.cypherflow.ai,48.8534,2.3488
|
||||||
|
relay.fr13nd5.com,50.1155,8.6842
|
||||||
|
nostr.einundzwanzig.space,50.1155,8.6842
|
||||||
|
nostr.roundrockbitcoiners.com,40.8043,-74.0121
|
||||||
|
adre.su,59.9386,30.3141
|
||||||
|
relay.digitalezukunft.cyou,45.5088,-73.5878
|
||||||
|
kitchen.zap.cooking,37.7621,-122.3971
|
||||||
|
nostr.thebiglake.org,32.7244,-96.6755
|
||||||
|
wot.nostr.party,36.1659,-86.7844
|
||||||
|
relay-testnet.k8s.layer3.news,37.3394,-121.8950
|
||||||
|
nostr-relay-1.trustlessenterprise.com,37.7621,-122.3971
|
||||||
|
schnorr.me,37.7621,-122.3971
|
||||||
|
nostr.bilthon.dev,25.8130,-80.2320
|
||||||
|
relay.ru.ac.th,13.7540,100.5014
|
||||||
|
nostr.sagaciousd.com,49.2497,-123.1193
|
||||||
|
inbox.relays.land,50.1155,8.6842
|
||||||
|
nostr.jfischer.org,49.4453,11.0222
|
||||||
|
nostr.stakey.net,52.5250,5.7181
|
||||||
|
nostrja-kari.heguro.com,37.7621,-122.3971
|
||||||
|
fenrir-s.notoshi.win,37.7621,-122.3971
|
||||||
|
relay.dwadziesciajeden.pl,52.2298,21.0118
|
||||||
|
nostr-02.dorafactory.org,1.2897,103.8501
|
||||||
|
nostr.now,35.6090,139.7302
|
||||||
|
nostream.breadslice.com,37.7621,-122.3971
|
||||||
|
shu02.shugur.net,21.4901,39.1862
|
||||||
|
librerelay.aaroniumii.com,37.7621,-122.3971
|
||||||
|
nostr.middling.mydns.jp,35.8089,140.1185
|
||||||
|
relay.nostrcheck.me,37.7621,-122.3971
|
||||||
|
relay.getsafebox.app,43.7064,-79.3986
|
||||||
|
shu04.shugur.net,25.0772,55.3093
|
||||||
|
alien.macneilmediagroup.com,37.7621,-122.3971
|
||||||
|
nostr.community.ath.cx,45.5088,-73.5878
|
||||||
|
relay.nostrhub.fr,50.1155,8.6842
|
||||||
|
relay.moinsen.com,50.4779,12.3713
|
||||||
|
relay.nostr.net,50.4779,12.3713
|
||||||
|
noxir.kpherox.dev,34.8436,135.5084
|
||||||
|
relay.damus.io,37.7621,-122.3971
|
||||||
|
relay.bitcoinveneto.org,64.1355,-21.8954
|
||||||
|
nostr.hifish.org,47.3667,8.5500
|
||||||
|
nostr.yael.at,52.3740,4.8897
|
||||||
|
relay.nostr.band,60.1695,24.9354
|
||||||
|
relay.utxo.farm,34.7331,135.8183
|
||||||
|
relay.hook.cafe,37.7621,-122.3971
|
||||||
|
nostr.camalolo.com,24.1469,120.6839
|
||||||
|
premium.primal.net,37.7621,-122.3971
|
||||||
|
dev-relay.lnfi.network,39.0997,-94.5786
|
||||||
|
relay.evanverma.com,40.8344,-74.1377
|
||||||
|
nostr.blankfors.se,60.1695,24.9354
|
||||||
|
relay.bitcoinartclock.com,50.4779,12.3713
|
||||||
|
black.nostrcity.club,41.8119,-87.6873
|
||||||
|
relay.nostx.io,37.7621,-122.3971
|
||||||
|
nostr.huszonegy.world,47.4984,19.0404
|
||||||
|
nostr.carroarmato0.be,50.8517,3.6089
|
||||||
|
nostr.21crypto.ch,46.5160,6.6328
|
||||||
|
relay-admin.thaliyal.com,40.8220,-74.4488
|
||||||
|
nos.xmark.cc,51.0344,2.3768
|
||||||
|
khatru.nostrver.se,51.3700,6.1681
|
||||||
|
wot.codingarena.top,50.4779,12.3713
|
||||||
|
internationalright-wing.org,-22.5986,-48.8003
|
||||||
|
relay.stream.labs.h3.se,59.3294,18.0687
|
||||||
|
nostr-2.21crypto.ch,46.5160,6.6328
|
||||||
|
relay.puresignal.news,37.7621,-122.3971
|
||||||
|
solo.itsalldance.space,32.7244,-96.6755
|
||||||
|
slick.mjex.me,39.0437,-77.4875
|
||||||
|
pyramid.fiatjaf.com,50.1155,8.6842
|
||||||
|
portal-relay.pareto.space,49.4453,11.0222
|
||||||
|
relay.hasenpfeffr.com,39.0437,-77.4875
|
||||||
|
relay.degmods.com,50.4779,12.3713
|
||||||
|
strfry.bonsai.com,37.8716,-122.2728
|
||||||
|
relay.wavlake.com,41.2619,-95.8608
|
||||||
|
orangesync.tech,50.9333,6.9500
|
||||||
|
nostr.smut.cloud,37.7621,-122.3971
|
||||||
|
inbox.mycelium.social,38.6273,-90.1979
|
||||||
|
nostr.satstralia.com,64.1355,-21.8954
|
||||||
|
nostr-relay.psfoundation.info,39.0437,-77.4875
|
||||||
|
nostr.rtvslawenia.com,49.4542,11.0775
|
||||||
|
nostr.lojong.info,37.7621,-122.3971
|
||||||
|
nostr.plantroon.com,50.1025,8.6299
|
||||||
|
relay.toastr.net,40.8043,-74.0121
|
||||||
|
relay.nostrhub.tech,49.4453,11.0222
|
||||||
|
relay.nostromo.social,49.4542,11.0775
|
||||||
|
yabu.me,35.6090,139.7302
|
||||||
|
n.ok0.org,-36.8485,174.7635
|
||||||
|
wot.brightbolt.net,47.6928,-116.7850
|
||||||
|
relay.javi.space,43.4628,11.8807
|
||||||
|
vitor.nostr1.com,40.7143,-74.0060
|
||||||
|
relay.notoshi.win,13.3622,100.9835
|
||||||
|
relay.coinos.io,37.7621,-122.3971
|
||||||
|
wot.nostr.net,37.7621,-122.3971
|
||||||
|
nostr.night7.space,50.4779,12.3713
|
||||||
|
nostr.azzamo.net,52.2284,21.0522
|
||||||
|
nostrelay.memory-art.xyz,37.7621,-122.3971
|
||||||
|
relay.13room.space,37.7621,-122.3971
|
||||||
|
relay.agorist.space,52.3740,4.8897
|
||||||
|
relay.artiostr.ch,37.7621,-122.3971
|
||||||
|
relay.letsfo.com,52.2298,21.0118
|
||||||
|
relay.mwaters.net,50.9519,1.8563
|
||||||
|
nostr.makibisskey.work,37.7621,-122.3971
|
||||||
|
theoutpost.life,64.1355,-21.8954
|
||||||
|
nostr.mom,50.4779,12.3713
|
||||||
|
santo.iguanatech.net,40.8344,-74.1377
|
||||||
|
nostr-03.dorafactory.org,1.2897,103.8501
|
||||||
|
nostr.data.haus,50.4779,12.3713
|
||||||
|
nostr.2b9t.xyz,34.0522,-118.2437
|
||||||
|
relay.endfiat.money,37.7621,-122.3971
|
||||||
|
srtrelay.c-stellar.net,37.7621,-122.3971
|
||||||
|
relay.electriclifestyle.com,26.1223,-80.1434
|
||||||
|
nostr-01.yakihonne.com,1.3215,103.6957
|
||||||
|
nostr.hekster.org,37.3924,-121.9623
|
||||||
|
relay.magiccity.live,25.8130,-80.2320
|
||||||
|
relay.orangepill.ovh,49.0127,1.9694
|
||||||
|
relay5.bitransfer.org,37.7621,-122.3971
|
||||||
|
nostr.4rs.nl,49.4453,11.0222
|
||||||
|
tollbooth.stens.dev,51.4566,7.0123
|
||||||
|
wot.soundhsa.com,39.0997,-94.5786
|
||||||
|
relay.nostr.vet,52.5273,5.7228
|
||||||
|
relay.davidebtc.me,50.1155,8.6842
|
||||||
|
nostr.chaima.info,50.1155,8.6842
|
||||||
|
wot.sebastix.social,51.3700,6.1681
|
||||||
|
relay.angor.io,50.1155,8.6842
|
||||||
|
nostr.notribe.net,40.8344,-74.1377
|
||||||
|
purpura.cloud,37.7621,-122.3971
|
||||||
|
wot.geektank.ai,17.1210,-61.8433
|
||||||
|
|||||||
|
+618
-623
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user