Fork 0

6.1 KiB

Le Spam

There are some on the Internet that like to spam and attack Mastodon nodes. Often, this is related to political attacks, but it will run the gamut of the weirdness on Earth.

Groups of moderators are created, some working together, to allow them to shape their server as they like.


Rapidblock is software that allows Mastodon nodes to block unwanted servers more easily. It helps put the community back in charge of their own server. Or that's at least the goal, as far as I can tell. I am not the author of it. It is also in very early development, but is mature enough to try out, if you're familiar with server administration.

If you are running a .deb APT based distro, it may work for you to install it thusly (if you don't mind running shell scripts unseen--insecure...).

curl -s https://apt.rapidblock.org/install.sh | sudo bash

If you want to go right into the repo and grab a .deb, they are here:

Note, there are packages for both amd64 (x86) and arm64. Those builds don't install on Debian Bullseye (11/stable) though, because they use zstd compression, which Bullseye APT dpkg-deb doesn't support.

If you want to build it by hand, here's a q uick & dirty build for Debian Bullseye (11/stable).

To build, a newer go compiler is needed than ships in the main Bullseye repo. It is in the Bullseye backports repo.

Edit /etc/apt/sources.list and make sure it has a line like this:

deb http://mirrors.kernel.org/debian bullseye-backports main
sudo apt update
sudo apt install -t bullseye-backports golang-go
git clone https://github.com/rapidblock-org/rapidblock
cd rapidblock
go install
go build

That should build a binary rapidblock. To confirm it works, run:

$ ./rapidblock --help
unknown option: --help
Usage: rapidblock [-tV] [-A value] [-c value] [-d value] [-D value] [-k value] [-m value] [-p value] [-s value] [-S value] [-x value]
 -A, --account-data-file=value
                   [prepare-data] path to the groups.io cookies and database
                   column mappings
 -c, --csv-file=value
                   [export-csv] path to the CSV file to create
 -d, --data-file=value
                   [prepare-data, export-csv,sign, verify, apply] path to the
                   JSON file to create, export from, sign, verify, or apply
 -D, --database-url=value
                   [apply] PostgreSQL database URL to connect to
 -k, --private-key-file=value
                   [generate-key, sign] path to the base-64 Ed25519 private key
                   file to sign with
 -m, --mode=value  select mode of operation: prepare-data,
                   export-csv,generate-key, sign, verify, apply
 -p, --public-key-file=value
                   [generate-key, sign, verify] path to the base-64 Ed25519
                   public key file to verify with
 -s, --signature-file=value
                   [sign, verify] path to the base-64 Ed25519 signature file to
                   create or verify
 -S, --source-id=value
                   [prepare-data] ID of the Google Sheet spreadsheet to pull
                   data from
 -t, --text        [sign, verify] perform newline canonicalization, under the
                   assumption that --data-file is text
 -V, --version     show version information and exit
 -x, --software=value
                   [apply] select which server software is in use:
                   mastodon-4.x, mastodon-3.x

Following the same setup as upstream used in their Debian package, we can manually copy files into place:

sudo mkdir -p /opt/rapidblock/share

sudo mkdir -p /opt/rapidblock/scripts

sudo mkdir -p /opt/rapidblock/bin

sudo cp dist/cron.crontab /etc/cron.d/rapidblock

sudo cp dist/cron.default /etc/default/rapidblock

sudo cp dist/cron.sh /opt/rapidblock/scripts/cron.sh

sudo cp dist/rapidblock_dot_org.pub /opt/rapidblock/share/rapidblock-dot-org.pub

sudo cp rapidblock /opt/rapidblock/bin/rapidblock

This has to be run as the postgres user.

sudo su - postgres

curl -o /tmp/blocklist.json https://rapidblock.org/blocklist.json

rapidblock                                                              \
        --software=mastodon-4.x                                         \
        --mode=apply                                                    \
        --data-file=/tmp/blocklist.json                                 \

Note the database name mastodon_production was default for Mastodon install, but you may have another name.

Running it may give output similar to this:

added 166 new block(s)

Perhaps also:

# Maybe for convenience ? XXX
sudo ln -s /opt/rapidblock/bin/rapidblock /usr/local/bin

# Need to find this file ? Not in repo. Downloaded?
#sudo cp XXX opt/rapidblock/share/rapidblock.intoto.jsonl

I tried this to get an initial blocklist imported. The import appeared to work, and I can see it in the logs, but I don't see the actual list of blocked domains in the admin interface.

To get it working with cron, this file will likely need to be edited:

sudo $EDITOR /etc/default/rapidblock

Then change this line:

  "mastodon-4.x|postgresql:///mastodon?host=/run/postgresql&port=5433" \

To something like this:

  "mastodon-4.x|postgresql:///mastodon_production" \

Issues with Rapidblock:

  • Uses proprietary github.
  • Uses proprietary google sheets.
  • Uses proprietary groups.io.


Oliphant also has a block list. Overview:

Raw block list:

Another nice resource from Oliphant:

More Block Tools



Unofficial project, not part of official Mastodon software or website. Upstream sources under their respective copyrights.

License: CC By SA 4.0 International and/or GPLv3+ at your discretion.

Copyright © 2023, Jeff Moe.