2024-05-09 11:29:48 +00:00
|
|
|
# XMR Remote Nodes
|
|
|
|
|
2024-07-06 17:51:54 +00:00
|
|
|
[![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)
|
2024-06-10 16:44:01 +00:00
|
|
|
[![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)
|
2024-06-11 07:53:15 +00:00
|
|
|
[![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)
|
2024-07-16 10:47:55 +00:00
|
|
|
[![Go Report Card](https://goreportcard.com/badge/github.com/ditatompel/xmr-remote-nodes)](https://goreportcard.com/report/github.com/ditatompel/xmr-remote-nodes)
|
2024-06-10 15:40:44 +00:00
|
|
|
|
2024-09-05 13:34:42 +00:00
|
|
|
Source code of [https://xmr.ditatompel.com](https://xmr.ditatompel.com),
|
|
|
|
a website that helps you monitor your favourite Monero remote nodes.
|
2024-05-04 19:20:54 +00:00
|
|
|
|
2024-09-05 13:34:42 +00:00
|
|
|
> :warning: :construction: This project is not mature enough :construction:,
|
2024-06-10 15:40:44 +00:00
|
|
|
> If you want to use it on your server, please use it with caution.
|
|
|
|
|
2024-05-31 11:24:45 +00:00
|
|
|
## How does it work?
|
|
|
|
|
2024-09-05 13:34:42 +00:00
|
|
|
Apart from CPU architecture type, you can build two types of binaries from
|
|
|
|
this project: a **server** and a **client**.
|
2024-05-31 11:24:45 +00:00
|
|
|
|
2024-09-05 13:34:42 +00:00
|
|
|
The **clients** is used to fetch node information given by the server. First,
|
|
|
|
it will ask the server which node to fetch. Then, it will fetch the information
|
|
|
|
and report back to the server.
|
2024-05-31 11:24:45 +00:00
|
|
|
|
2024-09-05 13:34:42 +00:00
|
|
|
The **server** serves an embedded Svelte static site for the Web UI. It also
|
|
|
|
serves the `/api` endpoint that is used by the clients and the Web UI itself.
|
2024-05-31 11:24:45 +00:00
|
|
|
|
2024-05-04 19:20:54 +00:00
|
|
|
## Requirements
|
|
|
|
|
2024-06-03 06:37:18 +00:00
|
|
|
To build the executable binaries, you need:
|
2024-05-17 10:40:22 +00:00
|
|
|
|
2024-05-28 03:03:29 +00:00
|
|
|
- Go >= 1.22
|
2024-06-03 06:37:18 +00:00
|
|
|
- NodeJS >= 20
|
|
|
|
|
|
|
|
### Server & Prober requirements
|
|
|
|
|
2024-05-30 05:02:11 +00:00
|
|
|
- Linux Machines (AMD64 or ARM64)
|
2024-05-17 10:40:22 +00:00
|
|
|
|
|
|
|
### Server requirements
|
|
|
|
|
2024-05-28 03:03:29 +00:00
|
|
|
- MySQL/MariaDB
|
2024-10-28 13:25:28 +00:00
|
|
|
- [GeoIP Database][geoip-doc] (optional). Place it to `./assets/geoip`,
|
2024-09-09 11:21:03 +00:00
|
|
|
see [./internal/ip/geo/geoip.go](./internal/ip/geo/geoip.go).
|
2024-05-04 19:20:54 +00:00
|
|
|
|
2024-05-06 12:59:43 +00:00
|
|
|
## Installation
|
2024-05-04 19:20:54 +00:00
|
|
|
|
2024-05-09 11:29:48 +00:00
|
|
|
### For initial server setup:
|
2024-05-06 12:59:43 +00:00
|
|
|
|
2024-10-28 13:25:28 +00:00
|
|
|
1. Download [GeoIP Database][geoip-doc] and place it to `./assets/geoip`.
|
2024-09-09 11:21:03 +00:00
|
|
|
(see [./internal/ip/geo/geoip.go](./internal/ip/geo/geoip.go)).
|
2024-06-03 06:37:18 +00:00
|
|
|
2. Pepare your MySQL/MariaDB.
|
|
|
|
3. Copy `.env.example` to `.env` and edit it to match with server environment.
|
2024-09-05 13:34:42 +00:00
|
|
|
4. Build the binary with `make server` (or `make build` to build both
|
|
|
|
**server** and **client** binaries).
|
2024-06-03 06:37:18 +00:00
|
|
|
5. Run the service with `./bin/xmr-nodes-server-linux-<YOUR_CPU_ARCH> serve`.
|
2024-05-06 12:59:43 +00:00
|
|
|
|
2024-10-28 13:25:28 +00:00
|
|
|
Systemd example: [xmr-nodes-server.service][server-systemd-service].
|
2024-05-06 14:45:33 +00:00
|
|
|
|
2024-05-09 11:29:48 +00:00
|
|
|
### For initial prober setup:
|
2024-05-06 14:45:33 +00:00
|
|
|
|
|
|
|
1. Create API key for prober
|
|
|
|
2. Copy `.env.example` to `.env` and edit it to match with prober environment.
|
2024-09-05 13:34:42 +00:00
|
|
|
3. Build the binary with `make client` (or `make build` to build both
|
|
|
|
**server** and **client** binaries).
|
2024-05-18 11:05:53 +00:00
|
|
|
4. Run the service with `./bin/xmr-nodes-client-linux-<YOUR_CPU_ARCH> probe`.
|
2024-05-06 14:45:33 +00:00
|
|
|
|
2024-10-28 13:25:28 +00:00
|
|
|
Systemd example: [xmr-nodes-prober.service][prober-systemd-service] and
|
|
|
|
[xmr-nodes-prober.timer][prober-systemd-timer].
|
2024-05-31 11:24:45 +00:00
|
|
|
|
|
|
|
## Development and Deployment
|
|
|
|
|
|
|
|
See the [Makefile](./Makefile).
|
2024-06-10 14:32:01 +00:00
|
|
|
|
2024-09-05 13:34:42 +00:00
|
|
|
## ToDo's
|
|
|
|
|
2024-10-28 13:25:28 +00:00
|
|
|
- :heavy_check_mark: Accept IPv6 nodes.
|
|
|
|
- :white_check_mark: Use `a-h/templ` and `HTMX` instead of `Svelte`.
|
|
|
|
- :white_check_mark: Use Go standard `net/http` instead of `fiber`.
|
|
|
|
|
|
|
|
## Acknowledgement
|
|
|
|
|
|
|
|
The creators and contributors of these projects have provided valuable
|
|
|
|
resources, which I am grateful for:
|
|
|
|
|
|
|
|
- [jtgrassie/monero-pool][jtgrassie-monero-pool]
|
|
|
|
- [rclone/rclone][rclone]
|
2024-09-05 13:34:42 +00:00
|
|
|
|
2024-06-10 14:32:01 +00:00
|
|
|
## Similar Projects
|
|
|
|
|
2024-10-28 13:25:28 +00:00
|
|
|
- [lalanza808/monero.fail][monerofail-repo]
|
|
|
|
- [cake-tech/upptime-monerocom][uptime-monerocom-repo]
|
|
|
|
|
|
|
|
## Donation
|
|
|
|
|
|
|
|
The servers costs are currently covered by myself. If you find this project
|
|
|
|
useful, please consider making a donation to help cover the ongoing expenses.
|
|
|
|
Your contribution will go towards ensuring the continued availability of the
|
|
|
|
website and **my** `stagenet` and `testnet` public remote nodes.
|
|
|
|
|
|
|
|
XMR Donation address:
|
|
|
|
|
|
|
|
```plain
|
|
|
|
8BWYe6GzbNKbxe3D8mPkfFMQA2rViaZJFhWShhZTjJCNG6EZHkXRZCKHiuKmwwe4DXDYF8KKcbGkvNYaiRG3sNt7JhnVp7D
|
|
|
|
```
|
|
|
|
|
|
|
|
![][./frontend/static/img/monerotip.png]
|
|
|
|
|
|
|
|
Thank you!
|
2024-06-10 15:40:44 +00:00
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
This project is licensed under [GLWTPL](./LICENSE).
|
2024-09-05 13:34:42 +00:00
|
|
|
|
2024-10-28 13:25:28 +00:00
|
|
|
[geoip-doc]: https://dev.maxmind.com/geoip/geoip2/geolite2/ "GeoIP documentation"
|
|
|
|
[server-systemd-service]: ./deployment/init/xmr-nodes-server.service "systemd service example for server"
|
|
|
|
[prober-systemd-service]: ./deployment/init/xmr-nodes-prober.service "systemd service example for prober"
|
|
|
|
[prober-systemd-timer]: ./deployment/init/xmr-nodes-prober.timer "systemd timer example for prober"
|
|
|
|
[jtgrassie-monero-pool]: https://github.com/jtgrassie/monero-pool "A Monero mining pool server written in C"
|
|
|
|
[rclone]: https://github.com/rclone/rclone "rclone GitHub repository"
|
|
|
|
[monerofail-repo]: https://github.com/lalanza808/monero.fail "Lalanza808's monero.fail GitHub repository"
|
|
|
|
[uptime-monerocom-repo]: https://github.com/cake-tech/upptime-monerocom "monero.com uptime GitHub repository"
|