Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/probe-lab/musa
🍌 A lean DHT bootstrapper for any libp2p-based network
https://github.com/probe-lab/musa
Last synced: 9 days ago
JSON representation
🍌 A lean DHT bootstrapper for any libp2p-based network
- Host: GitHub
- URL: https://github.com/probe-lab/musa
- Owner: probe-lab
- Created: 2023-09-19T12:21:34.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-08-23T12:54:46.000Z (4 months ago)
- Last Synced: 2024-08-23T14:19:20.524Z (4 months ago)
- Language: Go
- Size: 314 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🍌 Musa
[![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)
[Musa](https://en.wikipedia.org/wiki/Musa_(genus)) is a lean bootstrapper for any libp2p-based network. It's called like that to capture the [🍌](https://en.wikipedia.org/wiki/Musa_(genus)) vibes [around here](https://github.com/ipfs/kubo/pull/8958).
## Table of Contents
- [Table of Contents](#table-of-contents)
- [Background](#background)
- [Usage](#usage)
- [Tracing](#tracing)
- [Configuration](#configuration)
- [Maintainers](#maintainers)
- [Contributing](#contributing)
- [License](#license)## Background
The current bootstrappers run by [Protocol Labs](https://protocol.ai) are
instances of [Kubo](https://github.com/ipfs/kubo) and one other [written in Rust](https://github.com/libp2p/rust-libp2p/tree/master/misc/server) [[blog post](https://blog.ipfs.tech/2023-rust-libp2p-based-ipfs-bootstrap-node/)].
It is good to have implementation diversity in case of a regression that could
render the network unreachable. We have already [shipped a feature](https://github.com/ipfs/kubo/pull/8856)
that uses previously identified peers as backup bootstrap peers. However, it
will take time until peers will upgrade their Kubo installation and therefore
won't benefit from that feature for a while. With Musa we're adding to the effort
of diversifying the fleet of bootstrap peers.Because of the way it is built, it can be configured to bootstrap into any
libp2p-based network. Further, we expect it to require minimal resources## Usage
Just run
```sh
$ go run *.go
```in the root directory of this repository.
### Tracing
To enable tracing, first start the [Jaeger](https://www.jaegertracing.io/) container:
```shell
docker run --rm --name jaeger -p 16686:16686 -p 4317:4317 jaegertracing/all-in-one:1.49
```Then provide the `--trace-host` and `--trace-port` command line flags:
```sh
$ go run *.go --trace-host localhost --trace-port 4317
```Traces will be available at [http://localhost:16686](http://localhost:16686).
## Configuration
There are plenty of configuration options. Just provide the `--help` command line flag
```text
NAME:
musa - a lean bootstrapper process for any networkUSAGE:
musa [global options] command [command options] [arguments...]COMMANDS:
help, h Shows a list of commands or help for one commandGLOBAL OPTIONS:
--host value the network musa should bind on (default: "127.0.0.1") [$MUSA_HOST]
--port value the port on which musa should listen on (default: random) [$MUSA_PORT]
--private-key value base64 private key identity for the libp2p host (default: "127.0.0.1") [$MUSA_PRIVATE_KEY]
--protocol value the libp2p protocol for the DHT (default: "/ipfs/kad/1.0.0") [$MUSA_PROTOCOL]
--metrics-host value the network musa metrics should bind on [$MUSA_METRICS_HOST]
--metrics-port value the port on which musa metrics should listen on (default: 0) [$MUSA_METRICS_PORT]
--trace-host value the network musa trace should be pushed to [$MUSA_TRACE_HOST]
--trace-port value the grpc otlp port to which musa should push traces to (default: 0) [$MUSA_TRACE_PORT]
--log-level value the structured log level (default: 0) [$MUSA_LOG_LEVEL]
--help, -h show help
```## Maintainers
[@ProbeLab](https://github.com/probe-lab).
## Contributing
Feel free to dive in! [Open an issue](https://github.com/probe-lab/musa/issues/new) or submit PRs.
## License
[MIT](LICENSE) © Protocol Labs