Die Diaspora ist ein datenschutzbewusstes Open-Source-Netzwerk. In diesem Tutorial erfahren Sie, wie Sie einen Diaspora-Pod unter Debian 9 einrichten und konfigurieren.
Voraussetzungen
- Eine Debian 9-Serverinstanz.
- Bei einem Pod mit durchschnittlicher Größe sollte Ihr Server mindestens 512 MB RAM (+ 1 GB Swap Space) und eine anständige Multi-Core-CPU haben.
- Ein Sudo- Benutzer.
Installieren Sie die erforderlichen Pakete
Aktualisieren Sie zunächst das System und installieren Sie die erforderlichen Pakete.
sudo apt-get update
sudo apt-get install build-essential libssl-dev libcurl4-openssl-dev libxml2-dev libxslt-dev imagemagick ghostscript curl libmagickwand-dev git libpq-dev redis-server nodejs
Installieren Sie PostgreSQL
Diaspora unterstützt MySQL, MariaDB und PostgreSQL. In diesem Handbuch verwenden wir PostgreSQL.
Installieren Sie PostgreSQL.
sudo apt-get install PostgreSQL-server
Stellen Sie mit dem postgresBenutzer eine Verbindung zu PostgreSQL her .
sudo -u postgres psql
Erstellen Sie einen Diaspora-Benutzer.
CREATE USER diaspora WITH CREATEDB PASSWORD '<password>';
Fügen Sie einen dedizierten Diaspora-Benutzer hinzu
Dies ist das Benutzerkonto, mit dem Diaspora ausgeführt wird.
sudo adduser --disabled-login diaspora
Wechseln Sie zum neuen Benutzer.
sudo su - diaspora
Installieren Sie Ruby
Es gibt verschiedene Möglichkeiten, Ruby zu installieren. Wir werden verwenden rbenv, um die Umgebung und die Versionen zu verwalten.
Zunächst müssen Sie die Pakete installieren, die Ruby benötigt.
sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
Installieren rbenv.
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
Stellen Sie die Verbindung erneut her, um den Pfad neu zu laden.
exit
sudo su - diaspora
Installieren Sie das ruby-buildPlugin rbenvzum Kompilieren von Ruby:
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
Installieren Sie Ruby.
rbenv install 2.4.3
rbenv global 2.4.3
Installieren Sie Exim4
Wir werden Exim4 als SMTP-Relay verwenden, um E-Mails an Benutzer zu senden.
Installieren und konfigurieren Sie das Paket.
sudo apt-get install exim4
sudo dpkg-reconfigure exim4-config
Klonen Sie den Quellcode für Diaspora.
cd ~
git clone -b master https://github.com/diaspora/diaspora.git
cd diaspora
Kopieren Sie die Beispieldatenbankkonfigurationsdatei an den von der Diaspora benötigten Speicherort.
cp config/database.yml.example config/database.yml
cp config/diaspora.yml.example config/diaspora.yml
Öffnen Sie die Datenbankkonfigurationsdatei in einem Texteditor, um einige Einstellungen zu bearbeiten.
nano config/database.yml
Ändern Sie die Datenbankeinstellungen so, dass sie dem zuvor erstellten PostgreSQL-Benutzer und -Kennwort entsprechen.
postgresql: &postgresql
adapter: postgresql
host: localhost
port: 5432
username: diaspora
password: __password__
encoding: unicode
Öffnen Sie die Diaspora-Konfigurationsdatei.
nano config/diaspora.yml
Sie müssen einige Einstellungen in dieser Datei aktualisieren, damit die Diaspora ordnungsgemäß funktioniert.
url: Legen Sie hier die öffentlich zugängliche URL für Ihren Pod fest.
certificate_authorities: Entfernen Sie das #Kabel, um es zu entfernen .
rails_environment: Sie müssen dies auf einstellen production.
require_ssl: Stellen Sie dies auf ein false, um eine Umleitung von http://nach zu verhindern https://.
Installieren Sie die erforderlichen Edelsteine
Installieren Sie Bundle, den Ruby-Bibliotheksmanager.
gem install bundler
script/configure_bundler
Hinweis: Wenn Sie Fehler in Bezug auf Ihre Ruby-Version haben, bearbeiten Sie diese .ruby-versionund fügen Sie sie ein (hier 2.4.3anstelle von 2.4).
Datenbank einrichten
Erstellen und konfigurieren Sie die Datenbank.
RAILS_ENV=production bin/rake db:create db:migrate
Kompilieren Sie die Assets vor
Dieser Rechenbefehl kompiliert die Assets vor.
RAILS_ENV=production bin/rake assets:precompile
Diaspora systemd Dienstleistungen
Es gibt viele Möglichkeiten, die Diaspora als Dienstleistung zu verwalten. In diesem Tutorial verwenden wir Systemd.
Erstellen Sie zunächst die folgenden Dateien.
- systemd
targetDatei:touch /etc/systemd/system/diaspora.target
- systemd
webservice file:touch /etc/systemd/system/diaspora-web.service
- systemd
sidekiqservice file:touch /etc/systemd/system/diaspora-sidekiq.service
Fügen Sie für jede zuvor erstellte Datei den folgenden Konfigurationstext ein.
target Datei:
[Unit]
Description=Diaspora social network
Wants=postgresql.service
Wants=redis-server.service
After=redis-server.service
After=postgresql.service
[Install]
WantedBy=multi-user.target
web Servicedatei:
[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
sidekiq Servicedatei:
[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
Aktivieren Sie die Startdienste.
sudo systemctl enable diaspora.target diaspora-sidekiq.service diaspora-web.service
Starten Sie die Dienste neu.
sudo systemctl restart diaspora.target
Stellen Sie sicher, dass sie ordnungsgemäß ausgeführt werden.
sudo systemctl status diaspora-web.service
sudo systemctl status diaspora-sidekiq.service
Nginx Reverse Proxy
Wir werden Nginx als Reverse-Proxy verwenden, um statische Ressourcen bereitzustellen.
Wir werden acme.sh verwenden , um ein Let's Encrypt-Zertifikat zu erhalten.
Laden Sie den acme.shQuellcode herunter .
git clone https://github.com/Neilpang/acme.sh.git
Generieren Sie ein Let's Encrypt-Zertifikat.
./.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
Installieren Sie Nginx.
sudo apt-get install nginx
Erstellen Sie eine neue Nginx-Konfigurationsdatei für unseren Diaspora-Pod.
nano /etc/nginx/conf.d/diaspora.conf
Füllen Sie die Datei mit dem folgenden Inhalt.
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: Wechseln Sie example.comzu Ihrem eigenen registrierten Domainnamen.
Überprüfen Sie nach Abschluss aller Änderungen die Konfigurationsdatei auf Fehler.
sudo nginx -t
Starten Sie Nginx neu, um die Änderungen zu übernehmen.
sudo systemctl restart nginx
Wenn Sie jetzt den Domainnamen Ihres Diaspora-Pods in Ihrem Browser besuchen (Beispiel https://example.com:), gelangen Sie zur Willkommensseite der Diaspora.
Erstellen Sie einen Diaspora-Benutzer
Klicken Sie auf den Link Start by creating an account.und geben Sie die Details ein, um einen neuen Diaspora-Benutzer zu erstellen. Anschließend können Sie die Startseite Ihres Benutzers anzeigen und das soziale Netzwerk der Diaspora verwenden.
Nachdem Sie ein Konto erstellt haben, geben Sie ihm Administratorrechte:
Role.add_admin User.where(username: "your_username").first.person
Sie haben jetzt Zugriff auf das Admin-Dashboard.
https://example.com/admins/dashboard
Sidekiq
Sidekiq, das die Verarbeitung von Hintergrundjobs übernimmt, verfügt über eine Webschnittstelle unter https://example.com/sidekiq. Die Pod-Statistiken finden Sie unter https://example.com/statistics.
Logrotate
Wir werden logrotateDiaspora-Protokolle verwalten.
Erstellen Sie eine neue logrotateDatei für die Diaspora.
nano /etc/logrotate/diaspora
Fügen Sie dann die folgenden Zeilen hinzu.
/home/diaspora/diaspora/log/*.log {
notifempty
copytruncate
missingok
compress
weekly
rotate 52
}
Dadurch werden die Protokolle wöchentlich gedreht, komprimiert und 52 Wochen lang aufbewahrt.
Aktualisieren Sie die Diaspora
Befolgen Sie diese Schritte, wenn die Diaspora aktualisiert werden soll.
Aktualisieren Sie zunächst das System.
sudo apt-get update
sudo apt-get dist-upgrade
Aktualisieren Sie den Diaspora-Quellcode mit git.
su - diaspora
cd diaspora
git pull
Aktualisiere die Edelsteine.
gem install bundler
bin/bundle --full-index
Migrieren Sie die Datenbank und kompilieren Sie die Assets neu.
RAILS_ENV=production bin/rake db:migrate
RAILS_ENV=production bin/rake assets:precompile
Starten Sie schließlich die Diaspora neu.
systemctl restart diaspora.target