Pleroma Sociaal Netwerk Platform te Installeren op Ubuntu 20.04

Pleroma is een open-source gefedereerd sociaal netwerk platform, compatibel met Mastodon en andere ActivityPub platforms. Het is een onderdeel van het Fediverse, een gefedereerd netwerk van instanties die met elkaar kunnen communiceren via een gemeenschappelijk protocol. Een enkel account op een instantie kan met het hele Fediverse netwerk praten.

Deze gids toont je hoe je je eigen Pleroma instantie kunt maken door hem op een Ubuntu 20.04 gebaseerde server te installeren.

Vereisten

  • Een server met Ubuntu 20.04.

  • Een niet-root sudo gebruiker.

  • Zorg dat alles bijgewerkt is.

    $ sudo apt update
    $ sudo apt upgrade
    
  • Enkele pakketten en afhankelijkheden die je nodig hebt voor de installatie van Pleroma.

    $ sudo apt install wget curl gnupg2 ca-certificates lsb-release gnupg zip libncurses5 libmagic-dev -y
    

Stap 1 - Configureer Firewall

De eerste stap is het instellen van de firewall. Ubuntu wordt standaard geleverd met ufw (Uncomplicated Firewall).

Controleer of de firewall draait.

$ sudo ufw status

Je zou de volgende uitvoer moeten krijgen.

Status: inactive

Sta SSH poort toe, zodat de firewall de huidige verbinding niet verbreekt bij het inschakelen ervan.

$ sudo ufw allow OpenSSH

Sta ook HTTP en HTTPS poorten toe.

$ sudo ufw allow 80
$ sudo ufw allow 443

Schakel de firewall in

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Controleer nogmaals de status van de firewall.

$ sudo ufw status

Je zou een gelijkaardige uitvoer moeten zien.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Stap 2 - Installeer PostgreSQL

Voeg de officiële PostgreSQL repository toe aan de Ubuntu bronnenlijst.

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Voeg de GPG sleutel van de repository toe.

$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

Werk de lijst met systeempakketten bij.

$ sudo apt update

Stap 3 - Installeer Nginx

Ubuntu 20.04 wordt standaard geleverd met de stabiele versie van Nginx 18.

$ sudo apt install nginx

Stap 4 - Installeer Pleroma

Deze gids installeert Pleroma vanaf een OTP uitgave. De eerste stap is het aanmaken van een Pleroma gebruiker zonder inlogmogelijkheden. Er wordt ook de thuismap voor aangemaakt op /opt/pleroma.

$ sudo adduser --system --shell  /bin/false --home /opt/pleroma pleroma

Schakel over naar de Pleroma gebruiker. Maar eerst moeten we overschakelen naar de root gebruiker.

$ sudo su
$ su pleroma -s $SHELL -l

Download Pleroma naar een tijdelijke plaats.

$ curl "https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/stable/download?job=amd64" -o /tmp/pleroma_amd64.zip

Pak het archief uit.

$ unzip /tmp/pleroma_amd64.zip -d /tmp/

Installeer Pleroma.

