Skip to content

🦣 Small opinionated helper scripts, patches, and configs for Mastodon

License

Notifications You must be signed in to change notification settings

jakejarvis/mastodon-utils

Repository files navigation

🦣 Mastodon utilities

Random opinionated helper scripts & front-end customizations for my personal Mastodon instance (running on glitch-soc).

⚠️ You definitely don't want to use any of this as-is. Check out my more general-purpose scripts instead.

Notes

The wiki of this repo and the /etc folder are simply my way of not forgetting how I did something, which I do quite a bit. Refer there for random notes on PgBouncer, Grafana, etc. but DO NOT BLINDLY COPY & PASTE anything there without doing your own research!

Usage

AGAIN, DEFINITELY DO NOT JUST RUN THIS IF YOU'RE NOT ME!!! 😊

mkdir -p /home/mastodon
git clone https://github.com/jakejarvis/mastodon-utils.git /home/mastodon/utils
cd /home/mastodon/utils

# override default environment variables if necessary:
cp .env.example .env

# install Mastodon on fresh Ubuntu box:
./scripts/install.sh

# back up Postgres, Redis, and secrets:
./scripts/backup.sh

# pull latest Mastodon (vanilla or glitch-soc) and apply patches from this repo:
./scripts/upgrade.sh

Scripts

  • init.sh: A small helper that runs at the very beginning of each script below to initialize nvm/rbenv and set consistent environment variables.
    • Optional: The default values of each config variable can be seen in .env.example. Create a new file named .env in the root of this repository (probably at /home/mastodon/utils/.env) to override any or all of them.
    • Optional: To make your life easier, you can also source this script from the .bashrc of the mastodon user and/or whichever user you regularly SSH in as:
[ -s /home/mastodon/utils/init.sh ] && \. /home/mastodon/utils/init.sh >/dev/null 2>&1
  • version.sh: A quick and easy way to test init.sh and .env by printing the version numbers of Mastodon, rbenv, nvm, Ruby, Node, and Yarn.

Periodic tasks

  • backup.sh: Backs up Postgres, Redis, and .env.production secrets to a .tar.gz file in $MASTODON_ROOT/backups. Useful for a daily cronjob.
    • Keeps archives for the last 5 days, last 4 weeks, and every month
    • Optionally uploads to S3 with s3cmd
  • purge.sh: Runs Mastodon's built-in cleanup commands, designed for a weekly cronjob.
    • Keeps 14 days of media
    • Keeps 90 days of profile avatars, headers, and link preview cards

Dangerous

🚨 The following scripts are highly opinionated, catastrophically destructive, and very specific to me. Check them out line-by-line instead of running them.

Patches

Vanilla only:

Vanilla and glitch-soc:

glitch-soc only:

  • mastodon-logo.patch: Restore the Mastodon logo in the non-advanced sidebar
  • settings-sidebar-cleanup.patch: Why is the most frequently used admin page listed under a link that takes you to another page to open a submenu in the sidebar to finally be able to click on it to go to the page?!?

License

MIT

About

🦣 Small opinionated helper scripts, patches, and configs for Mastodon

Topics

Resources

License

Stars

Watchers

Forks

Languages