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:

Importar y exportar una base de datos en PostgreSQL
Vamos con otro de esos artículos obligados para un blog de SysAdmins. Generalmente para importar y exportar bases de datos en PostgreSQL podemos utilizar aplicaciones como phpPgAdmin pero a veces dan problemas con bases de datos demasiadas pesadas y acabamos recibiendo un time-out.
🗨️
Normalmente, la instalación de Mastodon la tendremos que hacer usando PostgreSQL, si has utilizado otro servidor de bases de datos, deberás de exportar la base de datos manualmente.

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:

Instalar PostgreSQL en Debian 11
PostgreSQL es un sistema de gestión de bases de datos relacionales de código abierto y de nivel avanzado. En el siguiente artículos os explicaremos como instalar PostgreSQL en Debian 11. Antes de la instalación, vamos a echar un vistazo rápido a las características de PostgreSQL.

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.

Copiar ficheros del servidor a tu ordenador local
En ocasiones nos encontraremos que necesitamos copiar un fichero para tenerlo en local. Ya sea copiar una base de datos, un backup de un directorio, unos registros de log de Apache para compartirlos con soporte de tu proveedor...
🗨️
Solo deberéis de modificar los parámetros del comando: ‌‌‌‌

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.

Habilitar acceso remoto en PostgreSQL
PostgreSQL es un potente sistema de gestión de bases de datos relacionales, puede manejar grandes cargas de trabajo desde una sola máquina hasta la un centro de datos.

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:

Conectar con una base de datos

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.

La fecha se debe de introducir de la siguiente forma: YYYY-MM-DD

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. 🎉

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación