diaspora* auf Debian 10 installieren

Diese Anleitung beschreibt die Installation von diaspora* 0.7.16.0 auf einem Debian 10 „Buster“ System.

diaspora* ist ganz anders als die meisten anderen Netzwerke, die du nutzt. Es ist vollständig dezentralisiert, ohne einen zentralen Knotenpunkt. Trotzdem ist es ganz einfach, sich mit anderen Menschen in Verbindung zu setzen und zu kommunizieren.

https://diasporafoundation.org/

Anerkennung

Diese Anleitung wurde unter Zuhilfenahme verschiedener bereits existierender Anleitungen erstellt, durchlaufen und getestet.

https://blog.progressiv.dev/suguru/how-to-install-diaspora-decentralized-social-network-on-debian-10

https://www.howtoforge.com/how-to-install-diaspora-decentralized-social-media-on-debian-10/

https://stanislas.blog/2018/02/setup-diaspora-pod-debian-ubuntu/

1. Initiale Server Einrichtung

Bevor du mit der Installation fortfährst, solltest du nicht vergessen, die grundlegenden Sicherheitseinstellungen deines Server zu konfigurieren. Initial Server Setup with Debian 10 von DigitalOcean ist eine schöne Anleitung für Anfänger.

Nachdem die grundlegende Sicherheitseinstellung konfiguriert wurde, kannst du mit der Installation beginnen.

Als erstes melde dich mit dem root Benutzer am System an.

su - root

Danach sollten die System Pakete aktuallisert werden.

apt update && apt upgrade -y

Da diese Anleitung vim als Texteditor und sudo verwendet, installiere beide Pakete.

apt install vim sudo

Natürlich kannst du deinen bevorzugten Texteditor wie Emacs oder Nano wählen.

2. Installation der Abhängigkeiten

Mit dem nachfolgenden Befehl installierst du die Basispakete für diaspora*.

apt install build-essential cmake gnupg2 libssl-dev libcurl4-openssl-dev libxml2-dev libxslt-dev imagemagick ghostscript curl libmagickwand-dev git libpq-dev redis-server nodejs postgresql

2.1 Starten des redis-Server

Mit den nachfolgenden Befehlen wird der redis-server gestartet und aktiviert.

systemctl start redis-server
systemctl enable redis-server

2.2 Starten von postgresql

Mit den nachfolgenden Befehlen wird postgresql gestartet und aktiviert.

systemctl start postgresql
systemctl enable postgresql

3. Einen neuen Benutzer in postgresql erstellen

Hier fügst du einen Benutzer zu postgresql, einer Datenbanksoftware, hinzu. Da diese bereits installiert und gestartet wurde, kannst du dich direkt mit dem nachfolgenden Befehl an der postgresql-Shell anmelden.

sudo -i -u postgres psql

Zu Anfang sollte das Passwort des Benutzers postgres geändert werden.

\password postgres

Anschließend wird mit folgendem Befehl der Datenbankbenutzer diaspora erstellt. Vergiss bitte nicht deinpasswort durch ein neues Passwort zu ersetzen.

CREATE USER diaspora WITH CREATEDB PASSWORD 'deinpasswort';

Hinweis: Diese Benutzerdaten werden zu einem späteren Zeitpunkt benötigt, wenn du diaspora* konfigurierst (Schritt 6.3), weshalb sie dann entsprechend verfügbar sein sollten.

Nachdem der Datenbankbenutzer erstellt wurde, kannst du dich von der postgresql-Shell mit einem exit ausloggen.

exit

4. Einen neuen Benutzer unter Debian für die diaspora* Installation erstellen

Füge nun einen neuen Benutzer namens diaspora zu Debian hinzu, über den du anschließend diaspora* installierst. Stelle zuvor jedoch sicher, dass du mit dem root Benutzer angemeldet bist. Falls nicht, melde dich mit folgendem Befehl als root am System an.

su - root

Führe nun folgenden Befehl aus, um den Benutzer diaspora dem System hinzuzufügen.

adduser --disabled-login diaspora

Setze ein entsprechendes Passwort für den soeben hinzugefügten Benutzer.

passwd diaspora

Nun füge den Benutzer diaspora der sudo Gruppe hinzu.

usermod -aG sudo diaspora

5. Installation von ruby mit RVM

Bevor du diaspora* installieren kannst, muss zuerst ruby für den Benutzer diaspora installiert werden.

