Diaspora auf CentOS 7 installieren und konfigurieren

Diaspora ist ein quelloffenes soziales Netzwerk mit Schwerpunkt auf Datenschutz. In dieser Anleitung erfährst du, wie du einen Diaspora-Pod unter CentOS 7 einrichtest und konfigurierst.

Voraussetzungen

  • Ein laufender CentOS-7-Server
  • Mindestens 512 MB RAM, 1 GB Swap-Speicher und ein Mehrkern-Prozessor
  • Ein Benutzerkonto mit sudo-Rechten

Erforderliche Pakete installieren

Beginne mit der Installation der neuesten EPEL-Version:

sudo yum install epel-release

Installiere die notwendigen Systempakete:

sudo yum install tar make automake gcc gcc-c++ git net-tools cmake libcurl-devel libxml2-devel libffi-devel libxslt-devel wget redis ImageMagick nodejs postgresql-devel

Aktiviere Redis beim Systemstart und starte es direkt:

sudo systemctl enable redis
sudo systemctl start redis

PostgreSQL installieren und konfigurieren

Obwohl Diaspora auch MySQL oder MariaDB unterstützt, verwenden wir in dieser Anleitung PostgreSQL.

Installiere den PostgreSQL-Server und die dazugehörigen Tools:

sudo yum install postgresql-server postgresql-contrib postgresql-setup initdb

Aktiviere den automatischen Start von PostgreSQL und starte den Dienst:

sudo systemctl enable postgresql
sudo systemctl start postgresql

Wechsle in die PostgreSQL-Konsole:

Erstelle einen neuen PostgreSQL-Benutzer für Diaspora:

CREATE USER diaspora WITH CREATEDB PASSWORD '<password>';

Eigenen Systembenutzer für Diaspora anlegen

Erstelle einen dedizierten Systembenutzer, der Diaspora ausführt:

sudo adduser --disabled-login diaspora

Wechsle in die Sitzung des neuen Benutzers:

Ruby mit rbenv installieren

Installiere zunächst alle benötigten Abhängigkeiten für Ruby:

sudo yum install -y git-core zlib zlib-devel gcc-c++ patch readline readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison curl sqlite-devel

Klone das rbenv Repository und baue es:

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

Starte die Benutzersitzung neu, damit die Umgebungsvariablen aktiv werden:

Installiere das Plugin ruby-build, um Ruby-Versionen mit rbenv zu kompilieren:

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

Installiere Ruby 2.4.3 und setze es als Standardversion:

rbenv install 2.4.3
rbenv global 2.4.3

Mailserver einrichten

Verwende Postfix als Mail Transfer Agent. Die genaue Einrichtung erfolgt über eine separate Anleitung, z. B. mit Postfix, Dovecot und Sieve zur Mailzustellung.

Diaspora installieren und konfigurieren

Klone das Diaspora-Repository und wechsle ins Verzeichnis:

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

Kopiere die Beispielkonfigurationsdateien:

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

Bearbeite die Datenbankkonfiguration und ergänze deine Zugangsdaten:

Beispielkonfiguration für PostgreSQL:

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

Öffne die Hauptkonfiguration von Diaspora und nimm folgende Anpassungen vor:

  • Setze url auf die öffentliche URL deiner Diaspora-Instanz
  • Entferne das Kommentarzeichen bei certificate_authorities
  • Setze rails_environment auf production
  • Setze require_ssl auf false

Gems mit Bundler installieren

Installiere Bundler und konfiguriere das Ruby-Umfeld für Diaspora:

gem install bundler
script/configure_bundler

Hinweis: Bei Versionsfehlern in Ruby öffne die Datei .ruby-version und trage 2.4.3 ein.

Datenbank einrichten

Erstelle die Datenbank und führe die Migrationsskripte aus:

RAILS_ENV=production bin/rake db:create db:migrate

Assets vorkompilieren

Erzeuge produktionsfertige Assets mit folgendem Befehl:

RAILS_ENV=production bin/rake assets:precompile

Diaspora mit systemd verwalten

Erstelle die systemd-Diensteinheiten, um Diaspora als Service zu betreiben.

Erstelle zunächst die Target-Datei:

touch /etc/systemd/system/diaspora.target

Erzeuge die Web-Service-Datei:

touch /etc/systemd/system/diaspora-web.service

Erzeuge die Sidekiq-Service-Datei:

touch /etc/systemd/system/diaspora-sidekiq.service

diaspora.target

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

[Install]
WantedBy=multi-user.target

