Fr.. Sep. 5th, 2025

Mastodon und die vertrackten Dateirechte – ich komme nicht weiter

Bylars

5. September 2025 , , ,

Wer Mastodon schon länger in Docker betreibt, kennt wahrscheinlich die Stolperfallen beim Thema Dateirechte und Nutzer. Bei mir ist das Problem an einer Stelle so festgefahren, dass ich es trotz etlicher Versuche nicht mehr behoben bekomme – deshalb dieser Artikel, verbunden mit der Frage in die Runde: Hat jemand das schon einmal gehabt und eine saubere Lösung gefunden?

Wie es dazu kam

Eine Zeit lang liefen meine Mastodon-Container fälschlicherweise als root. Das war ein klarer Fehler, denn langfristig führt das fast immer zu Problemen mit Dateirechten. Inzwischen läuft alles so, wie es eigentlich gedacht ist:

Auf dem Host gehört /opt/mastodon dem Mastodon-User (UID 991). In den Containern läuft der Prozess ebenfalls als mastodon.

Soweit so gut – nur im Pfad /opt/mastodon/public sieht die Sache anders aus.

Das konkrete Problem

Innerhalb des Containers gehören die Ordner public und public/assets root:root. Auf dem Host hingegen haben die Verzeichnisse 991:991 als Besitzer.

Ein chown im Container ändert nichts, weil der Pfad aus dem Image kommt. Ein chown auf dem Host ändert nichts, weil der Container an dieser Stelle gar nicht auf den Host-Mount schaut.

Das führt dazu, dass beim Befehl

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

immer folgender Fehler kommt:

Errno::EACCES: Permission denied @ rb_sysopen - /opt/mastodon/public/assets/.manifest.json

Sprich: Der Mastodon-User darf die Manifest-Datei nicht schreiben. Damit bleibt das Verzeichnis public/assets leer, und ein Update der Instanz scheitert.

Meine bisherigen Versuche

chown -R 991:991 und chmod direkt auf dem Host → ohne Effekt. chown und rm -rf public/assets im Container als root → beim nächsten Run wieder überschrieben. Test mit docker-compose run –rm web bash -lc ‘touch /opt/mastodon/public/assets/test’ → Permission denied. Verschiedene Mount-Varianten in docker-compose.yml durchprobiert → bisher kein Erfolg. Selbst die KI kommt nicht weiter. 🙄

Egal, wie ich es drehe: die Rechte bleiben im Container auf root:root, und ich kann keinen Schreibzugriff für den Mastodon-User herstellen.

Meine Vermutung

Der Fehler wurzelt darin, dass die Container eine Zeit lang als root liefen und dabei Strukturen erzeugt haben, die sich jetzt nicht mehr überschreiben lassen. Inzwischen läuft alles korrekt unter dem Mastodon-User – nur in diesem einen Pfad klemmt es.

Frage an die Community

Hat jemand schon einmal ein ähnliches Problem gehabt?

Gibt es einen Trick, wie man die Rechte innerhalb des Containers dauerhaft korrigieren kann?

Ich wäre dankbar für Erfahrungsberichte und Tipps. Momentan komme ich mit klassischen Mitteln einfach nicht weiter – und ohne funktionierendes assets:precompile kann ich meine Instanz nicht zuverlässig updaten.

Klicke, um diesen Beitrag zu bewerten!
[Gesamt: 0 Durchschnitt: 0]

Bylars

Ich bin 44 Jahre alt und blogge seit mehreren Jahren. Beruflich bin ich Fachangestellter für Bäderbetriebe. Lebe und liebe diesen Beruf in und rundum Fulda. Habe eine Partnerin und liebe genauso meinen Dackel.