In dieser Anleitung wird RVM (Ruby Version Manager) benutzt um ruby 2.6 zu installieren, welches die aktuell unterstützte Version für diaspora* ist.

5.1 Installation der GPG Schlüssel

Vor der Installation von RVM, musst du dich als der Benutzer diaspora am System anmelden.

su - diaspora

Nun fügst du den aktuellen GPG Schlüssel von RVM hinzu um mit der Installation fortfahren zu können. Den Befehl zum herunterladen des aktuellen GPG Schlüssel findest du auf der Webseite von rvm.io, welcher momentan wie folgt lautet.

gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

Da GPG Schlüssel jederzeit zurückgezogen oder ausgetauscht werden können, prüfe bitte zuerst ob der zuvor genannte Befehl noch aktuell ist. Außerdem bedenke, dass du niemals GPG Schlüsseldaten von einer Drittanbieter-Webseite kopieren solltest.

5.2 Installation und laden von RVM

Nachdem die GPG Schlüssel installiert wurden kannst du die stable Version von RVM installieren.

curl -sSL https://get.rvm.io | bash -s stable

Danach lädst du das RVM script wie folgt.

source /home/diaspora/.rvm/scripts/rvm

5.3 Installation von ruby 2.6

Hinweis: die benötigte Version von ruby kann sich in der Zukunft ändern. Bevor du ruby also installierst, prüfe bitte die Installationsanleitung im offiziellen Wiki, welches die aktuell unterstützte Version ist.

Momentan wird ruby mit der Version 2.6 empfohlen, also installierst du diese mit RVM.

rvm install 2.6

6. Installation und Konfiguration von diaspora*

In diesem Schritt wirst du endlich diaspora* installieren.

Stelle zuerst sicher, dass du mit dem diaspora Benutzer angemeldet bist. Falls nicht, melde dich mit folgendem Befehl am System an.

su - diaspora

6.1 Source Code herunterladen

Führe folgenden Befehl aus um den aktuellen, stable Source Code von diaspora* herunterzuladen.

git clone -b master https://github.com/diaspora/diaspora.git

Wenn du vor hast diaspora* zu testen oder weiterzuentwickeln, dann lade den develop anstatt des master branch.

Hinweis: Wenn der master branch nicht gefunden werden kann, ist es sehr wahrscheinlich das dieser in main branch umbenannt wurde. In diesem Fall führe ersatzweise folgenden Befehl aus.

git clone -b main https://github.com/diaspora/diaspora.git.

6.2 Kopieren der Konfigurationsdateien

Als nächstes wechselst du in das Basisverzeichnis in welches diaspora* installiert werden soll.

cd diaspora

Es ist notwendig zwei Konfigurationsdateien zu bearbeiten, einmal für die Datenbankanbindung (database.yml) und einmal für diaspora* (diaspora.yml) selbst. Als erstes kopierst du die mitgelieferten Beispiel-Konfigurationsdateien mit den folgenden beiden Befehlen.

cp config/database.yml.example config/database.yml
cp config/diaspora.yml.example config/diaspora.yml

Hinweis: in zukünftigen Versionen von diaspora* wird die Datei diaspora.yml.example durch die Datei dispora.toml.example ersetzt. Sollte bei dir mit dem oben genannten Befehl die Datei diaspora.yml.example nicht gefunden werden, benutze bitte folgenden Befehl zum kopieren.

cp config/diaspora.toml.example config/diaspora.toml

6.3 Editieren der Konfigurationsdatei für die Datenbankanbindung

Zuerst wird die Datenbankanbindung in der Datei database.yml konfiguriert. Um diese in vim zu öffnen nutze folgenden Befehl.

vim config/database.yml

In der Konfigurationsdatei gibt es einen postgresql Abschnitt, der wie folgt aussieht.

postgresql: &postgresql
  adapter: postgresql
  host: "localhost"
  port: 5432
  username: "diaspora"
  password: "deinpasswort"
  encoding: unicode

Trage an dieser Stelle für ‚password‘ deinpasswort ein, welches du zuvor in Schritt 3 dieser Anleitung erstellt/vergeben hast.

Nach dieser Anpassung speichere und schließe die Datei.

6.4 Editieren der Konfigurationsdatei für diaspora*

Nun kannst du die Konfigurationsdatei für diaspora* anpassen. Öffne hierzu die Datei diaspora.yml mit folgendem Befehl.

vim config/diaspora.yml

Hinweis: Sollte bei dir mit dem oben genannten Befehl die Datei diaspora.yml nicht gefunden werden, benutze bitte folgenden Befehl.

vim config/diaspora.toml

Es gibt viele Optionen, die du später anpassen kannst (Aktivieren/Deaktivieren der Kontoerstellung, Captcha beim Erstellen eines Kontos usw.), aber jetzt werden erst mal nur die wichtigen Optionen gesetzt. Diese sind in den Bereichen url, certificate_authorities und rails_environment zu finden.

6.4.1 url

Suche nach url im Bereich environment und trage dort die Domain ein, mit der du deine diaspora* Instanz aufrufen möchtest. Da deine diaspora* Instanz per HTTPS zur Verfügung gestellt wird, denke bitte daran den Domain-Aufruf auch mit https:// einzutragen.

url: "https://example.com"

Wie ausdrücklich in der Konfigurationsdatei erwähnt, kannst Du diese Einstellung später nicht mehr verändern. Sei dir bitte sicher bei der Wahl deiner Domain!

6.4.2 certificate_authorities

In diesem Schritt stellst du die Zertifizierungsstellen ein.

Unterhalb der Einstellung der url sollte eine Zeile stehen die mit #certificate_authorities anfängt. Entferne hier das Zeichen # am Zeilenanfang damit der Eintrag wie folgt aussieht.

certificate_authorities = "/etc/ssl/certs/ca-certificates.crt"

6.4.3 rails_environment

Mit dieser Option stellst Du die rails Umgebung auf den Wert production.

Im Bereich server findest du eine Zeile die mit #rails_environment anfängt. Entferne hier das Zeichen # am Zeilenanfang und trage gegebenenfalls production ein, damit der Eintrag wie folgt aussieht.

rails_environment = "production"

6.4.4 Captcha für die Registrierung deaktivieren

Da Captcha aktuell, ohne ImageMagick zu konfigurieren, nicht funktioniert, solltest du es vorerst deaktivieren. Eine detailliertere Beschreibung zu diesem Thema findest du auf GitHub.

Im Bereich settings ist die Option captcha auf ‚enable: true‚ gestellt. Ändere dies entsprechend auf false, damit der Eintrag wie folgt aussieht.

enable: false

Abschließend sollten die einzelnen Bereiche der Konfigurationsdatei folgendermaßen angepasst sein.

configuration: ## Section
...
  environment: ## Section
...
    url: "https://example.com"
    certificate_authorities: '/etc/ssl/certs/ca-certificates.crt'
...
  server: ## Section
    rails_environment: 'production'
...
  settings: ## Section
...
    captcha: ## Section
      enable: false
...

Hinweis: anstelle von https://example.com sollte deine eigene Domain eingetragen sein.

6.5 Installation der gem und ruby Bibliotheken

Nachfolgend werden die Programme installiert, die für den Betrieb von diaspora* notwendig sind. Führe, immer noch als Benutzer diaspora angemeldet, folgende Befehle nacheinander aus.

gem install bundler
script/configure_bundler
bin/bundle install --full-index

6.6 Datenbank migrieren

Folgenden Befehl ausführen um die Datenbank zu migrieren.

RAILS_ENV=production bundle exec rake db:create db:migrate

6.7 Assets kompilieren

Folgenden Befehl ausführen um die Assets zu kompilieren.

RAILS_ENV=production bin/rake assets:precompile

An dieser Stelle ist diaspora* erfolgreich auf deinem System installiert. Nachfolgende Schritte sind notwendig um dein System für das ordnungsgemäße Betreiben und Bereitstellen von diaspora* einzurichten.

7. diaspora* als Dienst einrichten

In diesem Abschnitt wird beschrieben wie du diaspora* einrichtest, damit es als Dienst auf deinem System gestartet wird.

Melde dich mit dem root Benutzer am System an.

su - root

Wechsle mit nachfolgendem Befehl in das entsprechende Verzeichnis.

cd /etc/systemd/system/

7.1 Dienste konfigurieren

Innerhalb dieses Verzeichnisses wirst du drei Dateien anlegen, diaspora.target, diaspora-web.service, und diaspora-sidekiq.service.

7.1.1 diaspora.target

Erstelle eine neue Zieldatei mit vim.

vim diaspora.target

Kopiere nachfolgende Konfiguration und füge sie in die soeben erstellte Datei ein.

[Unit]
Description=Diaspora social network
Wants=postgresql.service
Wants=redis-server.service
After=redis-server.service
After=postgresql.service

