Daily Shaarli

All links of one day in a single page.

May 24, 2022

Note: Scripts for mastodon admin help

mastodonControl.zsh

#!/usr/bin/zsh

# Script to launch a new embedded session for controlling Mastodon with tootctl.

autoload colors && colors

pushd /home/mastodon/live

echo "$fg_bold[magenta]MASTODON CONFIGURATION SESSION$reset_color\n"
echo "\ttootctl:\tMastodon control commands"
echo "\t.env.production (file):\tProduction Environment Constants"
echo "\trake --tasks:\tProduction Configuration\n"
echo "$fg[red]Mastodon upgrade$reset_color:\n\tbundle install; yarn install\n\tSKIP_POST_DEPLOYMENT_MIGRATIONS=true rails db:migrate"
echo "\trails assets:precompile\n\t(Restart services)\n\ttootctl cache clear\n\trails db:migrate\n"
# echo `pwd`

sudo -u mastodon env PATH="/home/mastodon/live/bin:$PATH" RAILS_ENV=production MASTODON_CONFIG_MODE=1 zsh

restartMastodonBackend.zsh

read -r -p "Really restart mastodon backend (sidekiq, streaming, elasticsearch)? [Y/n] " input

case $input in
    [yY][eE][sS]|[yY])
  sudo systemctl restart mastodon-sidekiq.service
  sudo systemctl restart mastodon-streaming.service
  sudo systemctl restart elasticsearch.service
 ;;
    *)
 echo "Abort restart."
 exit 1
 ;;
esac

restartMastodonWeb.zsh

read -r -p "Really restart mastodon-web? [Y/n] " input

case $input in
    [yY][eE][sS]|[yY])
  sudo systemctl restart mastodon-web.service
 ;;
    *)
 echo "Abort restart."
 exit 1
 ;;
esac

backupMastodon.zsh (an older method I don't use anymore but it works!)

#!/usr/bin/zsh

today=(`date +"%F"`)
expiry=(`date +'%F' -d "-3 days"`)

echo "Starting backup for ${today}"

/bin/mkdir  /var/backups/mastodon/${today}/
echo "Backing up Postgres production DB..."
sudo -u mastodon /usr/bin/pg_dump mastodon_production | gzip --rsyncable > /var/backups/mastodon/${today}/mastodon_production_${today}.sql.gz
echo "Backing up Redis..."
cp /var/lib/redis/dump.rdb /var/backups/mastodon/${today}/
echo "Backing up production configuration..."
/bin/cp /home/mastodon/live/.env.production /var/backups/mastodon/${today}/

echo "Deleting old backups locally..."
# Do not backup public files as they're hosted in object store.
# /bin/tar -cvzf /var/backups/mastodon/${today}/system${today}.tar.gz /home/mastodon/live/public/system
/bin/rm -rf /var/backups/mastodon/${expiry}/

echo "Authenticating to offsite and syncing backup..."

# Rsync backups to offsite with dedicated user.
RSYNC_USER=<<BACKUP_USER>>
# Used by rsync automatically
RSYNC_PASSWORD=<<BACKUP_PASSWORD>> rsync -auvb /var/backups/mastodon rsync://${RSYNC_USER}@<<BACKUP_SERVER>>

echo "Backup finished."