Hello everyone!
Recently my instance have become a target of community subscribers bots, which subscribed my instance to hundreds of communities. I’ve deleted all those bot accounts manually and enabled captcha and application for registration.
Then I stopped all containers except for lemmy-postgres and ran a following query to purge all empty communities
delete from community where id in (select community_id from community_aggregates ca where ca.subscribers = 0 for update skip locked);
At first I thought that it worked because all communities and related posts have disappeared, but when I started all the other containers, lemmy for some reason again started adding back those communities with 0 subscribers to my database.
What am I doing wrong? How do I purge them? Also, I would appreciate on any guide how to remove all dangling images (which don’t have any reference from db) in pict-rs.
Thanks!
sudo docker run --network [network name] curlimages/curl --no-progress-meter --write-out '\n' -X POST -H 'x-api-token: [API TOKEN HERE]' pictrs:8080/internal/purge?alias=[image name/alias]
Basically, call the /internal/purge endpoint of pict-rs by sending the API token as a header and the filename of the image as a URL param. You have to do this against the pict-rs service directly since Lemmy-UI doesn’t proxy that
/internal
route.Unfortunately, as stated in my guide, I don’t have any facilities in the script (yet) to pull out any pict-rs URLs that are local to your instance. After the script runs, those references in the DB are gone and there’s no way to delete them from pict-rs without the filenames/aliases. You can, however, get those from a database backup if you’re so inclined.
e.g. restore a backup to another postgres instance, write a query to look for
https://{your-instance-domain}/pictrs/image
in the post and comment tables that are linked to the given community ID. The table links should be in the bottom of the guide.