diff --git a/.github/workflows/relay-count-tracker.yml b/.github/workflows/relay-count-tracker.yml index 52a7e6f..0da6d42 100644 --- a/.github/workflows/relay-count-tracker.yml +++ b/.github/workflows/relay-count-tracker.yml @@ -50,7 +50,7 @@ jobs: - name: Check for changes id: git-check run: | - git add assets/bitchat_relay_count_chart.png assets/total_relay_count_chart.png + git add assets/bitchat_relay_count_chart.png assets/total_relay_count_chart.png assets/relay_history.json git diff --staged --exit-code || echo "changes=true" >> $GITHUB_OUTPUT - name: Commit and push changes diff --git a/.github/workflows/update-relay-data.yml b/.github/workflows/update-relay-data.yml index fe794da..d6c1b25 100644 --- a/.github/workflows/update-relay-data.yml +++ b/.github/workflows/update-relay-data.yml @@ -51,6 +51,7 @@ jobs: - name: Update relay geolocation data run: | cat relay_discovery_results.json | jq .functioning_relays[] | ./filter_bitchat_relays.sh | sed 's|^wss://||' | python3 relays_geo_lookup.py nostr_relays.csv + python3 scripts/geolocate_all_relays.py - name: Check for changes id: git-check @@ -62,7 +63,7 @@ jobs: run: | git config --local user.email "action@github.com" git config --local user.name "GitHub Action" - git add relay_discovery_results.json nostr_relays.csv + git add relay_discovery_results.json nostr_relays.csv all_relays_geo.csv git commit -m "Automated update of relay data - $(date -u)" git push env: @@ -75,4 +76,5 @@ jobs: path: | relay_discovery_results.json nostr_relays.csv + all_relays_geo.csv retention-days: 30 diff --git a/.gitignore b/.gitignore index aee0669..9d274c3 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,7 @@ ENV/ # IDE files .idea/ .vscode/ + +# GeoIP Databases +dbip-city-ipv4-num.csv +dbip-city-ipv4-num.csv.gz diff --git a/all_relays_geo.csv b/all_relays_geo.csv new file mode 100644 index 0000000..3c7c96a --- /dev/null +++ b/all_relays_geo.csv @@ -0,0 +1,963 @@ +Relay URL,Latitude,Longitude,IsBitChat +nostr-relay.corb.net:443,38.8353,-104.822,1 +nittom.nostr1.com,40.7057,-74.0136,1 +relay.nostr.blockhenge.com,39.0438,-77.4874,1 +relay.artx.market:443,43.6548,-79.3885,1 +eu.nostr.pikachat.org:443,49.4543,11.0746,1 +nostr.oxtr.dev,50.4754,12.3683,1 +nostr.2b9t.xyz:443,34.0549,-118.243,1 +nostr.tagomago.me,42.3601,-71.0589,1 +nittom.nostr1.com:443,40.7057,-74.0136,1 +relay.getsafebox.app:443,43.6532,-79.3832,1 +nostr.spaceshell.xyz,43.6532,-79.3832,1 +social.amanah.eblessing.co,48.1046,11.6002,1 +relay.trustr.ing:443,43.6548,-79.3885,1 +rele.speyhard.fi,51.5072,-0.127586,1 +relay.bitmacro.cloud,43.6532,-79.3832,1 +cs-relay.nostrdev.com,50.4754,12.3683,1 +nostr.quali.chat:443,60.1699,24.9384,1 +nostr.oxtr.dev:443,50.4754,12.3683,1 +testnet-relay.samt.st,40.8302,-74.1299,1 +relay.lotek-distro.com,43.6532,-79.3832,1 +myvoiceourstory.org,37.3598,-121.981,1 +relay.mostr.pub,43.6532,-79.3832,1 +relay.mccormick.cx,52.3563,4.95714,1 +relay.layer.systems:443,49.0291,8.35695,1 +relay.vrtmrz.net:443,43.6532,-79.3832,1 +relay.endfiat.money,59.3327,18.0656,1 +relay.nostr-check.me,43.6532,-79.3832,1 +relay.nearhood.co.uk,51.5072,-0.127586,1 +wot.sudocarlos.com,43.6532,-79.3832,1 +relay.fundstr.me,42.3601,-71.0589,1 +relay.mostro.network,40.8302,-74.1299,1 +nostr-check.me,43.6532,-79.3832,1 +nostr.plantroon.com,50.1013,8.62643,1 +vault.iris.to:443,43.6532,-79.3832,1 +relay-dev.gulugulu.moe:443,43.6532,-79.3832,1 +relay.libernet.app:443,43.6532,-79.3832,1 +speakeasy.cellar.social,49.4543,11.0746,1 +nostr.pbfs.io,50.4754,12.3683,1 +syb.lol:443,43.6532,-79.3832,1 +relay5.bitransfer.org,43.6532,-79.3832,1 +relay.mwaters.net,50.9871,2.12554,1 +insta-relay.apps3.slidestr.net,40.4167,-3.70329,1 +nostrja-kari.heguro.com,43.6532,-79.3832,1 +nostr-kyomu-haskell.onrender.com,37.7775,-122.397,1 +schnorr.me:443,43.6532,-79.3832,1 +us-east.nostr.pikachat.org,39.0438,-77.4874,1 +nostr.bitcoiner.social:443,47.6743,-117.112,1 +nostr.carroarmato0.be,50.914,3.21378,1 +relay.plebeian.market:443,50.1109,8.68213,1 +nostr.spaceshell.xyz:443,43.6532,-79.3832,1 +relay.wisp.talk,49.4543,11.0746,1 +dev-relay.nostreon.com,60.1699,24.9384,1 +dev.relay.stream,43.6532,-79.3832,1 +test.thedude.cloud,50.1109,8.68213,1 +relay.0xchat.com,43.6532,-79.3832,1 +nostr.computingcache.com:443,34.0356,-118.442,1 +nostr.debate.report,50.1109,8.68213,1 +nostr.tac.lol:443,47.4748,-122.273,1 +nostr.tac.lol,47.4748,-122.273,1 +spookstr2.nostr1.com,40.7057,-74.0136,1 +bitchat.nostr1.com,40.7057,-74.0136,1 +nostr-rs-relay-ishosta.phamthanh.me,43.6532,-79.3832,1 +top.testrelay.top:443,43.6532,-79.3832,1 +relay-rpi.edufeed.org,49.4521,11.0767,1 +nostrelay.circum.space,52.6907,4.8181,1 +nostrbtc.com,43.6532,-79.3832,1 +articles.layer3.news,37.3387,-121.885,1 +x.kojira.io,43.6532,-79.3832,1 +relay.minibolt.info:443,43.6532,-79.3832,1 +nostr2.thalheim.io,49.4543,11.0746,1 +bitcoiner.social,47.6743,-117.112,1 +relayrs.notoshi.win,43.6532,-79.3832,1 +nostr.stakey.net:443,52.3676,4.90414,1 +srtrelay.c-stellar.net,43.6532,-79.3832,1 +nostr.liberty.fans,36.9104,-89.5875,1 +relay.cosmicbolt.net:443,37.3986,-121.964,1 +strfry.shock.network,39.0438,-77.4874,1 +nostr.sathoarder.com:443,48.5734,7.75211,1 +relay.veganostr.com,60.1699,24.9384,1 +nostr-relay.xbytez.io:443,50.6924,3.20113,1 +nostr-relay-1.trustlessenterprise.com:443,43.6532,-79.3832,1 +ribo.us.nostria.app:443,43.6532,-79.3832,1 +nostr-relay.psfoundation.info:443,39.0438,-77.4874,1 +fanfares.nostr1.com,40.7057,-74.0136,1 +relay.agorist.space,52.3734,4.89406,1 +nostr.nodesmap.com,59.3327,18.0656,1 +relay.ru.ac.th,13.7607,100.627,1 +relay.degmods.com,50.4754,12.3683,1 +cache.trustr.ing,43.6548,-79.3885,1 +relay.edufeed.org,49.4521,11.0767,1 +nostr.hekster.org,37.3986,-121.964,1 +nostr.vulpem.com,49.4543,11.0746,1 +relay.cosmicbolt.net,37.3986,-121.964,1 +bendernostur.duckdns.org:8443,50.1109,8.68213,1 +nostr.data.haus,50.4754,12.3683,1 +nostr.spicyz.io,43.6532,-79.3832,1 +relay.mulatta.io,37.5665,126.978,1 +relay.guggero.org,46.5971,9.59652,1 +relayrs.notoshi.win:443,43.6532,-79.3832,1 +purplerelay.com:443,43.6532,-79.3832,1 +nrs-02.darkcloudarcade.com,39.9526,-75.1652,1 +nostr.hekster.org:443,37.3986,-121.964,1 +relay.openfarmtools.org,60.1699,24.9384,1 +nostr-pub.wellorder.net,45.5201,-122.99,1 +relay.sincensura.org,43.6532,-79.3832,1 +relay.staging.plebeian.market,51.5072,-0.127586,1 +nostrride.io,37.3986,-121.964,1 +relay.thecryptosquid.com,50.4754,12.3683,1 +relay.olas.app,60.1699,24.9384,1 +relay.illuminodes.com,43.6532,-79.3832,1 +ribo.nostria.app,43.6532,-79.3832,1 +us-east.nostr.pikachat.org:443,39.0438,-77.4874,1 +relay.dreamith.to:443,43.6532,-79.3832,1 +ribo.nostria.app:443,43.6532,-79.3832,1 +nostr.rtvslawenia.com:443,49.4543,11.0746,1 +wot.dergigi.com,64.1476,-21.9392,1 +relay.chorus.community,48.5333,10.7,1 +schnorr.me,43.6532,-79.3832,1 +nostr.thalheim.io:443,60.1699,24.9384,1 +nostr.islandarea.net,35.4669,-97.6473,1 +relay.satlantis.io,40.8054,-74.0241,1 +ynostr.yael.at,60.1699,24.9384,1 +chat-relay.zap-work.com:443,43.6532,-79.3832,1 +relay.nostrdice.com,-33.8688,151.209,1 +wot.codingarena.top,50.4754,12.3683,1 +public.crostr.com,43.6532,-79.3832,1 +nostr2.girino.org,43.6532,-79.3832,1 +shu01.shugur.net,21.4902,39.2246,1 +nostr.rtvslawenia.com,49.4543,11.0746,1 +nrs-01.darkcloudarcade.com,39.1008,-94.5811,1 +strfry.ymir.cloud,43.6532,-79.3832,1 +relay.nostrian-conquest.com,41.223,-111.974,1 +premium.primal.net,43.6532,-79.3832,1 +relay.mrmave.work,43.6532,-79.3832,1 +nostr.wecsats.io:443,43.6532,-79.3832,1 +adre.su,59.9311,30.3609,1 +relay02.lnfi.network,35.6764,139.65,1 +spookstr2.nostr1.com:443,40.7057,-74.0136,1 +nostr.hifish.org:443,47.4244,8.57658,1 +nostr-rs-relay.dev.fedibtc.com,39.0438,-77.4874,1 +r.0kb.io,32.789,-96.7989,1 +nostr-01.yakihonne.com,1.32123,103.695,1 +nostr-relay.corb.net,38.8353,-104.822,1 +nostr-2.21crypto.ch,47.5356,8.73209,1 +relay.homeinhk.xyz,35.694,139.754,1 +antiprimal.net,43.6532,-79.3832,1 +relay.arx-ccn.com,50.4754,12.3683,1 +nostr.notribe.net,40.8302,-74.1299,1 +nostr-relay.psfoundation.info,39.0438,-77.4874,1 +relay.chorus.community:443,48.5333,10.7,1 +strfry.bonsai.com:443,39.0438,-77.4874,1 +relay.wavlake.com:443,41.2619,-95.8608,1 +wot.nostr.party,36.1659,-86.7844,1 +relay.lacompagniemaximus.com,45.3147,-73.8785,1 +relay.ditto.pub:443,43.6532,-79.3832,1 +nostr.self-determined.de,53.495,10.2542,1 +relay.wisp.talk:443,49.4543,11.0746,1 +relay-rpi.edufeed.org:443,49.4521,11.0767,1 +nostr.ps1829.com,33.8851,130.883,1 +relay.laantungir.net,-19.4692,-42.5315,1 +nostr.overmind.lol,43.6532,-79.3832,1 +relayone.soundhsa.com:443,39.1008,-94.5811,1 +nos.lol,50.4754,12.3683,1 +nostr.thebiglake.org:443,32.71,-96.6745,1 +nrs-02.darkcloudarcade.com:443,39.9526,-75.1652,1 +speakeasy.cellar.social:443,49.4543,11.0746,1 +relay2.veganostr.com,60.1699,24.9384,1 +nostr.wild-vibes.ts.net,48.8566,2.35222,1 +relay.camelus.app,45.5201,-122.99,1 +relay.toastr.net,40.8054,-74.0241,1 +dev.relay.edufeed.org:443,49.4521,11.0767,1 +relay.artx.market,43.6548,-79.3885,1 +relay.getsafebox.app,43.6532,-79.3832,1 +relay-testnet.k8s.layer3.news:443,37.3387,-121.885,1 +relay.satmaxt.xyz:443,43.6532,-79.3832,1 +nostr-relay-1.trustlessenterprise.com,43.6532,-79.3832,1 +slick.mjex.me,39.0418,-77.4744,1 +conduitl2.fly.dev,37.7648,-122.432,1 +chat-relay.zap-work.com,43.6532,-79.3832,1 +strfry.bonsai.com,39.0438,-77.4874,1 +nostr-relay.cbrx.io,43.6532,-79.3832,1 +bcast.girino.org,43.6532,-79.3832,1 +bucket.coracle.social,37.7775,-122.397,1 +ribo.eu.nostria.app,43.6532,-79.3832,1 +relay.bornheimer.app,51.5072,-0.127586,1 +relay.lightning.pub:443,39.0438,-77.4874,1 +x.kojira.io:443,43.6532,-79.3832,1 +nostrcheck.me,43.6532,-79.3832,1 +relay.paulstephenborile.com,49.4543,11.0746,1 +relay.mostr.pub:443,43.6532,-79.3832,1 +nostr.ps1829.com:443,33.8851,130.883,1 +nostr.unkn0wn.world,46.8499,9.53287,1 +relay.libernet.app,43.6532,-79.3832,1 +relay.snort.social,53.3498,-6.26031,1 +relay-fra.zombi.cloudrodion.com,48.8566,2.35222,1 +nostrcity-club.fly.dev:443,37.7648,-122.432,1 +thecitadel.nostr1.com,40.7057,-74.0136,1 +relaisnostr.trivaco.fr,48.5734,7.75211,1 +nostr.hifish.org,47.4244,8.57658,1 +relay.endfiat.money:443,59.3327,18.0656,1 +relay.lanacoin-eternity.com:443,40.8302,-74.1299,1 +relay.bullishbounty.com:443,43.6532,-79.3832,1 +relay.lanacoin-eternity.com,40.8302,-74.1299,1 +relay.nostar.org,43.6532,-79.3832,1 +relay.lightning.pub,39.0438,-77.4874,1 +relay.nostrhub.fr,48.1045,11.6004,1 +relay.underorion.se,50.1109,8.68213,1 +relay.lab.rytswd.com:443,49.4543,11.0746,1 +rilo.nostria.app,43.6532,-79.3832,1 +nostrelay.circum.space:443,52.6907,4.8181,1 +relay.binaryrobot.com:443,43.6532,-79.3832,1 +treuzkas.branruz.com,48.8575,2.35138,1 +relay-testnet.k8s.layer3.news,37.3387,-121.885,1 +nostr-dev.wellorder.net,45.5201,-122.99,1 +relay.typedcypher.com,51.5072,-0.127586,1 +relay.samt.st,40.8302,-74.1299,1 +relay.openresist.com:443,43.6532,-79.3832,1 +relay.nostr.place:443,43.6532,-79.3832,1 +relay.wellorder.net,45.5201,-122.99,1 +kasztanowa.bieda.it,43.6532,-79.3832,1 +nostr.mom,50.4754,12.3683,1 +relay.jeffg.fyi:443,43.6532,-79.3832,1 +relay.staging.commonshub.brussels,49.4543,11.0746,1 +relay.mccormick.cx:443,52.3563,4.95714,1 +relay.routstr.com,59.4016,17.9455,1 +relay.damus.io:443,43.6532,-79.3832,1 +nostr.thalheim.io,60.1699,24.9384,1 +nostr-relay.amethyst.name,39.0067,-77.4291,1 +relay-arg.zombi.cloudrodion.com:443,1.35208,103.82,1 +relay.notoshi.win,13.3622,100.983,1 +soloco.nl,43.6532,-79.3832,1 +nostr.pbfs.io:443,50.4754,12.3683,1 +nostr-relay.xbytez.io,50.6924,3.20113,1 +relayone.soundhsa.com,39.1008,-94.5811,1 +nostr.girino.org:443,43.6532,-79.3832,1 +relay.layer.systems,49.0291,8.35695,1 +relay.sigit.io,50.4754,12.3683,1 +nostr.purpura.cloud,43.6532,-79.3832,1 +nostr.wecsats.io,43.6532,-79.3832,1 +nrs-01.darkcloudarcade.com:443,39.1008,-94.5811,1 +relay.klabo.world,47.2343,-119.853,1 +testr.nymble.world,40.8054,-74.0241,1 +relay.plebeian.market,50.1109,8.68213,1 +relay-dev.gulugulu.moe,43.6532,-79.3832,1 +relay.zone667.com,60.1699,24.9384,1 +relay2.orangesync.tech,40.7128,-74.006,1 +relay.nostriot.com,41.5695,-83.9786,1 +nostr.thebiglake.org,32.71,-96.6745,1 +top.testrelay.top,43.6532,-79.3832,1 +relay.zone667.com:443,60.1699,24.9384,1 +nostr-relay.nextblockvending.com,47.2343,-119.853,1 +nostr.dlcdevkit.com:443,40.0992,-83.1141,1 +relay.nostriches.club,43.6532,-79.3832,1 +relay.minibolt.info,43.6532,-79.3832,1 +relay.aarpia.com,37.3986,-121.964,1 +shu02.shugur.net,21.4902,39.2246,1 +relay.lab.rytswd.com,49.4543,11.0746,1 +nostrcity-club.fly.dev,37.7648,-122.432,1 +nostr.easycryptosend.it,43.6532,-79.3832,1 +relay.mostro.network:443,40.8302,-74.1299,1 +relay.beginningend.com:443,35.2227,-97.4786,1 +aeon.libretechsystems.xyz,55.486,9.86577,1 +mostro-p2p.tech,50.1109,8.68213,1 +relay.trotters.cc,43.6532,-79.3832,1 +nostr.carroarmato0.be:443,50.914,3.21378,1 +nostr-relay.zimage.com,34.0549,-118.243,1 +relay.gulugulu.moe:443,43.6532,-79.3832,1 +relay.fountain.fm,43.6532,-79.3832,1 +relay.agora.social,50.7383,15.0648,1 +relay.snotr.nl:49999,52.0195,4.42946,1 +relay.goodmorningbitcoin.com,43.6532,-79.3832,1 +relay.fountain.fm:443,43.6532,-79.3832,1 +strfry.apps3.slidestr.net,40.4167,-3.70329,1 +nostrelites.org,41.8781,-87.6298,1 +bridge.tagomago.me,42.3601,-71.0589,1 +dev.relay.edufeed.org,49.4521,11.0767,1 +relay.nostu.be,40.4167,-3.70329,1 +relay.npubhaus.com,43.6532,-79.3832,1 +relay.beginningend.com,35.2227,-97.4786,1 +relay.plebchain.club,43.6532,-79.3832,1 +yabu.me,35.6092,139.73,1 +nostr2.girino.org:443,43.6532,-79.3832,1 +relay.wavlake.com,41.2619,-95.8608,1 +relay.bowlafterbowl.com,32.9483,-96.7299,1 +relay.cypherflow.ai:443,48.8575,2.35138,1 +relay.islandbitcoin.com:443,12.8498,77.6545,1 +relay.ditto.pub,43.6532,-79.3832,1 +nostr.bitcoiner.social,47.6743,-117.112,1 +nostr-relay.amethyst.name:443,39.0067,-77.4291,1 +nostr.21crypto.ch,47.5356,8.73209,1 +nas01xanthosnet.synology.me:7778,47.1285,8.74735,1 +relay-fra.zombi.cloudrodion.com:443,48.8566,2.35222,1 +relay.mmwaves.de:443,48.8575,2.35138,1 +satsage.xyz,37.3986,-121.964,1 +r.0kb.io:443,32.789,-96.7989,1 +purplerelay.com,43.6532,-79.3832,1 +ynostr.yael.at:443,60.1699,24.9384,1 +nostr.aruku.ovh,1.27994,103.849,1 +nostr.janx.com,43.6532,-79.3832,1 +nostr.twinkle.lol,51.902,7.6657,1 +relay.dreamith.to,43.6532,-79.3832,1 +relay.mmwaves.de,48.8575,2.35138,1 +nostr.2b9t.xyz,34.0549,-118.243,1 +strfry.shock.network:443,39.0438,-77.4874,1 +nostr.girino.org,43.6532,-79.3832,1 +relay.comcomponent.com,43.6532,-79.3832,1 +relay2.angor.io:443,48.1046,11.6002,1 +relay.mitchelltribe.com:443,39.0438,-77.4874,1 +relay.typedcypher.com:443,51.5072,-0.127586,1 +testnet-relay.samt.st:443,40.8302,-74.1299,1 +relay.agorist.space:443,52.3734,4.89406,1 +fanfares.nostr1.com:443,40.7057,-74.0136,1 +blossom.gnostr.cloud,43.6532,-79.3832,1 +articles.layer3.news:443,37.3387,-121.885,1 +nostr.stakey.net,52.3676,4.90414,1 +relayone.geektank.ai,39.1008,-94.5811,1 +relay1.orangesync.tech,44.7839,-106.941,1 +relay.wavefunc.live,41.8781,-87.6298,1 +vault.iris.to,43.6532,-79.3832,1 +freelay.sovbit.host,60.1699,24.9384,1 +relay.vrtmrz.net,43.6532,-79.3832,1 +ribo.eu.nostria.app:443,43.6532,-79.3832,1 +relay.notoshi.win:443,13.3622,100.983,1 +herbstmeister.com,34.0549,-118.243,1 +relay.satmaxt.xyz,43.6532,-79.3832,1 +nostr.computingcache.com,34.0356,-118.442,1 +nexus.libernet.app:443,43.6532,-79.3832,1 +rilo.nostria.app:443,43.6532,-79.3832,1 +relay0.gfcom.info,13.7853,100.67,1 +nos.lol:443,50.4754,12.3683,1 +prl.plus,55.7628,37.5983,1 +relay.openresist.com,43.6532,-79.3832,1 +nostr-2.21crypto.ch:443,47.5356,8.73209,1 +relay.staging.plebeian.market:443,51.5072,-0.127586,1 +nostr.mom:443,50.4754,12.3683,1 +wot.utxo.one,43.6532,-79.3832,1 +node.kommonzenze.de,49.4521,11.0767,1 +nostr.myshosholoza.co.za,52.3913,4.66545,1 +relay.nostr.place,43.6532,-79.3832,1 +nostr.chaima.info,50.1109,8.68213,1 +relay.gulugulu.moe,43.6532,-79.3832,1 +syb.lol,43.6532,-79.3832,1 +nostr.dlcdevkit.com,40.0992,-83.1141,1 +dev-nostr.bityacht.io,43.6532,-79.3832,1 +relay.jeffg.fyi,43.6532,-79.3832,1 +wot.makenomistakes.ca,43.7064,-79.3986,1 +nostr.4rs.nl,49.0291,8.35696,1 +relay.nostrmap.net:443,60.1699,24.9384,1 +nostr.snowbla.de,60.1699,24.9384,1 +no.str.cr:443,10.6352,-85.4378,1 +temp.iris.to,43.6532,-79.3832,1 +nexus.libernet.app,43.6532,-79.3832,1 +nostr.overmind.lol:443,43.6532,-79.3832,1 +relay.mitchelltribe.com,39.0438,-77.4874,1 +relay.tapestry.ninja,40.8054,-74.0241,1 +nostr.quali.chat,60.1699,24.9384,1 +ribo.us.nostria.app,43.6532,-79.3832,1 +relay.ohstr.com,43.6532,-79.3832,1 +nostr.data.haus:443,50.4754,12.3683,1 +relay.islandbitcoin.com,12.8498,77.6545,1 +relay.binaryrobot.com,43.6532,-79.3832,1 +bitcoiner.social:443,47.6743,-117.112,1 +relay.sigit.io:443,50.4754,12.3683,1 +relay.edufeed.org:443,49.4521,11.0767,1 +relay.paulstephenborile.com:443,49.4543,11.0746,1 +nostr.spicyz.io:443,43.6532,-79.3832,1 +relay2.angor.io,48.1046,11.6002,1 +relay.primal.net,43.6532,-79.3832,1 +0x-nostr-relay.fly.dev,37.7648,-122.432,1 +nostr.88mph.life,52.1941,-2.21905,1 +relay.olas.app:443,60.1699,24.9384,1 +cs-relay.nostrdev.com:443,50.4754,12.3683,1 +nostr-rs-relay-qj1h.onrender.com,37.7775,-122.397,1 +nostr.islandarea.net:443,35.4669,-97.6473,1 +nostr.n7ekb.net,47.4941,-122.294,1 +relay.nostriot.com:443,41.5695,-83.9786,1 +nostr.blankfors.se,60.1699,24.9384,1 +wot.shaving.kiwi,43.6532,-79.3832,1 +relay01.lnfi.network,35.6764,139.65,1 +relay.veganostr.com:443,60.1699,24.9384,1 +nostr-01.yakihonne.com:443,1.32123,103.695,1 +relay.wavefunc.live:443,41.8781,-87.6298,1 +no.str.cr,10.6352,-85.4378,1 +nostr.bond,50.1109,8.68213,1 +relay.bullishbounty.com,43.6532,-79.3832,1 +relay.lacompagniemaximus.com:443,45.3147,-73.8785,1 +blossom.gnostr.cloud:443,43.6532,-79.3832,1 +relay.lanavault.space:443,60.1699,24.9384,1 +relay.lanavault.space,60.1699,24.9384,1 +relay.0xchat.com:443,43.6532,-79.3832,1 +eu.nostr.pikachat.org,49.4543,11.0746,1 +relay-arg.zombi.cloudrodion.com,1.35208,103.82,1 +relay.nostrian-conquest.com:443,41.223,-111.974,1 +relay.ohstr.com:443,43.6532,-79.3832,1 +nostr.chaima.info:443,50.1109,8.68213,1 +relay.nostrmap.net,60.1699,24.9384,1 +nostr.sathoarder.com,48.5734,7.75211,1 +relay.nostr.net,43.6532,-79.3832,1 +nostr.plantroon.com:443,50.1013,8.62643,1 +wot.nostr.place,43.6532,-79.3832,1 +relay.fckstate.net,59.3293,18.0686,1 +relay.cypherflow.ai,48.8575,2.35138,1 +relay.nostu.be:443,40.4167,-3.70329,1 +relay.nostx.io,43.6532,-79.3832,1 +relay.btcforplebs.com,43.6532,-79.3832,1 +nostr-verified.wellorder.net,45.5201,-122.99,1 +portal-relay.pareto.space,49.0291,8.35696,1 +relay.damus.io,43.6532,-79.3832,1 +nostr.snowbla.de:443,60.1699,24.9384,1 +relay.nostrcheck.me,43.6532,-79.3832,1 +relay.trustr.ing,43.6548,-79.3885,1 +nfrelay.app,43.6532,-79.3832,0 +nostr.mannuk.rocks,51.5072,-0.127586,0 +nostr.cltrrd.us,43.6532,-79.3832,0 +relay.hugosplash.com,50.4754,12.3683,0 +nostrlab.beitmenotyou.online,43.6532,-79.3832,0 +relay.sovbit.host,60.1699,24.9384,0 +nostr.mtrj.cz,50.073,14.4559,0 +boadee.babystepsbtc.com,43.6532,-79.3832,0 +nostrel.fbarone.net,43.6532,-79.3832,0 +public.crostr.com:443,43.6532,-79.3832,0 +cyberspace.nostr1.com:443,40.7057,-74.0136,0 +relay1.blackbyte.nl,51.7125,6.02361,0 +nostr.21mio.space,49.0291,8.35696,0 +bitcoinmajlis.nostr1.com,40.7057,-74.0136,0 +relay.398ja.xyz:443,39.1008,-94.5811,0 +relay.nostrops.com,32.71,-96.6745,0 +willow.timegate.co,43.6532,-79.3832,0 +git.shakespeare.diy,43.6532,-79.3832,0 +relay.sovereignhybridcompute.com,40.7128,-74.006,0 +nostr.anhkagi.net,50.6924,3.20113,0 +nostr.cypherpunk.today,60.1699,24.9384,0 +relay.highlighter.com,60.1699,24.9384,0 +shu04.shugur.net,25.2048,55.2708,0 +relay.powr.build,43.6532,-79.3832,0 +relay.sagittarius.copylaradio.com:443,43.7775,2.18885,0 +relay.bitcoinaudio.co,43.6532,-79.3832,0 +powrelay.xyz,52.3947,4.66399,0 +news.utxo.one,43.6532,-79.3832,0 +xmr.usenostr.org,49.0291,8.35696,0 +nostr-relay.dont-panic.dev,49.0322,8.5735,0 +custom.fiatjaf.com,50.1109,8.68213,0 +relay.klockenga.xyz,33.7501,-84.3885,0 +outbox.cyphernomad.com,43.6532,-79.3832,0 +nostr.slothy.win,43.6532,-79.3832,0 +social.olsentribe.fyi,42.3601,-71.0589,0 +chat.wisp.talk,49.4543,11.0746,0 +relay.infinityover21.org,38.958,-77.3592,0 +relay.nas.codingmerc.com,32.7157,-117.161,0 +relay.d11n.net,53.0839,8.80449,0 +wot.grapevine.network,40.8302,-74.1299,0 +nostr.dontyou.click,60.1699,24.9384,0 +relay.shawnyeager.com,36.1659,-86.7844,0 +trending.relays.land,50.1109,8.68213,0 +relay.satsdisco.com,43.6532,-79.3832,0 +haven.obscureindex.com,38.7475,-77.5317,0 +relay.freeplace.nl,52.4608,6.56528,0 +nostr.dpinkerton.com:443,-33.8688,151.209,0 +beeswax.hivetalk.org,40.8302,-74.1299,0 +poe.nostr1.com,40.7057,-74.0136,0 +relay.tinfoilhash.com,40.7608,-111.891,0 +relay.enclaved.org,60.1699,24.9384,0 +relay.jerseyplebs.com,43.6532,-79.3832,0 +hortopato.cc,52.6907,4.8181,0 +relay.allsocial.me,41.8967,12.4822,0 +relay.inkan.cc,39.1008,-94.5811,0 +purplepag.es,60.1699,24.9384,0 +nostr.azuki.blue,43.6532,-79.3832,0 +ngit.danconwaydev.com,60.1699,24.9384,0 +relay.libertas-primordium.com,39.7392,-104.99,0 +relay.ziomc.com,50.0755,14.4378,0 +relay.nostrplebs.com,60.1699,24.9384,0 +nostr.cloud.vinney.xyz,40.8302,-74.1299,0 +nostr-privrelay.mamemo.online,43.6532,-79.3832,0 +relay.bitmacro.io,48.8566,2.35222,0 +nostr.1sat.org,1.35208,103.82,0 +relay.bulbasaur.fun,34.0549,-118.243,0 +dwebcamp.nos.social,40.8302,-74.1299,0 +strfry.corebreach.com,43.6532,-79.3832,0 +relay.internationalright-wing.org:443,-22.5022,-48.7114,0 +profiles.nostrver.se,51.1792,5.89444,0 +relay.nostromo.social,49.4543,11.0746,0 +nostr.choe.kr,43.6532,-79.3832,0 +nostr.onbitcoinstandard.com,43.6532,-79.3832,0 +nostr.infero.net,35.6764,139.65,0 +nostr.heavyrubberslave.com,43.6532,-79.3832,0 +nostr.vps.satsnode.xyz,52.3676,4.90414,0 +relay.willen.tech,43.6532,-79.3832,0 +nostr.dler.com:443,25.0501,121.565,0 +relay.bitcoindistrict.org,43.6532,-79.3832,0 +relay2.inkan.cc,39.1008,-94.5811,0 +haven.dergigi.com,64.1466,-21.9426,0 +nostr.holbrook.no,37.0873,-8.11701,0 +relay.benthecarman.com,48.8719,2.31311,0 +wot.czas.plus,41.0082,28.9784,0 +nostr.cizmar.net,51.9265,13.9007,0 +relay.dapsnostrrelay.xyz,35.6092,139.73,0 +relay.nostrzh.org,43.6532,-79.3832,0 +relay.staging.dvines.org,41.2619,-95.8608,0 +kotukonostr.onrender.com,37.7775,-122.397,0 +wot.danieldaquino.me,50.4754,12.3683,0 +inner.sebastix.social,51.1792,5.89444,0 +nostr.1f52b.xyz,51.4968,-0.018337,0 +relay.raybuni.com,43.6532,-79.3832,0 +offchain.bostr.online,43.6532,-79.3832,0 +nostr.mas-family.eu,59.3327,18.0656,0 +kraftig.nostr1.com,40.7057,-74.0136,0 +nostr.0x7e.xyz:443,47.4949,8.71954,0 +nostr.travisshears.com,49.0291,8.35705,0 +nr.rosano.ca,50.4754,12.3683,0 +relay.kcbitcoiners.com,32.9483,-96.7299,0 +cyberspace.nostr1.com,40.7057,-74.0136,0 +nostr.lifelog.be,50.4754,12.3683,0 +relay.mojobus.co,43.6532,-79.3832,0 +relay.lexingtonbitcoin.org,43.6532,-79.3832,0 +nostr.quantx.synology.me,51.1552,14.9885,0 +relay.spacetomatoes.net,42.3601,-71.0589,0 +hotrightnow.nostr1.com,40.7057,-74.0136,0 +relay.monomi.org,51.5072,-0.127586,0 +srcr.nl:8443,51.78,4.61667,0 +relay.ripsline.com,50.1109,8.68213,0 +relay.nsite.run,37.9838,23.7275,0 +relay.patrickulrich.com,43.6532,-79.3832,0 +devrelay.azzamo.net,50.6924,3.20113,0 +relay.utxo.one,43.6532,-79.3832,0 +notes.miguelalmodo.pr,52.2245,8.826,0 +relay-dev.satlantis.io:443,40.8302,-74.1299,0 +nostr.mineracks.com:443,-33.7457,151.143,0 +relay.nsite.lol,32.9483,-96.7299,0 +relay.trustroots.org,43.6532,-79.3832,0 +bots.utxo.one,43.6532,-79.3832,0 +nostr.sgn.space,40.4329,-3.81338,0 +nostr.t-rg.ws,49.7902,6.08557,0 +relay.reya.su,1.32123,103.695,0 +relay.braydon.com,37.3986,-121.964,0 +nrelay.helche.cc,43.6532,-79.3832,0 +haven.girino.org,43.6532,-79.3832,0 +asia.azzamo.net,1.27994,103.849,0 +relay.rkus.se,59.3666,16.5077,0 +btc.klendazu.com,41.2861,1.24993,0 +relay.noderunners.network,52.2633,21.0283,0 +nostr.babyshark.win,43.6532,-79.3832,0 +nsite.run,45.4642,9.18998,0 +relay.sdbitcoiners.com,43.6532,-79.3832,0 +relay.bramm.xyz,45.5029,-73.5723,0 +relay.nostr.nu,50.1109,8.68213,0 +undersound.link,46.2044,6.14316,0 +nostr.lorentz.is,40.0542,-85.9509,0 +nostr.superfriends.online:443,43.6532,-79.3832,0 +chadf.nostr1.com,40.7057,-74.0136,0 +primus.nostr1.com,40.7057,-74.0136,0 +relay.floof.sbs,52.3676,4.90414,0 +pnostr.self-determined.de,53.495,10.2542,0 +nostr.kosmos.org,50.4754,12.3683,0 +relay.anmore.me,49.704,-124.918,0 +nostr.night7.space:443,50.4754,12.3683,0 +armada.sharegap.net,43.6532,-79.3832,0 +relay.nosto.re,51.1792,5.89444,0 +relay.nateeatschicken.xyz,50.1109,8.68213,0 +relay.coinos.io,43.6532,-79.3832,0 +nostr.czas.plus,41.0082,28.9784,0 +relay.alex71btc.com:443,43.6532,-79.3832,0 +relay.inforsupports.com,43.6532,-79.3832,0 +nostr.0x7e.xyz,47.4949,8.71954,0 +relay.ygg.gratis,43.6532,-79.3832,0 +relay2.ngengine.org:443,43.6532,-79.3832,0 +relay.2020117.xyz,43.6532,-79.3832,0 +relay.ngengine.org:443,43.6532,-79.3832,0 +premium.nostr.bar,43.6532,-79.3832,0 +nostream-production-643a.up.railway.app,37.79,-122.401,0 +chronicle.dtonon.com,43.6532,-79.3832,0 +fabian.nostr1.com,40.7057,-74.0136,0 +relay.coincreek.com,60.1699,24.9384,0 +relay.paratge.copylaradio.com,48.8575,2.35138,0 +relay.powforge.dev,40.8054,-74.0241,0 +haven.aaro.cc,34.0549,-118.243,0 +feedback.relays.land,50.1109,8.68213,0 +fido-news.z7.ai,43.2141,27.9147,0 +nostr.sleepingcro.ws,52.3554,4.95188,0 +nostr.timegate.co,43.6532,-79.3832,0 +relay.235421.xyz,43.6532,-79.3832,0 +relay-nwc.rizful.com,40.8054,-74.0241,0 +relay.blkstr.io,43.6532,-79.3832,0 +relay.angor.io:443,48.1046,11.6002,0 +relay.bitcoincafe.de,50.4754,12.3683,0 +relay.bitdevs.tw:443,25.0334,121.566,0 +relay.letsfo.com,52.2633,21.0283,0 +relay.masize.com,43.6532,-79.3832,0 +aquaticchickentheory.nostr1.com,40.7057,-74.0136,0 +nostr-relay.bitcoin.ninja,37.1534,-98.0312,0 +dev.calendar-relay.edufeed.org,49.4521,11.0767,0 +relay.geoffrey.one,52.3563,4.95714,0 +nrelay.c-stellar.net,43.6532,-79.3832,0 +paid.no.str.cr,10.6352,-85.4378,0 +gnostr.com,50.1113,8.71743,0 +nostr.sebastix.dev,52.1675,4.4859,0 +nostr.tadryanom.me,43.6532,-79.3832,0 +r.f7z.io,60.1699,24.9384,0 +blossom.sectiontwo.org,37.3986,-121.964,0 +relay.sharegap.net,43.6532,-79.3832,0 +relay2.sovereignengineering.io,40.7128,-74.006,0 +relay.keychat.io,34.0435,-118.252,0 +nostr.bitcoinplebs.de,52.5234,13.3224,0 +relay.bebond.net,43.6532,-79.3832,0 +relay.towardsliberty.com,47.4504,8.5297,0 +relay.bitdevs.tw,25.0334,121.566,0 +relay.mappingbitcoin.com,43.6532,-79.3832,0 +relay.paywithflash.com:443,51.5222,-0.62916,0 +haven.relayted.de,52.52,13.405,0 +nostr.2h2o.io,39.6323,-86.8579,0 +khatru.nostrver.se,51.1792,5.89444,0 +h.codingarena.top,50.4754,12.3683,0 +swarm.hivetalk.org,40.8302,-74.1299,0 +relay.ancapchan.info,59.3535,27.4001,0 +vitor.nostr1.com,40.7057,-74.0136,0 +haven.calva.dev,37.3986,-121.964,0 +relay.nsnip.io,50.4754,12.3683,0 +nostr.reckless.dev,35.2271,-80.8431,0 +nostr.d11n.net,53.0839,8.80449,0 +us.nostr.wine,43.6532,-79.3832,0 +relay.roro.copylaradio.com,45.764,4.83566,0 +relay-dev.satlantis.io,40.8302,-74.1299,0 +wot.girino.org,43.6532,-79.3832,0 +nostr.decentony.com,37.3986,-121.964,0 +frjosh.nostr1.com,40.7057,-74.0136,0 +relay.redundant.westernbtc.com,28.0716,-82.7239,0 +relay.guenoel.fr,47.2111,-1.55866,0 +nostr.2h2o.io:443,39.6323,-86.8579,0 +nerostr.xmr.rocks,49.4543,11.0746,0 +relay.nostrview.com,48.8575,2.35138,0 +relay.innis.xyz,47.6061,-122.333,0 +nostr.satoshisfrens.win,43.6532,-79.3832,0 +relay.mynostr.app,40.788,-74.0546,0 +ec2.f7z.io,60.1699,24.9384,0 +nostr.bgbitcoin.club,50.4754,12.3683,0 +relay.crostr.com,43.6532,-79.3832,0 +nostr.superfriends.online,43.6532,-79.3832,0 +relay.disobey.dev,43.6532,-79.3832,0 +nostr.azzamo.net:443,52.2633,21.0283,0 +relay.mcfamily.social,43.6532,-79.3832,0 +relay.cal3b.com,43.6532,-79.3832,0 +relay.zapstore.dev,49.4543,11.0746,0 +weboftrust.libretechsystems.xyz,55.4724,9.87335,0 +relay.littlebitstudios.com,43.6532,-79.3832,0 +relay.johnnyasantos.com,43.6532,-79.3832,0 +relaypag.es,52.2026,20.9397,0 +nostr.kaputtgart.social,52.52,13.405,0 +n.ka.st,49.8153,6.12958,0 +foton.solarpowe.red,28.6139,77.2088,0 +private.nostr.bar,43.6532,-79.3832,0 +nostr-relay.derekross.me,43.6532,-79.3832,0 +relay.jthecodemonkey.xyz,32.9618,-96.8292,0 +relay.og.coop,43.6532,-79.3832,0 +relay.nuts.cash,52.3676,4.90414,0 +christpill.nostr1.com,40.7057,-74.0136,0 +nostr.einundzwanzig.space,50.1109,8.68213,0 +inbox.azzamo.net,45.3147,-73.8785,0 +relay.s-w.art,43.6532,-79.3832,0 +nostr.jonmartins.com,50.1013,8.62643,0 +nostr.ufm.lol,51.902,7.6657,0 +relay.nostrich.vip,43.6532,-79.3832,0 +nostr.dpinkerton.com,-33.8688,151.209,0 +nostr.8777.ch,40.6032,-74.1819,0 +relay.nodana.app,37.7648,-122.432,0 +nostrrelay.taylorperron.com,45.5029,-73.5723,0 +relay.beta.fogtype.com,35.8099,140.12,0 +thingstr-relay.fly.dev,37.7648,-122.432,0 +nostr.kloudcover.com,45.8399,-119.701,0 +relay.cosmoduff.net,37.5485,-121.989,0 +relay.nostr.wirednet.jp:443,34.706,135.493,0 +profiles.nostr1.com,40.7057,-74.0136,0 +relay.danieldaquino.me,50.4754,12.3683,0 +nostrrelay.win,43.6532,-79.3832,0 +wot.nostr.sats4.life,49.0291,8.35696,0 +relay.unclezo.com,41.5868,-93.625,0 +nostr.asdf.mx,32.8382,-96.8789,0 +relay.anon.dev,43.6532,-79.3832,0 +relay-nostr.0xti.com,43.6532,-79.3832,0 +thebarn.nostr1.com,40.7057,-74.0136,0 +relay.corvusnostr.org,43.6532,-79.3832,0 +next.nsite.run,37.9838,23.7275,0 +relay2.blackbyte.nl,50.1109,8.68213,0 +relay.kubo.watch,51.1792,5.89444,0 +relay.21mil.me,38.6327,-90.1961,0 +lunchbox.sandwich.farm,52.3947,4.66399,0 +drops.basspistol.org,49.0291,8.35696,0 +tamby.mjex.me,39.0418,-77.4744,0 +relay.alex71btc.com,43.6532,-79.3832,0 +relay.nyanko.win,43.6532,-79.3832,0 +relay.paywithflash.com,51.5222,-0.62916,0 +nostr.rblb.it,43.6532,-79.3832,0 +relay.nostrdam.com,35.694,139.754,0 +nostr.briansunter.com,43.6532,-79.3832,0 +offchain.pub:443,39.1585,-94.5728,0 +relay2.ngengine.org,43.6532,-79.3832,0 +relay.nostrarabia.com,43.6532,-79.3832,0 +relay.hjkl.zip,43.6532,-79.3832,0 +test.nfrelay.app,43.6532,-79.3832,0 +relay.cocu.la,43.6532,-79.3832,0 +relay.basedboys.club,42.3601,-71.0589,0 +relay.geyser.fund,41.2619,-95.8608,0 +nostr.rubberdoll.cc,43.6532,-79.3832,0 +relay.javi.space,43.4633,11.8796,0 +relay.jmoose.rocks,60.1699,24.9384,0 +relay.kreweofkeys.net,40.8302,-74.1299,0 +relay.wasku.com,52.2633,21.0283,0 +relay.nyves.nl,51.1792,5.89444,0 +relay.unrug.tech,41.8781,-87.6298,0 +relay.buildingtheneighbourhood.org,45.5029,-73.5723,0 +nostr.wine,43.6532,-79.3832,0 +unostr.one,60.1699,24.9384,0 +hbr.coracle.social,32.9483,-96.7299,0 +relay2.contextvm.org,-19.4692,-42.5315,0 +nostr.rblb.it:443,43.6532,-79.3832,0 +relay.ngit.dev,50.4754,12.3683,0 +relay.noswhere.com,60.1699,24.9384,0 +140.f7z.io,60.1699,24.9384,0 +relay.1in7.com,37.3598,-121.981,0 +tortellino.basspistol.org,49.0291,8.35696,0 +relay.chontit.win,43.6532,-79.3832,0 +mine.yard-news.xyz,43.6532,-79.3832,0 +nwc.nostr1.com,40.7057,-74.0136,0 +nostr.pareto.space,49.0291,8.35696,0 +relay.angor.io,48.1046,11.6002,0 +relay.bitesize-media.com,49.4543,11.0746,0 +r.alphaama.com,60.1699,24.9384,0 +pyramid.self-determined.de,53.495,10.2542,0 +relay.bongbong.com,37.2318,-121.782,0 +h.600.wtf,49.4543,11.0746,0 +nwc.primal.net,43.6532,-79.3832,0 +relay.nos.social,40.8302,-74.1299,0 +relay.gouchinha.me,38.7333,-9.2,0 +nostr.bit4use.com,43.6532,-79.3832,0 +nostr.tgcs.com.au,-34.424,150.893,0 +relay.copylaradio.com:443,51.5072,-0.127586,0 +relay.nbswozlfpjuwc4y.boo,60.1699,24.9384,0 +nostr-relay.algotech.io,43.6532,-79.3832,0 +directory.yabu.me,35.6092,139.73,0 +paid-relay.nostr.blockhenge.com,39.0438,-77.4874,0 +relay.deepmarks.org,41.8781,-87.6298,0 +nostr.aerarium.money,32.71,-96.6745,0 +support.nostr1.com,40.7057,-74.0136,0 +nestr.nedao.ch,47.0151,6.98832,0 +nostr.meshup.net,49.4543,11.0746,0 +gitnostr.com,60.1699,24.9384,0 +relay.cashumints.space,52.2633,21.0283,0 +notemine.io,52.2026,20.9397,0 +relay.seq1.net,43.6532,-79.3832,0 +relay.bankless.at,52.5244,13.4105,0 +relay.redsh1ft.com,52.3676,4.90414,0 +haven.downisontheup.ca,34.0549,-118.243,0 +pareto.nostr1.com,40.7057,-74.0136,0 +kiir.us,43.6532,-79.3832,0 +relay1.privkey.io,25.7617,-80.1918,0 +kiwibuilders.nostr21.net,-36.8903,174.771,0 +nostr.planix.org,43.6532,-79.3832,0 +pow.relays.land,50.1109,8.68213,0 +nostr.256k1.dev,51.5072,-0.127586,0 +nostrelay.yeghro.com,43.6532,-79.3832,0 +relay.minibits.cash,49.4543,11.0746,0 +relay.kamenier-hamer.nl,52.7875,6.12083,0 +frens.nostr1.com,40.7057,-74.0136,0 +relay.nostr.sc,33.8508,-84.2173,0 +touchgrass.nostr1.com,40.7057,-74.0136,0 +podtards.com,40.334,-76.7891,0 +relay.398ja.xyz,39.1008,-94.5811,0 +relay.plume.website,39.8965,-80.1792,0 +relay.daniella.io,52.3676,4.90414,0 +nip13.girino.org,43.6532,-79.3832,0 +relay.arcanican.is,39.0438,-77.4874,0 +muxstr.northwest.io,45.8399,-119.701,0 +nostr21.com,40.7057,-74.0136,0 +relay.divine.video:443,41.2619,-95.8608,0 +relay.whodat.social,32.7767,-96.797,0 +relay.bitcoincafe.de:443,50.4754,12.3683,0 +shu03.shugur.net,25.2048,55.2708,0 +nostr.souverain.ovh,49.0929,1.46332,0 +relay.divine.video,41.2619,-95.8608,0 +nos.xmark.cc,50.6924,3.20113,0 +monitorlizard.nostr1.com,40.7057,-74.0136,0 +nostr.lopp.social,48.8219,2.3709,0 +relay.copper-idea.com,50.3986,8.07958,0 +relay.abvstudio.net,47.4748,-122.273,0 +relay.dolu.dev,43.6532,-79.3832,0 +nostr.schneimi.de:443,43.6532,-79.3832,0 +yestr.me,43.6532,-79.3832,0 +wot.nostr.net,43.6532,-79.3832,0 +ciao.rinbal.de,49.0291,8.35696,0 +nostr.1312.media,52.3563,4.95714,0 +relay.roro.copylaradio.com:443,45.764,4.83566,0 +nostr.azzamo.net,52.2633,21.0283,0 +relay.nostr.info,37.3598,-121.981,0 +hist.nostr.land,60.1699,24.9384,0 +relay.eyeofthekingdom.com,40.8302,-74.1299,0 +media.bujac.pl,53.3498,-6.26031,0 +relay.shuymn.me,43.6532,-79.3832,0 +relay.shosho.live,37.79,-122.401,0 +xmr.ithurtswhenip.ee,48.8714,2.32125,0 +relay.gifbuddy.lol,43.6532,-79.3832,0 +nostr.l00p.org,60.1699,24.9384,0 +nostr.mailbox.bz,50.0037,8.26225,0 +nostr.defencegeeks.net,40.7128,-74.006,0 +nostr.001.j5s9.dev,50.4754,12.3683,0 +relay.nostr.hu,47.5386,19.0658,0 +nostr.tbxnetworx.de:443,47.7228,9.96456,0 +public.plume.website,39.8965,-80.1792,0 +norelay.org,43.6532,-79.3832,0 +nostr.jcloud.es,37.3728,-6.04589,0 +relay.astrolabe.finance,39.0438,-77.4874,0 +relay.nakabender.lol,43.6532,-79.3832,0 +relay.thedude.cloud,50.1109,8.68213,0 +nostr.nothing.is-lost.org,51.8833,8.51667,0 +jaunters.basspistol.org,49.0291,8.35696,0 +relay.bebond.net:443,43.6532,-79.3832,0 +nostr.grooveix.com,49.029,8.35695,0 +wot.tealeaf.dev,33.7501,-84.3885,0 +nostr.corebreach.com,45.5152,-122.678,0 +nostr.bitpunk.fm,43.6532,-79.3832,0 +nostr.kfx.fr,48.8575,2.35138,0 +theforest.nostr1.com,40.7057,-74.0136,0 +relay3.openvine.co,37.3986,-121.964,0 +news.yard-news.xyz,43.6532,-79.3832,0 +haven.danconwaydev.com,60.1699,24.9384,0 +goskatespots.nostr1.com,40.7057,-74.0136,0 +nostr.noderunners.network,52.2633,21.0283,0 +nostr-relay.irgenius.org,43.6532,-79.3832,0 +nostr.438b.net,41.4156,-81.9235,0 +nostr.bitcoinist.org,49.4543,11.0746,0 +relay.welikethecoin.com,38.6327,-90.1959,0 +relay.corpum.com:443,32.9483,-96.7299,0 +relay.ynniv.com,39.0438,-77.4874,0 +nip85.nostr.band,60.1699,24.9384,0 +bcast.seutoba.com.br,43.6532,-79.3832,0 +cult.cash,32.9483,-96.7299,0 +haven.tealeaf.dev,33.7501,-84.3885,0 +nostr.frostr.xyz,32.9483,-96.7299,0 +hodlbod.coracle.social,32.9483,-96.7299,0 +backup.keychat.io,34.0435,-118.252,0 +relay.westernbtc.com,44.5401,-123.368,0 +relay.nostraddress.com,43.6532,-79.3832,0 +haven.nostrfreedom.net,43.6532,-79.3832,0 +inbox.cyphernomad.com,43.6532,-79.3832,0 +relay.fizx.uk,51.9194,19.1451,0 +nostr.dler.com,25.0367,121.524,0 +u2p.anhkagi.net,50.6924,3.20113,0 +search.nostrarchives.com,49.4543,11.0746,0 +nip85.nostr1.com,40.7057,-74.0136,0 +czas.top,51.2277,6.77346,0 +noornode.nostr1.com,40.7057,-74.0136,0 +wbc.nostr1.com,40.7057,-74.0136,0 +relay3.openvine.co:443,37.3986,-121.964,0 +relay.bitcoinku.sh,43.6532,-79.3832,0 +nostr.bgbitcoin.club:443,50.4754,12.3683,0 +relay2.contextvm.org:443,-19.4692,-42.5315,0 +wot.yesnostr.net,50.9871,2.12554,0 +haven.nostrsec.net,43.6532,-79.3832,0 +relai.nostr.thbl.fr,50.6924,3.20113,0 +relay.cloistr.xyz,43.6532,-79.3832,0 +sketch.nostr1.com,40.7057,-74.0136,0 +relay.ngengine.org,43.6532,-79.3832,0 +relay.unsupervised.online,-33.9258,18.4232,0 +nrelay.xyz,50.3986,8.07958,0 +nostr.alexanarcho.live,50.1109,8.68213,0 +riley.timegate.co,43.6532,-79.3832,0 +relay.wikifreedia.xyz,60.1699,24.9384,0 +relay.nostr.wirednet.jp,34.706,135.493,0 +relay.ryzizub.com,43.6532,-79.3832,0 +cellar.nostr.wine,43.6532,-79.3832,0 +relay.nomus.io,33.4484,-112.074,0 +relay.corpum.com,32.9483,-96.7299,0 +nostr.sectiontwo.org,37.3986,-121.964,0 +relay.nostr.info:443,37.3598,-121.981,0 +nip85.brainstorm.world,40.8302,-74.1299,0 +nostr.reelnetwork.eu,60.1699,24.9384,0 +nostr.extrabits.io,33.4484,-112.074,0 +relay.daann.xyz,43.6532,-79.3832,0 +nostr.app.runonflux.io,48.8575,2.35138,0 +nostr.easydns.ca,43.6532,-79.3832,0 +relay.tchncs.de,60.1699,24.9384,0 +nostr.night7.space,50.4754,12.3683,0 +relay.sagittarius.copylaradio.com,43.7775,2.18885,0 +nostr.psychoet.nexus,64.1466,-21.9426,0 +relay.dwadziesciajeden.pl,52.2297,21.0122,0 +relay.wahid.my,37.7648,-122.432,0 +nostr.mineracks.com,-33.7457,151.143,0 +syndicate.basspistol.org,49.0291,8.35696,0 +relay01.lnfi.network:443,35.6764,139.65,0 +fiatjaf.com,50.1109,8.68213,0 +nostr.tbxnetworx.de,47.7228,9.96456,0 +relay.bitmacro.pro,43.6532,-79.3832,0 +relay.nostrdvm.com,52.52,13.405,0 +nostream.macewan.nz,37.79,-122.401,0 +nostr.thank.eu,47.3769,8.54169,0 +nostrum.satoshinakamoto.win,43.6532,-79.3832,0 +nostr-dev.azuki.blue,43.6532,-79.3832,0 +git.upleb.uk,59.4016,17.9455,0 +nostr.schneimi.de,43.6532,-79.3832,0 +ithurtswhenip.ee,51.5072,-0.127586,0 +relay.vanderwarker.family,40.8218,-74.45,0 +data.relay.vanderwarker.family,40.8218,-74.45,0 +damus.bostr.online,43.6532,-79.3832,0 +relay.digitalhowl.ch,43.6532,-79.3832,0 +ec1.f7z.io,60.1699,24.9384,0 +kevinwilliam.nostr1.com,40.7057,-74.0136,0 +nostr.xmr.rocks,49.4543,11.0746,0 +relay.earthly.city,34.1749,-118.54,0 +nostr.sovransystems.com,41.885,-87.7845,0 +relay.nstr.cc,60.1699,24.9384,0 +offchain.pub,39.1585,-94.5728,0 +relay.coinos.io:443,43.6532,-79.3832,0 +nostr.btcforgens.com,59.3293,18.0686,0 +rrr.pupupu.monster,43.6532,-79.3832,0 +relay.blkstr.io:443,43.6532,-79.3832,0 +wot.relayted.de,52.52,13.405,0 +relay.denver.space,39.5481,-104.974,0 +bitcoinostr.duckdns.org,38.9504,-0.14007,0 +relay.bnos.space:443,43.6532,-79.3832,0 +relay.caramboo.com,50.1109,8.68213,0 +relay.thebluepulse.com,49.4521,11.0767,0 +nostr.sudocarlos.com,43.6532,-79.3832,0 +leeten.basspistol.org,49.0291,8.35696,0 +nostr1.bananabit.net,50.9871,2.12554,0 +vampire.nostr1.com,40.7057,-74.0136,0 +blackwingcartel.libretechsystems.xyz,55.4724,9.87335,0 +relay.nosotros.app,39.0438,-77.4874,0 +nostr.ichigo.everydayimshuflin.com,37.7709,-122.416,0 +relay.s-w.art:443,43.6532,-79.3832,0 +relay.gambit.golf,43.6532,-79.3832,0 +nostr.hybner.org,46.9895,28.8602,0 +us.azzamo.net,45.3147,-73.8785,0 +nostr.caramboo.com,50.1154,8.68058,0 +user.kindpag.es,52.3947,4.66399,0 +relay.jtron.net,38.9072,-77.0369,0 +relay.mananguri.me,43.6532,-79.3832,0 +sgl.rustcorp.com.au,1.32123,103.695,0 +nostr.nadajnik.org,50.1109,8.68213,0 +nostr.sgiath.dev,49.8314,18.2776,0 +aegis.relayted.de,52.52,13.405,0 +indexer.coracle.social,47.4748,-122.273,0 +moonyoon0000.nostr1.com,40.7057,-74.0136,0 +nostr.bitcoinx.gr,49.0291,8.35696,0 +nostr.neilalexander.dev,43.6532,-79.3832,0 +relay.nostr.watch,32.789,-96.7989,0 +relay.xavierdamman.com,49.4543,11.0746,0 +nostr.koning-degraaf.nl,52.2375,4.82639,0 +haven.slidestr.net,43.6532,-79.3832,0 +nostr-relay.sn-media.com,60.1699,24.9384,0 +relay.decentnewsroom.com,50.4754,12.3683,0 +chillstr.nostr1.com,40.7057,-74.0136,0 +relay.dergigi.com,64.1466,-21.9426,0 +haven.superfriends.online,43.6532,-79.3832,0 +relay.lawallet.ar,43.6532,-79.3832,0 +nostr.intrepid18.com,38.9072,-77.0369,0 +relay.commonshub.brussels,49.4543,11.0746,0 +relay.copylaradio.com,51.5072,-0.127586,0 +nostr.typenull.net,43.6532,-79.3832,0 +nostr.derogab.com,43.6532,-79.3832,0 +haven.ronniesamuel.com,18.2148,-63.0574,0 +nostr.hiperbolajanus.com,43.6532,-79.3832,0 +relay.azzamo.net,52.2633,21.0283,0 +relay.757btc.org,40.8054,-74.0241,0 +relay.bnos.space,43.6532,-79.3832,0 diff --git a/assets/bitchat_relay_count_chart.png b/assets/bitchat_relay_count_chart.png index 49706e1..2c962e8 100644 Binary files a/assets/bitchat_relay_count_chart.png and b/assets/bitchat_relay_count_chart.png differ diff --git a/assets/relay_history.json b/assets/relay_history.json new file mode 100644 index 0000000..e31d1d9 --- /dev/null +++ b/assets/relay_history.json @@ -0,0 +1,706 @@ +{ + "bitchat": [ + { + "date": "2026-04-01", + "count": 313, + "commit": "14911a0291e0a93fab740f299528a50ef0bce41f" + }, + { + "date": "2026-04-02", + "count": 318, + "commit": "81247a5a203e39c1f3900964f099952f8f84cb86" + }, + { + "date": "2026-04-03", + "count": 326, + "commit": "32a220a6e03854c1903fcdfdc43ea48eee98bc0d" + }, + { + "date": "2026-04-04", + "count": 324, + "commit": "c9feb6caa6104a222e05e2e31924599aa44aa045" + }, + { + "date": "2026-04-05", + "count": 307, + "commit": "9d2c122a77924b3dd354c0bc58b9f48fb3afe745" + }, + { + "date": "2026-04-06", + "count": 310, + "commit": "189f0cb61660fbf1f890b0f9e4d6ee5123dc3319" + }, + { + "date": "2026-04-07", + "count": 316, + "commit": "4f807176c3302e848df6f3ad914f710409c45088" + }, + { + "date": "2026-04-08", + "count": 309, + "commit": "71aa4c6e6b70fc3f9091ed3ee551ad00efbfd868" + }, + { + "date": "2026-04-09", + "count": 298, + "commit": "e2d12e6042760defed56b9120eeadb905b9f2164" + }, + { + "date": "2026-04-10", + "count": 296, + "commit": "1e6cbc2536c6907b5be42e727042307c46869355" + }, + { + "date": "2026-04-11", + "count": 303, + "commit": "e69da46ee7dd28f7c2e4374259e518272f84a387" + }, + { + "date": "2026-04-12", + "count": 303, + "commit": "794e5747b6de166736a7c07da118cf50c80b579e" + }, + { + "date": "2026-04-13", + "count": 308, + "commit": "f8299ccc672e1fd80444323413f214c6ba98d51b" + }, + { + "date": "2026-04-14", + "count": 303, + "commit": "def570268e4272edb70ff5225d2c78004c13da5a" + }, + { + "date": "2026-04-15", + "count": 302, + "commit": "7f05aa6ab9199a257ea43846df2326fb6a8e1ecf" + }, + { + "date": "2026-04-16", + "count": 320, + "commit": "30081c8c98c3611e9c2836c2663a2356baeb8338" + }, + { + "date": "2026-04-17", + "count": 312, + "commit": "7c57ed459f8ac2e56b39b850dbfd8397aa82e984" + }, + { + "date": "2026-04-18", + "count": 308, + "commit": "a5b6663045b885a84a753683126a40e331ac195b" + }, + { + "date": "2026-04-19", + "count": 307, + "commit": "d8cdc0544e43fed0167ee3a61fa5634e0ad31f0f" + }, + { + "date": "2026-04-20", + "count": 304, + "commit": "52f3548d94f1217dc7edf9e5621260162ac4fe02" + }, + { + "date": "2026-04-21", + "count": 306, + "commit": "1fce704363d404ca4960c8519d0baa5f20ab94bb" + }, + { + "date": "2026-04-22", + "count": 311, + "commit": "93dd472f0574273c60817cd3a2bfee075f586bcf" + }, + { + "date": "2026-04-23", + "count": 308, + "commit": "624149d3b24c2c95f30db54a6042427251fe02e5" + }, + { + "date": "2026-04-24", + "count": 312, + "commit": "206c2b3d85f454d50740f407c15899a244c7cd5d" + }, + { + "date": "2026-04-25", + "count": 298, + "commit": "0e8730298da419b71415fdf286b9480c7cf48d83" + }, + { + "date": "2026-04-26", + "count": 304, + "commit": "93cdff6821cdd1bea7e5d76563f64d83536297d2" + }, + { + "date": "2026-04-27", + "count": 295, + "commit": "01789f3b59777aa6c136cb9f1dcee5b4cc7f1507" + }, + { + "date": "2026-04-28", + "count": 296, + "commit": "a40a3ebb7e1eb6bdc872f6427cffce0447a46ddb" + }, + { + "date": "2026-04-29", + "count": 297, + "commit": "1622eaef99c1e956a85e4f49847f945cd56e3e68" + }, + { + "date": "2026-04-30", + "count": 301, + "commit": "4941fc3a55cc2c8129a7772c779d67082f8de258" + }, + { + "date": "2026-05-01", + "count": 281, + "commit": "b9f05d1d907606a8e97561bcda600b7f7a74c128" + }, + { + "date": "2026-05-02", + "count": 295, + "commit": "fa8e0e5bee8352824726ee771a4737b1f8de1595" + }, + { + "date": "2026-05-03", + "count": 294, + "commit": "a5edabbc5746f953c4243950d014bde564412722" + }, + { + "date": "2026-05-04", + "count": 289, + "commit": "ffea54bf59e828485163d93e8971c4a240fc4193" + }, + { + "date": "2026-05-05", + "count": 294, + "commit": "160a6f5d48472b98edfee30dba8c747c7689a961" + }, + { + "date": "2026-05-06", + "count": 292, + "commit": "df028960e2075543fa95c606bb652d94e0c471d7" + }, + { + "date": "2026-05-07", + "count": 297, + "commit": "d2151e09504b7dde728602f744efe88758b4c2d7" + }, + { + "date": "2026-05-08", + "count": 289, + "commit": "44dd5313bfe5b7ae545fea97b9870c5a7a86b667" + }, + { + "date": "2026-05-09", + "count": 286, + "commit": "4b7d51d7bc05b1864923a6c9b3d6c87ed5ade228" + }, + { + "date": "2026-05-10", + "count": 300, + "commit": "b18fcd87ac009b5073e499f2e3ffa0bec053c35f" + }, + { + "date": "2026-05-11", + "count": 292, + "commit": "3b2ded3e07ec61ab61717ab278ef25389e95ec8f" + }, + { + "date": "2026-05-12", + "count": 292, + "commit": "135c6fb2098a324fbf1d460472d5b0a6498fa73f" + }, + { + "date": "2026-05-13", + "count": 286, + "commit": "aa1ef7148291aa61caf864bc86bfb523fa286661" + }, + { + "date": "2026-05-14", + "count": 285, + "commit": "94841ecc5ca49b68430d842d77db619603f10010" + }, + { + "date": "2026-05-15", + "count": 289, + "commit": "5c8e9413f4fdc1743094ba35e1d4b63389683d5d" + }, + { + "date": "2026-05-16", + "count": 290, + "commit": "7889a0e96d13343dee531bfef6d01c41f2dd49fb" + }, + { + "date": "2026-05-17", + "count": 284, + "commit": "9d224e22b0d6099cb418a7f50051e963228f1424" + }, + { + "date": "2026-05-18", + "count": 291, + "commit": "107d7a7c9cf9bc682d4fbeb1202e31a2ae391d2d" + }, + { + "date": "2026-05-19", + "count": 292, + "commit": "64cc205d6d7c73773a5bddc0efb8ba0b927abb6a" + }, + { + "date": "2026-05-20", + "count": 312, + "commit": "17a7a0a7b9d753f5256270e5a0f254cfa7f08f95" + }, + { + "date": "2026-05-21", + "count": 306, + "commit": "d70a971586bd5245a64bc40c09d23f1c2527cbe8" + }, + { + "date": "2026-05-22", + "count": 321, + "commit": "5cb8594571e797dc78b2935f5833e4480caf7ab3" + }, + { + "date": "2026-05-23", + "count": 306, + "commit": "a93956a165228a8ac2bef2a8d0b4c23d9210c0b6" + }, + { + "date": "2026-05-24", + "count": 299, + "commit": "1e28dfcbd6c981fec97489cbd0589669a4708ef2" + }, + { + "date": "2026-05-25", + "count": 309, + "commit": "48a297036a174530bbbe4130ae4fef1433f5f784" + }, + { + "date": "2026-05-26", + "count": 293, + "commit": "1228a286e5bd3b437fdd065adfa44d094fac93db" + }, + { + "date": "2026-05-27", + "count": 315, + "commit": "e945f2e05721a02c49b25ecbcd01b97d71c3c4ae" + }, + { + "date": "2026-05-28", + "count": 307, + "commit": "b8bef31a209aeeaa674b73fd10f16b4f583d13cd" + }, + { + "date": "2026-05-29", + "count": 310, + "commit": "f270a909f34572fda7a9bd59aae953b5ce91258a" + }, + { + "date": "2026-05-30", + "count": 398, + "commit": "4443fd5c736a77d0edc36b8d4afc555355aa0d9f" + }, + { + "date": "2026-05-31", + "count": 430, + "commit": "6a49158974bab3cab902862d3b875089144eec14" + }, + { + "date": "2026-06-01", + "count": 442, + "commit": "9d0f2327cd99366aec736f535fe47dcde37d7079" + }, + { + "date": "2026-06-02", + "count": 451, + "commit": "16f4144cb78466835dfa39c75c33d73b21130ce4" + }, + { + "date": "2026-06-03", + "count": 442, + "commit": "48689de66c6270ef1a67826cb96a5ba79c33ac8a" + }, + { + "date": "2026-06-04", + "count": 444, + "commit": "266326172b89d711689990daf6186e30cdefed32" + }, + { + "date": "2026-06-05", + "count": 424, + "commit": "90dcacc89cf766fc9870ef311f184f2e73902a2a" + }, + { + "date": "2026-06-06", + "count": 440, + "commit": "17eccd69aa344534646a7c1f78e4f759386f3660" + }, + { + "date": "2026-06-07", + "count": 427, + "commit": "fe2f0678f2f7b6ed2838fd56e0f7f14e241b09f2" + }, + { + "date": "2026-06-08", + "count": 416, + "commit": "1acd1ea3d9d8f32acda30ef91a26bc3ca7600022" + }, + { + "date": "2026-06-09", + "count": 411, + "commit": "1184a7b20eef09dad178ca10524ec8fcd81a3f5d" + } + ], + "total": [ + { + "date": "2026-04-01", + "count": 767, + "commit": "14911a0291e0a93fab740f299528a50ef0bce41f" + }, + { + "date": "2026-04-02", + "count": 773, + "commit": "81247a5a203e39c1f3900964f099952f8f84cb86" + }, + { + "date": "2026-04-03", + "count": 773, + "commit": "32a220a6e03854c1903fcdfdc43ea48eee98bc0d" + }, + { + "date": "2026-04-04", + "count": 777, + "commit": "c9feb6caa6104a222e05e2e31924599aa44aa045" + }, + { + "date": "2026-04-05", + "count": 766, + "commit": "9d2c122a77924b3dd354c0bc58b9f48fb3afe745" + }, + { + "date": "2026-04-06", + "count": 780, + "commit": "189f0cb61660fbf1f890b0f9e4d6ee5123dc3319" + }, + { + "date": "2026-04-07", + "count": 775, + "commit": "4f807176c3302e848df6f3ad914f710409c45088" + }, + { + "date": "2026-04-08", + "count": 772, + "commit": "71aa4c6e6b70fc3f9091ed3ee551ad00efbfd868" + }, + { + "date": "2026-04-09", + "count": 771, + "commit": "e2d12e6042760defed56b9120eeadb905b9f2164" + }, + { + "date": "2026-04-10", + "count": 763, + "commit": "1e6cbc2536c6907b5be42e727042307c46869355" + }, + { + "date": "2026-04-11", + "count": 771, + "commit": "e69da46ee7dd28f7c2e4374259e518272f84a387" + }, + { + "date": "2026-04-12", + "count": 774, + "commit": "794e5747b6de166736a7c07da118cf50c80b579e" + }, + { + "date": "2026-04-13", + "count": 780, + "commit": "f8299ccc672e1fd80444323413f214c6ba98d51b" + }, + { + "date": "2026-04-14", + "count": 776, + "commit": "def570268e4272edb70ff5225d2c78004c13da5a" + }, + { + "date": "2026-04-15", + "count": 776, + "commit": "7f05aa6ab9199a257ea43846df2326fb6a8e1ecf" + }, + { + "date": "2026-04-16", + "count": 790, + "commit": "30081c8c98c3611e9c2836c2663a2356baeb8338" + }, + { + "date": "2026-04-17", + "count": 787, + "commit": "7c57ed459f8ac2e56b39b850dbfd8397aa82e984" + }, + { + "date": "2026-04-18", + "count": 771, + "commit": "a5b6663045b885a84a753683126a40e331ac195b" + }, + { + "date": "2026-04-19", + "count": 788, + "commit": "d8cdc0544e43fed0167ee3a61fa5634e0ad31f0f" + }, + { + "date": "2026-04-20", + "count": 782, + "commit": "52f3548d94f1217dc7edf9e5621260162ac4fe02" + }, + { + "date": "2026-04-21", + "count": 792, + "commit": "1fce704363d404ca4960c8519d0baa5f20ab94bb" + }, + { + "date": "2026-04-22", + "count": 791, + "commit": "93dd472f0574273c60817cd3a2bfee075f586bcf" + }, + { + "date": "2026-04-23", + "count": 790, + "commit": "624149d3b24c2c95f30db54a6042427251fe02e5" + }, + { + "date": "2026-04-24", + "count": 797, + "commit": "206c2b3d85f454d50740f407c15899a244c7cd5d" + }, + { + "date": "2026-04-25", + "count": 776, + "commit": "0e8730298da419b71415fdf286b9480c7cf48d83" + }, + { + "date": "2026-04-26", + "count": 792, + "commit": "93cdff6821cdd1bea7e5d76563f64d83536297d2" + }, + { + "date": "2026-04-27", + "count": 787, + "commit": "01789f3b59777aa6c136cb9f1dcee5b4cc7f1507" + }, + { + "date": "2026-04-28", + "count": 781, + "commit": "a40a3ebb7e1eb6bdc872f6427cffce0447a46ddb" + }, + { + "date": "2026-04-29", + "count": 786, + "commit": "1622eaef99c1e956a85e4f49847f945cd56e3e68" + }, + { + "date": "2026-04-30", + "count": 785, + "commit": "4941fc3a55cc2c8129a7772c779d67082f8de258" + }, + { + "date": "2026-05-01", + "count": 766, + "commit": "b9f05d1d907606a8e97561bcda600b7f7a74c128" + }, + { + "date": "2026-05-02", + "count": 782, + "commit": "fa8e0e5bee8352824726ee771a4737b1f8de1595" + }, + { + "date": "2026-05-03", + "count": 771, + "commit": "a5edabbc5746f953c4243950d014bde564412722" + }, + { + "date": "2026-05-04", + "count": 770, + "commit": "ffea54bf59e828485163d93e8971c4a240fc4193" + }, + { + "date": "2026-05-05", + "count": 770, + "commit": "160a6f5d48472b98edfee30dba8c747c7689a961" + }, + { + "date": "2026-05-06", + "count": 767, + "commit": "df028960e2075543fa95c606bb652d94e0c471d7" + }, + { + "date": "2026-05-07", + "count": 771, + "commit": "d2151e09504b7dde728602f744efe88758b4c2d7" + }, + { + "date": "2026-05-08", + "count": 767, + "commit": "44dd5313bfe5b7ae545fea97b9870c5a7a86b667" + }, + { + "date": "2026-05-09", + "count": 756, + "commit": "4b7d51d7bc05b1864923a6c9b3d6c87ed5ade228" + }, + { + "date": "2026-05-10", + "count": 763, + "commit": "b18fcd87ac009b5073e499f2e3ffa0bec053c35f" + }, + { + "date": "2026-05-11", + "count": 762, + "commit": "3b2ded3e07ec61ab61717ab278ef25389e95ec8f" + }, + { + "date": "2026-05-12", + "count": 768, + "commit": "135c6fb2098a324fbf1d460472d5b0a6498fa73f" + }, + { + "date": "2026-05-13", + "count": 767, + "commit": "aa1ef7148291aa61caf864bc86bfb523fa286661" + }, + { + "date": "2026-05-14", + "count": 774, + "commit": "94841ecc5ca49b68430d842d77db619603f10010" + }, + { + "date": "2026-05-15", + "count": 765, + "commit": "5c8e9413f4fdc1743094ba35e1d4b63389683d5d" + }, + { + "date": "2026-05-16", + "count": 779, + "commit": "7889a0e96d13343dee531bfef6d01c41f2dd49fb" + }, + { + "date": "2026-05-17", + "count": 764, + "commit": "9d224e22b0d6099cb418a7f50051e963228f1424" + }, + { + "date": "2026-05-18", + "count": 775, + "commit": "107d7a7c9cf9bc682d4fbeb1202e31a2ae391d2d" + }, + { + "date": "2026-05-19", + "count": 787, + "commit": "64cc205d6d7c73773a5bddc0efb8ba0b927abb6a" + }, + { + "date": "2026-05-20", + "count": 805, + "commit": "17a7a0a7b9d753f5256270e5a0f254cfa7f08f95" + }, + { + "date": "2026-05-21", + "count": 802, + "commit": "d70a971586bd5245a64bc40c09d23f1c2527cbe8" + }, + { + "date": "2026-05-22", + "count": 821, + "commit": "5cb8594571e797dc78b2935f5833e4480caf7ab3" + }, + { + "date": "2026-05-23", + "count": 799, + "commit": "a93956a165228a8ac2bef2a8d0b4c23d9210c0b6" + }, + { + "date": "2026-05-24", + "count": 804, + "commit": "1e28dfcbd6c981fec97489cbd0589669a4708ef2" + }, + { + "date": "2026-05-25", + "count": 813, + "commit": "48a297036a174530bbbe4130ae4fef1433f5f784" + }, + { + "date": "2026-05-26", + "count": 787, + "commit": "1228a286e5bd3b437fdd065adfa44d094fac93db" + }, + { + "date": "2026-05-27", + "count": 812, + "commit": "e945f2e05721a02c49b25ecbcd01b97d71c3c4ae" + }, + { + "date": "2026-05-28", + "count": 804, + "commit": "b8bef31a209aeeaa674b73fd10f16b4f583d13cd" + }, + { + "date": "2026-05-29", + "count": 814, + "commit": "f270a909f34572fda7a9bd59aae953b5ce91258a" + }, + { + "date": "2026-05-30", + "count": 919, + "commit": "4443fd5c736a77d0edc36b8d4afc555355aa0d9f" + }, + { + "date": "2026-05-31", + "count": 966, + "commit": "6a49158974bab3cab902862d3b875089144eec14" + }, + { + "date": "2026-06-01", + "count": 989, + "commit": "9d0f2327cd99366aec736f535fe47dcde37d7079" + }, + { + "date": "2026-06-02", + "count": 980, + "commit": "16f4144cb78466835dfa39c75c33d73b21130ce4" + }, + { + "date": "2026-06-03", + "count": 978, + "commit": "48689de66c6270ef1a67826cb96a5ba79c33ac8a" + }, + { + "date": "2026-06-04", + "count": 981, + "commit": "266326172b89d711689990daf6186e30cdefed32" + }, + { + "date": "2026-06-05", + "count": 978, + "commit": "90dcacc89cf766fc9870ef311f184f2e73902a2a" + }, + { + "date": "2026-06-06", + "count": 980, + "commit": "17eccd69aa344534646a7c1f78e4f759386f3660" + }, + { + "date": "2026-06-07", + "count": 981, + "commit": "fe2f0678f2f7b6ed2838fd56e0f7f14e241b09f2" + }, + { + "date": "2026-06-08", + "count": 961, + "commit": "1acd1ea3d9d8f32acda30ef91a26bc3ca7600022" + }, + { + "date": "2026-06-09", + "count": 962, + "commit": "1184a7b20eef09dad178ca10524ec8fcd81a3f5d" + } + ] +} \ No newline at end of file diff --git a/assets/total_relay_count_chart.png b/assets/total_relay_count_chart.png index f88c53c..c5fa48d 100644 Binary files a/assets/total_relay_count_chart.png and b/assets/total_relay_count_chart.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..22d6403 --- /dev/null +++ b/index.html @@ -0,0 +1,1720 @@ + + + + + + BitChat GeoRelays Terminal + + + + + + + + + + + + + + +
+ +
+ + +
+
▓ BitChat Relay Geo-Network v1.0.0 ▓
+
+
Server: irc.bitchat.org
+
User: cypherpunk(+i)
+
Date: --
+
+
+ +
+ + + + + +
+ + +
+ #bitchat-map + [topic: + Interactive map tracking geolocated BitChat relays + ] +
+ + +
+ + +
+
+
+ + +
+
+ + +
+
+ + + + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+ + +
+
+ BitChat-Compatible Relay Count + -- +
+
+ +
+
+ + +
+
+ Total Functioning Relays Discovered + -- +
+
+ +
+
+ +
+ +
+
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/scripts/geolocate_all_relays.py b/scripts/geolocate_all_relays.py new file mode 100755 index 0000000..6030e63 --- /dev/null +++ b/scripts/geolocate_all_relays.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python3 +""" +Geolocate All Discovered Relays + +This script reads: +1. nostr_relays.csv - The already geolocated BitChat-capable relays +2. relay_discovery_results.json - The list of ALL functioning relays discovered + +It geolocates the remaining non-BitChat relays and outputs a unified CSV: +'all_relays_geo.csv' with columns: Relay URL,Latitude,Longitude,IsBitChat (1 or 0). +This avoids redundant geolocating of the BitChat relays. +""" + +import os +import sys +import csv +import json +import asyncio +import re + +# Add root folder to path to import relays_geo_lookup +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +try: + from relays_geo_lookup import GeoIPDatabase, resolve_and_locate, clean_url, DB_FILENAME +except ImportError as e: + print(f"Error importing modules: {e}") + sys.exit(1) + +def strip_protocol(url): + """Standardizes URLs by removing ws:// or wss:// prefix.""" + return re.sub(r'^wss?://', '', url).strip() + +async def main(): + root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + os.chdir(root_dir) + + bitchat_csv_path = "nostr_relays.csv" + results_json_path = "relay_discovery_results.json" + output_csv_path = "all_relays_geo.csv" + + if not os.path.exists(bitchat_csv_path): + print(f"Error: {bitchat_csv_path} does not exist. Run the pipeline first.") + sys.exit(1) + if not os.path.exists(results_json_path): + print(f"Error: {results_json_path} does not exist.") + sys.exit(1) + + # 1. Read already geolocated BitChat relays + bitchat_relays = {} + with open(bitchat_csv_path, 'r', encoding='utf-8') as f: + reader = csv.reader(f) + header = next(reader, None) + for row in reader: + if len(row) >= 3: + url, lat, lon = row[0].strip(), row[1].strip(), row[2].strip() + # Store mapped by both raw URL and stripped protocol URL for matching robustness + bitchat_relays[strip_protocol(url)] = (url, lat, lon) + + print(f"Loaded {len(bitchat_relays)} geolocated BitChat relays.") + + # 2. Read all functioning relays from discovery JSON + with open(results_json_path, 'r', encoding='utf-8') as f: + data = json.load(f) + all_functioning = data.get("functioning_relays", []) + + print(f"Loaded {len(all_functioning)} total functioning relays from discovery results.") + + # 3. Filter out those that are NOT geolocated BitChat relays + non_bitchat_to_locate = [] + for raw_url in all_functioning: + stripped = strip_protocol(raw_url) + if stripped not in bitchat_relays: + non_bitchat_to_locate.append(raw_url) + + print(f"Identified {len(non_bitchat_to_locate)} non-BitChat relays requiring geolocation.") + + # 4. Geolocate the non-BitChat relays asynchronously + success_records = [] + if non_bitchat_to_locate: + db = GeoIPDatabase(DB_FILENAME) + db.ensure_db_exists() + db.load() + + print(f"Geolocating {len(non_bitchat_to_locate)} relays...") + tasks = [resolve_and_locate(url, url, db) for url in non_bitchat_to_locate] + results = await asyncio.gather(*tasks) + + for res in results: + if res: + url, lat, lon = res + success_records.append((url, lat, lon)) + print(f"Successfully geolocated {len(success_records)}/{len(non_bitchat_to_locate)} non-BitChat relays.") + + # 5. Write unified CSV output + total_written = 0 + with open(output_csv_path, 'w', newline='', encoding='utf-8') as f: + writer = csv.writer(f) + writer.writerow(["Relay URL", "Latitude", "Longitude", "IsBitChat"]) + + # Write BitChat relays (IsBitChat = 1) + for stripped_url, (url, lat, lon) in bitchat_relays.items(): + # Keep protocol-stripped for consistency if that's how it is in the CSV + writer.writerow([url, lat, lon, "1"]) + total_written += 1 + + # Write geolocated non-BitChat relays (IsBitChat = 0) + for url, lat, lon in success_records: + # Strip protocol to match the other CSV format + clean_r = strip_protocol(url) + writer.writerow([clean_r, lat, lon, "0"]) + total_written += 1 + + print(f"Unified database written to {output_csv_path} (Total of {total_written} geolocated relays).") + +if __name__ == "__main__": + try: + asyncio.run(main()) + except KeyboardInterrupt: + print("\nInterrupted.") + sys.exit(1) diff --git a/scripts/track_relay_counts.py b/scripts/track_relay_counts.py index 1482eaf..cc8a5f6 100755 --- a/scripts/track_relay_counts.py +++ b/scripts/track_relay_counts.py @@ -220,6 +220,35 @@ def main(): 'assets/total_relay_count_chart.png' ) + # Save historical data to JSON for interactive graphs + history_json_path = 'assets/relay_history.json' + bitchat_serializable = [] + for entry in bitchat_data: + bitchat_serializable.append({ + 'date': entry['date'].strftime('%Y-%m-%d'), + 'count': entry['count'], + 'commit': entry['commit'] + }) + bitchat_serializable.sort(key=lambda x: x['date']) + + total_serializable = [] + for entry in total_data: + total_serializable.append({ + 'date': entry['date'].strftime('%Y-%m-%d'), + 'count': entry['count'], + 'commit': entry['commit'] + }) + total_serializable.sort(key=lambda x: x['date']) + + history_payload = { + 'bitchat': bitchat_serializable, + 'total': total_serializable + } + + with open(history_json_path, 'w') as f: + json.dump(history_payload, f, indent=2) + print(f"Exported interactive charts history to {history_json_path}") + # Print summary for log if bitchat_stats: print(f"Generated BitChat relay chart with {bitchat_stats[0]} data points") diff --git a/serve.py b/serve.py new file mode 100755 index 0000000..6675871 --- /dev/null +++ b/serve.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +""" +BitChat Terminal Local Dev Server + +A lightweight development helper to run the GeoRelays terminal locally. +This server automatically filters out 404 background noise from browser extensions, +ad-blockers, or cryptocurrency wallets probing '/api/v1/check' and '/favicon.ico', +keeping your console logs completely clean and uncluttered. +""" + +import http.server +import socketserver +import sys + +PORT = 8000 + +class SilentHTTPRequestHandler(http.server.SimpleHTTPRequestHandler): + def log_message(self, format, *args): + # Extract the raw request line (usually the first argument) + request_line = args[0] if args else "" + + # Suppress noise from automatic probes/extensions + if "/api/v1/check" in request_line or "favicon.ico" in request_line: + return + + # Log all standard requests cleanly + super().log_message(format, *args) + +def main(): + # Use our custom noise-filtering handler + Handler = SilentHTTPRequestHandler + + # Allow quick port reuse to avoid 'Address already in use' errors on restarts + socketserver.TCPServer.allow_reuse_address = True + + try: + with socketserver.TCPServer(("", PORT), Handler) as httpd: + print("==================================================================") + print(" B I T C H A T T E R M I N A L S E R V E R ") + print("==================================================================") + print(f" [*] Connection Channel established locally.") + print(f" [*] Mainframe URL : http://localhost:{PORT}") + print(f" [*] Status : Suppression active for background / extension noise.") + print(f" [*] Command : Press Ctrl+C to terminate server safely.") + print("==================================================================") + httpd.serve_forever() + except KeyboardInterrupt: + print("\n [!] Connection terminated cleanly. Securing ports.") + sys.exit(0) + +if __name__ == "__main__": + main()