NOpfs, a content-blocking plugin for Kubo/IPFS

Kubo v0.21.0 is the first stable release of Kubo that supports the NOpfs plugin and vice-versa :tada:

This plugin parses content blocking lists in ~/.config/ipfs/denylists, effectively blocking the content from being retrieved/resolved by Kubo (and thus, provided on the gateways).

You can download the prebuilt binaries for v0.21.0 here. Installation consists in placing the plugin file in ~/.ipfs/plugins.

You can write your own denylist (example below) or grab the Protocol Labs-curated BadBits denylist..

You can add items to a denylist with something like:

echo "/ipfs/<cid>" >> ~/.config/ipfs/mylist.deny

No need to re-start your Kubo daemon. Any appended lines are picked up automatically.

Hereโ€™s a simplified example of the syntax (more comprehensive example in the repo):

version: 1
name: blocking list
description: A collection of bad things we have found in the universe
author: @myself
# Blocking by CID - blocks wrapped multihash.
# Does not block subpaths.
# Block all subpaths
# Block some subpaths (equivalent rules)
# Block some subpaths with exceptions
# Block IPNS domain name
# Block IPNS domain name and path
# Block IPNS key - blocks wrapped multihash.

# Double hash CID block
# base58btc-sha256-multihash(QmVTF1yEejXd9iMgoRTFDxBv7HAz9kuZcQNBzHrceuK9HR)
# Blocks bafybeidjwik6im54nrpfg7osdvmx7zojl5oaxqel5cmsz46iuelwf5acja
# and QmVTF1yEejXd9iMgoRTFDxBv7HAz9kuZcQNBzHrceuK9HR etc. by multihash

# Double hash Path block using blake3 hashing
# base58btc-blake3-multihash(gW7Nhu4HrfDtphEivm3Z9NNE7gpdh5Tga8g6JNZc1S8E47/path)
# Blocks /ipfs/bafyb4ieqht3b2rssdmc7sjv2cy2gfdilxkfh7623nvndziyqnawkmo266a/path
# /ipfs/bafyb4ieqht3b2rssdmc7sjv2cy2gfdilxkfh7623nvndziyqnawkmo266a/path
# /ipfs/f01701e20903cf61d46521b05f926ba1634628d0bba8a7ffb5b6d5a3ca310682ca63b5ef0/path etc...
# But not /path2