Epiktistes

Epiktistes is my home in the Fediverse. It is an instance of Ktistec, a single-user ActivityPub server like Mastodon, but with fewer users and fewer commits. Here's my introduction (last updated early-2025).

I wrote a series of posts about optimizing the performance of the Ktistec server, its build time, and its executable size: part 1, part 2, part 3, part 4, and part 5.

Some things I regularly write about, organized by hashtag:

I also wrote some #pointfreeverse.

Todd Sundsted

Create a `Procfile`:

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

Todd Sundsted

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`.

Todd Sundsted

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.

Todd Sundsted

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.

Todd Sundsted

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

Todd Sundsted

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.

Todd Sundsted

now how do I migrate my Twitter tweets...! :-)

Todd Sundsted
Todd Sundsted

@Gargron@mastodon.social yes, I initially missed that step when setting it up on Heroku. I'll probably owe the federverse a couple beers for spewing debris while testing this out.

Todd Sundsted