Skip to content

Domains/actor blocking and instance-level moderation tools

Agate requested to merge domain-actor-block into develop

See #580 (closed)

Following the work done in !512 (merged) and !504 (merged), this MR implements the first actual moderation feature of Funkwhale 🎉 🎉

As shown in the gif below, domain and account admin area now support setting moderation rules (internally called instance policies) to partially or completely block a domain or account.



  • Full blocking a domain will purge the database from libraries, uploads, messages, follows, etc. for all the accounts of this domain
  • Full blocking an account will have the same effect but on the account data only
  • Admins can also purge multiple accounts / domains by hand in the admin without blocking those
  • Instance policies are applied when receiving messages from other instances, but also when fetching data. For instance, if is blocked, local users who try to follow a library from this domain will see an error message
  • Policies support different settings (this was heavily inspired by what's available in Mastodon, and the suggested improvements suggested here by @ThibG):
    • Block everything: no data will be received from or send toward the targeted domain/account
    • Reject media: no user avatars, attachments, audio files or metadata (artists, albums, tracks…) will be downloaded. Existing entries will be removed.
    • Silence activity: domain/account activity (favorites, etc.) will be hidden in public areas, except from followers
    • Silence notifications: local users will never receive notifications from the account/domain unless they're following the sender
    • Those two last options refer to future Funkwhale developments and as such are currently hidden in the UI to avoid confusion
  • Policies can have an optionnal summary describing why the policy is in place. This is only shown in admin in this version, but we could imagine having an opt-in setting to display this data to local users or publicly
  • Each policy can be temporarily disabled/enabled on the fly
Edited by Agate

Merge request reports