So installieren Sie die Pleroma Social Network Platform auf Ubuntu 20.04

Pleroma ist eine Open-Source-Plattform für föderierte soziale Netzwerke, die mit Mastodon und anderen ActivityPub-Plattformen kompatibel ist. Es ist ein Teil des Fediverse, einem föderierten Netzwerk von Instanzen, die über ein gemeinsames Protokoll kommunizieren können. Ein einzelnes Konto auf einer Instanz kann mit dem gesamten Fediverse-Netzwerk kommunizieren.

Diese Anleitung zeigt Ihnen, wie Sie Ihre eigene Pleroma-Instanz erstellen können, indem Sie sie auf einem Ubuntu 20.04-basierten Server installieren.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 20.04 läuft.
  • Ein nicht-root sudo-Benutzer.
  • Stellen Sie sicher, dass alles aktualisiert ist.
    $ sudo apt update
    $ sudo apt upgrade
    
  • Ein paar Pakete und Abhängigkeiten, die Sie vor der Installation von Pleroma benötigen.
    $ sudo apt install wget curl gnupg2 ca-certificates lsb-release gnupg zip libncurses5 libmagic-dev -y
    

Schritt 1 – Firewall konfigurieren

Der erste Schritt ist die Konfiguration der Firewall. Ubuntu kommt standardmäßig mit ufw (Uncomplicated Firewall).

Prüfen Sie, ob die Firewall läuft.

$ sudo ufw status

Sie sollten die folgende Ausgabe erhalten.

Status: inactive

Lassen Sie den SSH-Port zu, damit die Firewall die aktuelle Verbindung nicht unterbricht, wenn Sie ihn aktivieren.

$ sudo ufw allow OpenSSH

Lassen Sie auch HTTP- und HTTPS-Ports zu.

$ sudo ufw allow 80
$ sudo ufw allow 443

Aktivieren Sie die Firewall

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

Prüfen Sie den Status der Firewall erneut.

$ sudo ufw status

Sie sollten eine ähnliche Ausgabe sehen.

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)

Schritt 2 – Installieren Sie PostgreSQL

Fügen Sie das offizielle PostgreSQL-Repository in die Ubuntu-Quellenliste ein.

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

Fügen Sie den GPG-Schlüssel des Repositorys hinzu.

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

Aktualisieren Sie die Liste der Systempakete.

$ sudo apt update

Schritt 3 – Nginx installieren

Ubuntu 20.04 wird standardmäßig mit der stabilen Version von Nginx 18 ausgeliefert.

$ sudo apt install nginx

Schritt 4 – Pleroma installieren

In dieser Anleitung wird Pleroma von einer OTP-Version installiert. Der erste Schritt besteht darin, einen Pleroma-Benutzer ohne Login-Fähigkeiten zu erstellen. Es wird auch das Home-Verzeichnis für ihn unter /opt/pleroma erstellt.

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

Wechseln Sie zu dem Pleroma-Benutzer. Aber zuerst müssen wir zum Root-Benutzer wechseln.

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

Laden Sie Pleroma an einen temporären Ort herunter.

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

Entpacken Sie das Archiv.

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

Installieren Sie Pleroma.

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

Löschen Sie die temporären Dateien.

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

Wechseln Sie zum Root-Benutzer.

$ exit

Erstellen Sie Verzeichnisse für die Uploads und öffentlichen Dateien.

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

Erstellen Sie das Verzeichnis für die Pleroma-Konfiguration.

$ mkdir -p /etc/pleroma

Ändern Sie die Eigentümerschaft der Pleroma-Verzeichnisse auf den Pleroma-Benutzer.

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

Schritt 5 – Konfigurieren Sie Pleroma

Wechseln Sie zurück zum Pleroma-Benutzer.

$ su pleroma -s /bin/bash -l

Führen Sie den folgenden Befehl aus, um die Konfigurationsdatei für die Pleroma-Instanz zu erzeugen.

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

