This action will delete this post on this instance and on all federated instances, and it cannot be undone. Are you certain you want to delete this post?
This action will delete this post on this instance and on all federated instances, and it cannot be undone. Are you certain you want to delete this post?
This action will block this actor and hide all of their past and future posts. Are you certain you want to block this actor?
This action will block this object. Are you certain you want to block this object?
Are you sure you want to delete the OAuth client [Client Name]? This action cannot be undone and will revoke all access tokens for this client.
Are you sure you want to revoke the OAuth token [Token ID]? This action cannot be undone and will immediately revoke access for this token.
| Introduction | https://epiktistes.com/introduction |
|---|---|
| GitHub | https://github.com/toddsundsted/ktistec |
| Pronouns | he/him |
| 馃寧 | Sector 001 |

@Gargron@mastodon.social uhhh, right :-( need an edit button...

Configure SMTP or users won't be able to activate new accounts. Definitely configure S3 for file storage, or your uploads (uploaded to `tmp`) will disappear every time the Heroku dyno restarts!

Finish by configuring the Heroku environment (using `.env.production.sample` as a guide). Definitely configure `LOCAL_DOMAIN` and `LOCAL_HTTPS` correctly. (I didn't do this immediately and as a consequence the first handful of people I followed saw me as a user on an instance running on `localhost`.) For `PAPERCLIP_SECRET` and `SECRET_KEY_BASE` I ran `rake secret` in another Rails project to generate the secret keys.

Fix Paperclip by changing `s3_permissions` from "public" to "public-read" in `config/initializers/paperclip.rb`. I'm pretty sure this is a bug. I need to investigate a bit more and then submit a PR.

Create a `Procfile`:
web: bundle exec puma -C config/puma.rb
worker: bundle exec sidekiq -c 5 -v -q default -q mailers -q push

Fix the Redis configuration throughout the code. Heroku wants to specify the Redis connection as a URL, so find `REDIS_HOST` and `REDIS_PORT` pairs and replace them with something like `url: ENV['REDIS_URL']`. Do this in `config/cable.yml`, `config/environments/production.rb`, `config/initializers/redis.rb` and `config/initializers/sidekiq.rb`.

In the `Gemfile`, explicitly specify the Ruby version: `ruby '2.3.3'` -- the Mastodon code uses the Ruby safe-navigation operator and Heroku otherwise defaults to an earlier version of Ruby that doesn't support this feature.

In `package.json`, change `devDependencies` to `dependencies`. The Heroku build will run the Node.js toolchain to build the assets. After you make this change, add *two* buildpacks: first `heroku buildpacks:add heroku/nodejs` and then `heroku buildpacks:add heroku/ruby`. In that order.

(The following steps assume you are familiar with Heroku, GitHub, Ruby on Rails, Mastodon, etc.)

Mastodon runs on Heroku with just a few minor tweaks. I intend to run a solo instance of Mastodon, and these changes allowed me to run this instance for free [on their free tier] and then upgrade [to their hobby tier or beyond] once it was clear everything was going to work out. My bill is currently $15/month.