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.