Einführung
Die Diaspora ist ein Open Source verteiltes soziales Netzwerk.
Es unterscheidet sich von den meisten anderen sozialen Netzwerken dadurch, dass es dezentralisiert ist - ein echtes Netzwerk ohne zentrale Basis. Es gibt Server (genannt pods) auf der ganzen Welt, von denen jeder die Daten von Benutzern enthält, die sich dafür entschieden haben, sich bei ihm zu registrieren. Diese Pods kommunizieren nahtlos miteinander, sodass Sie sich bei jedem Pod registrieren und ungehindert mit Ihren Kontakten kommunizieren können, unabhängig davon, wo sie sich im Netzwerk befinden. Weitere Informationen finden Sie auf der about page der Diaspora.
In diesem Tutorial werden wir einen Diaspora-Pod einrichten und konfigurieren. Unter anderem lernen Sie:
-
So richten Sie eine Rails-Anwendung (Diaspora) für die Produktion ein
-
So konfigurieren Sie MariaDB mit Diaspora
-
So richten Sie Nginx als Reverse-Proxy-Server für die Diaspora ein
-
Die Best Practices für eine SSL-Konfiguration für Nginx
-
Schreiben von benutzerdefinierten System-Unit-Dateien zur Verwendung in einer Rails-Anwendung
-
Für Sicherheitsbewusste gibt es einen Bonusabschnitt, in dem erklärt wird, wie SELinux so konfiguriert wird, dass es gut mit der Diaspora zusammenarbeitet
-
Abweichungen von der offiziellen Diaspora-Installationsanleitung *
Die Diaspora-Installationsanleitungen wiki empfehlen die Verwendung von Ruby Version Manager. Während Sie dies tun können, werden wir stattdessen das Systempaket Ruby verwenden. Auf diese Weise vermeiden wir die Installation von Ruby aus dem Quellcode und müssen uns um eine weitere Abhängigkeit wie RVM sorgen.
Die offizielle Anleitung empfiehlt auch die Verwendung von "+ script / server ", einem Skript, das " Unicorn " und " sidekiq +" startet, zwei Apps, die wir für die Diaspora benötigen. Da CentOS 7 systemd verwendet, schreiben wir stattdessen unsere eigenen Init-Dateien für diese Dienste.
Voraussetzungen
Bitte füllen Sie diese Voraussetzungen aus, bevor Sie mit dem Tutorial beginnen.
-
CentOS 7 mit 1 GB RAM + Für eine kleine Community wird mindestens * 1 GB * RAM benötigt, daher wird das Droplet * 1 GB / 1 CPU * verwendet.
-
Sudo-Benutzer + Die meisten der folgenden Befehle benötigen Root-Rechte. Überprüfen Sie die How, um Benutzer hinzuzufügen Anleitung, um Ihren Benutzer hinzuzufügen und zu geben es Sudo-Privilegien. Dieses Benutzerkonto wird zusätzlich zu dem * diaspora * -Benutzerkonto verwendet, das wir später erstellen und unter dem die Dienste der Diaspora mit eingeschränkteren Berechtigungen ausgeführt werden.
-
SSL-Zertifikat + Obwohl die Diaspora ohne SSL-Zertifikat ausgeführt werden kann, erfordert der Mechanismus der Diaspora zum Herstellen einer Verbindung zu anderen Pods ein gültiges SSL-Zertifikat. Für die Produktion sollten Sie ein paid SSL certificate haben. Wir brauchen nur die beiden in diesem Artikel erstellten Zertifikatsdateien (öffentlich, privat), damit Sie den Teil der Webserverkonfiguration dieses Lernprogramms überspringen können. Das machen wir alleine. + Alternativ können Sie zu Testzwecken ein selbstsigniertes Zertifikat generieren. Weitere Informationen finden Sie unter this tutorial oder führen Sie es einfach aus Dieser Befehl aus Ihrem Home-Verzeichnis:
openssl req \ -newkey rsa:2048 -nodes -keyout ssl.key \ -x509 -days 365 -out ssl.crt
-
Registrierter Domainname, der auf die IP Ihres Droplets verweist
-
Auslagerungsdatei + Für einen 1 GB-Server wird eine Auslagerungsdatei von mindestens 1 GB benötigt. Folgen Sie dem Zum Einrichten eines Swap on CentOS 7 -Tutorials.
-
Folgen Sie der Initial Server Setup with CentOS 7 Anleitung
-
Folgen Sie dem Additional Recommended Steps for New CentOS 7 Servers -Handbuch
Schritt 1 - Dienstprogramme installieren
Lassen Sie uns einige Pakete für Dienstprogramme installieren, die später nützlich sein werden:
sudo yum install deltarpm yum-cron vim
Dann aktualisieren Sie unser System:
sudo yum update
Schritt 2 - Aktivieren Sie das EPEL-Repository
EPEL steht für Extra Packages for Enterprise Linux und enthält einige Pakete, die wir installieren müssen und die nicht Teil der Basis-CentOS-Repositorys sind.
Lassen Sie uns dies aktivieren, indem Sie das Paket "+ epel-release" installieren und nach Updates für + Pakete suchen:
sudo yum install epel-release
sudo yum update
Wenn Sie aufgefordert werden, den EPEL 7-GPG-Schlüssel wie unten gezeigt zu importieren, antworten Sie mit Ja:
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Importing GPG key 0x352C64E5:
Userid : "Fedora EPEL (7) <[email protected]>"
Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
Package : epel-release-7-5.noarch (@extras)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Is this ok [y/N]:
Schritt 3 - Installieren Sie Pakete für Ruby und C
Die folgenden Pakete werden von Diaspora und ihren Edelsteinen mit nativen C-Erweiterungen benötigt.
Installieren Sie die Pakete:
sudo yum install git ruby ruby-devel libxslt-devel libxml2-devel gcc gcc-c++ automake net-tools libcurl-devel libffi-devel make redis nodejs ImageMagick-devel
Redis ist ein Open-Source-Schlüsselwertdatenspeicher, den die Diaspora als Datenbank verwendet. Nachdem Redis installiert ist, konfigurieren wir es so, dass es beim Booten aktiviert wird, und starten den Dienst:
sudo systemctl enable redis
sudo systemctl start redis
Schritt 4 - Fügen Sie einen dedizierten Diaspora-Benutzer hinzu
Erstellen Sie ein Benutzerkonto, um Diaspora auszuführen. Sie können dieses Konto beliebig benennen, in diesem Lernprogramm wird jedoch davon ausgegangen, dass dieser Benutzer * diaspora * heißt.
sudo useradd diaspora
Schritt 5 - Konfigurieren Sie die Firewall
Das Konfigurieren und Verschärfen der Firewall ist beim Einrichten einer Produktionsumgebung von großer Bedeutung. Das Tool, das wir verwenden werden, ist "+ firewalld ", was die Dinge im Vergleich zu reinen " iptables +" - Befehlen vereinfacht.
Starten Sie zuerst den Dienst + firewalld +
und aktivieren Sie ihn, um beim Booten zu starten:
sudo systemctl start firewalld
sudo systemctl enable firewalld
Jetzt erlauben wir "+ ssh " an Port " 22 ", " http" an Port "+ 80 ", " https" an Port "+ 443 " und " smtp" an Port "+25 + `. Fügen Sie als sudo-Benutzer die folgenden Dienste hinzu:
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=smtp
Laden Sie die Firewall-Regeln neu:
sudo firewall-cmd --reload
Weitere Informationen zur Verwendung von "+ firewalld +" finden Sie unter Additional Recommended Steps for New CentOS 7 Servers Lernprogramm.
Schritt 6 - MariaDB installieren und sichern
Der nächste große Schritt ist die Einrichtung einer Datenbank für die Diaspora. In diesem Tutorial werden wir MariaDB verwenden, obwohl wir im gesamten Tutorial ein paar Kleinigkeiten für PostgreSQL enthalten werden.
Installieren Sie die erforderlichen Pakete:
sudo yum install mariadb-server mariadb-devel
Stellen Sie sicher, dass MariaDB beim Booten gestartet und aktiviert ist:
sudo systemctl start mariadb
sudo systemctl enable mariadb
Sichern Sie die MariaDB-Installation, indem Sie den folgenden Befehl ausführen:
sudo mysql_secure_installation
Beantworten Sie die folgenden Fragen im Text und fügen Sie ein sicheres Root-Passwort hinzu, wenn Sie dazu aufgefordert werden:
Enter current password for root (enter for none):
Set root password? [Y/n]
Remove anonymous users? [Y/n]
Disallow root login remotely? [Y/n]
Remove test database and access to it? [Y/n]
Reload privilege tables now? [Y/n]
Schritt 7 - Diaspora-Benutzer und -Datenbank erstellen
Als nächstes melden wir uns bei MariaDB an, um den Benutzer * diaspora * zu erstellen. Wenn Sie dazu aufgefordert werden, geben Sie das oben erstellte Passwort * root * ein:
mysql -u root -p
Erstellen Sie einen Benutzer für die Diaspora. Ändern Sie "+" im folgenden Befehl in ein echtes Passwort. Dies sollte nicht mit dem * root * -Passwort identisch sein, das Sie während der ` mysql_secure_installation +` angegeben haben.
CREATE USER 'diaspora'@'localhost' IDENTIFIED BY '';
Erstellen Sie die Diaspora-Produktionsdatenbank:
CREATE DATABASE IF NOT EXISTS `diaspora_production` DEFAULT CHARACTER SET `utf8mb4` COLLATE `utf8mb4_bin`;
Gewähren Sie dem Benutzer MariaDB * diaspora * die erforderlichen Berechtigungen für die Datenbank:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `diaspora_production`.* TO 'diaspora'@'localhost';
Beenden Sie die Datenbanksitzung.
\q
Versuchen Sie, mit dem Benutzer * diaspora * eine Verbindung zu der neuen Datenbank herzustellen (verwenden Sie das Kennwort, das Sie oben für + IDENTIFIED BY '' +
eingegeben haben).
mysql -u diaspora -p -D diaspora_production
Sie sollten jetzt die Eingabeaufforderung sehen: + MariaDB [diaspora_production]> +
. Beenden Sie die Datenbanksitzung +, indem Sie Folgendes eingeben:
\q
Jetzt ist die Installation der MariaDB-Datenbank abgeschlossen.
Weitere Informationen zur Sicherheit finden Sie im ausführlichen Artikel unter How To Secure MySQL und MariaDB-Datenbanken.
Als Nächstes greifen wir auf den Diaspora-Quellcode zu und konfigurieren ihn für die Ausführung auf Ihrem VPS.
Schritt 8 - Bundler installieren
Bundler ist der Paketmanager für Ruby-Edelsteine. Wir werden es installieren, um es global verfügbar zu machen.
sudo gem install bundler
Da die ausführbare Datei "+ bundle " in " / usr / local / bin / bundle " installiert ist, erstellen Sie eine symbolische Verknüpfung, um sie in " PATH +" des Benutzers aufzunehmen.
sudo ln -sf /usr/local/bin/bundle /usr/bin/bundle
Schritt 9 - Holen Sie sich den Diaspora-Quellcode
Diaspora wird in drei Hauptzweigen entwickelt. + stable +
enthält Code, der als stabil gilt und veröffentlicht werden soll, + master +
hat die Versionen mit stabilen Tags, die wir verwenden werden, während + develop +
den neuesten Code mit möglichen Fehlern enthält.
Wechseln Sie in das Benutzerkonto * diaspora *.
sudo su - diaspora
Überprüfen Sie den Master-Zweig. Zum Zeitpunkt dieses Schreibens enthält es die Diaspora-Version "+ 0.5.1.1 +".
git clone -b master https://github.com/diaspora/diaspora.git
Schritt 10 - Konfigurieren Sie die Diaspora-Datenbank
Wechseln Sie nun in das Arbeitsverzeichnis.
cd ~/diaspora/
Kopieren Sie die Beispiel-Datenbankkonfigurationsdatei und öffnen Sie + database.yml +
mit Ihrem bevorzugten Editor.
cp config/database.yml.example config/database.yml
vim config/database.yml
Jetzt bearbeiten wir die Konfigurationsdatei so, dass sie mit den zuvor erstellten Datenbankeinstellungen übereinstimmt.
Bearbeiten Sie die allerersten Zeilen, in denen der Adapter "+ mysql2 " definiert ist. (MariaDB ist ein Drop-In-Ersatz für MySQL.) Ersetzen Sie * root * durch * diaspora * und ändern Sie das `+` in das Passwort für den zuvor erstellten Datenbankbenutzer * diaspora *. Entfernen Sie nicht die Anführungszeichen. Wenn Sie fertig sind, speichern und schließen Sie die Datei.
mysql: &mysql
adapter: mysql2
host: "localhost"
port: 3306
username: ""
password: ""
encoding: utf8mb4
collation: utf8mb4_bin
Schritt 11 - Konfigurieren Sie die Grundeinstellungen der Diaspora
Beginnen wir mit dem Kopieren der Beispielkonfigurationsdatei.
cp config/diaspora.yml.example config/diaspora.yml
Sie müssen einige Einstellungen in dieser Datei bearbeiten, damit die Diaspora ordnungsgemäß funktioniert. Lesen Sie die gesamte Datei sorgfältig durch, um zu verstehen, was und wie sie funktioniert. Es ist ziemlich selbsterklärend, aber schauen wir uns einige der wichtigsten Einstellungen an.
Öffnen Sie die Datei in einem Texteditor.
vim config/diaspora.yml
Zeile 39 - Kommentieren Sie die Zeile "+ url +" aus, damit sie wie folgt aussieht:
url: ""
Ersetzen Sie ++
durch Ihren eigenen Domainnamen. Die URL, die Sie hier verwenden, wird in der Datenbank fest codiert. Stellen Sie daher sicher, dass sie korrekt ist. * Lesen Sie die Kommentare über dieser Konfigurationszeile für Details *.
Zeile 47 - Kommentieren Sie die Zeile "+ certificate_authorities +" aus, damit sie wie folgt aussieht:
certificate_authorities: '/etc/pki/tls/certs/ca-bundle.crt'
Zeile 166 - Kommentieren Sie die Zeile "+ rails_environment " aus und ersetzen Sie " development " durch " production", so dass es wie folgt aussieht:
rails_environment: ''
Speichern und schließen Sie die Datei.
Dies sind die minimalen Änderungen, die erforderlich sind, um eine funktionierende Diaspora-Kapsel zu haben. Es gibt viele weitere Optionen, die Sie erkunden und nach Ihren Wünschen konfigurieren können, beispielsweise die Verbindung mit anderen sozialen Netzwerken (Twitter, WordPress, Tumblr, Facebook). Bitte lesen Sie die Datei durch und nehmen Sie die gewünschten Konfigurationsänderungen vor.
Schritt 12 - Installieren Sie Gems und richten Sie die Datenbank ein
Installieren Sie die benötigten Gems, richten Sie die Datenbank ein und kompilieren Sie die Assets vor.
Stellen Sie sicher, dass Sie sich im richtigen Verzeichnis befinden:
cd /home/diaspora/diaspora/
Zuerst weisen wir das nokogiri-Juwel an, die zuvor installierte libxm2-Systembibliothek zu verwenden:
bundle config build.nokogiri --use-system-libraries
Verwenden Sie als Nächstes den Bundler, um die benötigten Edelsteine zu installieren:
RAILS_ENV=production bin/bundle install --without test development --deployment
Richten Sie die Datenbank ein:
RAILS_ENV=production bin/rake db:create db:schema:load
Assets vorkompilieren:
RAILS_ENV=production bin/rake assets:precompile
Zu diesem Zeitpunkt können Sie das Benutzerkonto * diaspora * verlassen und zu dem Sudo-Benutzer zurückkehren, den Sie erstellt haben, als Sie die Voraussetzungen für dieses Lernprogramm befolgt haben.
exit
Schritt 13 - Konfigurieren Sie die Diaspora systemd Services
Die Diaspora besteht aus zwei Hauptdiensten, die ausgeführt werden müssen:
-
Einhorn, der Anwendungsserver
-
sidekiq für die Verarbeitung von Hintergrundjobs
Für diesen Fall wird ein Skript bereitgestellt, das sich in "+ script / server +" befindet. Wir verwenden jedoch stattdessen "systemd". systemd ist das in CentOS 7 verwendete Init-System.
Lesen Sie zum besseren Verständnis der Funktionsweise von systemd die folgenden Artikel:
Erstellen Sie das Verzeichnis tmpfiles
Erstellen Sie das Verzeichnis, in dem sich der Unix-Socket "+ Unicorn +" befindet.
sudo mkdir /run/diaspora
Ändern Sie den Besitzer des Benutzers * diaspora * und legen Sie die Berechtigungen fest.
sudo chown diaspora:diaspora /run/diaspora
sudo chmod 750 /run/diaspora
Da die Verzeichnisse "+ / run " und " / var / run " flüchtig sind, überlebt das soeben erstellte Verzeichnis " / run / diaspora +" einen Systemneustart nicht. Mit systemd können wir tmpfiles verwenden, um dieses Verzeichnis zwischen Neustarts beizubehalten.
Öffnen Sie + / etc / tmpfiles.d / diaspora.conf +
zum Bearbeiten.
sudo vim /etc/tmpfiles.d/diaspora.conf
Füge folgende Zeile ein:
/etc/tmpfiles.d/diaspora.conf
d /run/diaspora 0750 diaspora diaspora - -
Das Konfigurationsformat ist eine Zeile pro Pfad, die Felder für Typ, Pfad, Modus, Eigentümer, Alter und Argument enthält. Weitere Informationen zu "+ tmpfiles.d +" finden Sie unter official web page oder in der zugehörigen Manpage.
Einhorn
Zuerst bearbeiten wir + diaspora.yml +
so, dass der Dienst einen Unix-Socket abhört. Wir werden dafür auf den diaspora-Benutzer zurückgreifen.
sudo su - diaspora
Öffnen Sie die Konfigurationsdatei zum Bearbeiten:
vim /home/diaspora/diaspora/config/diaspora.yml
Kommentarzeile 157 mit folgendem Wortlaut:
/home/diaspora/diaspora/config/diaspora.yml
listen: 'unix:/run/diaspora/diaspora.sock'
Speichern und schließen Sie die Datei.
Kehren Sie nun zu Ihrem sudo-Benutzer zurück.
su -
Erstellen Sie die Datei "+ unicorn.service +".
sudo vim /etc/systemd/system/diaspora-unicorn.service
Fügen Sie den folgenden Inhalt genau ein, um das Skript zu erstellen. Denken Sie daran, die früheren Links zu systemd zu überprüfen, wenn Sie Hilfe benötigen, um zu verstehen, was in dieser Datei enthalten ist:
/etc/systemd/system/diaspora-unicorn.service
[Unit]
Description=Diaspora Unicorn Server
Requires=redis.service
After=redis.service network.target
[Service]
User=diaspora
Group=diaspora
SyslogIdentifier=diaspora-unicorn
WorkingDirectory=/home/diaspora/diaspora
Environment=RAILS_ENV=production
## Uncomment if postgres is installed
#Environment=DB=postgres
PIDFile=/run/diaspora/unicorn.pid
Restart=always
CPUAccounting=true
emoryAccounting=true
BlockIOAccounting=true
CapabilityBoundingSet=
PrivateTmp=true
NoNewPrivileges=true
ExecStart=/usr/bin/bundle exec "unicorn_rails -c config/unicorn.rb -E production"
[Install]
WantedBy=multi-user.target
Starten Sie den Unicorn-Dienst und aktivieren Sie ihn beim Booten.
sudo systemctl start diaspora-unicorn
sudo systemctl enable diaspora-unicorn
Überprüfen Sie nun den Servicestatus:
systemctl status diaspora-unicorn
Wenn alles geklappt hat, sollte dieser Befehl eine Ausgabe ähnlich der folgenden zurückgeben:
diaspora-unicorn.service - Diaspora Unicorn Server
Loaded: loaded (/etc/systemd/system/diaspora-unicorn.service; enabled)
Active: active (running) since Tue 2015-06-23 10:18:25 EDT; 16s ago
Main PID: 16658 (ruby)
CGroup: /system.slice/diaspora-unicorn.service
└─16658 ruby /home/diaspora/diaspora/vendor/bundle/ruby/bin/unicorn_rails -c config/unicorn.rb -E production
Sidekiq
Erstellen wir ebenfalls mit "+ sidekiq " die Datei " sidekiq.service +".
sudo vim /etc/systemd/system/diaspora-sidekiq.service
Fügen Sie Folgendes ein:
/etc/systemd/system/diaspora-sidekiq.service
[Unit]
Description=Diaspora Sidekiq Worker
Requires=redis.service
After=redis.service network.target
[Service]
User=diaspora
Group=diaspora
SyslogIdentifier=diaspora-sidekiq
WorkingDirectory=/home/diaspora/diaspora
Environment=RAILS_ENV=production
## Uncomment if postgres is installed
#Environment=DB=postgres
Restart=always
CPUAccounting=true
emoryAccounting=true
BlockIOAccounting=true
CapabilityBoundingSet=
PrivateTmp=true
ExecStart=/usr/bin/bundle exec "sidekiq -e production -L log/sidekiq.log >> log/sidekiq.log 2>&1"
[Install]
WantedBy=multi-user.target
Starten Sie den sidekiq-Dienst und aktivieren Sie ihn beim Booten:
sudo systemctl start diaspora-sidekiq
sudo systemctl enable diaspora-sidekiq
Führen Sie nun Folgendes aus:
systemctl status diaspora-sidekiq
Die Ausgabe sollte ungefähr so aussehen:
diaspora-sidekiq.service - Diaspora Sidekiq Worker
Loaded: loaded (/etc/systemd/system/diaspora-sidekiq.service; enabled)
Active: active (running) since Mon 2014-12-29 08:21:45 UTC; 44s ago
Main PID: 18123 (sh)
CGroup: /system.slice/diaspora-sidekiq.service
├─18123 sh -c sidekiq -e production -L log/sidekiq.log >> log/sidekiq.log 2>&1
└─18125 sidekiq 2.17.7 diaspora [0 of 5 busy]
Schritt 14 - Installieren Sie Nginx
Nginx wird als Reverse-Proxy fungieren, sodass nahezu alle Anfragen an Unicorn gesendet werden. Nur die Dateien in + public / +
werden direkt von Nginx bereitgestellt.
Lassen Sie uns zuerst den Webserver installieren.
sudo yum install nginx
Starten Sie den Dienst und aktivieren Sie ihn beim Booten:
sudo systemctl start nginx
sudo systemctl enable nginx
Schritt 15 - Nginx-Berechtigungen erteilen
Damit Nginx auf den Benutzerordner * diaspora * zugreifen kann, müssen wir den Benutzer * nginx * zur Gruppe * diaspora * hinzufügen:
sudo usermod -a -G diaspora nginx
Schließlich werden wir die Zugriffsrechte des Benutzers * diaspora * für das Basisverzeichnis lockern, um den Lese- und Ausführungszugriff auf die Diaspora-Gruppe zu ermöglichen:
sudo chmod 750 /home/diaspora/
Schritt 16 - SSL-Zertifikat hochladen und Weiterleitungsgeheimnis aktivieren
Sie benötigen jetzt die SSL-Zertifikatdateien von Ihrer Zertifizierungsstelle. Im folgenden Konfigurationsbeispiel verwenden wir "+ / etc / ssl / diaspora / ssl.crt " für das öffentliche Zertifikat und " / etc / ssl / diaspora / ssl.key +" für den privaten Schlüssel.
Erstellen Sie ein Verzeichnis zum Speichern der Zertifikatdateien.
sudo mkdir /etc/ssl/diaspora
Laden Sie die Zertifikats- und Schlüsseldateien auf den Server hoch, oder verschieben Sie sie, und platzieren Sie sie im soeben erstellten Verzeichnis +. Hierzu kann SFTP oder SCP verwendet werden. Siehe this tutorial.
Das Vorwärtsgeheimnis ist zu einem wesentlichen Bestandteil der SSL / TLS-verschlüsselten Kommunikation geworden. Eine detailliertere Erklärung der Forward-Geheimhaltung finden Sie in diesem Mozilla-Server-Sicherheits-Wiki-Eintrag.
Wechseln Sie erneut zum Benutzer * root * des Systems.
sudo su -
Erstellen Sie die Datei + dhparam.pem +
.
openssl dhparam 2048 > /etc/ssl/dhparam.pem
Die Fertigstellung der dhparam-Datei kann einige Minuten dauern. Wenn dies abgeschlossen ist, melden Sie sich erneut bei Ihrem sudo-Benutzerkonto an.
su -
Schritt 17 - Deaktivieren Sie die Standard-Site in nginx.conf
Wir werden nun "+ / etc / nginx / nginx.conf +" ändern, damit die Standardnachricht "Willkommen bei Nginx" nicht die von uns erstellte Diaspora-Konfigurationsdatei beeinträchtigt.
sudo vim /etc/nginx/nginx.conf
Suchen Sie im Block "+ server " nach den Zeilen, die " default_server; " enthalten. Entfernen Sie ` default_server +` aus diesen Einträgen, so dass der Bereich des Serverblocks folgendermaßen aussieht:
/etc/nginx/nginx.conf
server {
server_name localhost;
root /usr/share/nginx/html;
Schritt 18 - Erstellen Sie die eigene Nginx-Konfigurationsdatei der Diaspora
Erstellen Sie eine neue Nginx-Konfigurationsdatei für unseren Diaspora-Pod:
sudo vim /etc/nginx/conf.d/diaspora.conf
Fügen Sie den folgenden Inhalt ein; Erklärungen finden Sie direkt unter dem Code:
/etc/nginx/conf.d/diaspora.conf
upstream diaspora {
server unix:/run/diaspora/diaspora.sock fail_timeout=0;
}
server {
listen [::]:80;
listen 80;
server_name _;
return 301 https://$request_uri;
}
server {
listen [::]:443 ssl spdy;
listen 443 ssl spdy;
server_name ;
root /home/diaspora/diaspora/public;
server_tokens off;
error_log /var/log/nginx/diaspora_error.log;
# Configure maximum picture size
# Note that Diaspora has a client side check set at 4M
client_max_body_size 4M;
## SSL settings
ssl_certificate ;
ssl_certificate_key ;
# https://wiki.mozilla.org/Security/Server_Side_TLS
ssl_dhparam /etc/ssl/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK';
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
add_header Strict-Transport-Security "max-age=31536000";
location / {
# Proxy if requested file not found
try_files $uri $uri/index.html $uri.html @diaspora;
}
location @diaspora {
gzip off;
proxy_set_header X-Forwarded-Ssl on;
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_set_header X-Frame-Options SAMEORIGIN;
proxy_redirect off;
proxy_pass http://diaspora;
}
}
Ersetzen Sie die folgenden Variablen:
-
++
mit Ihrem eigenen registrierten Domainnamen; Sie müssen dies an zwei Stellen tun -
++
mit dem Pfad zu Ihrem eigenen öffentlichen Zertifikat -
++
mit dem Pfad zu Ihrem eigenen privaten Schlüssel
Erläuterung:
-
Im
+ upstream +
- Block stellen wir den Unix-Socket ein, den Diaspora abhört (den wir auch zuvor in Unicorn eingestellt haben). Dies wird später als "+ proxy_pass +" - Direktive verwendet. -
Der erste "+ Server" -Block lauscht dem Standard-HTTP-Port "+ 80" und leitet alle Anfragen an HTTPS um.
-
Der zweite "+ server " -Block lauscht dem Port " 443 +" (SSL) und legt einige starke SSL-Parameter fest, die aus dem Mozilla-Wiki stammen.
Weitere Informationen zu Nginx-Serverblöcken im Allgemeinen finden Sie unter this tutorial.
Überprüfen Sie nach Abschluss aller Änderungen die Konfigurationsdatei auf Fehler.
sudo nginx -t
Wenn alles gut gegangen ist, sollte dies zurückkehren:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Starten Sie Nginx neu, um die Änderungen zu übernehmen.
sudo systemctl restart nginx
Wenn Sie jetzt den Domain-Namen Ihres Diaspora-Pods in Ihrem Browser aufrufen (z. B. "+ https: // example.com +"), sollten Sie die Willkommensseite von Diaspora aufrufen. Herzliche Glückwünsche!
Bild: https://assets.digitalocean.com/articles/socialnetwork_diaspora/diaspora.png [Diaspora-Begrüßungsseite]
Schritt 19 - Diaspora-Benutzer erstellen
Lassen Sie uns Ihren ersten Diaspora-Benutzer erstellen. Klicken Sie auf den Link in * Beginnen Sie mit der Erstellung eines Kontos. *
Füllen Sie die Details aus, um einen neuen Diaspora-Benutzer zu erstellen. Anschließend sollten Sie die Startseite Ihres Benutzers anzeigen und das soziale Netzwerk der Diaspora nutzen können.
Schritt 20 - SELinux konfigurieren (optional)
_ * Warnung: * Wenn Sie nicht mit SELinux vertraut sind, beachten Sie bitte, dass * dies zu Problemen führen kann *. Sie können diesen Abschnitt überspringen und Diaspora verwenden. _
In CentOS 7 Droplets ist SELinux standardmäßig deaktiviert. Für maximale Sicherheit können Sie SELinux aktivieren und so konfigurieren, dass es mit den Diensten Ihres Diaspora-Pods zusammenarbeitet. Wenn Sie SELinux noch nicht kennen, finden Sie hier eine Reihe von Tutorials, in denen Sie weitere Informationen finden:
Aktivieren Sie SELinux
Öffnen Sie "+ / etc / selinux / config +" in einem Texteditor.
sudo vim /etc/selinux/config
Ändern Sie die Einstellung von "+ SELINUX " von " disabled " in "+" (siehe unten). Es ist erforderlich, zuerst einen zulässigen Status festzulegen, da jeder Datei im System ein Kontext zugewiesen werden muss, bevor SELinux erzwungen werden kann.
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
Speichern und schließen Sie die Datei.
Nachdem Sie diese Änderung vorgenommen haben, starten Sie das Droplet neu, damit die Einstellung wirksam wird. Einfach eintippen:
sudo reboot
Geben Sie das Passwort Ihres sudo-Benutzers ein, um das System neu zu starten. Dann kehren Sie mit SSH in das Droplet zurück und wechseln wieder in das Konto Ihres sudo-Benutzers mit:
su -
Bearbeiten Sie nun + / etc / selinux / config +
noch einmal und setzen Sie die Einstellung + SELINUX +
auf ++
.
sudo vim /etc/selinux/config
Wenn Sie fertig sind, sollte in der Zeile Folgendes stehen:
SELINUX=
Speichern und schließen Sie die Datei. * Starte das Droplet noch einmal neu. *
sudo reboot
Dann kehren Sie mit SSH zu Ihrem Droplet zurück, nachdem es wieder online ist.
SELinux Nginx Policy
Von hier aus möchten Sie als Benutzer "+ root" bleiben. Wenn Sie jetzt Ihre Domain besuchen, wird ein * 502 * -Fehler angezeigt. In unserem Fall blockiert SELinux den Socket von Nginx und den Zugriff auf das Home-Verzeichnis des Benutzers * diaspora *.
Sie können die Überwachungsprotokolle überprüfen mit:
grep denied /var/log/audit/audit.log
Sie sollten Nachrichten wie die folgenden sehen:
type=AVC msg=audit(1424394514.632:385): avc: denied { search } for pid=1114 comm="nginx" name="diaspora" dev="vda1" ino=783369 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:user_home_dir_t:s0 tclass=dir
type=AVC msg=audit(1424394514.632:386): avc: denied { write } for pid=1114 comm="nginx" name="diaspora.sock" dev="tmpfs" ino=21382 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:var_run_t:s0 tclass=sock_file
Installieren Sie die folgenden Tools, um das Problem zu beheben:
yum install policycoreutils-{python,devel} setroubleshoot-server
Wir durchsuchen die Datei "+ audit.log +" und lassen die Denied-Einträge in unserer SELinx-Richtlinie zu. Run:
grep nginx /var/log/audit/audit.log | audit2allow -M nginx_diaspora
Die generierte SELinux-Richtlinie wird in der Datei "+ nginx_diaspora.te " im " / home " -Verzeichnis Ihres Stammverzeichnisses gespeichert (Sie können Ihre SELinux-Richtlinien jedoch an jedem Ort organisieren). Die Binärdatei " nginx_diaspora.pp " sollte an den Befehl " semodule " übergeben werden, um die Richtlinie zu importieren. Öffnen Sie " nginx_diaspora.te +", um zu sehen, was SELinux jetzt erlaubt.
vim nginx_diaspora.te
Es sollte die folgenden Einträge enthalten. Wenn nicht, ersetzen Sie den Inhalt von "+ nginx_diaspora.te +" durch den folgenden.
module nginx_diaspora 1.0;
require {
type var_run_t;
type httpd_t;
type user_home_t;
type init_t;
class sock_file write;
class unix_stream_socket connectto;
class file { read open };
}
#============= httpd_t ==============
allow httpd_t init_t:unix_stream_socket connectto;
#!!!! This avc can be allowed using the boolean 'httpd_read_user_content'
allow httpd_t user_home_t:file { read open };
allow httpd_t var_run_t:sock_file write;
Viele der erlaubten Kontexte könnten wahrscheinlich eingegrenzt werden, aber dies ist ein geeigneter Ausgangspunkt. Dann importieren wir das Richtlinienmodul.
semodule -i nginx_diaspora.pp
Wenn Sie jetzt die Seite in Ihrem Browser aktualisieren, sollte die Willkommensseite der Diaspora erneut angezeigt werden. Herzlichen Glückwunsch zum Konfigurieren eines SELinux-gehärteten Diaspora-Pods unter CentOS 7!
Kurze SELinux-Fehlerbehebung
Gehen Sie folgendermaßen vor, wenn die Begrüßungsseite geladen wird, jedoch fehlerhafte Bildplatzhalter und keine tatsächlichen Bilder enthält:
-
Führen Sie den folgenden Befehl zu "+ grep " bis " audit.log +" aus und fügen Sie der Nginx-Richtlinie neue Denied-Einträge hinzu.
grep nginx /var/log/audit/audit.log | audit2allow -M nginx_diaspora
-
Laden Sie das Richtlinienmodul neu.
semodule -i nginx_diaspora.pp
Sie können diese Schritte einige Male wiederholen.
tail -f /var/log/messages
Hier ist ein Beispiel:
. . .
***** Plugin catchall (100. confidence) suggests **************************
If you believe that nginx should be allowed write access on the sock_file by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# grep nginx /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp
. . .
Fazit
Nachdem Sie Ihren Diaspora-Pod eingerichtet haben, können Sie Ihre Freunde und Familie einladen, sich mit ihm zu verbinden. Es fehlen zwar einige Funktionen in den großen kommerziellen, geschlossenen sozialen Netzwerken, aber einer der Vorteile der Diaspora besteht darin, dass Sie Ihre Daten besitzen.
Hier können Sie das Diaspora-Wiki für pod maintainers lesen und Ihren Pod in einer globalen Pod-Liste registrieren, damit andere von Ihrer Installation profitieren können.