Mastodon: Upgrades durchführen
In mehr oder minder regelmäßigen Abständen ist es nötig, der Instanz-Software ein Upgrade zu verpassen.
Pro-Tipp: Um die Veröffentlichung neuer Releases nicht zu verpassen, habe ich mir die GitHub-Announcements per Atom in meinen Feed-Reader geworfen. Antiquiert? Feeds werden meiner Meinung nach zu Unrecht verlacht! Ich arbeite nach wie vor total gerne damit, Feeds sind rock solid, wiegen nichts – und funktionieren halt einfach.
Ich spiele die Updates möglichst zeitnah ein. Es ist ein von außen erreichbarer Dienst, da ist es mir wichtig, auf Stand zu sein.
Ich skizziere also jetzt mal (wie im letzten Artikel versprochen) kurz, wie so ein Upgrade – für mich zumindest – funktioniert.
Ich arbeite bei solchen Dingen üblicherweise in einem screen
.
screen -DRS mastodon_upgrade
Der erste Schritt besteht darin, einen Dump der Datenbank zu erzeugen:
cd $HOME/mastodon
docker exec mastodon-db-1 \
pg_dump -Fc -U postgres postgres \
> postgres-$( date +%Y%m%d ).dump
Jetzt alle Container stoppen – in meinem Setup liegen alle Files im $HOME
des ausführenden Users.
docker compose down
Zur Sicherheit ziehe ich mit eine Kopie der bisherigen funktionierenden Installation; den Cache lasse ich dabei jedoch außen vor.
cd ..
rsync -azvpP --progress \
--exclude mastodon/public/system/cache/ \
--exclude mastodon/.git \
mastodon mastodon-$( date +%Y%m%d )
Dann wechsle ich wieder in den Ordner und bringe das Repository auf den neuesten Stand.
cd mastodon
git fetch
In meinem Fall weicht die docker-compose.yml
vom GitHub-Default ab, da ich sie an meine Gegebenheiten anpassen musste; über git status
lässt sich das einsehen. Deshalb werfe ich die auf den Stapel nicht eingecheckter Änderungen.
git stash
Ich wusste dank des Feeds schon, dass beim heutigen Update die aktuelle Version die v4.1.1
sein würde – git fetch
listet mir aber ebenfalls die jeweils neuen Tags.
## git checkout <version/tag>
git checkout v4.1.1
Jetzt muss ich meine vollgekritzelte docker-compose.yml
wieder vom Stapel retten.
git stash pop
Anschließend gleiche ich sie mit der des aktuellen Checkouts ab und übernehme eventuelle Änderungen entsprechend. Und dann erstelle ich das Docker-Image – und führe eventuell anstehende Migrationen durch. Letztere sind nicht immer nötig. Das Changelog des Projekts ist bei jedem Upgrade einen Blick wert!
docker compose build
docker compose run --rm web rails db:migrate
docker compose run --rm web rails assets:precompile
Zuguterletzt: ein force recreate
aller Container!
docker compose up -d --force-recreate
Welcome back, konfigurationsmanufaktur.de!
Und das war’s dann auch schon 🙂
Edit: Ich betreibe die Instanz nun seit fast zwei Jahren, und für mich funktioniert das so ganz gut. Den vorliegenden Artikel habe ich anhand der gerade veröffentlichten
v4.3.1
überarbeitet. Allerdings achte ich inzwischen auch penibler darauf, alte Backups, alte Docker-Container und -Volumes regelmäßig zu trashen, denn das summiert sich schon alles ganz ordentlich… 😇
Hintergrundbild: Macintosh SE mit verzweifeltem Holzmann, 1500x 1000px, Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten
Du nutzt etwas ähnliches, aber besser, magst die von mir eingesetzte Software nicht, findest das alles gänzlich überflüssig und würdest es sowieso ganz anders machen? Das ist wunderbar – du solltest unbedingt einen eigenen Artikel in deinem Blog dazu schreiben!
Habe ich jedoch etwas missverständlich formuliert, gar ganz ausgelassen oder mich vertippt?
Artikel in diesem Bereich kannst du überarbeiten und ergänzen!
→ Hier geht es zum öffentlichen Repository... ←