Pleroma ist eine föderierte Open-Source-Social-Networking-Plattform, die mit Mastodon und anderen ActivityPub-Plattformen kompatibel ist. Es ist Teil des Fediverse, eines föderierten Netzwerks von Instanzen, die über ein gemeinsames Protokoll kommunizieren können. Ein einziges Konto auf einer Instanz kann mit dem gesamten Fediverse-Netzwerk kommunizieren.
Diese Anleitung zeigt Ihnen, wie Sie Ihre eigene Pleroma-Instanz erstellen, indem Sie sie auf einem Ubuntu 20.04-basierten Server installieren.
Voraussetzungen
-
Ein Server mit Ubuntu 20.04.
-
Ein Nicht-Root-Sudo-Benutzer.
-
Stellen Sie sicher, dass alles aktualisiert ist.
$ sudo apt update $ sudo apt upgrade
-
Einige 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 besteht darin, die Firewall zu konfigurieren. Ubuntu wird standardmäßig mit ufw (Uncomplicated Firewall) geliefert.
Überprüfen Sie, ob die Firewall ausgeführt wird.
$ sudo ufw status
Sie sollten die folgende Ausgabe erhalten.
Status: inactive
SSH-Port zulassen, damit die Firewall die aktuelle Verbindung beim Aktivieren nicht unterbricht.
$ 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
Überprü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 – PostgreSQL installieren
Fügen Sie das offizielle PostgreSQL-Repository zur Liste der Ubuntu-Quellen hinzu.
$ 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
Diese Anleitung installiert Pleroma von einer OTP-Version. Der erste Schritt besteht darin, einen Pleroma-Benutzer ohne Anmeldefunktionen zu erstellen. Es wird auch das Home-Verzeichnis dafür unter /opt/pleroma
erstellen .
$ sudo adduser --system --shell /bin/false --home /opt/pleroma pleroma
Wechseln Sie zum Pleroma-Benutzer. Aber zuerst müssen wir zum Root-Benutzer wechseln.
$ sudo su
$ su pleroma -s $SHELL -l
Laden Sie Pleroma in einen temporären Speicherort 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 den Besitz von Pleroma-Verzeichnissen auf den Pleroma-Benutzer.
$ chown -R pleroma /var/lib/pleroma /etc/pleroma
Schritt 5 - Pleroma konfigurieren
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 generieren.
$ ./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql
Ihnen werden einige Fragen zur Einrichtung von Pleroma gestellt. Wenn Sie eine Warnung erhalten, dass die Konfigurationsdatei nicht gefunden werden konnte, ignorieren Sie sie.
[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 je nach Ihren Anforderungen unterschiedliche Optionen auswählen. Wählen Sie ein sicheres Passwort für Ihre Datenbank. Wenn Sie Ihre Instanz über das Administrationspanel konfigurieren möchten, wählen Sie y
für die Frage zum Speichern der Konfiguration in der Datenbank.
Wechseln Sie zum standardmäßigen PostgreSQL-Benutzer, der bei der Installation von PostgreSQL erstellt wurde.
$ exit
$ su postgres -s /bin/bash -l
Erstellen Sie die Datenbank mit 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 gerade erstellte Datenbank.
$ ./bin/pleroma_ctl migrate
Zum Root-Benutzer wechseln.
$ exit
Schritt 6 – SSL mit Let's Encrypt installieren
Um ein SSL-Zertifikat mit Let's Encrypt zu installieren, müssen wir das Certbot-Tool 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 auf Ubuntu 20.04 Snapd 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
Certbot installieren.
$ snap install --classic certbot
Verwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem Sie einen symbolischen Link zu /usr/bin
erstellen Verzeichnis.
$ ln -s /snap/bin/certbot /usr/bin/certbot
Beenden Sie den Nginx-Dienst.
$ systemctl stop nginx
Generieren Sie ein SSL-Zertifikat.
$ certbot certonly --standalone --preferred-challenges http -d example.com
Der obige Befehl lädt ein Zertifikat in /etc/letsencrypt/live/example.com
herunter Verzeichnis auf Ihrem Server.
Erstellen Sie ein Challenge-Web-Root-Verzeichnis für die automatische Verlängerung von Let's Encrypt.
$ mkdir -p /var/lib/letsencrypt
Erstellen Sie einen Cron-Job, um das SSL zu erneuern. Es 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 zum Bearbeiten öffnen.
$ 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 geben Sie Y ein wenn Sie dazu aufgefordert werden.
Ändern Sie die Berechtigungen für die Aufgabendatei, um sie ausführbar zu machen.
$ chmod +x /etc/cron.daily/certbot-renew
Schritt 7 – Nginx konfigurieren
Pleroma wird mit einer standardmäßigen Nginx-Konfigurationsdatei ausgeliefert. Installieren Sie es, indem Sie es nach /etc/nginx/sites-available
verschieben Verzeichnis.
$ mv /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.conf
Ersetzen Sie alle Vorkommen von example.tld
mit Ihrer 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
Entkommentieren Sie location ~ /\.well-known/acme-challenge
Block. Der server
Block 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 geben Sie Y ein 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 in der Distribution bereitgestellte Pleroma-Systemd-Service-Unit-Datei.
$ 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
öffnen in Ihrem Webbrowser, um Pleroma zu besuchen. Es sollte wie folgt aussehen.
Schritt 8 – Pleroma konfigurieren
Erstellen Sie einen Admin-Benutzer
Sie können einen administrativen Benutzer über die Befehlszeile erstellen. Wechseln Sie zuerst zum Pleroma-Benutzer.
$ su pleroma -s /bin/bash -l
Erstellen Sie einen Admin-Benutzer. Ersetzen Sie example
mit Ihrem Nutzernamen, [email protected]
mit Ihrer E-Mail-Adresse und password123
mit einem starken Passwort.
$ ./bin/pleroma_ctl user new example [email protected] --password password123 --admin
Wechseln Sie zurück zum Root-Benutzer, wenn Sie fertig sind.
$ exit
Einstellungen ändern
Wenn Sie Nein als Antwort zum Speichern der Konfiguration in der Datenbank gewählt haben , das heißt, Sie können die Einstellungen im Administrationsbereich von Pleroma nicht ändern. Um die Einstellungen zu ändern, müssen Sie /etc/pleroma/config.exs
ändern Datei.
$ nano /etc/pleroma/config.exs
Wenn Sie mit der Bearbeitung der Datei fertig sind, müssen Sie auch den Pleroma-Dienst neu starten. Möglicherweise müssen Sie einige Zeit warten, bis der Dienst fortgesetzt wird.
$ systemctl restart pleroma
Aktualisierung 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"
Pleroma-Instanz stoppen.
$ systemctl stop pleroma
Der nächste Schritt ist die Migration der Datenbank.
$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"
Starten Sie die Pleroma-Instanz.
$ systemctl start pleroma
Pleroma sichern
Beenden 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 die uploads
Ordner zu Ihrem Sicherungsziel.
Starten Sie den Pleroma-Dienst erneut.
$ systemctl start pleroma
Pleroma wird wiederhergestellt
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 Speicherort.
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
wieder her Datei.
$ sudo -Hu postgres psql -f config/setup_db.psql
Stellen Sie als Nächstes 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, wenn noch Migrationen durchgeführt werden müssen, falls Sie zu einer neueren Version wechseln.
$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"
Starten Sie den Pleroma-Dienst neu.
$ systemctl restart pleroma
Generieren Sie die Statistiken, damit Postgres die Abfragen richtig planen kann.
$ sudo -Hu postgres vacuumdb --all --analyze-in-stages
Schlussfolgerung
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, posten Sie diese in den Kommentaren unten.