Coder Social home page Coder Social logo

lalanza808 / monero.fail Goto Github PK

View Code? Open in Web Editor NEW
47.0 5.0 17.0 661 KB

Monero public node aggregator.

Home Page: https://monero.fail

License: MIT License

Shell 3.28% Python 52.28% CSS 4.25% HTML 39.54% Makefile 0.65%
monero monero-wallet-rpc nodes monerod

monero.fail's Introduction

monero.fail

Monero node tracker.

Stores Monero (and Wownero) nodes for clearnet, Tor, and I2P.

Setup

Tools you will need:

  • Docker # apt-get install docker.io
  • docker-compose # apt-get install docker-compose
  • python3 (linux os will have this)
  • python3-venv # apt-get install python3-venv

Development

I have provided a Makefile with some helpful stuff...make sure to install make to use it.

The map portion of the service requires the GeoLite2 db...the make setup command fetches a copy via wget.

# install python virtual environment and install application dependencies
make setup

# default configs work out of the box, modify .env if needed
# setup .env
cp env-example .env
vim .env

# run services (tor, i2p, etc)
make up

# run development server
make dev

# access at http://127.0.0.1:5000

Background Tasks

There are 3 things that need to run in the background:

  • validating nodes that have been added
  • checking existing node health
  • scraping peer lists

I accomplish this via crontab and some management scripts. Ensure the i2p and tor containers are running (or just on the host) so that requests can be proxied.

docker-compose up -d
./manage.sh validate
./manage.sh check
./manage.sh get_peers

Production

For production, update SERVER_NAME in .env to your production URL/domain. Use manage.sh (or provided Makefile) to serve the Flask process using Gunicorn.

./manage.sh prod

Runs the Gunicorn process on port 4000. Setup a web server to proxy requests to that port.

Kill production Gunicorn with make kill.

monero.fail's People

Contributors

etherx-dev avatar lalanza808 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

monero.fail's Issues

Obsolete node URLs

Hi,
I completely reorganized my Monero nodes. Some URLs have changed. Can you delete them on monero.fail?
Obsolete mainnet node:
http://lump.boldsuck.org:18081

Obsolete stagenet nodes:
http://crypto.boldsuck.org:38081
http://n452awi37fcjhxj64pox4rrtmyaambphhxlj7s5elwoqx7xfmefa4mqd.onion:38081

Didn't find an email address, that's why I made it via Github issue. Sorry for the trouble.
Special thanks for monero.fail and xmrcannon.net.

The current nodes:

http://xmr-de-2.boldsuck.org:18081
http://6dsdenp6vjkvqzy4wzsnzn6wixkdzihx3khiumyzieauxuxslmcaeiad.onion:18081
http://xmr-de-1.boldsuck.org:18081
http://ip4zpbps7unk6xhlanqtw24f75akfbl3upeckfjqjks7ftfnk4i73oid.onion:18081

http://xmr-lux.boldsuck.org:38081
http://ct36dsbe3oubpbebpxmiqz4uqk6zb6nhmkhoekileo4fts23rvuse2qd.onion:38081

IPv6 filtering

Hi,

Quick suggestion for this great tool you are providing here. Would it be possible to add a filter for IPv6 available node ?

Cheers,
Bertrand

monero.fail is unreachable via IPv6

The server hosting monero.fail must have IPv6 connectivity before issue #10 can be addressed. A good first step would be to enable IPv6 on monero.fail.

If the server already has IPv6 connectivity and the web server is listening on IPv6, it could be simply a matter of adding an AAAA record to monero.fail.

cache nodes

there's so much stuff to query that first page response is pretty slow.

[Feature Request] Add JSON node list

There should be a JSON string version of the node information available so that the data can be used on other projects without having to parse the HTML of the monero.fail page.

URL Example:
https://json.monero.fail || https://monero.fail/json

Output Example:

{
    "nodes": [
      {
        "url": "xmr.node.host",
        "rpc_port": 18081,
        "height": 2843240,
        "available": true,
        "web_compatible": true,
        "network": "mainnet",
        "date_added": "2023-03-16 00:35:38.8740380",
        "last_checked": "2023-03-16 00:34:38.8740380"
      },
      {
        "url": "xmr.node2.host",
        "rpc_port": 18089,
        "height": 2843237,
        "available": true,
        "web_compatible": false,
        "network": "mainnet",
        "date_added": "2023-03-16 00:23:16.8740380",
        "last_checked": "2023-03-16 00:23:16.8740380"
      }
   ]
}

Error when running prod script

Running the prod script gives the following output

bin/prod: line 5: .venv/bin/activate: No such file or directory
cat: data/gunicorn/gunicorn.pid: No such file or directory
Starting gunicorn with pid

I am not experienced with Python web servers so this may be expected, with the solution being to install some packages. If this is the case it would be beneficial to mention this in README.md (along with instructions on getting the server running such as creating config.py).

Suggestions

  • Automatically remove offline nodes
  • Sorting feature
  • Add "monero" and "monero-wallet-rpc" tags for github repository.

[Feature request]: display nodes that limit tx_extra

im not sure how to properly name this column, and this would only be a temporary feature to spread awareness of the upcoming update to curb ordinals. It could also have a negative effect of telling users 'which nodes they can broadcast ordinals from'

but we can discover which nodes are updated using the /sendrawtransaction rpc call - 'eventually' after enough nodes have updated, limiting tx extra could be a requirement to get listed @ monero dot fail.

i have no idea how to launch this

So, im a dumbass and I don't really know where to start with this. I wanna run the map to see what my node sees, and I see a lot of python.

well, ima just start some random python scripts and see what happens.

Add remote node details

from serhack on Twitter: I'd like to have additional details for the remote node I'm connecting to (ISP, first found...).

Sounds cool.

Suggestion: filter out nodes running outdated versions

A few of the nodes on the site seem to still be running the outdated fork. You can filter them out on mainnet as follows:

  • call the the get_block RPC endpoint with parameter height: 2688888
  • make sure result.block_header.major_version == 15

Mainnet parameters source.

For testnet, you can use height 1982800.

For stagenet, you can use height 1151000.

This is pretty hacky. A cleaner solution would be nice but for the time being, I think this would be a solid help looking to the site for nodes.

Problems setting up

I'm getting AttributeError: 'NoneType' object has no attribute 'last_height' when trying to set this up.
My node is using your docker-monero-node.

I'm also getting

error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for py-levin
  Running setup.py clean for py-levin
Failed to build py-levin

When trying to make setup.
Also am unsure as to what needs to be changed in the config.py

cant add ipv6 nodes

I have tried submitting my node DNS (AAAA only) and it is not being added. This may have something to do with #31 and #10

Node age

It would be nice if the site showed the age of the node

Refresh docs

A couple of upstream changes have occurred which makes the setup not as streamlined.

Remove regional Cake nodes

Regional Cake node URLs are no longer used in Cake Wallet. We use a single node address for all regions and route traffic accordingly.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.