From neuromatch

Up to Mastodon

In this case we are using glitch-soc to run a Mastodon server.

We will make:

  • One "default" instance at
  • One Dev Instance at

We will be following the official Mastodon setup docs (except cloning our fork of glitch-soc instead of the base masto repo):


See also: Linode/Setup

  • Turn off password SSH access
  • Install fail2ban
  • Configure iptables to only allow SSH and HTTP/HTTPS


Set up the domain name!

  • Add an A record pointing at the linode's IP Address
  • Set up rDNS pointing back at the domain


  • Add apt repositories
  • Install apt packages
  • Make mastodon user
  • Install Ruby
  • Configure postgresql
  • Configure nginx (config below)
  • Get SSL Cert
  • Install & Enable systemd services

Once DNS is set up, you can run the following as root:

certbot certonly --standalone

to get SSL certs. Then restart nginx to load them.


  • mastodon-web
  • mastodon-sidekiq
  • mastodon-streaming



Configure the email server

Create a SendGrid account, go to Settings > API Keys, and generate an API key.

Then set up the config in mastodon/live/.env.production like this:

(for SMTP_LOGIN literally just use "apikey")

Restart services

Restart all 3 services after each change to .evn.production or config/settings.yml and you need to have root access for this to work

sudo su
cd /etc/systemd/system
for service in mastodon-{web,sidekiq,streaming}; do service $service restart; done
for service in mastodon-{web,sidekiq,streaming}; do service $service status; done

Setting up an admin account from CLI w/ email confirmation

Note that you need to be logged in as the mastodon user for this to work.

<OPTIONAL> If you did not create that user account and don't know the password, then you should do the following:

sudo su - mastodon

The following command will work if the username and email have been registered from the UI. Very useful if SMTP server hasn't been setup yet.

cd /home/mastodon/live
RAILS_ENV=production ./bin/tootctl accounts modify <username> --role Admin --email <email-address> --confirm


mannazsci#technical-wg23-08-16 04:11:30

Mastodon/Setup useful commands to improve disk usage:

`# Prune remote accounts that never interacted with a local user RAILS_ENV=production /home/mastodon/live/bin/tootctl accounts prune;

  1. Remove remote statuses that local users never interacted with older than 4 days

RAILS_ENV=production /home/mastodon/live/bin/tootctl statuses remove --days 4;

  1. Remove media attachments older than 4 days

RAILS_ENV=production /home/mastodon/live/bin/tootctl media remove --days 4;

  1. Remove all headers (including people I follow)

RAILS_ENV=production /home/mastodon/live/bin/tootctl media remove --remove-headers --include-follows --days 0;

  1. Remove link previews older than 4 days

RAILS_ENV=production /home/mastodon/live/bin/tootctl preview_cards remove --days 4;

  1. Remove files not linked to any post

RAILS_ENV=production /home/mastodon/live/bin/tootctl media remove-orphans;`