Installation von Mastodon Social Network auf Ubuntu 22.04

Mastodon ist eine kostenlose und quelloffene Software zum Betreiben selbst gehosteter sozialer Netzwerkdienste und eine Twitter Alternative. Sie bietet Microblogging-Funktionen, mit denen du anderen Nutzern folgen und Nachrichten und Bilder mit Mastodon posten kannst. Die Platform ist in Ruby und JavaScript geschrieben und unterstützt Audio-, Video- und Bildbeiträge, Zugangsbeschreibungen, Umfragen, Inhaltswarnungen, animierte Avatare, benutzerdefinierte Emojis und mehr. Mastodon bietet eine Anwendung für verschiedene Plattformen wie Android und iOS.

In diesem Tutorial zeigen wir dir, wie du Mastodon auf Ubuntu 22.04 installierst. Für ältere Ubuntu Versionen wie Ubuntu 18.04 findest Du eine Anleitung hier.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 22.04 läuft.
  • Ein Root-Passwort ist auf deinem Server eingerichtet.
  • Ein gültiger Domainname ist auf die IP-Adresse deines Servers verweist.

Erste Schritte

Zuerst solltest du alle Systempakete auf die neueste Version aktualisieren. Das kannst du tun, indem du den folgenden Befehl ausführst:

apt-get update -y
apt-get upgrade -y

Nachdem du dein System aktualisiert hast, musst du einige Abhängigkeiten installieren, die Mastodon benötigt. Du kannst sie alle mit dem folgenden Befehl installieren:

apt-get install software-properties-common dirmngr apt-transport-https ca-certificates redis-server curl gcc g++ make imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core libprotobuf-dev protobuf-compiler pkg-config autoconf bison build-essential libssl-dev libyaml-dev libreadline-dev libidn11-dev libicu-dev libjemalloc-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev -y

Sobald alle Abhängigkeiten installiert sind, kannst du mit dem nächsten Schritt fortfahren.

Node.js installieren

Für Mastodon muss Node.js auf deinem System installiert sein. Um Node.js zu installieren, füge das Node.js-Repository mit folgendem Befehl zu deinem Server hinzu:

curl -sL https://deb.nodesource.com/setup_16.x | bash -

Sobald das Repository hinzugefügt wurde, installiere Node.js Version 16 mit dem folgenden Befehl:

apt-get install nodejs -y

Als nächstes lädst du den GPG-Schlüssel von Yarn herunter, fügst ihn hinzu und aktivierst das Repository mit dem folgenden Befehl:

curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

Sobald es hinzugefügt ist, aktualisiere das Repository und installiere Yarn mit den folgenden Befehlen auf unserem Node:

apt-get update -y
apt-get install yarn -y

Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

PostgreSQL installieren und konfigurieren

Mastodon verwendet PostgreSQL als Datenbank-Backend. Du kannst die neueste Version von PostgreSQL mit dem folgenden Befehl installieren:

apt-get install postgresql postgresql-contrib -y

Nach der Installation meldest du dich mit folgendem Befehl bei PostgreSQL an:

su - postgres
postgres@debian:~$ psql

Als Nächstes erstellst du einen Benutzer für Mastodon mit dem folgenden Befehl:

postgres=# CREATE USER mastodon CREATEDB;

Verlasse die PostgreSQL-Shell mit folgendem Befehl:

postgres=#exit

Ruby installieren

Mastodon verwendet Ruby on Rails für das Backend. Zuerst musst du einen neuen Systembenutzer anlegen, um den Mastodon-Server zu betreiben.

Du kannst ihn mit dem folgenden Befehl erstellen:

adduser --disabled-login --gecos 'Mastodon Server' mastodon

Sobald er erstellt ist, melde dich mit folgendem Befehl beim Benutzer mastodon an:

su - mastodon

Als Nächstes klonst du das rbenv-Repository mit dem folgenden Befehl:

git clone https://github.com/rbenv/rbenv.git ~/.rbenv

Als Nächstes richtest du rbenv und ruby-build mit den folgenden Befehlen ein:

cd ~/.rbenv && src/configure && make -C src
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec bash
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

Wenn du damit fertig bist, installiere die neueste Version von Ruby mit dem folgenden Befehl:

RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.0.3

Nach der Installation solltest du die folgende Ausgabe erhalten:

Downloading ruby-3.0.3.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.3.tar.gz
Installing ruby-3.0.3...

Als Nächstes stellst du Ruby mit dem folgenden Befehl global zur Verfügung:

rbenv global 3.0.3

Als Nächstes aktualisierst du den Gem und installierst Bundler mit dem folgenden Befehl:

gem update --system
gem install bundler --no-document

Wenn du damit fertig bist, kannst du den Ruby mit dem folgenden Befehl überprüfen:

ruby --version

ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x86_64-linux]

Mastodon konfigurieren

