GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So installieren Sie Mastodon Social Network mit Docker unter Ubuntu 18.04 LTS

Mastodon ist ein kostenloses, dezentralisiertes und quelloffenes soziales Netzwerk. Es wurde als Alternative zu Twitter entwickelt. Genau wie bei Twitter können sich die Leute gegenseitig folgen, Nachrichten, Bilder und Videos posten. Aber im Gegensatz zu Twitter gibt es keinen zentralen Speicher oder Autorität für die Inhalte.

Stattdessen operiert Mastodon auf Tausenden von verschiedenen Servern, auf denen jeweils verschiedene Mitglieder der Community laufen. Benutzer, die auf einem Server angemeldet sind, können sich problemlos mit Benutzern im anderen Netzwerk verbinden und einander über Instanzen hinweg folgen.

Jeder kann seine eigene Instanz eines Mastodon-Servers installieren. In diesem Tutorial erfahren Sie, wie Sie Ihre Mastodon-Instanz auf einem Server mit Ubuntu 18.04 mithilfe von Docker einrichten.

Voraussetzungen

  • Ein auf Ubuntu 18.04 basierender Server mit einem sudo-Benutzer ohne Rootberechtigung.

  • Stellen Sie sicher, dass Ihr System auf dem neuesten Stand ist.

    $ sudo apt update
    $ sudo apt upgrade
    
  • Mastodon sendet E-Mail-Benachrichtigungen an Benutzer. Eine Möglichkeit, damit es funktioniert, ist die Einrichtung eines eigenen Mailservers. Sie können dies auf demselben Server tun, auf dem Sie Mastodon installieren, oder auf einem anderen Server. Dies würde den Rahmen dieses Handbuchs sprengen.

    Wir empfehlen Ihnen, einen Transaktions-E-Mail-Dienst eines Drittanbieters wie Mailgun, Sendgrid, Amazon SES oder Sparkpost zu verwenden. Die Anweisungen in der Anleitung verwenden Mailgun als Ihren SMTP-Anbieter.

  • Stellen Sie sicher, dass Sie einen Domänennamen haben, der auf den Server verweist. Für dieses Tutorial verwenden wir example.com als Domain.

Schritt 1 - Installieren von Abhängigkeiten

Bevor wir Mastodon installieren, müssen wir sicherstellen, dass unser Server über bestimmte Software verfügt, die ordnungsgemäß installiert werden muss. Führen Sie die folgenden Befehle aus, um die Abhängigkeiten zu installieren.

$ sudo apt update
$ sudo apt install ca-certificates curl ufw apt-transport-https software-properties-common git -y

Ein Teil der oben genannten Software ist möglicherweise für Sie vorinstalliert.

Da wir Git installiert haben, sollten wir es konfigurieren, bevor wir fortfahren.

$ git config --global user.name "Your Name" 
$ git config --global user.email "[email protected]"

Schritt 2 - Firewall konfigurieren

In unserem vorherigen Schritt haben wir ufw (Uncomplicated Firewall) installiert . Bevor wir mit der Installation von Mastodon fortfahren können, müssen wir es konfigurieren.

Aktivieren Sie SSH und den gerade erstellten Port, damit wir nicht ausgesperrt werden.

$ sudo ufw allow OpenSSH

Aktivieren Sie die ufw-Firewall.

$ sudo ufw enable

Außerdem müssen wir http und https aktivieren, damit Mastodon funktioniert.

$ sudo ufw allow http
$ sudo ufw allow https

Überprüfen Sie den Status der Firewall.

$ sudo ufw status

Sie sollten eine Ausgabe wie die folgende sehen.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)             

Schritt 3 – Docker installieren

Fügen Sie Dockers GPG-Schlüssel zu Ihrem System hinzu.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Überprüfen Sie den Fingerabdruck des heruntergeladenen Schlüssels.

$ sudo apt-key fingerprint 0EBFCD88

Sie sollten eine Ausgabe wie die folgende sehen.

pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <[email protected]>
sub   rsa4096 2017-02-22 [S]

Fügen Sie das Docker-Repository hinzu.

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Aktualisieren Sie Ihre Paketdatenbank.

$ sudo apt update

Installieren Sie Docker-CE. CE ist die Community Edition von Docker.

$ sudo apt install docker-ce -y

