Instal·lar #Pleroma en una #Raspberry Pi 3B+ (o superior), segona part

En la primera part vam veure els primers passos. En aquesta entrada veurem els finals:

Instal·lar nginx

No té cap misteri, com a root:

apt install nginx

Activem la unitat systemd per a assegurar que quan engeguem la nostre Raspberry (si és que la parem mai) també s'iniciï nginx i iniciem nginx ara mateix:

systemctl enable nginx && systemctl start nginx

Confirmem que tenim nginx en marxa:

systemctl status nginx

En una de les línies hem de veure que diu “active”.

Obtenir certificat SSL

Si volem federar amb tot el fedivers, el domini de l'instància Pleroma que estem muntant ha de ser accessible sí o sí de manera segura amb el protocol https. Ens cal obtenir un certificat. Si no tenim instal·lat el paquet certbot fem-ho ara:

apt install certbot

Com a root, obtenim el certificat per a nginx així:

certbot certonly -d aarch.ddns.net —standalone

Es queixarà d'aquest problema perquè tenim nginx en marxa:

Problem binding to port 80: Could not bind to IPv4 or IPv6.

Parem nginx i tornem a provar-ho:

systemctl stop nginx
certbot certonly -d aarch.ddns.net —standalone

Si certbot ens dona l'error Timeout during connect (likely firewall problem) és perquè tenim el firewall amb els ports 80 i 443 tancats. Si el firewall és ufw els obrim així de fàcil:

ufw allow 'Nginx Full'

Tornem a provar:

certbot certonly -d aarch.ddns.net —standalone

Si tot ha anat bé ho sabrem:

Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/aarch.ddns.net/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/aarch.ddns.net/privkey.pem

Ja podem configurar nginx per dir-li on tenim el certificat. La configuració per a nginx de Pleroma hauria de ser a /etc/nginx/sites-available/pleroma.conf. Doncs la editem i assegurem tenir aquestes dues línies que diuen on trobar els certificat obtinguts:

sslcertificate /etc/letsencrypt/live/aarch.ddns.net/fullchain.pem; sslcertificate_key /etc/letsencrypt/live/aarch.ddns.net/privkey.pem;

Desem els canvis i enllaçament la configuració en el directori sites-enabled per a que nginx la tingui en compte:

ln -s /etc/nginx/sites-available/pleroma.conf /etc/nginx/sites-enabled/pleroma.conf

Ara assegurem que a nginx li agrada:

nginx -t

Si respon test is succesful ja podem reiniciar nginx per a que la carregui:

systemctl restart nginx

Clonar Pleroma

Encara no hem creat l'usuari pleroma:

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

Creem el directori on clonarem Pleroma i fem propietari al usuari pleroma:

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

I com a usuari pleroma clonem la darrera versió estable des d'el repositori:

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

instal·lar asdf i compilar Pleroma

Un problema potencial quan instal·lem els paquets Elixir i Erlang amb el gestor de paquets del sistema operatiu és que una actualització d'aquests paquets pot provocar que la nostra flamant instància Pleroma deixi de funcionar (ha passat amb diverses instàncies del fedivers). Per evitar això és una bona idea instal·lar el gestor de versions asdf.

Canviem al directori i al usuari pleroma:

cd /opt/pleroma
sudo -Hu pleroma bash

Ara hem de crear un nou fitxer anomenat .tool-versions, on posarem les versions d'Elixir i Erlang que volem per al nostra Pleroma:

elixir 1.11 erlang 25.2

Desem els canvis i clonem asdf des de la font. La darrera versió estable en el moment d'escriure aquesta entrada és la v0.11.0:

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.11.0

Ara afegim a .bashrc les rutes adients:

echo ". $HOME/.asdf/asdf.sh" >> ~/.bashrc
echo ". $HOME/.asdf/completions/asdf.bash" >> ~/.bashrc

I les carreguem amb:

exec bash

El següent pas és afegir els dos plugins, tant de Elixir com de Erlang:

asdf plugin-add erlang
asdf plugin-add elixir

Instal·lem i compilem tot plegat (trigarà uns quants minuts, paciència):

asdf install

Pot donar algun error xxxx is missing... no passa res, calma. Si et diu Erlang/OTP 25.2 (asdf_25_2) has been successfully built vol dir que tot ha anat bé i podem continuar.

Executem línia a línia els passos següents per a compilar Pleroma:

mix local.hex --force
mix local.rebar --force
mix deps.get
MIX_ENV=prod mix compile

Quan hagi acabat veurem Generated pleroma app. Ara cal que generem la configuració de l'instància:

MIX_ENV=prod mix pleroma.instance gen

Anem responem a totes les preguntes que ens fa, la primera i més important és el domini, en aquest cas és aarch.ddns.net. Quan acabi haurà generat la configuració a config/generated_config.exs. L'hem de moure a config/prod.secret.exs:

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

Ara toca crear la base de dades Postgresql. Sortim del usuari pleroma i encara dins de /opt/pleroma, com a root fem:

sudo -Hu postgres psql -f config/setup_db.psql

Tornem al usuari pleroma i executem ecto.migrate per a crear totes les taules de la base de dades:

MIX_ENV=prod mix ecto.migrate

Altre cop com a root, copiem l'unitat systemd al lloc adient:

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

Editem l'unitat systemd, comentant la línia que diu

ExecStart=/usr/bin/mix phx.server

i afegint a sota les dues línies que veiem a continuació:

;ExecStart=/usr/bin/mix phx.server
Environment="PATH=/var/lib/pleroma/.asdf/shims:/var/lib/pleroma/.asdf/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
ExecStart=/var/lib/pleroma/.asdf/shims/mix phx.server

Recarreguem els canvis amb systemctl daemon-reload i ja podem posar en marxa la nostra flamant instància Pleroma:

systemctl enable pleroma && systemctl start pleroma

Amb el navegador ja podem visitar l'instància Pleroma!

Ep! un moment! voldràs fer-te admin suposo!

sudo -Hu pleroma bash
MIX_ENV=prod mix pleroma.user new <nom_usuari> <adreça de correu> --admin

La segona línia et genera un enllaç per a establir la contrasenya del usuari admin que has creat.

Ja està! A gaudir de la teva sobirania digital!