Melde dich zunächst als Mastodon-Benutzer an und lade das Mastodon-Git-Repository mit dem folgenden Befehl herunter:

su - mastodon
git clone https://github.com/tootsuite/mastodon.git ~/live
cd ~/live

Als Nächstes checkst du den neuesten Zweig mit dem folgenden Befehl aus:

git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)

Du solltest die folgende Ausgabe erhalten:

Note: switching to 'v3.5.3'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c 

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at fbcbf7898 Bump version to 3.5.3 (#18530)

Als Nächstes installierst du alle Abhängigkeiten mit dem folgenden Befehl:

bundle config deployment 'true'
bundle config without 'development test'
bundle install -j$(getconf _NPROCESSORS_ONLN)
yarn install --pure-lockfile

Richte nun Mastodon mit dem folgenden Befehl ein:

RAILS_ENV=production bundle exec rake mastodon:setup

Während des Installationsprozesses werden dir mehrere Fragen gestellt. Beantworte alle Fragen wie unten gezeigt:

Your instance is identified by its domain name. Changing it afterward will break things.
Domain name: mastodon.example.com

Single user mode disables registrations and redirects the landing page to your public profile.
Do you want to enable single user mode? No

Are you using Docker to run Mastodon? no

PostgreSQL host: /var/run/postgresql
PostgreSQL port: 5432
Name of PostgreSQL database: mastodon_production
Name of PostgreSQL user: mastodon
Password of PostgreSQL user: 
Database configuration works! ????

Redis host: localhost
Redis port: 6379
Redis password: 
Redis configuration works! ????

Do you want to store uploaded files on the cloud? No

Do you want to send e-mails from localhost? yes
E-mail address to send e-mails "from": Mastodon <notifications@mastodon.example.com>
Send a test e-mail with this configuration right now? no

This configuration will be written to .env.production
Save configuration? Yes

Now that configuration is saved, the database schema must be loaded.
If the database already exists, this will erase its contents.
Prepare the database now? Yes

All done! You can now power on the Mastodon server ????

Do you want to create an admin user straight away? Yes
Username: admin
E-mail: test@mastodon.linuxbuz.com
You can login with the password: 159e473bbfe846eac169eafac880b3f0
You can change your password once you login.

Wenn du damit fertig bist, beende den Mastodon-Benutzer mit dem folgenden Befehl:

exit

Nginx als Reverse Proxy für Mastodon konfigurieren

Als Nächstes musst du Nginx und Certbot auf deinem System installieren. Standardmäßig ist die neueste Version von Certbot nicht im Standard-Repository von Ubuntu 22.04 verfügbar. Daher musst du das Certbot-Repository zu deinem System hinzufügen.

Du kannst es mit dem folgenden Befehl hinzufügen:

add-apt-repository ppa:certbot/certbot

Als Nächstes aktualisierst du das Repository und installierst Certbot mit Nginx, indem du den folgenden Befehl ausführst:

apt-get update -y
apt-get install nginx python-certbot-nginx -y

Sobald beide Pakete installiert sind, kopierst du die Nginx-Konfigurationsdatei aus dem Mastodon-Verzeichnis mit folgendem Befehl nach Nginx:

cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon.conf

Als Nächstes aktivierst du die Konfigurationsdatei des virtuellen Mastodon-Hosts mit folgendem Befehl:

ln -s /etc/nginx/sites-available/mastodon.conf /etc/nginx/sites-enabled/

Standardmäßig ist die Mastodon-Konfigurationsdatei für virtuelle Hosts mit der Domain example.com konfiguriert. Daher musst du die Domain example.com in der Datei mastodon.conf durch deinen Domainnamen ersetzen . Du kannst sie mit dem folgenden Befehl ersetzen:

sed -i 's/example.com/mastodon.example.com/g' /etc/nginx/sites-enabled/mastodon.conf

Starte anschließend den Nginx-Dienst neu, um die Konfiguration zu übernehmen:

systemctl restart nginx

Als Nächstes lädst du das kostenlose SSL-Zertifikat von Let’s Encrypt herunter und konfigurierst Nginx für die Verwendung dieses Zertifikats, indem du den Befehl certbot ausführst:

certbot --nginx -d mastodon.example.com

Dadurch wird ein kostenloses Let’s Encrypt SSL-Zertifikat heruntergeladen und Nginx für deine Domain mastodon.example.com konfiguriert.

Systemd-Dienst für Mastodon erstellen

Nginx ist nun installiert und so konfiguriert, dass es Mastodon bedient. Als Nächstes musst du die systemd-Dienstdatei für Mastodon konfigurieren. Dazu kopierst du die systemd-Dienstvorlagen aus dem Mastodon-Verzeichnis:

cp /home/mastodon/live/dist/mastodon-web.service /etc/systemd/system/
cp /home/mastodon/live/dist/mastodon-sidekiq.service /etc/systemd/system/
cp /home/mastodon/live/dist/mastodon-streaming.service /etc/systemd/system/

Als Nächstes startest du alle Dienste und aktivierst sie mit dem folgenden Befehl, damit sie nach einem Neustart starten:

systemctl start mastodon-web
systemctl start mastodon-sidekiq
systemctl start mastodon-streaming
systemctl enable mastodon-web
systemctl enable mastodon-sidekiq
systemctl enable mastodon-streaming

Als Nächstes überprüfst du den Status des Mastodon-Dienstes mit dem folgenden Befehl:

systemctl status mastodon-web mastodon-sidekiq mastodon-streaming

Du erhältst die folgende Ausgabe:

? mastodon-web.service - mastodon-web
     Loaded: loaded (/etc/systemd/system/mastodon-web.service; disabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-10-18 15:47:13 UTC; 56s ago
   Main PID: 78185 (bundle)
      Tasks: 29 (limit: 2242)
     Memory: 296.7M
        CPU: 10.554s
     CGroup: /system.slice/mastodon-web.service
             ??78185 "puma 5.6.4 (tcp://127.0.0.1:3000) [live]" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "">
             ??78224 "puma: cluster worker 0: 78185 [live]" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" >
             ??78228 "puma: cluster worker 1: 78185 [live]" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" >

Oct 18 15:47:14 ubuntu2204 bundle[78185]: [78185] *  Max threads: 5
Oct 18 15:47:14 ubuntu2204 bundle[78185]: [78185] *  Environment: production
Oct 18 15:47:14 ubuntu2204 bundle[78185]: [78185] *   Master PID: 78185
Oct 18 15:47:14 ubuntu2204 bundle[78185]: [78185] *      Workers: 2
Oct 18 15:47:14 ubuntu2204 bundle[78185]: [78185] *     Restarts: (?) hot (?) phased
Oct 18 15:47:14 ubuntu2204 bundle[78185]: [78185] * Preloading application
Oct 18 15:47:27 ubuntu2204 bundle[78185]: [78185] * Listening on http://127.0.0.1:3000
Oct 18 15:47:27 ubuntu2204 bundle[78185]: [78185] Use Ctrl-C to stop
Oct 18 15:47:27 ubuntu2204 bundle[78185]: [78185] - Worker 0 (PID: 78224) booted in 0.04s, phase: 0
Oct 18 15:47:27 ubuntu2204 bundle[78185]: [78185] - Worker 1 (PID: 78228) booted in 0.02s, phase: 0

? mastodon-sidekiq.service - mastodon-sidekiq
     Loaded: loaded (/etc/systemd/system/mastodon-sidekiq.service; disabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-10-18 15:47:20 UTC; 48s ago
   Main PID: 78206 (bundle)
      Tasks: 32 (limit: 2242)
     Memory: 242.5M
        CPU: 10.113s
     CGroup: /system.slice/mastodon-sidekiq.service
             ??78206 "sidekiq 6.4.2 live [0 of 25 busy]" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" >

Oct 18 15:47:35 ubuntu2204 bundle[78206]: 2022-10-18T15:47:35.747Z pid=78206 tid=1mle INFO: Scheduling accounts_statuses_cleanup_scheduler {">
Oct 18 15:47:35 ubuntu2204 bundle[78206]: 2022-10-18T15:47:35.748Z pid=78206 tid=1mle INFO: Schedules Loaded

Zugriff auf Mastodon Web Interface

Öffne nun deinen Webbrowser und gib die URL https://mastodon.example.com ein. Du wirst auf die folgende Seite von Mastodon online weitergeleitet:

Mastodon - Unser mastodon node

Gib nun deine Admin-E-Mail und dein Passwort ein, die du zuvor erstellt hast, und klicke auf die Schaltfläche Anmelden. Du solltest die folgende Seite sehen:

Mastodon Version 4 - Erste Schritte

Klicke jetzt auf die Schaltfläche LET’S GO! Du solltest die folgende Seite sehen:

Startseite - Lokal - Föderiert - Instances

Klicke jetzt auf die Schaltfläche Weiter. Du solltest die folgende Seite sehen:

Mastodon Merkmale needs

Klicke jetzt auf die Schaltfläche TUTORIAL BEENDEN! Auf der folgenden Seite solltest du das Mastodon-Dashboard sehen:

Mastodon Dashboard

Fazit

Glückwunsch! Du hast Mastodon erfolgreich auf einem Ubuntu 22.04 Server installiert (setup mastodon server) und konfiguriert und kannst mit dieser Anleitung Mastodon server hosten. Jetzt kannst du mit Mastodon ganz einfach dein eigenes soziales Mediennetzwerk erstellen. Wenn du noch Fragen hast, kannst du dich gerne an mich wenden.

Das könnte dich auch interessieren …