[Install]
WantedBy=multi-user.target

Speichern und schließen.

7.1.2 diaspora-web.service

Erstelle eine neue Dienstdatei für das Webinterface.

vim diaspora-web.service

Kopiere nachfolgende Konfiguration und füge sie in die soeben erstellte Datei ein.

[Unit]
Description=Diaspora social network (unicorn)
PartOf=diaspora.target
StopWhenUnneeded=true

[Service]
User=diaspora
Environment=RAILS_ENV=production
WorkingDirectory=/home/diaspora/diaspora
ExecStart=/bin/bash -lc "bin/bundle exec unicorn -c config/unicorn.rb -E production"
Restart=always

[Install]
WantedBy=diaspora.target

Speichern und schließen.

7.1.3 diaspora-sidekiq.service

Erstelle eine neue Dienstdatei für die Überwachung.

vim diaspora-sidekiq.service

Kopiere nachfolgende Konfiguration und füge sie in die soeben erstellte Datei ein.

[Unit]
Description=Diaspora social network (sidekiq)
PartOf=diaspora.target
StopWhenUnneeded=true

[Service]
User=diaspora
Environment=RAILS_ENV=production
WorkingDirectory=/home/diaspora/diaspora
ExecStart=/bin/bash -lc "bin/bundle exec sidekiq"
Restart=always

[Install]
WantedBy=diaspora.target

Speichern und schließen.

7.2 Dienste registrieren

An dieser Stelle werden die soeben erstellten Dienste so konfiguriert, dass sie bei einem Neustart automatisch gestartet werden.

Als erstes wird der systemctl Daemon neugestartet.

systemctl daemon-reload

Mit nachfolgendem Befehl werden die zuvor erstellten Dienste aktiviert.

systemctl enable diaspora.target diaspora-sidekiq.service diaspora-web.service

Die Zieldatei diaspora.target ausführen um die beiden Dienste zu starten.

systemctl start diaspora.target

Um zu überprüfen ob beide Dienste gestartet sind und laufen, können die nachfolgenden Befehle abgesetzt werden.

systemctl status diaspora-web
systemctl status diaspora-sidekiq

8. Installation des SSL Zertifikates mit certbot

8.1 Installation von certbot

In dieser Anleitung wird beschrieben wie du certbot von EFF nutzt um automatisch Zertifikate von Let’s Encrypt zu beziehen.

Als erstes installiere certbot.

apt install certbot

8.2 Let’s Encrypt SSL Zertifikat beziehen

Führe dann diesen Befehl aus, damit certbot das SSL Zertifikat von Let’s Encrypt bezieht.

certbot certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email example@example.com -d example.com

Bitte vergiss nicht, die E-Mail-Adresse (example@example.com) und die Domain (example.com) mit den richtigen Informationen zu ersetzen. Da du zu einem späteren Zeitpunk möglicherweise wichtige Informationen erhältst, z.B. eine SSL Zertifikat-Ablaufwarnung, solltest du eine erreichbare E-Mail-Adresse verwenden.

Bitte beachte auch, dass es bei Let’s Encrypt eine Begrenzungen der Zertifikatsanfragen gibt. Du solltest darauf achten, das Limit nicht zu überschreiten, da du sonst eine Woche warten musst, bis eine erneute Zertifikatsanfrage für dieselbe Domain möglich ist.

Renewals are treated specially: they don’t count against your Certificates per Registered Domain limit, but they are subject to a Duplicate Certificate limit of 5 per week. Exceeding the Duplicate Certificate limit is reported with the error message too many certificates already issued for exact set of domains.

https://letsencrypt.org/docs/rate-limits/

9. Installation und Konfiguration des Webserver

In diesem Schritt installierst und konfigurierst du nginx um diaspora* per HTTPS bereitzustellen.

Als erstes installiere nginx.

apt install nginx

9.1 Erstellen der Konfigurationsdatei

Erstelle eine Konfigurationsdatei mit vim.

vim /etc/nginx/sites-available/diaspora

Kopiere nachfolgende Konfiguration und füge sie in die soeben erstellte Datei ein. Vergiss bitte nicht example.com durch deine eigene Domain zu ersetzen.

upstream diaspora_server {
 server unix:/home/diaspora/diaspora/tmp/diaspora.sock;
}

