diff --git a/CHANGELOG.md b/CHANGELOG.md index 7dc54570b..6e54d2aa5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -76,6 +76,7 @@ plugin](https://github.com/ipfs/go-ipld-eth) that lets ipfs ingest and operate on all ethereum blockchain data. Soon to come are plugins for the bitcoin and zcash data formats. In the future, we will be adding plugins for other things like datastore backends and specialized libp2p network transports. +You can read more on this topic in [Plugin docs](docs/plugins.md) In order to simplify its integration with fs-repo-migrations, we've switched the ipfs/go-ipfs docker image from a musl base to a glibc base. For most users diff --git a/docs/experimental-features.md b/docs/experimental-features.md index 8ac3b2f22..9bae9ab3e 100644 --- a/docs/experimental-features.md +++ b/docs/experimental-features.md @@ -282,3 +282,20 @@ Peers can see their (unspecific) relay address in the output of dialing. - [ ] Dialing priorities for relay addresses; arguably, relay addresses should have lower priority than direct dials. + +## Plugins + +### In Version +0.4.11 + +Plugins allow to add functionality without the need to recompile the daemon. + +### Basic Usage: + +See [Plugin docs](./plugins.md) + +### Road to being a real feature + +- [ ] Better support for platforms other than Linux +- [ ] More plugins and plugin types +- [ ] Feedback on stability diff --git a/docs/plugins.md b/docs/plugins.md new file mode 100644 index 000000000..bb049f0d1 --- /dev/null +++ b/docs/plugins.md @@ -0,0 +1,49 @@ +# Plugins + +Since 0.4.11 go-ipfs has an experimental plugin system that allows augmenting +the daemons functionality without recompiling. + +When an IPFS node is created, it will load plugins from the `$IPFS_PATH/plugins` +directory (by default `~/.ipfs/plugins`). + +### Plugin types + +#### IPLD +IPLD plugins add support for additional formats to `ipfs dag` and other IPLD +related commands. + +### Supported plugins + +| Name | Type | +|------|------| +| git | IPLD | + +#### Installation + +##### Linux + +1. Build included plugins: +```bash +go-ipfs$ make build_plugins +go-ipfs$ ls plugin/plugins/*.so +``` + +3. Copy desired plugins to `$IPFS_PATH/plugins` +```bash +go-ipfs$ mkdir -p ~/.ipfs/plugins/ +go-ipfs$ cp plugin/plugins/git.so ~/.ipfs/plugins/ +go-ipfs$ chmod +x ~/.ipfs/plugins/git.so # ensure plugin is executable +``` + +4. Restart daemon if it is running + +##### Other + +Go currently only supports plugins on Linux, for other platforms you will need +to compile them into IPFS binary. + +1. Uncomment plugin entries in `plugin/loader/preload_list` +2. Build ipfs +```bash +go-ipfs$ make build +```