$ mv /tmp/release/* /opt/pleroma

Verwijder de tijdelijke bestanden.

$ rm -rf /tmp/pleroma_amd64.zip /tmp/release

Schakel over naar de root gebruiker.

$ exit

Maak mappen voor de uploads en publieke bestanden.

$ mkdir -p /var/lib/pleroma/{uploads,static}

Maak de map voor Pleroma configuratie.

$ mkdir -p /etc/pleroma

Verander het eigendom van de Pleroma mappen naar de Pleroma gebruiker.

$ chown -R pleroma /var/lib/pleroma /etc/pleroma

Stap 5 - Pleroma configureren

Schakel terug naar de Pleroma gebruiker.

$ su pleroma -s /bin/bash -l

Voer het volgende commando uit om het configuratiebestand voor de Pleroma instantie te genereren.

$ ./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql

Je krijgt verschillende vragen over het instellen van Pleroma. Als je een waarschuwing krijgt dat het configuratiebestand niet gevonden kon worden, negeer die dan.

[email protected]:~$ ./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql
!!! /etc/pleroma/config.exs not found! Please ensure it exists and that PLEROMA_CONFIG_PATH is unset or points to an existing file

What domain will your instance use? (e.g pleroma.soykaf.com) [] example.com

What is the name of your instance? (e.g. The Corndog Emporium) [nspeaks.com] Howtoforge Pleroma
What is your admin email address? [] [email protected]
What email address do you want to use for sending email notifications? [[email protected]] <Press Enter>
Do you want search engines to index your site? (y/n) [y] y
Do you want to store the configuration in the database (allows controlling it from admin-fe)? (y/n) [n] n
What is the hostname of your database? [localhost] localhost
What is the name of your database? [pleroma] pleroma
What is the user used to connect to your database? [pleroma] pleroma
What is the password used to connect to your database? [autogenerated] yourpassword
Would you like to use RUM indices? [n] n
What port will the app listen to (leave it if you are using the default setup with nginx)? [4000] <Press Enter>
What ip will the app listen to (leave it if you are using the default setup with nginx)? [127.0.0.1] <Press Enter>
What directory should media uploads go in (when using the local uploader)? [/var/lib/pleroma/uploads] <Press Enter>
What directory should custom public files be read from (custom emojis, frontend bundle overrides, robots.txt, etc.)? [/var/lib/pleroma/static] <Press Enter>
Do you want to strip location (GPS) data from uploaded images? This requires exiftool, it was detected as not installed, please install it if you answer yes. (y/n) [n] n
Do you want to anonymize the filenames of uploads? (y/n) [n] n
Do you want to deduplicate uploaded files? (y/n) [n] y
Writing config to /etc/pleroma/config.exs.
Writing the postgres script to /tmp/setup_db.psql.
Writing /var/lib/pleroma/static/robots.txt.

 All files successfully written! Refer to the installation instructions for your platform for next steps.

Je kunt een andere set opties kiezen, afhankelijk van je behoefte. Kies een sterk wachtwoord voor je database. Als je je instantie vanuit het Beheerpaneel wilt configureren, kies dan y voor de vraag over het opslaan van de configuratie in de database.

Schakel over naar de standaard PostgreSQL gebruiker die bij de installatie van PostgreSQL werd aangemaakt.

$ exit
$ su postgres -s /bin/bash -l

Maak de database met het door Pleroma geleverde SQL bestand.

$ psql -f /tmp/setup_db.psql

Schakel terug naar de Pleroma gebruiker.

$ exit
$ su pleroma -s /bin/bash -l

Initialiseer de zojuist gemaakte database.

$ ./bin/pleroma_ctl migrate

Sluit af naar de Root gebruiker.

$ exit

Stap 6 - Installeer SSL met Let's Encrypt

Om een SSL certificaat te installeren met Let's Encrypt, moeten we het Certbot gereedschap downloaden.

Om Certbot te installeren, gebruiken we het Snapd pakket installatieprogramma. De officiële repository van Certbot is afgeschreven en het Certbot pakket van Ubuntu is meer dan een jaar oud. Snapd draagt altijd de nieuwste stabiele versie van Certbot en die kun je het beste gebruiken. Gelukkig wordt Ubuntu 20.04 geleverd met Snapd voorgeïnstalleerd.

Zorg ervoor dat je versie van Snapd up-to-date is.

$ snap install core 
$ snap refresh core

Verwijder eventuele oude versies van Certbot.

$ apt remove certbot

Installeer Certbot.

$ snap install --classic certbot

Gebruik het volgende commando om ervoor te zorgen dat het Certbot commando kan worden uitgevoerd door een symbolische link te maken naar de /usr/bin directory.

$ ln -s /snap/bin/certbot /usr/bin/certbot

Stop de Nginx dienst.

$ systemctl stop nginx

Genereer een SSL certificaat.

$ certbot certonly --standalone --preferred-challenges http -d example.com

Het bovenstaande commando downloadt een certificaat naar de /etc/letsencrypt/live/example.com directory op je server.

Maak een uitdagende web root directory voor Let's Encrypt auto-renewal.

$ mkdir -p /var/lib/letsencrypt

Maak een Cron Job om de SSL te vernieuwen. Deze zal elke dag lopen om het certificaat te controleren en zo nodig te vernieuwen. Maak daarvoor eerst het bestand /etc/cron.daily/certbot-renew en open het om te bewerken.

$ nano /etc/cron.daily/certbot-renew

Plak er de volgende code in.

#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Sla het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom gevraagd wordt.

Verander de permissies op het taakbestand om het uitvoerbaar te maken.

$ chmod +x /etc/cron.daily/certbot-renew

Stap 7 - Configureer Nginx

Pleroma wordt geleverd met een standaard Nginx configuratiebestand. Installeer het door het naar de /etc/nginx/sites-available directory te verplaatsen.

$ mv /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.conf

Vervang alle voorkomens van example.tld door je domein.

$ sed -i 's/example\.tld/example.com/g' /etc/nginx/sites-available/pleroma.conf

Open het configuratiebestand om het te bewerken.

$ nano /etc/nginx/sites-available/pleroma.conf

Haal het commentaar weg bij het location ~ /\.well-known/acme-challenge blok. Het server blok van je configuratiebestand zou er als volgt uit moeten zien.

server {
    server_name    example.com;

    listen         80;
    listen         [::]:80;

    location ~ /\.well-known/acme-challenge {
        root /var/lib/letsencrypt/;
    }

    location / {
        return         301 https://$server_name$request_uri;
    }
}

Sla het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom gevraagd wordt.

Schakel de Pleroma Nginx configuratie in door een symlink te maken.

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

Schakel de Nginx server in om hem bij het opstarten te starten.

$ systemctl enable nginx.

Start de Nginx server.

$ systemctl start nginx

Installeer het Pleroma systemd service unit bestand dat in de distributie zit.

$ mv /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service

Schakel de Pleroma dienst in en start hem.

$ systemctl enable pleroma
$ systemctl start pleroma

Het kan ongeveer 30 seconden duren voor de Pleroma site beschikbaar is. Nu kun je https://example.com in je web browser openen om Pleroma te bezoeken. Het zou er als volgt uit moeten zien.

Pleroma Homepage

Stap 8 - Configureer Pleroma

Maak een Beheerder gebruiker

Je kunt een administratieve gebruiker aanmaken via de commandoregel. Schakel eerst over naar de Pleroma gebruiker.

$ su pleroma -s /bin/bash -l

Maak een admin gebruiker aan. Vervang example door je gebruikersnaam, [email protected] door je emailadres en password123 door een sterk wachtwoord.

$ ./bin/pleroma_ctl user new example [email protected] --password password123 --admin

Schakel terug naar de root gebruiker als je klaar bent.

$ exit

Instellingen veranderen

Als je nee als antwoord koos voor het opslaan van instellingen in de database, betekent dat dat je de instellingen niet kunt veranderen vanuit het Beheerpaneel van Pleroma. Om de instellingen te veranderen moet je het /etc/pleroma/config.exs bestand wijzigen.

$ nano /etc/pleroma/config.exs

Als je klaar bent met het bewerken van het bestand, moet je ook de Pleroma service opnieuw starten. Het kan zijn dat je enige tijd moet wachten voor de dienst hervat is.

$ systemctl restart pleroma

Pleroma bijwerken

Voor het bijwerken van Pleroma is de eerste stap het downloaden van de nieuwe release. Voer het volgende commando uit om de nieuwe release van Pleroma te downloaden.

$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl update"

Stop de Pleroma instantie.

$ systemctl stop pleroma

De volgende stap is het migreren van de database.

$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"

Start de Pleroma instance.

$ systemctl start pleroma

Een back-up maken van Pleroma

Stop de Pleroma dienst.

$ systemctl stop pleroma

Ga naar de Pleroma's directory.

$ cd /opt/pleroma

Voer het volgende commando uit om een back-up van de databank te maken.

$ sudo -Hu postgres pg_dump -d <pleroma_db> --format=custom -f </path/to/backup_location/pleroma.pgdump>

Kopieer de bestanden pleroma.pgdump, config/prod.secret.exs, config/setup_db.sql en de map uploads naar je back-up bestemming.

Start de Pleroma dienst opnieuw.

$ systemctl start pleroma

Pleroma herstellen

Om Pleroma te herstellen moet je Pleroma opnieuw installeren en ervoor zorgen dat de Pleroma dienst niet meer werkt.

Kopieer dan de geback-upte bestanden terug naar hun oorspronkelijke plaats.

Laat de bestaande database en gebruiker vallen met het volgende commando.

$ sudo -Hu postgres psql -c 'DROP DATABASE <pleroma_db>;';` `sudo -Hu postgres psql -c 'DROP USER <pleroma_db>;'

Herstel het databaseschema en de Pleroma Postgres rol met het teruggezette setup_db.sql bestand.

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

Herstel vervolgens de gegevens van de Pleroma instantie.

$ sudo -Hu postgres pg_restore -d <pleroma_db> -v -1 </path/to/backup_location/pleroma.pgdump>

Migreer de database als er nog migraties te doen zijn voor het geval je naar een nieuwere versie overstapt.

$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"

Herstart de Pleroma dienst.

$ systemctl restart pleroma

Genereer de statistieken, zodat Postgres de queries goed kan plannen.

$ sudo -Hu postgres vacuumdb --all --analyze-in-stages

Conclusie

Dit is het einde van onze handleiding over het installeren van het Pleroma Sociale Netwerk Platform op een server met Ubuntu 20.04. Als je vragen of feedback hebt, plaats ze dan in de commentaar hieronder.