diaspora-web.service

[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

diaspora-sidekiq.service

[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

Dienste aktivieren und starten

Aktiviere die Diaspora-Dienste beim Systemstart und starte sie anschließend manuell:

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

Prüfe, ob die Dienste wie erwartet laufen:

sudo systemctl status diaspora-web.service
sudo systemctl status diaspora-sidekiq.service

Nginx als Reverse Proxy einrichten

Setze Nginx als Reverse Proxy auf, um Diaspora bereitzustellen und statische Inhalte auszuliefern. Verwende acme.sh, um ein Let’s Encrypt SSL-Zertifikat zu erhalten.

acme.sh klonen

git clone https://github.com/Neilpang/acme.sh.git

Zertifikat anfordern

./.acme.sh/acme.sh --issue --log \
--dns \
--keylength ec-256 \
--cert-file /etc/nginx/https/cert.pem \
--key-file /etc/nginx/https/key.pem \
--fullchain-file /etc/nginx/https/fullchain.pem \
-d example.com \
-d www.example.com

Nginx installieren und konfigurieren

sudo yum install nginx
nano /etc/nginx/conf.d/diaspora.conf

Füge die folgende Konfiguration ein:

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

server {
  listen 80;
  listen [::]:80; 
  server_name www.example.com 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 www.example.com example.com;

  if ($host = www.example.com) {
   return 301 https://example.com$request_uri;
  }

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

  ssl_certificate /etc/nginx/https/fullchain.pem;
  ssl_certificate_key /etc/nginx/https/key.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_stapling on;
  ssl_stapling_verify on;
  resolver 80.67.169.40 80.67.169.12 valid=300s;
  resolver_timeout 5s;
  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;
  }
}

Hinweis: Ersetze example.com durch deinen tatsächlichen Domainnamen.

Konfiguration testen und Nginx neu starten

sudo nginx -t
sudo systemctl restart nginx

Firewall für Webzugriff konfigurieren

sudo firewall-cmd --permanent --zone=public --add-service=http 
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

Diaspora im Browser aufrufen

Öffne https://example.com in deinem Browser. Du solltest die Startseite von Diaspora sehen.

Administratorbenutzer anlegen

Erstelle zunächst einen Diaspora-Account über den Button „Start by creating an account.“ Gib dem Benutzer danach Adminrechte:

Role.add_admin User.where(username: "your_username").first.person

Adminbereich aufrufen: https://example.com/admins/dashboard

Sidekiq-Dashboard und Statistiken

  • Sidekiq-Oberfläche: https://example.com/sidekiq
  • Pod-Statistiken: https://example.com/statistics

Logverwaltung mit logrotate

Erstelle eine Logrotate-Konfigurationsdatei für Diaspora:

nano /etc/logrotate/diaspora

Füge folgende Konfiguration ein:

/home/diaspora/diaspora/log/*.log {
  notifempty
  copytruncate
  missingok
  compress
  weekly
  rotate 52
}

Diaspora aktualisieren

  • Systempakete aktualisieren:
  • Quellcode und Abhängigkeiten aktualisieren:

su - diaspora
cd diaspora
git pull
gem install bundler
bin/bundle --full-index

Datenbank migrieren und Assets neu kompilieren:

RAILS_ENV=production bin/rake db:migrate
RAILS_ENV=production bin/rake assets:precompile

Starte den Diaspora-Dienst neu:

systemctl restart diaspora.target

Fazit

Mit diesen Schritten hast du erfolgreich einen eigenen, produktionsreifen Diaspora-Pod unter CentOS 7 installiert. Du hast PostgreSQL, Ruby, Nginx, systemd-Dienste, SSL-Verschlüsselung, Benutzerrechte und Logrotation konfiguriert. Deine Instanz ist jetzt sicher, performant und bereit zur Nutzung. Halte sie regelmäßig durch Updates aktuell und überwache ihre Funktion mit Sidekiq und dem Admin-Dashboard.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren:

Moderne Hosting Services mit Cloud Server, Managed Server und skalierbarem Cloud Hosting für professionelle IT-Infrastrukturen

Jenkins auf Ubuntu mit Docker Compose installieren

Docker, Tutorial
Jenkins auf einem Ubuntu-Server mit Docker Compose installieren Jenkins ist eine beliebte Open-Source-Anwendung, die in Java entwickelt wurde und sich hervorragend zur Einrichtung von Continuous Integration und Continuous Deployment (CI/CD)-Pipelines…