Docker sollte jetzt installiert sein. Prüfen Sie, ob es läuft.

$ sudo systemctl status docker

Die Ausgabe sollte ungefähr so ​​aussehen.

? docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-10-22 18:26:29 UTC; 25min ago
     Docs: https://docs.docker.com
 Main PID: 3574 (dockerd)
    Tasks: 8
   CGroup: /system.slice/docker.service
   ??3574 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Drücken Sie q zum Beenden.

Fügen Sie Ihr eingeschränktes Linux-Benutzerkonto zur Docker-Gruppe hinzu, damit Sie Docker ohne sudo ausführen können.

sudo usermod -aG docker $USER

$USER Die Variable wählt den aktuell angemeldeten Benutzer aus und fügt ihn der Docker-Gruppe hinzu. Ersetzen Sie $USER mit dem tatsächlichen Benutzernamen, wenn Sie derzeit nicht mit diesem Benutzer angemeldet sind.

Wechseln Sie zu dem gerade hinzugefügten Benutzer. Auch wenn Sie bereits angemeldet waren, müssen Sie noch einmal dorthin wechseln, um die Berechtigungen neu zu laden.

$ su - ${USER}

Überprüfen Sie, ob alles einwandfrei läuft, indem Sie das integrierte "Hello World" ausführen Programm.

$ docker run hello-world

Sie sollten die folgende Ausgabe sehen, die Ihnen mitteilt, dass Docker installiert ist und ordnungsgemäß funktioniert.

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

Schritt 4 – Docker Compose installieren

Es ist möglich, diesen Schritt zu überspringen und fortzufahren, aber wenn Docker Compose installiert ist, wird die Ausführung von Mastodon viel einfacher, besonders wenn Sie es auf mehr als einem Server ausführen möchten.

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Zum Zeitpunkt der Erstellung dieses Tutorials ist 1.24.1 die aktuelle stabile Version von Docker Compose. Sie können auf der Github-Seite nach der neuesten Release-Version suchen.

Wenden Sie ausführbare Berechtigungen auf die Docker-Compose-Binärdatei an.

$ sudo chmod +x /usr/local/bin/docker-compose

Befehlsvervollständigung zu Docker Compose hinzufügen.

$ sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose

Überprüfen Sie, ob Ihre Installation erfolgreich war.

$ docker-compose --version

Es wird die folgende Ausgabe ausgeben.

docker-compose version 1.24.1, build 4667896b

Schritt 5 - Mastodon installieren

Klonen Sie das Repository von Mastodon auf Ihren Server.

$ git clone https://github.com/tootsuite/mastodon

Navigieren Sie zu dem Verzeichnis, in das wir gerade Dateien kopiert haben.

$ cd mastodon

Mastodon wird mit einer Beispielkonfigurationsdatei geliefert. Wir müssen es umbenennen, damit Mastodon funktioniert.

$ cp .env.production.sample .env.production

Wir müssen geheime Schlüssel für unsere Konfigurationsdatei generieren. Aber vorher müssen wir das Docker-Image erstellen.

$ docker-compose build

Nachdem das Image erfolgreich erstellt wurde, müssen Sie mehrere Schlüssel erstellen, die zum Konfigurieren von Mastodon erforderlich sind.

Generieren Sie SECRET_KEY_BASE zuerst.

$ SECRET_KEY_BASE=$(docker-compose run --rm web bundle exec rake secret)

Fügen Sie den obigen Schlüssel in die Konfigurationsdatei ein.

$ sed -i -e "s/SECRET_KEY_BASE=/&${SECRET_KEY_BASE}/" .env.production

Generieren Sie das OTP_SECRET und fügen Sie es ein in die Konfigurationsdatei.

$ OTP_SECRET=$(docker-compose run --rm web bundle exec rake secret)
$ sed -i -e "s/OTP_SECRET=/&${OTP_SECRET}/" .env.production

Generieren Sie das PAPERCLIP_SECRET und fügen Sie es ein in die Konfigurationsdatei.

$ PAPERCLIP_SECRET=$(docker-compose run --rm web bundle exec rake secret)
$ sed -i -e "s/PAPERCLIP_SECRET=/&${PAPERCLIP_SECRET}/" .env.production

Generieren Sie Werte für VAPID_PRIVATE_KEY und VAPID_PUBLIC_KEY .

