.drone.yml | ||
.env.sample | ||
.gitignore | ||
abra.sh | ||
compose.yml | ||
entrypoint.sh.tmpl | ||
README.md |
Mastodon
Your self-hosted, globally interconnected microblogging community
- Category:
- Status:
- Image:
tootsuite/mastodon
- Healthcheck:
- Backups:
- Email:
- Tests:
- SSO:
Basic usage
- Set up Docker Swarm and
abra
- Deploy
coop-cloud/traefik
abra app new mastodon
abra app YOURAPPDOMAIN config
- be sure to changeDOMAIN
to something that resolves to your Docker swarm box.- Follow the secrets setup documentation below
- Follow the datbase setup documentation below
abra app YOURAPPDOMAIN deploy --no-domain-poll
. App will fail for now.- 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)
$ abra app YOURAPPDOMAIN secret insert secret_key_base v1 $SECRET_KEY_BASE
$ abra app YOURAPPDOMAIN secret insert otp_secret v1 $OTP_SECRET
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.
$ abra app YOURDOMAIN secret insert vapid_private_key v1 YOURVAPIDPRIVATEKEY
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
$ abra app YOURDOMAIN secret insert smtp_password v1 YOURSMTPPASSWORD
Database setup
You need to run rake db:setup
against the database before the installation will be succesful. To do this, you need to shell into the streaming
service and run the command while making some environment variables available.
$ abra app social.lumbung.space run streaming bash
$ 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
The rest of the services will then stabilise when they have a connection to the database.