Chief is a write policy plugin for Strfry (which is a nostr relay software). It enables relay operators to blacklist or whitelist public keys, event kinds and specific words or sentences using either a JSON file or a postgresql database.
- Compile from source
- Run
cargo build --release
.
- Run
- Put the compiled binary where you want it to run from
- E.g.
sudo cp target/release/chief /usr/local/bin
.
- E.g.
- Create a folder in
/etc
where your configuration files will live and copy the example config to that foldersudo mkdir /etc/chief/
sudo cp docs/examples/example-config.toml /etc/chief/config.toml
.- This path is currently hardcoded and cannot be changed.
- Configure stryfry to use Chief as the writepolicy
- Under "relay.writePolicy", set the plugin to
/usr/local/bin/chief
- Under "relay.writePolicy", set the plugin to
writePolicy {
# If non-empty, path to an executable script that implements the writePolicy plugin logic
plugin = "/usr/local/bin/chief"
}
The datasource contains the public keys, kinds and/or words you want to either whitelist or blacklist. This application supports two different datasources: a JSON file or a postgresql database.
To use a JSON file as the datasource, please read this document.
To use a postgresql database as the datasource, please read this document.
The application has three filters: public keys, kinds and content, and each of them can be individually activated or deactivated in the configuration file. For public keys and kinds, you can also choose to either blacklist or whitelist the items in the lists by setting the filter_mode to "Blacklist" or "Whitelist". I don't think it makes any sense to whitelist content, so it is always blacklisted.