$ docker-compose run --rm web bundle exec rake mastodon:webpush:generate_vapid_key

Öffnen Sie die .env.production Datei.

$ sudo nano ./.env.production

Suchen Sie nach VAPID_PRIVATE_KEY und VAPID_PUBLIC_KEY in der Datei und kopieren Sie die Ausgabe des vorherigen Befehls.

Suchen Sie die LOCAL_DOMAIN -Variable und ändern Sie ihren Wert von example.com an den Domainnamen, den Sie für Ihre Mastodon-Installation gewählt haben.

Geben Sie die Werte ein, die Sie von Ihrem SMTP-Anbieter erhalten haben.

SMTP_SERVER = smtp.mailgun.org
SMTP_PORT = 587
SMTP_LOGIN = username
SMTP_PASSWORD = password
SMTP_FROM_ADDRESS = [email protected]

Drücken Sie Strg + X und speichern Sie die Datei, wenn Sie fertig sind.

Sie müssen das Docker-Image erneut erstellen, um alle oben vorgenommenen Änderungen zu implementieren.

$ docker-compose build

Richten Sie die Datenbank ein.

$ docker-compose run --rm web rails db:migrate

Mastodon-Assets vorkompilieren.

$ docker-compose run --rm web rails assets:precompile

Führen Sie den folgenden Befehl aus, um den Container auszuführen.

$ docker-compose up -d

Schritt 6 – Nginx installieren und konfigurieren

Der nächste Schritt in unserem Leitfaden ist die Installation des Nginx-Servers, damit die Website von Mastodon funktioniert.

Führen Sie den folgenden Befehl aus, um den Nginx-Server zu installieren.

$ sudo apt install nginx -y

Nginx wird mit einer konfigurierten Standard-Site geliefert. Entferne das.

$ sudo rm /etc/nginx/sites-available/default

Entfernen Sie auch den symbolischen Link für die Standard-Site.

$ sudo rm /etc/nginx/sites-enabled/default

Erstellen Sie eine Nginx-Konfigurationsdatei für Mastodon.

$ sudo touch /etc/nginx/sites-available/mastodon

Erstellen Sie einen Symlink für Mastodons Konfiguration.

$ sudo ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon

Öffnen Sie die Konfiguration von Mastodon im Nano-Editor. (Sie können einen beliebigen Editor auswählen)

$ sudo nano /etc/nginx/sites-available/mastodon

Kopieren Sie den folgenden Text und fügen Sie ihn ein.

map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

server {
  listen 80;
  listen [::]:80;
  server_name example.com;
  root /home/user/mastodon/public;
  # Useful for Let's Encrypt
  location /.well-known/acme-challenge/ { allow all; }
  location / { return 301 https://$host$request_uri; }
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name example.com;

  ssl_protocols TLSv1.2;
  ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;

  ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

  keepalive_timeout    70;
  sendfile             on;
  client_max_body_size 80m;

  root /home/user/mastodon/public;

  gzip on;
  gzip_disable "msie6";
  gzip_vary on;
  gzip_proxied any;
  gzip_comp_level 6;
  gzip_buffers 16 8k;
  gzip_http_version 1.1;
  gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

  add_header Strict-Transport-Security "max-age=31536000";

  location / {
    try_files $uri @proxy;
  }

  location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) {
    add_header Cache-Control "public, max-age=31536000, immutable";
    try_files $uri @proxy;
  }
  
  location /sw.js {
    add_header Cache-Control "public, max-age=0";
    try_files $uri @proxy;
  }

  location @proxy {
    proxy_set_header Host $host;
    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 Proxy "";
    proxy_pass_header Server;

    proxy_pass http://127.0.0.1:3000;
    proxy_buffering off;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    tcp_nodelay on;
  }

  location /api/v1/streaming {
    proxy_set_header Host $host;
    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 Proxy "";

    proxy_pass http://127.0.0.1:4000;
    proxy_buffering off;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    tcp_nodelay on;
  }

  error_page 500 501 502 503 504 /500.html;
}

Die obige Konfiguration geht davon aus, dass Sie Let’s encrypt als Ihren SSL-Anbieter verwenden. Wenn Sie einen anderen SSL-Dienst verwenden, müssen Sie den Speicherort der Schlüssel bearbeiten und den nächsten Abschnitt des Tutorials überspringen.

