No estás usando esta distribución?

Selecciona una versión o distribución diferente

Después de hacer un artículo sobre cómo instalar un nodo de GNU Social, tocaba probar otras cosas diferentes, así que me decidí por probar de instalar Pleroma. Para quien no sepa que carajos es, Pleroma es una red social federada compatible con GNU Social, Mastodon y otras implementaciones de ActivityPub y OStatus. Es Software Libre y está bajo la licencia AGPLv3. Actualmente Pleroma consiste en dos componentes: un backend, llamado Pleroma y un fronted para usuarios llamado Pleroma-FE.

Igual con esto me equivoco, pero hasta donde he podido ver, por lo visto se puede utilizar otros frontends para Pleroma. Parece que se puede utilizar la interfaz actual de Mastodon para ser usado bajo Pleroma -o quizás es al revés?-. También hay posibilidad de usar la interfaz de Pleroma en GNU Social -o no…- (si alguien es tan amable de dejarlo en comentarios… xD)

Bueno, vamos al lío, que es lo que mola. Para realizar este tutorial me he basado en la Wiki del GitLab de Pleroma que la verdad es que está súper bien explicado y además te lo dan todo masticado para simplemente ejecutar y disfrutar. Además lo he montado todo en un Debian GNU/Linux 9.5 «Stretch» con 2 vCores, 4GB de RAM, y 30GB SSD en los maravillosos servidores de Clouding.io. Seguramente este mismo tutorial sirva para versiones actuales de Ubuntu y otras distros basadas en la Madre Debian.

Requisitos para Pleroma

Estos son los paquetes necesarios para Pleroma:

  • PostgreSQL 9.6+ (Es necesario instalar también postgresql-contrib-x.x)
  • Elixir 1.5 or newer (No desde los repositorios de Debian, lo veremos más adelante)
  • erlang-dev
  • erlang-tools
  • erlang-parsetool
  • serlang-xmerl
  • git
  • build-essential
  • nginx o Apache
  • certbot (Usaremos Let’s Encrypt para generar el certificado)

Preparamos el sistema

Esto es Debian y como siempre que hacemos un tutorial:

apt update && apt upgrade -y

Instalamos herramientas necesarias para continuar:

apt install git build-essential cmake libmagic-dev

Y luego instalamos PostgreSQL:

apt install postgresql-14 postgresql-contrib-14

Y también instalamos certbot para luego crear el certificado:

apt-get install certbot python3-certbot-nginx

Instalación de Elixir y Erlang

Como hemos mencionado en el apartado de Requisitos para Pleroma, Elixir lo vamos a instalar desde otro repositorio que no sea el que trae por defecto Debian 9, así que vamos a instalar el siguiente paquete:

wget -P /tmp/ https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb
dpkg -i /tmp/erlang-solutions_2.0_all.deb

Actualizamos repositorios:

apt update

Y luego instalamos Elixir y Erlang:

apt install elixir erlang-dev erlang-parsetools erlang-xmerl erlang-tools

Preparación de la instalación de Pleroma

Lo primero que haremos será ejecutar Pleroma con un usuario propio, de esta manera tendremos la instancia instalada dentro del home del usuario. Yo no soy muy fan de hacer este tipo de instalaciones, pero miraré de hacer una excepción en este caso. Creamos un usuario:

useradd -r -s /bin/false -m -d /var/lib/pleroma -U pleroma

Y añadimos el usuario pleroma al grupo sudo:

usermod -aG sudo pleroma

Creamos este directorio necesario para la instalación:

mkdir -p /opt/pleroma
chown -R pleroma:pleroma /opt/pleroma

Instalación de Pleroma

Nos descargamos el repositorio desde Gitlab:

sudo -Hu pleroma git clone -b stable https://git.pleroma.social/pleroma/pleroma /opt/pleroma

Accedemos al directorio creado para instalar Pleroma:

cd /opt/pleroma

Instalamos las dependencias de Pleroma, si nos pide de instalar Hex, le diremos que sí:

mix deps.get

