mastodon/docs/Running-Mastodon/Heroku-guide.md
David Huerta a7ab2204d4 Update Heroku-guide.md
Cleaning up the heroku admin command bit to match the form used in Administration-guide.md and clarify the wording a bit.
2017-04-07 17:44:32 -04:00

2.0 KiB

Heroku guide

Deploy

Mastodon can be run on a free Heroku app. It should be noted this has limited testing and could have unpredictable results.

Basic setup

Click the button above to start creating a Heroku app with the Mastodon repo as the source. This tells Heroku to use the app.json file which does things like prompt for config variables, set up the right buildpacks, run a postdeploy task, and add the appropriate addons.

If you don't use the deploy button and app.json approach, you will need to do some of that manually.

Domain names and SSL

You can add your domain name to the Heroku app's setting, and then also use Heroku's (free) auto renewal program for Lets Encrypt certificates, by requesting a cert from the settings screen. You'll have to point your hostname DNS at Heroku using the values heroku gives you on this screen, using whatever method is appropriate for your DNS setup.

You should set the Heroku config vars of LOCAL_DOMAIN to your hostname, and LOCAL_HTTPS to "true" as well.

Email

Consider using Mailgun or similar, who offer free plans that should suit your interests. Look in production.rb to see which config variables need to be set on Heroku for outgoing email to work.

File storage

You will want Amazon S3 for file storage. The only exception is for development purposes, where you may not care if files are not saved. Follow a guide online for creating a free Amazon S3 bucket and Access Key, then enter the details.

Deployment

You can deploy from the Heroku web interface or from the command line. Run:

heroku run rails db:migrate

after you first deploy to set up the first database.

To make yourself an admin, you may need to use the heroku CLI application after creating an account online:

heroku rake mastodon:make_admin USERNAME=yourUsername