Schritt 7 – Let's Encrypt installieren und konfigurieren

Stellen Sie sicher, dass Nginx gestoppt ist.

$ sudo systemctl stop nginx

Certbot-Repository hinzufügen.

$ sudo add-apt-repository ppa:certbot/certbot

Systempakete aktualisieren.

$ sudo apt update

Installieren Sie das Certbot-Tool.

$ sudo apt install certbot

Sie müssen das Zertifikat zweimal erstellen – einmal mit der TLS-SNI-Methode und das zweite Mal mit der Webroot-Methode.

sudo certbot certonly --standalone -d example.com

Erstellen Sie nun das Zertifikat mit der Webroot-Methode. Dazu muss Nginx ausgeführt werden.

sudo systemctl start nginx
sudo certbot certonly --webroot -d example.com -w /home/user/mastodon/public/

Das Tool fragt Sie, ob Sie das Zertifikat behalten oder erneuern möchten. Wählen Sie die Option zum Erneuern.

Automatische Erneuerung von SSL-Zertifikaten einrichten

Let’s Encrypt Zertifikate haben eine Gültigkeit von 90 Tagen. Danach müssen Sie sie erneut erneuern. Dafür können Sie einen Cron-Job erstellen, der dies automatisch für Sie erledigt.

Erstellen Sie einen Cronjob.

$ sudo nano /etc/cron.daily/letsencrypt-renew

Kopieren Sie Folgendes und fügen Sie es in die Datei ein.

#!/usr/bin/env bash
certbot renew
systemctl reload nginx

Speichern und beenden Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Machen Sie das Skript ausführbar und starten Sie den Cron-Daemon neu, damit unser Skript täglich ausgeführt wird.

$ sudo chmod +x /etc/cron.daily/letsencrypt-renew
$ sudo systemctl restart cron

Schritt 8 – Erstellen Sie Ihren Mastodon-Benutzer

Besuchen Sie Ihre Mastodon-Website in einem Browser. Sie sollten den folgenden Bildschirm sehen.

Geben Sie Ihren gewünschten Benutzernamen, Ihre E-Mail-Adresse und Ihr Passwort ein, um ein neues Konto auf Ihrer Mastodon-Instanz zu erstellen. Ihr vollständiger Benutzername, den Sie benötigen, um sich mit Benutzern anderer Mastodon-Server zu verbinden, lautet howtoforge@example.com.

Mastodon sendet Ihnen eine Bestätigungsmail, um die Anmeldung zu bestätigen.

Sie können die Anmeldung auch manuell bestätigen. Dazu müssen Sie eine SSH-Verbindung zu Ihrer Docker-Instanz herstellen. Alle aktuellen Docker-Instanzen auflisten.

$ docker ps

Sie werden eine Ausgabe wie unten sehen.

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                  PORTS                      NAMES
32f2c4cd2598        tootsuite/mastodon    "/tini -- bash -c 'r…"   16 hours ago        Up 16 hours (healthy)   127.0.0.1:3000->3000/tcp   mastodon_web_1
76beca2b858d        tootsuite/mastodon    "/tini -- node ./str…"   16 hours ago        Up 16 hours (healthy)   127.0.0.1:4000->4000/tcp   mastodon_streaming_1
08f7a42b75ac        tootsuite/mastodon    "/tini -- bundle exe…"   16 hours ago        Up 16 hours                                        mastodon_sidekiq_1
bacaa8c09a85        redis:5.0-alpine      "docker-entrypoint.s…"   17 hours ago        Up 17 hours (healthy)                              mastodon_redis_1
62e9b2175a53        postgres:9.6-alpine   "docker-entrypoint.s…"   17 hours ago        Up 17 hours (healthy)                              mastodon_db_1

Um die erforderlichen Änderungen vorzunehmen, müssen wir auf den Streaming-Container zugreifen. SSH in mastodon_streaming_1 Behälter.

$ docker exec -it mastodon_streaming_1 /bin/bash

Dadurch wird eine Bash-Shell in Ihrem Container gestartet.

Führen Sie den folgenden Befehl aus, um Ihren neu erstellten Benutzernamen zu genehmigen.

[email protected]:~$ RAILS_ENV=production bin/tootctl accounts modify howtoforge --confirm

