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'
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
Comentarios