PLEROMA

Pleroma es una red federada creada con protocolos abiertos. Compatible con GNU Social, Mastodon, y con otras implementaciones de ActivityPub y OStatus.
Somos una red descentralizada y que usamos software libre:

  • Descentralizada significa que puedes crearte una cuenta en cualquier servidor/nodo/instancia que compartan mismo protocolo.
  • Software libre es el software que respeta la libertad de los usuarios y la comunidad. A grandes rasgos, significa que los usuarios tienen la libertad de ejecutar, copiar, distribuir, estudiar, modificar y mejorar el software.
    Si quieres saber más sobre el Fediverso, te recomiendo la siguiente lectura:
    https://flosspirit.wordpress.com/fediverso/

Este de arriba es la presentación de Pleroma, que es otra red social parecida a Mastodon. Yo no lo uso porqué he no he entendido su filosofía de funcionamiento, y no tengo tiempo para esto (nunca he usado redes sociales) Pero la he instalado para ver si funcionaba en el raspberryPi4 y ahora pongo aquí mis notas de instalación, por si alguien prefiere Pleroma a Mastodon.

Doy por descontado que estas en una Debian o derivada (raspberryOS buster en mi caso). Esta la había puesta en un servidor externo al gateway donde redirigo el tráfico con Traefik y donde también gestiono los certificados SSL. Pero si no usas traefik, puedes añadir los certificados de lets’encrypt con facilidad.
También doy por descontado que ya has creado un subdominio (social.tormentasolar.win en mi caso) y configurado ddclient si tienes la IP pública dinámica.
La instalación va a estar en la carpeta /opt del raspberry, así que conectate a el pos ssh, asegurate de tener suficiente espacio en el disco (yo he montado /opt en un disco externo de 300GB que tenía tirado en le cajón)

sudo apt install git build-essential postgresql postgresql-contrib cmake libmagic-dev postgresql-11-rum

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

sudo apt update
sudo apt install elixir erlang-dev erlang-nox

sudo apt install imagemagick ffmpeg libimage-exiftool-perl

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

sudo mkdir -p /opt/pleroma
sudo chown -R pleroma:pleroma /opt/pleroma
sudo -Hu pleroma git clone -b stable https://git.pleroma.social/pleroma/pleroma /opt/pleroma

cd /opt/pleroma

sudo -Hu pleroma mix deps.get

Después de un rato de instalación de los paquetes, vamos a generar la configuración

sudo -Hu pleroma mix pleroma.instance gen

Contesta con Sí a la pregunta si quieres instalar Rebar3. Esto te va a llevar un buen rato porqué ademas de instalar un montón de paquetes, el sistema tiene que compilar Pleroma.
Al final te hará algunas preguntas simples para genera la configuración de Pleroma

Ahora vamos a probar si funciona y que no haya errores. Esta es solo una prueba y te bloqueará la consola hasta que no pulses en CTRL-C para terminar el proceso

sudo -Hu pleroma mv config/{generated_config.exs,prod.secret.exs}
sudo -Hu postgres psql -f config/setup_db.psql
sudo -Hu pleroma MIX_ENV=prod mix ecto.migrate
sudo -Hu pleroma MIX_ENV=prod mix phx.server

CTRL-C para terminar

Después de probar en el terminal pleroma, seguimos con la instalación y añadimos al servidor web

sudo apt install nginx

Como que voy a usarlo detrás de traefik, no le voy añadir los certificados SSL, porqué de eso se ocupar directamente traefik, pero tu haz lo que te conviene. Considera pero que si hay en el medio Traefik, no podrás crear los certificados porqué este intercepta su creación. Con Traefik en el medio tendrás además que desactivar el puerto 443 modificando el fichero de configuración de nginx (que pongo a bajo)

Lo que sigue es si NO vas a usar Traefik y el servidor está expuesto a internet

sudo service nginx stop
sudo apt install certbot
sudo mkdir -p /var/lib/letsencrypt/
sudo certbot certonly --email maxlinux2000@tormentasolar.win -d social.tormentasolar.win --standalone

claramente tu tienes que poner tu dirección de correo y tu dominio web que ya has configurado en tu proveedor de dns y te has asegurado que el ping desde otra red, contesta con la ip de tu red de casa.

sudo cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.nginx
sudo ln -s /etc/nginx/sites-available/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx

mcedit /etc/nginx/sites-available/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx

