Eigener Mastodon Server mit Docker Compose installieren

Mastodon

Mit dem Kauf Twitters durch Elon Musk werden schlagartig Alternative zu Twitter interessant. Eine davon ist Mastodon eine dezentrale Open Source Alternative, die Teil des Fediverse ist. Die Dezentralität beruht darauf, dass eigentlich jeder einen Mastodon Server betreiben kann.

Dieses Tutorial beschreibt alle notwendigen Schritte um einen eigenen Mastodon Server mit Docker Compose einzurichten.

Voraussetzungen

Diese Tutorial setzt voraus, dass du auf deiner Distribution bereits einige Pakete installiert hast:

  • Docker Compose
  • Git

Vorbereitungen

Zuerst klonen wir uns das Mastodon Repository an einen entsprechenden Ort, den ihr frei wählen könnt:

cd /opt/
git clone https://github.com/mastodon/mastodon.git
cd /opt/mastodon

Bestimmte Version nutzen

Wenn du eine bestimmte Mastodon Version nutzen möchtest solltest du diese entsprechend auschecken:

git checkout v4.0.2

Konfiguration

Nun müssen wir unseren Mastodon Server konfigurieren bzw. einrichten. Dazu kopieren wir uns die Konfigurationsvorlage:

cp .env.production.sample .env.production

Wir laden alle notwendigen Images herunter:

docker-compose pull

Nun führen wir den Setup Assistent von Mastodon aus:

docker-compose run --rm web bundle exec rake mastodon:setup

Domainname

Als ersten musst du den Domainnamen deiner Mastodon Instanz eintragen. Diese Einstellung kann später nicht einfach angepasst werden, deswegen entscheide dich hier gut.

In meinem Fall wäre das:

social.nubecula.org

Single User Mode

Nun musst du dich entscheiden ob du deinen Mastodon Server allein nutzen willst oder du auch andere Benutzer zulassen willst.

Docker

Nun wirst du gefragt ob du Docker benutzt. Das wäre in diesem Fall natürlich “ja”.

PostgreSQL

Nun geht an die Konfiguration der PostgreSQL Datenbank.

Host

Hier kannst du den Host eines bestehenden PostgreSQL Servers eintragen oder einfach die Vorauswahl “db” mit Enter bestätigen um einen neuen anzulegen.

Port

Hier wird entsprechend der Port eingetragen. Will man den nicht ändern die Vorauswahl “5432” einfach mit Enter bestätigen.

Datenbankname

Einen Namen wählen oder einfach mit Enter bestätigen.

Benutzer

Einen Namen wählen oder einfach mit Enter bestätigen.

Passwort

Du solltest hier ein sicheres Passwort für die Datenbank vergeben! Ich generiere mir das selbst mit OpenSSL. Gebt dafür in einer anderen Konsole folgenden Befehl ein und kopiert das Passwort entsprechend:

openssl rand -base64 32

Redis

Nun müssen wir den Redis Server konfigurieren.

Host

Hier kannst du den Host deines Redis Servers angeben oder einfach einen Neuen erstellen durch drücken von Enter.

Port

Gleiches gilt natürlich auch für den Redis Port.

Passwort

Sollte der angegebene Redis Server ein Passwort benötigen oder du eines definieren willst kannst du das nun tun.

Dateien in Cloud

Prinzipiell werden alle hochgeladenen Dateien auf dem Rechner auf dem der Mastodon Server läuft abgelegt.

Wenn Ihr ein Mehrnutzersystem betreibt, können da schnell ein paar Daten beisammen kommen. Deshalb kannst du wählen, ob die hochgeladenen Dateien wie Bilder, etc. in einem Cloud Speicher wie z.B. einem Amazon S3 Bucket abgelegt werden sollen.

In meinem Fall verzichte ich darauf.

Email

Gerade bei Mehrnutzersystemen muss ein SMTP Server eingerichtet werden, damit Dinge wie Registrierung und Passwort zurücksetzen überhaupt sinnvoll funktionieren können.

Wenn du einen externen SMTP Server angeben willst musst du die Frage mit “N” beantworten

SMTP Server

Hier den Hostnamen deines SMTP Servers eintragen.

SMTP Port

Hier den Port deines SMTP Servers eintragen.

SMTP Benutzername

Hier den Benutzernamen bzw. Email Adresse deines Kontos auf dem SMTP Servers eintragen. Ich habe mir hierfür extra eine eigens Email Konto angelegt.

SMTP Passwort

Hier entsprechend das Passwort für dein Konto eintragen.

SMTP Authentifizierung

Hier die Authentifizierungsmethode des SMTP Servers auswählen.

SMTP OpenSSL

Hier musst du die Verifikationsmethode für das SMTP Server Zertifikats auswählen. Am einfachsten wäre das “none”.

Email Adresse

Hier kannst du nun die nach außen sichtbare Email Adresse in Form von “Mastodon mastodon@example.org” eingeben.

Test Email

Nun kannst du wählen, ob du eine Test Email senden möchtest. Das sollte man unbedingt tun, um zu wissen, ob auch alles richtig funktioniert.

Konfiguration abgeschlossen

Nun ist die Konfiguration des Mastodon Servers abgeschlossen.

Datenbank

Der Setup Assistent fragt nun, ob du die Datenbank anlegen möchtest und warnt aber zugleich, dass er eine bestehende Datenbank mit gleichen Namen löschen wird. Also besser nochmal kontrollieren ob alles so stimmt!

Admin Konto erstellen

Nun wirst du gefragt, ob du ein Admin Konto erstellen möchtest. Das solltest du hier unbedingt tun. Du bekommst im Anschluss ein Passwort mit dem du dich anmelden kannst. Nach dem ersten Login sollte das Passwort unbedingt geändert werden!

Dateiberechtigungen

Nun müssen wir noch ein paar notwendige Datei Berechtigungen setzen, ansonsten funktioniert z.B. der Upload von Bilder nicht:

chown -R 991:991 /opt/mastodon/public

Mastodon starten

Um euren Server zu starten muss der Container gestartet werden:

docker-compose up -d

Nginx Proxy einrichten

In meiner Nginx Konfiguration richte ich eine Proxy Umleitung auf den Mastodon Server ein.

...
location / {
	proxy_set_header HOST $host;
	proxy_set_header X-Forwarded-Proto https;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header X-Forwarded-Host $server_name;
	proxy_pass http://localhost:3000;
}

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 $scheme;
    proxy_set_header Proxy "";

    proxy_pass http://localhost:4000;
    proxy_buffering off;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
[1]
    tcp_nodelay on;
}
...

Natürlich solltet ihr den Nginx Server mit einem SSL Zertifikat von Let’s Encrypt absichern! Das soll aber nicht Teil dieses Tutorials sein.

Ende

Damit haben wir die Einrichtung eines eigenen Mastodon Server abgeschlossen.

Let’s toot…

Kommentare

Du kannst dein Mastodon Konto benutzen, um auf diesen Beitrag zu antworten.

Antworten