A supported fork of Mastodon that provides local posting and a wider range of content types.
Go to file
2021-05-28 13:04:53 +02:00
.drone.yml Initial commit 2021-05-07 13:34:21 +02:00
.env.sample Drop env vars, those will be secrets 2021-05-28 13:04:26 +02:00
.gitignore Initial commit 2021-05-07 13:34:21 +02:00
abra.sh Get the secret/entrypoint/config thing wired up 2021-05-28 11:49:12 +02:00
compose.yml Merge branch 'main' of ssh://git.autonomic.zone:2222/coop-cloud/mastodon into main 2021-05-28 12:57:47 +02:00
entrypoint.sh.tmpl Get the secret/entrypoint/config thing wired up 2021-05-28 11:49:12 +02:00
README.md Merge branch 'main' of ssh://git.autonomic.zone:2222/coop-cloud/mastodon into main 2021-05-28 12:57:47 +02:00

Hometown

A supported fork of Mastodon that provides local posting and a wider range of content types.

This repository is a copy of coop-cloud/mastodon but with a fresh README. It seems like a good idea to keep the deployment separate since the apps may diverge in their deployment or configuration instructions at some point despite best wishes to remain as mainline Mastodon as possible.

Basic usage

  1. Set up Docker Swarm and abra
  2. Deploy coop-cloud/traefik
  3. abra app new mastodon
  4. abra app YOURAPPDOMAIN config - be sure to change DOMAIN to something that resolves to your Docker swarm box.
  5. Follow the secrets setup documentation below.
  6. abra app YOURAPPDOMAIN deploy --no-domain-poll. App will fail for now.
  7. abra app mastodon run streaming rake db:setup
  8. Open the configured domain in your browser to finish set-up. To make an admin account abra app mastodon run web "bin/tootctl accounts create coolusername --email helo@autonomic.zone --confirmed --role admin"

Secrets setup

Because Mastodon expects secrets generated by specific tools, we don't support that in abra yet. However, you can run these commands yourself using the underlying Docker CLI. You can then load them in as secrets to the swarm using abra though and then they will be picked up on the deployment.

First, generate the SECRET_KEY_BASE and OTP_SECRET and store them in your local shell environment, you'll need them for subsequent commands.

$ SECRET_KEY_BASE=$(docker run --rm tootsuite/mastodon:v3.4.0 bundle exec rake secret)
$ OTP_SECRET=$(docker run --rm tootsuite/mastodon:v3.4.0 bundle exec rake secret)
$ printf $SECRET_KEY_BASE | abra app YOURAPPDOMAIN secret insert secret_key_base v1 -
$ printf $OTP_SECRET | abra app YOURAPPDOMAIN secret insert otp_secret v1 -

Then you need to generate the VAPID_{PUBLIC/PRIVATE}_KEY values using the SECRET_KEY_BASE/OTP_SECRET:

$ docker run \
  -e SECRET_KEY_BASE=$SECRET_KEY_BASE \
  -e OTP_SECRET=$OTP_SECRET \
  --rm tootsuite/mastodon:v3.4.0 \
  bundle exec rake mastodon:webpush:generate_vapid_key

Once you see the values generated, you can load the VAPID_PUBLIC_KEY into your .env file and VAPID_PRIVATE_KEY into a secret.

$ printf YOURVAPIDPRIVATEKEY | abra app YOURDOMAIN secret insert vapid_private_key v1 -

And finally, to end your whirlwind secrets loading adventure, get the DB_PASS and SMTP_PASSWORD loaded.

$ abra app YOURAPPDOMAIN secret generate db_password v1
$ printf YOURSMTPPASSWORD | abra app YOURDOMAIN secret insert smtp_password v1 -