{"id":15146748,"url":"https://github.com/ditatompel/xmr-remote-nodes","last_synced_at":"2025-08-16T12:15:35.926Z","repository":{"id":243702762,"uuid":"795620942","full_name":"ditatompel/xmr-remote-nodes","owner":"ditatompel","description":"Source code of https://xmr.ditatompel.com, a website that helps you monitor your favourite Monero remote nodes.","archived":false,"fork":false,"pushed_at":"2025-08-12T05:43:13.000Z","size":2865,"stargazers_count":22,"open_issues_count":2,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-12T07:21:09.445Z","etag":null,"topics":["bun","fiber","htmx","htmx-go","monero","templ"],"latest_commit_sha":null,"homepage":"https://xmr.ditatompel.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ditatompel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-05-03T17:06:26.000Z","updated_at":"2025-08-12T05:32:06.000Z","dependencies_parsed_at":"2024-06-23T16:43:24.144Z","dependency_job_id":"29bbc21f-b50e-417b-8cd9-6b0e4d25e2df","html_url":"https://github.com/ditatompel/xmr-remote-nodes","commit_stats":{"total_commits":303,"total_committers":2,"mean_commits":151.5,"dds":"0.30363036303630364","last_synced_commit":"40dac1f70ea53763cc77f0cbeac8b53f4ec2fbd6"},"previous_names":["ditatompel/xmr-remote-nodes"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/ditatompel/xmr-remote-nodes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ditatompel%2Fxmr-remote-nodes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ditatompel%2Fxmr-remote-nodes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ditatompel%2Fxmr-remote-nodes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ditatompel%2Fxmr-remote-nodes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ditatompel","download_url":"https://codeload.github.com/ditatompel/xmr-remote-nodes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ditatompel%2Fxmr-remote-nodes/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270120826,"owners_count":24530704,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-12T02:00:09.011Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bun","fiber","htmx","htmx-go","monero","templ"],"created_at":"2024-09-26T12:04:22.039Z","updated_at":"2025-08-16T12:15:35.918Z","avatar_url":"https://github.com/ditatompel.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# XMR Remote Nodes\n\n[![Test](https://github.com/ditatompel/xmr-remote-nodes/actions/workflows/test.yml/badge.svg)](https://github.com/ditatompel/xmr-remote-nodes/actions/workflows/test.yml)\n[![BUild](https://github.com/ditatompel/xmr-remote-nodes/actions/workflows/build.yml/badge.svg)](https://github.com/ditatompel/xmr-remote-nodes/actions/workflows/build.yml)\n[![Release Binaries](https://github.com/ditatompel/xmr-remote-nodes/actions/workflows/release.yml/badge.svg)](https://github.com/ditatompel/xmr-remote-nodes/actions/workflows/release.yml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/ditatompel/xmr-remote-nodes)](https://goreportcard.com/report/github.com/ditatompel/xmr-remote-nodes)\n\nSource code of [https://xmr.ditatompel.com](https://xmr.ditatompel.com),\na website that helps you monitor your favourite Monero remote nodes.\n\n\u003e :warning: :construction: This project is not mature enough :construction:,\n\u003e If you want to use it on your server, please use it with caution.\n\n## How does it work?\n\nApart from CPU architecture type, you can build two types of binaries from\nthis project: a **server** and a **client**.\n\nThe **clients** is used to fetch node information given by the server. First,\nit will ask the server which node to fetch. Then, it will fetch the information\nand report back to the server.\n\nThe **server** serves the Web UI and the `/api` endpoint that is used by the\nclients.\n\n## Requirements\n\nTo build the executable binaries, you need:\n\n- Go \u003e= 1.23\n- Bun \u003e= 1.1.26\n- [a-h/templ][templ-repo] v0.3.924\n\n\u003e **Note**:\n\u003e\n\u003e - If you want to contribute to the code, please use exact templ version\n\u003e   (v0.3.924).\n\n### Server \u0026 Prober requirements\n\n- Linux Machines (AMD64 or ARM64)\n\n### Server requirements\n\n- MySQL/MariaDB\n- [GeoIP Database][geoip-doc] (optional). Place it to `./assets/geoip`,\n  see [./internal/ip/geo/geoip.go](./internal/ip/geo/geoip.go).\n\n## Installation\n\n### For initial server setup:\n\n1. Download [GeoIP Database][geoip-doc] and place it to `./assets/geoip`.\n   (see [./internal/ip/geo/geoip.go](./internal/ip/geo/geoip.go)).\n2. Pepare your MySQL/MariaDB.\n3. Copy `.env.example` to `.env` and edit it to match with server environment.\n4. Build the binary with `make server` (or `make build` to build both\n   **server** and **client** binaries).\n5. Run the service with `./bin/xmr-nodes-server-linux-\u003cYOUR_CPU_ARCH\u003e serve`.\n\nSystemd example: [xmr-nodes-server.service][server-systemd-service].\n\n### For initial prober setup:\n\n1. Create API key for prober\n2. Copy `.env.example` to `.env` and edit it to match with prober environment.\n3. Build the binary with `make client` (or `make build` to build both\n   **server** and **client** binaries).\n4. Run the service with `./bin/xmr-nodes-client-linux-\u003cYOUR_CPU_ARCH\u003e probe`.\n\nSystemd example: [xmr-nodes-prober.service][prober-systemd-service] and\n[xmr-nodes-prober.timer][prober-systemd-timer].\n\n## Development and Deployment\n\n1. Clone or fork this repository.\n2. Prepare the assets: `make prepare`,\n3. Run `air serve` (live reload using [air-verse/air][air-repo]).\n\nSee the [Makefile](./Makefile).\n\n## ToDo's\n\n- :white_check_mark: Accept IPv6 nodes.\n- :white_check_mark: Use `a-h/templ` and `HTMX` instead of `Svelte`.\n- :white_check_mark: Accept I2P nodes.\n- :white_check_mark: Support Tor hidden service (beta, inform via HTTP header).\n- :white_check_mark: Integrate with [Rucknium's Monero Network Scan][rucknium-network-scan]\n- :white_check_mark: Implement ban by IP address using [Boog900's Monero Ban List][boog900-ban-list]\n- Use Go standard `net/http` instead of `fiber`.\n\n## Acknowledgement\n\nThe creators and contributors of these projects have provided valuable\nresources, which I am grateful for:\n\n- [jtgrassie/monero-pool][jtgrassie-monero-pool]\n- [Rucknium/xmrnetscan][rucknium-network-scan-repo]\n- [Boog900/monero-ban-list][boog900-ban-list]\n- [Boog900/p2p-proxy-checker][boog900-p2p-proxy-checker]\n- [rclone/rclone][rclone]\n\n## Similar Projects\n\n- [lalanza808/monero.fail][monerofail-repo]\n- [cake-tech/upptime-monerocom][uptime-monerocom-repo]\n\n## Donation\n\nThe servers costs are currently covered by myself. If you find this project\nuseful, please consider making a donation to help cover the ongoing expenses.\nYour contribution will go towards ensuring the continued availability of the\nwebsite and **my** `stagenet` and `testnet` public remote nodes.\n\nXMR Donation address:\n\n```plain\n82ez97EPriX6tnkL5fSv7u93aZV2gHWeMUc9hS3a8Dd6NxGWPZWhruGTFnNyJ4z1yWQMHgtA81i9h9vq7HWoKZLk9EzWryD\n```\n\n![](./internal/handler/views/assets/img/monerotip.png)\n\nThank you!\n\n### View Only Wallet Details\n\nPrimary Address:\n\n```\n48D1TAcsq4vMoRu8CNaDsPgvUR7SQ1B6TCXfBsJXAbPb7TjeNZbMhAMKatSA64XRTzFckyMcaF19U8Ejr9wy8iwnTCAUU8x\n```\n\nView Key:\n\n```\nf26d16b3ab8265a8ddd9db99f69cafeee9081555e67eb03a34778f0391962803\n```\n\nRestore height:\n\n```\n3457614 (2025-07-18)\n```\n\n\u003e View only old wallet address can be found in [PR #201](https://github.com/ditatompel/xmr-remote-nodes/pull/201).\n\n## License\n\nThis project is licensed under [BSD-3-Clause](./LICENSE) license.\n\n[templ-repo]: https://github.com/a-h/templ \"a-h/templ GitHub repository\"\n[geoip-doc]: https://dev.maxmind.com/geoip/geolite2-free-geolocation-data/ \"GeoLite2 Free documentation\"\n[server-systemd-service]: ./deployment/init/xmr-nodes-server.service \"systemd service example for server\"\n[prober-systemd-service]: ./deployment/init/xmr-nodes-prober.service \"systemd service example for prober\"\n[prober-systemd-timer]: ./deployment/init/xmr-nodes-prober.timer \"systemd timer example for prober\"\n[air-repo]: https://github.com/air-verse/air \"Air - Live reload for Go apps\"\n[jtgrassie-monero-pool]: https://github.com/jtgrassie/monero-pool \"A Monero mining pool server written in C\"\n[rclone]: https://github.com/rclone/rclone \"rclone GitHub repository\"\n[monerofail-repo]: https://github.com/lalanza808/monero.fail \"Lalanza808's monero.fail GitHub repository\"\n[uptime-monerocom-repo]: https://github.com/cake-tech/upptime-monerocom \"monero.com uptime GitHub repository\"\n[rucknium-network-scan]: https://moneronet.info/ \"Rucknium's Monero Network Scan\"\n[rucknium-network-scan-repo]: https://github.com/Rucknium/xmrnetscan \"Rucknium's Monero Network Scan Source Code\"\n[boog900-ban-list]: https://github.com/Boog900/monero-ban-list \"Boog900's Monero Ban List\"\n[boog900-p2p-proxy-checker]: https://github.com/Boog900/p2p-proxy-checker \"Boog900's P2P Proxy Checker\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fditatompel%2Fxmr-remote-nodes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fditatompel%2Fxmr-remote-nodes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fditatompel%2Fxmr-remote-nodes/lists"}