Flubber provides a language-agnostic API for creating a peer-peer authenticated messaging and data storage fabric using libp2p and IPFS. Flubber embeds an IPFS node and runs as a REST and WebSocket server and provides a simple-to-use API for the following tasks
- Authentication using DIDs
- Authenticated direct messaging between nodes
- Pub-sub message queues
- Binary and linked data storage and retrieval
- Using IPFS data pinning services like Pinata
The goal of Flubber is to make it easy for developers across all languages and platforms to use the peer-peer communication abilities of libp2p and IPFS in their own apps and services. Flubber can be used to to add peer-peer communication to apps apps or as a low-level service API for building enterprise or commercial peer-peer communication and data storage services, without having to wrangle with integration of the native libp2p and IPFS libraries or building out a server around the Kubo RPC API.
Requires Go 1.19+
- Clone the repo:
git clone https://github.com/allisterb/flubber.git
- Run
go build .
in the repo directory
- ENS domain name - you node will run under this identity
- Infura API seceret key
- Pinata API secret key
- Run
flubber node init
in the repo directory to create the Flubber node configuration file at$HOME/.flubber/node.json
or%USERPROFILE%\.flubber\node.json.
This file will contain the IPFS identity the node will run under. - In the ENS domain name you want to use with Flubber add a text record called
ipfsKey
with the IPFS public key from your node configuration: - Set the
Did
field in your node configurations to your ENS domain name - Set the Infura and Pinata API and secret key fields in your node configuration.
- Run
flubber node run
to start the node.
More info can be found on the Flubber wiki