server {
  listen 80;
  listen [::]:80;
  server_name example.com;
  return 301 https://example.com$request_uri;

  access_log /dev/null;
  error_log /dev/null;
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name example.com;

  access_log /var/log/nginx/dspr-access.log;
  error_log /var/log/nginx/dspr-error.log;

  ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

  ssl_protocols TLSv1.2;
  ssl_ciphers EECDH+CHACHA20:EECDH+AESGCM:EECDH+AES;
  ssl_ecdh_curve X25519:P-521:P-384:P-256;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;

  root /home/diaspora/diaspora/public;

  client_max_body_size 5M;
  client_body_buffer_size 256K;

  try_files $uri @diaspora;

  location /assets/ {
    expires max;
    add_header Cache-Control public;
  }

  location @diaspora {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://diaspora_server;
  }
}

9.2 nginx aktivieren und starten

Um die neue Webserver Konfiguration bereitzustellen, führe bitte folgenden Befehl aus.

ln -s /etc/nginx/sites-available/diaspora /etc/nginx/sites-enabled/

Bevor du nginx mit der neuen Konfiguration aktivierst, prüfe mit nachfolgendem Befehl ob diese fehlerfrei ist.

nginx -t

Sollten an dieser Stelle Fehler auftreten, musst du diese beheben bevor du fortfahren kannst.

Nachdem die Konfiguration erfolgreich und fehlerfrei überprüft wurde, kannst du den Webserver nun mit den folgenden Befehlen neu starten und so einstellen, dass er bei einem System-Neustart automatisch gestartet wird.

systemctl restart nginx
systemctl enable nginx

9.3 Installation des certbot Plugin für nginx

Schlussendlich installierst du noch das Plugin python-certbot-nginx. Dieses wird benötigt damit certbot das SSL Zertifikate automatisch für dich erneuern kann.

apt install certbot python-certbot-nginx

Teste ob certbot ordnungsgemäß läuft. Mit dem Schalter –dry-run kann eine Zertifikatserneuerung getestet werden ohne das Daten ins System zu schreiben.

certbot renew --dry-run

Wenn du die Rückmeldung Congratulations, all renewals succeeded erhältst sollte alles in Ordnung sein. Ab jetzt wird sich certbot um die Erneuerung deiner Zertifikate kümmern.

Deine diaspora* Instanz sollte jetzt einwandfrei laufen!

Rufe deine diaspora* Domain in einem Webbrowser deiner Wahl auf, und du solltest deine ersten Schritte auf deinem eigenen diaspora* Pod machen können.

10. Wartung

10.1 diaspora* aktualisieren

Hinweis: Wenn du vor hast, eine Aktualisierung der Hauptversion durchzuführen, dann halte dich bitte an die entsprechende Anleitung auf der offiziellen Wiki-Seite der diaspora* Foundation.

Um diaspora* zu aktualisieren, melde dich mit dem Benutzerkonto diaspora an.

su - diaspora

Bevor du aktualisieren kannst, solltest du die diaspora* Dienste mit folgendem Befehl stoppen.

sudo systemctl stop diaspora.target

Um den diaspora* Quellcode zu aktualisieren, wechsle in das Verzeichnis diaspora und lade den entsprechenden Quellcode mit folgendem Befehl herunter.

cd diaspora && git pull

Um alle Abhängigkeiten zu aktualisieren, führe folgende Befehle aus.

gem install bundler
bin/bundle --full-index

Aktualisiere die Datenbank.

RAILS_ENV=production bin/rake db:migrate

Kompiliere die Assets:

RAILS_ENV=production bin/rake assets:precompile

Nach einer erfolgreichen Aktualisierung kannst du die diaspora* Dienste wieder starten.

sudo systemctl start diaspora.target

Um zu überprüfen ob beide Dienste gestartet sind und laufen, können die nachfolgenden Befehle abgesetzt werden.

sudo systemctl status diaspora-web
sudo systemctl status diaspora-sidekiq

10.2 Sicherung

Um die diaspora* Datenbank zu sichern, kannst du mit nachfolgendem Befehl einen Dump von dieser erstellen.

sudo -u postgres pg_dump diaspora_production > diaspora.sql

Wenn du die komplette diaspora* Installation sichern möchtest, so erstellt der folgende Befehl ein Zip-Archiv des Installationsordners für dich.

tar -czvf diaspora.tar.gz /home/diaspora/diaspora

Im Anschluss daran solltest du die erstellten Sicherungsdateien in eine sichere und isolierte Umgebung kopieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.