Sie werden mehrere Fragen zur Einrichtung von Pleroma gestellt bekommen. Wenn Sie eine Warnung erhalten, die besagt, dass die Konfigurationsdatei nicht gefunden werden konnte, ignorieren Sie diese.

[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.

Sie können einen anderen Satz von Optionen wählen, abhängig von Ihren Anforderungen. Wählen Sie ein starkes Passwort für Ihre Datenbank. Wenn Sie Ihre Instanz über das Administrationspanel konfigurieren wollen, wählen Sie y für die Frage nach dem Speichern der Konfiguration in der Datenbank.

Wechseln Sie zu dem Standard-PostgreSQL-Benutzer, der bei der Installation von PostgreSQL angelegt wurde.

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

Erstellen Sie die Datenbank unter Verwendung der von Pleroma bereitgestellten SQL-Datei.

$ psql -f /tmp/setup_db.psql

Wechseln Sie zurück zum Pleroma-Benutzer.

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

Initialisieren Sie die Datenbank, die wir gerade erstellt haben.

$ ./bin/pleroma_ctl migrate

Beenden Sie sie mit dem Root-Benutzer.

$ exit

Schritt 6 – Installieren Sie SSL mit Let’s Encrypt

Um ein SSL-Zertifikat mit Let’s Encrypt zu installieren, müssen wir das Tool Certbot herunterladen.

Um Certbot zu installieren, verwenden wir das Snapd-Paketinstallationsprogramm. Das offizielle Repository von Certbot ist veraltet und das Certbot-Paket von Ubuntu ist mehr als ein Jahr alt. Snapd enthält immer die neueste stabile Version von Certbot und Sie sollten diese verwenden. Glücklicherweise ist bei Ubuntu 20.04 Snapd bereits vorinstalliert.

Stellen Sie sicher, dass Ihre Version von Snapd auf dem neuesten Stand ist.

$ snap install core 
$ snap refresh core

Entfernen Sie alle alten Versionen von Certbot.

$ apt remove certbot

Installieren Sie Certbot.

$ snap install --classic certbot

Verwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem Sie einen symbolischen Link zum Verzeichnis /usr/bin erstellen.

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

Stoppen Sie den Nginx-Dienst.

$ systemctl stop nginx

Erzeugen Sie ein SSL-Zertifikat.

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

Mit dem obigen Befehl wird ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/example.com auf Ihrem Server heruntergeladen.

Erstellen Sie ein Challenge-Web-Root-Verzeichnis für die automatische Erneuerung von Let’s Encrypt.

$ mkdir -p /var/lib/letsencrypt

Erstellen Sie einen Cron-Job zur Erneuerung des SSL. Er wird jeden Tag ausgeführt, um das Zertifikat zu überprüfen und bei Bedarf zu erneuern. Erstellen Sie dazu zunächst die Datei /etc/cron.daily/certbot-renew und öffnen Sie sie zur Bearbeitung.

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

Fügen Sie den folgenden Code ein.

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

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Ändern Sie die Berechtigungen für die Taskdatei, um sie ausführbar zu machen.

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

Schritt 7 – Konfigurieren Sie Nginx

Pleroma wird mit einer Standard-Nginx-Konfigurationsdatei ausgeliefert. Installieren Sie sie, indem Sie sie in das Verzeichnis /etc/nginx/sites-available verschieben.

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

Ersetzen Sie alle Vorkommen von example.tld durch Ihre Domain.

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

Öffnen Sie die Konfigurationsdatei zum Bearbeiten.

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

Heben Sie die Kommentierung des Blocks location ~ /\.well-known/acme-challenge auf. Der Block server in Ihrer Konfigurationsdatei sollte wie folgt aussehen.

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;
    }
}

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Aktivieren Sie die Pleroma-Nginx-Konfiguration, indem Sie einen Symlink erstellen.

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

Aktivieren Sie den Nginx-Server, um ihn beim Booten zu starten.

$ systemctl enable nginx.

Starten Sie den Nginx-Server.

$ systemctl start nginx

Installieren Sie die Pleroma systemd-Service-Unit-Datei, die in der Distribution enthalten ist.

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

