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:
sudo -u postgres psql
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:
sudo su - diaspora
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:
exit
sudo su - diaspora
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:
nano config/database.yml
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:
nano config/diaspora.yml
- 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:
sudo yum update
- 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.