some styles that I have found and modified (some of them) — this repo also contains some modifications (like extended status lenght (2000 chars) as well as modifications to use 12 poll options with longer items) to the mastodon code (taken from version 4.1.1)
Go to file
Dominic Reich 8261fb1b25 Update 2023-08-13 12:30:59 +00:00
patched-files adds patched-files 2023-04-09 22:04:52 +02:00 Update 2023-08-13 12:30:59 +00:00
admin.png adds 2023-03-25 20:09:37 +00:00
destroy.png updates README (adds self-destroy screenshot) 2023-03-25 20:28:42 +00:00
google-fonts-policy.patch initial commit 2023-03-25 19:41:39 +00:00
more-polls.patch initial commit 2023-03-25 19:41:39 +00:00
robotstxt.patch initial commit 2023-03-25 19:41:39 +00:00
status-length.patch initial commit 2023-03-25 19:41:39 +00:00
styles-config.patch initial commit 2023-03-25 19:41:39 +00:00
styles.patch initial commit 2023-03-25 19:41:39 +00:00


Some styles for a mastodon server.

Should work on the root path of your mastodon instance. (/home/mastodon/live).

My instance

I had a single-user instance running for about 4 months and I shut it down on March 25 2023 because of different reasons.

I've been testing and playing around with that mastodon software but I only used version 4.0.2 (I think) up to 4.1.1.
Upgrades went very well, just read the release docs.

I moved servers two times, first time only geographically but second time I went to use a server with a smaller configuration setup (ram, harddisk size). This is not something you do in your webinterface, you gonna move the files and database by hand (an upgrade of harddisk size and RAM would be much easier on VPS systems).

Finally, I'd like to show you some stats and maybe some useful information.

Some statistics

for a single user instance with 4 relais (1 of them was only ham radio related, so the traffic on that one was very low). The other three relais made sidekiq to work ~8x more than before the relais.

$ bin/tootctl media usage
Attachments:	16.1 GB (1.94 MB local)
Custom emoji:	87.2 MB (450 KB local)
Preview cards:	1.02 GB
Avatars:	2.3 GB (48.5 KB local)
Headers:	5.33 GB (429 KB local)
Backups:	0 Bytes
Imports:	0 Bytes
Settings:	0 Bytes

admin dashboard showing usage

(Hopefully) helpful snippets

clear media files

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
export RAILS_ENV=production

exec > /home/mastodon/live/log/prune.log 2>&1

/home/mastodon/live/bin/tootctl statuses remove
/home/mastodon/live/bin/tootctl media remove --days=5
/home/mastodon/live/bin/tootctl media remove --prune-profiles --days=60
/home/mastodon/live/bin/tootctl preview_cards remove --days=15
/home/mastodon/live/bin/tootctl media remove-orphans
/home/mastodon/live/bin/tootctl cache clear
/home/mastodon/live/bin/tootctl media usage

profile pics

#!/usr/bin/env bash
# Kept only the accounts compression and jpeg optimization

cd /home/mastodon/live/public/system/cache
find -name '*.jpg' -print0 | xargs -0 jpegoptim --verbose --preserve --threshold=1 --max=45
find -name '*.jpeg' -print0 | xargs -0 jpegoptim --verbose --preserve --threshold=1 --max=45

cd /home/mastodon/live/public/system/cache/accounts
find -name '*.png' -print0 | xargs -0 pngquant --verbose --ext=.png --force --speed 10 --quality 45-50 --skip-if-larger

managing media in rails console

There are several scripts executable with RAILS_ENV=production bundle exec rails c, for convenience laid out here with minor corrections. Do not execute these without understanding what they do!:

Deleting all cached media attachments from external servers to allow web app to refetch them when they are queried. At least on my instance this is reaaally slow, takes tens of seconds per attachment (is this the same as tootctl media remove?):

MediaAttachment.cached.where.not(remote_url: '').each do |attachment|

Deleting and redownloading all cached remote emojis. This apparently has a problem that the local URLs for the cached emojis change, and the URLs aren't updated to the fetched profile headers. I suppose this should be done before the next steps, assuming the cached local emoji URLs are set up correctly to the profile headers and names at the time of fetching. This doesn't seem to work though, maybe tootctl emoji purge --remote-only would be better:

CustomEmoji.remote.where.not(image_file_name: nil).where.not(image_remote_url: '').each do |emoji|

Deleting all remote profile avatars, and refetching them. Are these two the same as tootctl accounts refresh --all?:

Account.remote.where.not(avatar_file_name: nil).where.not(avatar_remote_url: '').each do |a|

Deleting all remote profile headers, and refetching them. Hopefully this uses/updates the newly fetched local cached emoji URLs, and also includes the profile name as they often contain emojis:

Account.remote.where.not(header_file_name: nil).where.not(header_remote_url: '').each do |a|

It would be awesome to get tooling for these to tootctl. That said, I'm not entirely sure if destroying the entities is necessary before downloading them again, and perhaps we could use remove_entity_cache instead. I'm not very well acquainted with the codebase.

instance self-destroy

$ bin/tootctl self-destruct
Type in the domain of the server to confirm:
This operation WILL NOT be reversible. It can also take a long time.
While the data won't be erased locally, the server will be in a BROKEN STATE afterwards.
A running Sidekiq process is required. Do not shut it down until queues clear.
Are you sure you want to proceed? yes
Do NOT interrupt this process...
Queued 16232 items into Sidekiq for 4 accounts
Wait until Sidekiq processes all items, then you can shut everything down and delete the data

above console output as screenshot