Aktivieren und starten Sie den Pleroma-Dienst.

$ systemctl enable pleroma
$ systemctl start pleroma

Es kann etwa 30 Sekunden dauern, bis die Pleroma-Site verfügbar ist. Jetzt können Sie https://example.com in Ihrem Webbrowser öffnen, um Pleroma zu besuchen. Es sollte wie das Folgende aussehen.

Pleroma Startseite

Schritt 8 – Konfigurieren Sie Pleroma

Erstellen Sie einen Admin-Benutzer

Sie können einen administrativen Benutzer über die Kommandozeile erstellen. Wechseln Sie zuerst zum Pleroma-Benutzer.

$ su pleroma -s /bin/bash -l

Erstellen Sie einen Admin-Benutzer. Ersetzen Sie example durch Ihren Benutzernamen, [email protected] durch Ihre E-Mail-Adresse und password123 durch ein sicheres Passwort.

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

Wechseln Sie wieder zum Root-Benutzer, wenn Sie fertig sind.

$ exit

Ändern der Einstellungen

Wenn Sie nein als Antwort für das Speichern der Konfiguration in der Datenbank gewählt haben, bedeutet das, dass Sie die Einstellungen nicht über das Administrationspanel von Pleroma ändern können. Um die Einstellungen zu ändern, müssen Sie die Datei /etc/pleroma/config.exs bearbeiten.

$ nano /etc/pleroma/config.exs

Sobald Sie mit der Bearbeitung der Datei fertig sind, müssen Sie auch den Pleroma-Dienst neu starten. Es kann sein, dass Sie einige Zeit warten müssen, bevor der Dienst wieder aufgenommen wird.

$ systemctl restart pleroma

Aktualisieren von Pleroma

Um Pleroma zu aktualisieren, ist der erste Schritt, die neue Version herunterzuladen. Führen Sie den folgenden Befehl aus, um die neue Version von Pleroma herunterzuladen.

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

Stoppen Sie die Pleroma-Instanz.

$ systemctl stop pleroma

Der nächste Schritt ist, die Datenbank zu migrieren.

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

Starten Sie die Pleroma-Instanz.

$ systemctl start pleroma

Sichern von Pleroma

Stoppen Sie den Pleroma-Dienst.

$ systemctl stop pleroma

Wechseln Sie in das Verzeichnis von Pleroma.

$ cd /opt/pleroma

Führen Sie den folgenden Befehl aus, um die Datenbank zu sichern.

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

Kopieren Sie die Dateien pleroma.pgdump, config/prod.secret.exs, config/setup_db.sql und den Ordner uploads in Ihr Sicherungsziel.

Starten Sie den Pleroma-Dienst erneut.

$ systemctl start pleroma

Pleroma wiederherstellen

Um Pleroma wiederherzustellen, müssen Sie Pleroma neu installieren und sicherstellen, dass der Pleroma-Dienst nicht funktioniert.

Kopieren Sie dann die gesicherten Dateien zurück an ihren ursprünglichen Ort.

Löschen Sie die vorhandene Datenbank und den Benutzer mit dem folgenden Befehl.

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

Stellen Sie das Datenbankschema und die Pleroma Postgres-Rolle mit der gesicherten setup_db.sql Datei wieder her.

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

Als nächstes stellen Sie die Daten der Pleroma-Instanz wieder her.

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

Migrieren Sie die Datenbank, falls noch Migrationen durchgeführt werden müssen, falls Sie auf eine neuere Version umziehen.

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

Starten Sie den Pleroma-Dienst neu.

$ systemctl restart pleroma

Erzeugen Sie die Statistiken, damit Postgres die Abfragen richtig planen kann.

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

Fazit

Damit ist unser Tutorial zur Installation der Pleroma Social Network Platform auf einem Server mit Ubuntu 20.04 abgeschlossen. Wenn Sie Fragen oder Feedback haben, können Sie diese in den Kommentaren unten stellen.

Das könnte dich auch interessieren …