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.
I wrote this guide for doing it through the DB. It may not work if you've already removed the communities and they got re-created with a different id in the DB, though.
Thanks! That's exactly what I was looking for :)
I have two questions though.
Should I stop lemmy before running this script?
-- Easiest way to disable triggers for a transaction. If you know of a better way, please share. SET session_replication_role = replica; How do I enable it back?
I stopped Lemmy to run it, but that was because I had already stopped it to take a full backup first. I was also removing a very large, active community. I don't think it was necessary, and I've removed other communities with Lemmy running. Just see the caveat about restarting Lemmy to make sure it "forgets" the community.
The triggers will only be disabled for the run of that script in that session. So you don't have to worry about turning them back on because they were never turned off for any other DB sessions.
My guess is remote instances still consider the bots to be subscribed and thus kept sending new posts and comments. I don't know how to fix this situation though.