Being too occupied with the work for previous two months left me with absolutely no time for server maintenance. Especially the kind of maintenance that needs some thought or research before being being done properly.
One of the things that got neglected this way is the VPS free space monitoring. In case some application eats up too much space, it can lead to problems. I mean, with most VPS providers, an additional space is usually just a clicks away, but unless it is a business-critical decision, it is better avoided. Especially when the need for a most spacious storage is due to some data that are potentially worthless, i.e. cache data.
Checking the server
With some space time today I checked the server where my Mastodon instance is residing and found out that the mastodon folder is taking a whopping 92 GB of storage! I have almost fell down from the chair. I have set it up just 4 months earlier. How could it grow so large? I have not even been using it so much since. When I was running Pleroma before, it did manage to grow to around 16 GB over eight months, so clearly there was something strange happening.
Checking the bulk of the size led me to the folder
public/system/cache/attachments
with the size of 65 GB. Learning more I
was led to believe that the server caches all the federated media all the
users (in this case just me) on the instance follow. It looks like the
server keeps these media attachments as a cache indefinitely, which cause
this problem.
Tootctl to the rescue!
The simplest solution I have found is to simply remove the attachments via
the inbuilt tootctl
command:
tootctl media remove
To prevent re-downloading every media attachment, making the user experience snappier and saving some network bandwidth, we can prune only media attachments older than, let's say a week:
tootctl media remove --days=7
I am running my Mastodon instance as a Docker container, so the command need a little more tweaking:
docker exec -it mastodon_web_1 tootctl media remove --days=7
On your setup, the mastodon_web_1
could be something different, consult
docker ps
for instance. The command above freed up over 60 GB on my
machine without any obvious errors.
Bonus space
There is more to prune potentially safely with tootctl
:
docker exec -it mastodon_web_1 tootctl preview_cards remove --days=7
Although the savings here were pretty tiny, just over 1 GB. Note that both these tasks could be set-up as a cron job, one potential example is in the links below.