Ser administrador de un nodo de Mastodon, es una tarea bastante compleja de llevar. Todo va a depender también del número de usuarios que tengas. Pero con estas últimas oleadas por la compra de la red social del pájaro, la limpieza de la base de datos es algo importante.
Así que he decidido crear una serie de artículos explicando tareas de mantenimiento de Mastodon que hago en mi nodo.
El primero de todos será como eliminar aquellos usuarios que su última conexión haya sido anterior a 6 meses.
Descargar la base de datos
Lo primero que haremos será descargar una copia de la base de datos. Por supuesto que no vamos a trabajar con la base de datos en producción 🧐.
Así que generaremos una copia de la base de datos tal y como explicamos en este otro tutorial:

Instalar PostgreSQL en Debian 11 en desarrollo
Ahora tendremos que crear un servidor de desarrollo con PostgreSQL para subir la copia que hemos exportado y asi podernos conectar con algún gestor de bases de datos.
Para ello, tendréis que seguir este otro tutorial:

Copiar base de datos al servidor
A pesar de que es para copiar un fichero en local, podéis utilizar el comando para copiarlo entre servidores.

scp -p 22 mastodon.sql root@[IP_Servidor_Dev]:/[ruta]
Acceder remotamente a la base de datos
Para habilitar el acceso remoto en PostgreSQL deberemos de revisar este otro artículo que explica como hacerlo.

Acceder remotamente con un cliente
Para este tutorial nosotros hemos utilizado DBeaver una aplicación que sirve de cliente para muchos servidores de bases de datos.
En DBeaver, si vamos a Bases de datos - Nueva conexión se nos abrirá esta ventana para seleccionar PostgreSQL:

Luego deberemos de rellenar los datos que nos pide, así como el usuario, la contraseña, etc.

Tras rellenar los datos, podemos Probar conexión... y si nos da el OK, podemos finalizar y conectarnos a la base de datos.
Iremos a Editor SQL - Script SQL y en el editor escribiremos la siguiente consulta SQL:
select email, last_sign_in_at, accounts.username
from users, accounts
where last_sign_in_at <= '2022-04-01'
and accounts.id = users.account_id
Con esto hacemos que las cuentas que no se han conectado desde el 1 de Mayo del 2022 se muestren en al consulta.
Si además, tienes cuentas en tu nodo bajo el mismo dominio, puedes excluirlas de la siguiente forma:
select email, last_sign_in_at, accounts.username
from users, accounts
where email not like '%xarxa.cloud%'
and last_sign_in_at <= '2022-04-01'
and accounts.id = users.account_id
Tendremos que añadir que el e-mail que contenga %dominio.com%
.
Y listo, con esto ya tendremos el listado de las cuentas que tenemos que borrar según las normas de nuestro nodo.
Eliminar usuarios en Mastodon
Ahora es cuando viene lo divertido. Cuando toca eliminar de verdad todos esos usuarios. Ahora que ya tenemos el listado de usuarios (con su e-mail) lo que haremos será copiar todos esos usuarios en un fichero llamado list_users_to_remove
:
fulanito
menganito
t3rr0rz0n3
voidnull
...
Luego podemos crear un script que recorra línea por línea y ejecute el comando para eliminar el usuario:
tootctl accounts delete [USUARIO]
Para ello creamos un script bajo el nombre remove_mastodon_users.sh
y añadimos lo siguiente:
#!/bin/bash
while read line
do
user=`echo $line | cut -d" " -f1`
echo $user
RAILS_ENV=production ./bin/tootctl accounts delete $user
done<list_users_to_remove
Y podemos lanzar el script para que vaya eliminando todos los usuarios del listado. 🎉
Comentarios