Tienes que modificar en mcedit (u otro editor de texto, como nano o Vim…) el “servername” y el recorrido de los certificados ssl, que serán algo como “/etc/letsencrypt/live/social.tormentasolar.win”

sudo systemctl enable --now nginx.service
sudo service nginx restart

Copia ahora el ficherio se “pleroma.service” de ejemplo y modifica lo a tu gusto y necesidades. Lo que no entiendas, dejalo como está

sudo cp /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service
mcedit /etc/systemd/system/pleroma.service
sudo systemctl enable --now pleroma.service
sudo service pleroma restart

La primera vez tarda un poco arrancer porque tiene que crear la base de dato.
Ahora creamos el primer usuario con:

sudo -Hu pleroma MIX_ENV=prod mix pleroma.user new maxlinux2000 maxlinux2000@tormentasolar.win -

donde maxlinux2000 es mi usuario administrador y maxlinux2000@tormentasolar.win es mi dirección de correo ( el – final es importante)

Final de la instalación con certificados ssl

Configuración de NGINX sin certificados ssl dado que de esto se ocupa otro servidor (Traefik el el servidor de gateway en mi caso)

Dado que voy a usare este red social detrás del traefik (reverse proxy), el servidor web tiene que contestar solo en el puerto 80 y sin certificado ssl.
Modifica la opción “server_name” con tu dominio

# default nginx site config for Pleroma
#
# Simple installation instructions:
# 1. Install your TLS certificate, possibly using Let's Encrypt.
# 2. Replace 'social.tormentasolar.win' with your instance's domain wherever it appears.
# 3. Copy this file to /etc/nginx/sites-available/ and then add a symlink to it
#    in /etc/nginx/sites-enabled/ and run 'nginx -s reload' or restart nginx.

proxy_cache_path /tmp/pleroma-media-cache levels=1:2 keys_zone=pleroma_media_cache:10m max_size=10g
                 inactive=720m use_temp_path=off;

# this is explicitly IPv4 since Pleroma.Web.Endpoint binds on IPv4 only
# and `localhost.` resolves to [::0] on some systems: see issue #930
upstream phoenix {
    server 127.0.0.1:4000 max_fails=5 fail_timeout=60s;
}

server {
    server_name    social.tormentasolar.win;

    listen         80;
    listen         [::]:80;

    # Uncomment this if you need to use the 'webroot' method with certbot. Make sure
    # that the directory exists and that it is accessible by the webserver. If you followed
    # the guide, you already ran 'mkdir -p /var/lib/letsencrypt' to create the folder.
    # You may need to load this file with the ssl server block commented out, run certbot
    # to get the certificate, and then uncomment it.
    #
    # location ~ /\.well-known/acme-challenge {
    #     root /var/lib/letsencrypt/;
    # }
##    location / {
##      return         301 https://$server_name$request_uri;
##    }

    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript application/activity+json application/atom+xml;

    # the nginx default is 1m, not enough for large media uploads
    client_max_body_size 16m;
    ignore_invalid_headers off;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    location / {
        proxy_pass http://phoenix;
    }

    location ~ ^/(media|proxy) {
        proxy_cache        pleroma_media_cache;
        slice              1m;
        proxy_cache_key    $host$uri$is_args$args$slice_range;
        proxy_set_header   Range $slice_range;
        proxy_cache_valid  200 206 301 304 1h;
        proxy_cache_lock   on;
        proxy_ignore_client_abort on;
        proxy_buffering    on;
        chunked_transfer_encoding on;
        proxy_pass         http://phoenix;
    }

    location /api/fedsocket/v1 {
        proxy_request_buffering off;
        proxy_pass http://phoenix/api/fedsocket/v1;
    }

}
sudo systemctl enable --now nginx.service
sudo service nginx restart

Copia ahora el ficherio se “pleroma.service” de ejemplo y modifica lo a tu gusto y necesidades. Lo que no entiendas, dejalo como está

sudo cp /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service
mcedit /etc/systemd/system/pleroma.service
sudo systemctl enable --now pleroma.service
sudo service pleroma restart

La primera vez tarda un poco arrancer porque tiene que crear la base de dato.
Ahora creamos el primer usuario con:

sudo -Hu pleroma MIX_ENV=prod mix pleroma.user new maxlinux2000 maxlinux2000@tormentasolar.win -

donde maxlinux2000 es mi usuario administrador y maxlinux2000@tormentasolar.win es mi dirección de correo ( el – final es importante)

Comments are closed.