Generamos el fichero de configuración, si nos pide instalar rebar3, le diremos también que sí:

MIX_ENV=prod mix pleroma.instance gen

Durante la instalación, te pedirá información, así como el nombre de dominio, nombre de la instancia y cuenta de correo del administrador, os dejo la salida del comando a continuación:

Generated pleroma app
Answer a few questions to generate a new config

--- THIS WILL OVERWRITE YOUR config/generated_config.exs! ---

What is your domain name? (e.g. pleroma.soykaf.com): midominio.es
What is the name of your instance? (e.g. Pleroma/Soykaf): Super Nodo de Pleroma
What's your admin email address: miemail@midominio.es

Writing config to config/generated_config.exs.

Este fichero de configuración lo podremos encontrar en config/generated_config.exs, donde podremos configurar diferentes cosas interesantes así como el estado de los registros de nuevas cuentas, proxy o la base de datos.

Movemos el fichero de configuración:

mv config/{generated_config.exs,prod.secret.exs}

Ahora creamos la base de datos que utilizará los datos que hay en el fichero de configuración config/prod.secret.exs:

sudo su postgres -c 'psql -f config/setup_db.psql'
📢
En el fichero de configuración de Pleroma podemos cambiar el nombre de la base de datos y el usuario, en este tutorial usaremos la base de datos y usuario que viene por defecto.

Ahora ejecutamos la migración de la base de datos:

MIX_ENV=prod mix ecto.migrate

En este momento podríamos levantar ya Pleroma, pero antes configuraremos un servidor web para acceder con SSL.

Configuración Nginx

Se puede utilizar Apache, pero ya que en GNU Social usé Apache, esta vez utilizaremos Nginx, pero ya os aviso que no debe cambiar mucho, así que si sois más de Apache no hay problema, eso si, seguramente algunas cosas se harán diferente, pero seguro que sabes hacerlo 😛

Volvemos a ser usuario root y procedemos a instalar Nginx:

apt install nginx

Copiamos el fichero de configuración para Pleroma:

cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx

Ahora editamos el fichero /etc/nginx/sites-enabled/pleroma.nginx y cambiaremos algunas cosas:

Tenemos que modificar el parámetro server_name por nuestro dominio (tanto para el server que escucha por el puerto 80 y para el 443). Luego en la configuración del SSL cambiaremos example.tld, por nuestro dominio.

ssl_trusted_certificate   /etc/letsencrypt/live/example.tld/chain.pem;
ssl_certificate           /etc/letsencrypt/live/example.tld/fullchain.pem;
ssl_certificate_key       /etc/letsencrypt/live/example.tld/privkey.pem;

Tras hacer todos los cambios, paramos Nginx para poder generar el certificado:

systemctl stop nginx

Y generamos el certificado:

certbot certonly --email [TUEMAIL] -d [TUDOMINIO] --standalone

En este punto, iniciamos Nginx de nuevo.

systemctl start nginx

En este punto, podríamos iniciar Pleroma y podríamos acceder desde nuestro navegador. Pero antes de iniciarlo, haremos un servicio para poder reiniciarlo de manera más cómoda.

Configurar arranque automático de Pleroma

Copiamos el fichero de ejemplo para SystemD:

cp /opt/pleroma/installation/pleroma.service /lib/systemd/system/pleroma.service

Iniciamos Pleroma al arranque:

systemctl enable --now pleroma.service

Y ahora si accedemos con nuestro dominio desde un navegador, nos debería de cargar Pleroma! 😀

Tareas de administradores

Ahora ya tenemos una instancia de Pleroma funcionando en nuestro servidor. Lo siguiente es saber que se pueden crear usuarios, añadir moderadores y gestionar usuarios de la siguiente forma.

Para reiniciar la contraseña de un usuario:

mix generate_password_reset username

Para hacer moderador a un usuario -y así poder borrar estados de otros usuarios-:

mix set_moderator username [true|false]

Registrar un usuario:

mix register_user name username email bio password

Eliminar un usuario:

mix rm_user username

Desactivar una cuenta:

mix deactivate_user username@instancename
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