Führen Sie den folgenden Befehl aus, um Ihr neu erstelltes Konto zum Administrator zu machen.

[email protected]:~$ RAILS_ENV=production bin/tootctl accounts modify howtoforge --role admin

Verlassen Sie den Container.

[email protected]:~$ exit

Melden Sie sich mit Ihrem Benutzernamen und Passwort bei Ihrer Instanz an und Sie werden mit dem folgenden Bildschirm begrüßt.

Klicken Sie auf Los geht's und Sie werden mit den folgenden Seiten fortfahren, die Sie über einige Grundlagen der Funktionsweise von Mastodon informieren werden.

Klicken Sie auf Tutorial beenden mit der Homepage Ihres Mastodons begrüßt zu werden, wo Sie nach Herzenslust mit dem Posten beginnen können.

Über das Menü Einstellungen können Sie auf die Einstellungen und den Verwaltungsbereich zugreifen.

Schritt 9 - Wartung

Um die Leistung und Protokolle Ihrer Mastodon-Instanz anzuzeigen, gehen Sie zu https://example.com/sidekiq/

Hier können Sie eine Liste verschiedener Prozesse und geplanter Aufgaben im Zusammenhang mit Ihrer Mastodon-Instanz anzeigen. Sie können auch im Abschnitt Dead or Retries nach fehlgeschlagenen Aufgaben suchen. Es wird Ihnen auch die Speichernutzung Ihrer Instanz mitteilen.

Sie können den Zustand der Datenbank Ihrer Instanz unter https://example.com/pghero/

überprüfen

Sie können Ihre Datenbank warten, SQL-Abfragen ausführen und ungenutzte Indizes entfernen.

Wenn Ihre Website aus irgendeinem Grund überhaupt nicht geladen wird, können Sie die von Docker generierten Protokolle überprüfen.

Schließen Sie dafür zuerst Ihre Container.

$ docker-compose down

Führen Sie Docker compose in einem angehängten Zustand aus, damit Sie die von jedem Container generierten Protokolle anzeigen können.

$ docker-compose up

Schritt 10 Upgrade Ihres Mastodon

Wechseln Sie in Ihr Mastodon-Verzeichnis.

$ cd /home/user/mastdon

Laden Sie Updates aus dem Repository herunter

$ git fetch

Wenn Sie Ihre docker-compose.yml geändert haben Datei aus irgendeinem Grund, müssen Sie zuerst den folgenden Befehl ausführen.

$ git status

Dies wird Ihnen alle Änderungen mitteilen, die daran vorgenommen wurden. Wenn die Datei geändert wird, speichern Sie Ihre Änderungen zuerst.

$ git stash

Testen Sie die neueste Mastodon-Version. Überprüfen Sie die neueste Version auf der Releases-Seite.

$ git checkout <version/tag>

Wenn Sie zuvor git stash ausgeführt haben, führen Sie den folgenden Befehl aus, um Ihre Änderungen an docker-compose.yml wiederherzustellen Datei.

$ git stash pop

Erstellen Sie das Docker-Image.

$ docker-compose build

Führen Sie Datenbankmigrationen durch.

$ docker-compose run --rm web rails db:migrate

Mastodon-Assets vorkompilieren.

$ docker-compose run --rm web rails assets:precompile

Führen Sie den folgenden Befehl aus, um den Container auszuführen.

$ docker-compose up -d

Das ist alles für dieses Tutorial. Um mehr über Mastodon zu erfahren, folgen Sie deren Dokumenten.


Ubuntu
  1. So installieren Sie Docker unter Ubuntu 18.04

  2. So installieren Sie Docker unter Ubuntu 16.04

  3. So installieren Sie R unter Ubuntu 18.04 LTS

  4. So installieren Sie R unter Ubuntu 20.04 LTS

  5. So installieren Sie Docker unter Ubuntu 20.04 LTS

So installieren Sie die Pleroma Social Network Platform unter Ubuntu 20.04

So installieren Sie Docker unter Ubuntu 16.04 LTS

So installieren Sie WordPress mit Docker unter Ubuntu 16.04 LTS

So installieren Sie Docker unter Ubuntu 18.04 LTS

So installieren Sie Docker unter Ubuntu 20.04 LTS

So installieren Sie Wiki.js unter Ubuntu 20.04 LTS