A supported fork of Mastodon that provides local posting and a wider range of content types.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3wc db007e4b64 Switch to self-hosted stack-ssh-deploy image [mass update] 2 weeks ago
.drone.yml Switch to self-hosted stack-ssh-deploy image [mass update] 2 weeks ago
.env.sample
.gitignore
README.md Update abra syntax in examples (finally) [mass update] 2 weeks ago
abra.sh feat: add assets script function 9 months ago
compose.oidc.yml feat: latest hometown on the v1.0.6 branch 4 months ago
compose.yml feat: latest hometown on the v1.0.6 branch 4 months ago
entrypoint.sh.tmpl

README.md

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 and some Hometown specific configuration. 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. Follow the secrets setup docs
  5. abra app config YOURAPPDOMAIN - be sure to change DOMAIN to something that resolves to your Docker swarm box
  6. abra app deploy YOURAPPDOMAIN to deploy the app

You'll need to run a docker exec -it <streaming-service-id> /bin/bash and do the following:

export OTP_SECRET=$(cat /run/secrets/otp_secret)
export SECRET_KEY_BASE=$(cat /run/secrets/secret_key_base)
export DB_PASS=$(cat /run/secrets/db_password)
bundle exec rake db:setup

Then, on your host (outside of the containers), you'll need to fix permissions for the volume (see #2):

chown -R 991:991 /var/lib/docker/volumes/<service-name>_app/_data

And finally, within the app container, create an admin account:

export OTP_SECRET=$(cat /run/secrets/otp_secret)
export SECRET_KEY_BASE=$(cat /run/secrets/secret_key_base)
export DB_PASS=$(cat /run/secrets/db_password)
tootctl accounts create <username> --email <email> --confirmed --role admin

Secrets setup

Mastodon expects secrets generated by specific tools. Uou can run these commands via the scripts interface with abra.

abra app cmd <domain> secrets --local

Tips & Tricks

Auto-complete is not working?

Check the sidekiq logs (/sidekiq/retries), is a bunch of stuff failing? What is the error?

If it looks anything like blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]; then it might mean that your elastic search service has put itself into "read-only" state. This could be due to running close to no free disk space one time. ES doesn't undo this state, even when you have more free disk space once more, so you need to handle this manually:

abra app run <domain> es bash
curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'

Then head back to the sidekiq retries panel and retry one job. You should see the ticket of retries go down by one if if passed. Then you can "retry all" and they should get scheduled & run.