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
Passende Infrastruktur bei centron
Zum Ausprobieren braucht es keine eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff gibt es ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →
Erforderliche Pakete installieren
Beginne mit der Installation der neuesten EPEL-Version:
sudo yum install epel-releaseInstalliere 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-develAktiviere Redis beim Systemstart und starte es direkt:
sudo systemctl enable redis
sudo systemctl start redisPostgreSQL 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 initdbAktiviere den automatischen Start von PostgreSQL und starte den Dienst:
sudo systemctl enable postgresql
sudo systemctl start postgresqlWechsle in die PostgreSQL-Konsole:
sudo -u postgres psqlErstelle 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 diasporaWechsle in die Sitzung des neuen Benutzers:
sudo su - diasporaRuby 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-develKlone 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_profileStarte die Benutzersitzung neu, damit die Umgebungsvariablen aktiv werden:
exit
sudo su - diasporaInstalliere das Plugin ruby-build, um Ruby-Versionen mit rbenv zu kompilieren:
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-buildInstalliere Ruby 2.4.3 und setze es als Standardversion:
rbenv install 2.4.3
rbenv global 2.4.3Mailserver 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 diasporaKopiere die Beispielkonfigurationsdateien:
cp config/database.yml.example config/database.yml
cp config/diaspora.yml.example config/diaspora.ymlBearbeite die Datenbankkonfiguration und ergänze deine Zugangsdaten:
nano config/database.ymlBeispielkonfiguration 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
urlauf die öffentliche URL deiner Diaspora-Instanz - Entferne das Kommentarzeichen bei
certificate_authorities - Setze
rails_environmentauf production - Setze
require_sslauf false
Gems mit Bundler installieren
Installiere Bundler und konfiguriere das Ruby-Umfeld für Diaspora:
gem install bundler
script/configure_bundlerHinweis: 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:migrateAssets vorkompilieren
Erzeuge produktionsfertige Assets mit folgendem Befehl:
RAILS_ENV=production bin/rake assets:precompileDiaspora mit systemd verwalten
Erstelle die systemd-Diensteinheiten, um Diaspora als Service zu betreiben.
Erstelle zunächst die Target-Datei:
touch /etc/systemd/system/diaspora.targetErzeuge die Web-Service-Datei:
touch /etc/systemd/system/diaspora-web.serviceErzeuge die Sidekiq-Service-Datei:
touch /etc/systemd/system/diaspora-sidekiq.servicediaspora.target
[Unit]
Description=Diaspora social network
Wants=postgresql.service
Wants=redis-server.service
After=redis-server.service
After=postgresql.service
[Install]
WantedBy=multi-user.targetdiaspora-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.targetdiaspora-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.targetDienste 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.targetPrüfe, ob die Dienste wie erwartet laufen:
sudo systemctl status diaspora-web.service
sudo systemctl status diaspora-sidekiq.serviceNginx 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.gitZertifikat 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.comNginx installieren und konfigurieren
sudo yum install nginx
nano /etc/nginx/conf.d/diaspora.confFü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 nginxFirewall 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 --reloadDiaspora 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.personAdminbereich 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/diasporaFü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-indexDatenbank migrieren und Assets neu kompilieren:
RAILS_ENV=production bin/rake db:migrate
RAILS_ENV=production bin/rake assets:precompileStarte den Diaspora-Dienst neu:
systemctl restart diaspora.targetFazit
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.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.