Skip to content

Instantly share code, notes, and snippets.

@Mixaill
Last active April 20, 2024 14:47
Show Gist options
  • Save Mixaill/a27db7a943b2b173a51788a1c32e4688 to your computer and use it in GitHub Desktop.
Save Mixaill/a27db7a943b2b173a51788a1c32e4688 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
#
# Mastodon update script
# v3 (2024.02.18)
#
# Changelog
# * v1 - initial version
# * v2 - added mastodon-bird-ui
# * v3 - added import of temporary email domains
cd /home/mastodon/live/
# revert changes
git restore ./config/themes.yml
# git
git pull
# extract version
mastodon_prerelease="nightly.$(git show -s --date=format:"%Y-%m-%d" --format="%cd" HEAD)"
mastodon_prerelease_exists=$(cat ./.env.production | grep MASTODON_VERSION_PRERELEASE= | wc -l)
if [ "$mastodon_prerelease_exists" -ne "0" ]; then
sed -i~ "/^MASTODON_VERSION_PRERELEASE=/s/=.*/=$mastodon_prerelease/" ./.env.production
else
echo "MASTODON_VERSION_PRERELEASE=$mastodon_prerelease" >> ./.env.production
fi
# install mastodon-bird-ui
rm -rf ./app/javascript/styles/mastodon-bird-ui/
mkdir -p ./app/javascript/styles/mastodon-bird-ui/
wget --no-cache https://raw.githubusercontent.com/ronilaukkarinen/mastodon-bird-ui/main/layout-single-column.css -O app/javascript/styles/mastodon-bird-ui/layout-single-column.scss
wget --no-cache https://raw.githubusercontent.com/ronilaukkarinen/mastodon-bird-ui/main/layout-multiple-columns.css -O app/javascript/styles/mastodon-bird-ui/layout-multiple-columns.scss
sed -i 's/theme-contrast/theme-mastodon-bird-ui-contrast/g' app/javascript/styles/mastodon-bird-ui/layout-single-column.scss
sed -i 's/theme-mastodon-light/theme-mastodon-bird-ui-light/g' app/javascript/styles/mastodon-bird-ui/layout-single-column.scss
sed -i 's/theme-contrast/theme-mastodon-bird-ui-contrast/g' app/javascript/styles/mastodon-bird-ui/layout-multiple-columns.scss
sed -i 's/theme-mastodon-light/theme-mastodon-bird-ui-light/g' app/javascript/styles/mastodon-bird-ui/layout-multiple-columns.scss
echo -e "@import 'contrast/variables';\n@import 'application';\n@import 'contrast/diff';\n@import 'mastodon-bird-ui/layout-single-column.scss';\n@import 'mastodon-bird-ui/layout-multiple-columns.scss';" > app/javascript/styles/mastodon-bird-ui-contrast.scss
echo -e "@import 'mastodon-light/variables';\n@import 'application';\n@import 'mastodon-light/diff';\n@import 'mastodon-bird-ui/layout-single-column.scss';\n@import 'mastodon-bird-ui/layout-multiple-columns.scss';" > app/javascript/styles/mastodon-bird-ui-light.scss
echo -e "@import 'application';\n@import 'mastodon-bird-ui/layout-single-column.scss';\n@import 'mastodon-bird-ui/layout-multiple-columns.scss';" > app/javascript/styles/mastodon-bird-ui-dark.scss
echo "mastodon-bird-ui-dark: styles/mastodon-bird-ui-dark.scss" >> config/themes.yml
echo "mastodon-bird-ui-light: styles/mastodon-bird-ui-light.scss" >> config/themes.yml
echo "mastodon-bird-ui-contrast: styles/mastodon-bird-ui-contrast.scss" >> config/themes.yml
# gems and node packages
bundle install
yarn install
# DB/pre
SKIP_POST_DEPLOYMENT_MIGRATIONS=true RAILS_ENV=production bundle exec rails db:migrate
# Assets
RAILS_ENV=production bundle exec rails assets:clean
RAILS_ENV=production bundle exec rails assets:clobber
RAILS_ENV=production bundle exec rails assets:precompile
# Services reboot 1
sudo service mastodon-sidekiq restart
sudo service mastodon-streaming restart
sudo service mastodon-web restart
# DB/post
RAILS_ENV=production bundle exec rails db:migrate
# Search
RAILS_ENV=production bin/tootctl search deploy --reset-chewy
# Ban temporary emails
mkdir -p ./~temp
wget --no-cache https://raw.githubusercontent.com/disposable-email-domains/disposable-email-domains/master/disposable_email_blocklist.conf -O ./~temp/email.list
domains="$(cat ./~temp/email.list)"
domains="${domains//$'\n'/ }"
RAILS_ENV=production bin/tootctl email-domain-blocks add $domains
rm -r ./~temp
# Services reboot 2
sudo service mastodon-sidekiq restart
sudo service mastodon-streaming restart
sudo service mastodon-web restart
@p37307
Copy link

p37307 commented Sep 3, 2023

You were helping me on Mastodon here. Hope you don't mind me jumping in here.

I ran the script. It appears not to have installed the nightly. It did install mastodon-bird-ui that was included in the script.

After I ran the script, the git show -s --format="%h %ci" HEAD result still is: facfec1ba 2023-08-21 20:18:49 +0200 which is what it was before I ran the script and not the nightly. It also just shows v4.2.0-beta2 and not v4.2.0-nightly.<date> in the footer. Can I ask what your git show is or what it should be?

Maybe I ran it wrong.

Can you talk me into running it as if I just logged into terminal as root. I put the script here /home/mastodon/adminscripts/mastodon-update.sh I also chmod +x the script. My instance is https://oldfriends.live

@Mixaill
Copy link
Author

Mixaill commented Sep 5, 2023

@p37307 probably your repository in a detached HEAD state. you can try to execute git checkout main in your repo root before script

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment