En la primera part vam veure els primers passos. En aquesta entrada veurem els finals:
- instal·lar nginx
- obtenir un certificat SSL
- clonar Pleroma
- instal·lar el gestor de versions Elixir/Erlang asdf
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
### 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.14.0
erlang 25.1.1
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.3:
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.11.3
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 responent 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
nginx
Com a root, copiem la configuració d’exemple per a nginx:
cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.nginx
I l’enllacem per a activar-la:
ln -s /etc/nginx/sites-available/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx
Ara ja podem configurar nginx per dir-li on tenim el certificat creat abans. Editem /etc/nginx/sites-available/pleroma.nginx
i assegurem tenir aquestes dues línies que diuen on trobar els certificats obtinguts:
ssl_certificate /etc/letsencrypt/live/aarch.ddns.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/aarch.ddns.net/privkey.pem;
En els dos blocs server
hem de substituir example.tld
per el nostre domini aarch.ddns.net
.
Desem els canvis.
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
Primera visita al nostre 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!