One significant thing ecosystems lacks is the ability to migrate your account along with the posted content. Also, every single software I've looked at states that changing server implementation without changing the domain is not supported, don't even try (which kinda makes me want to try just 'cuz). Which means if I ever decide to change the software I host my blog on, I have to wave goodbye to the posts I wrote previously. Sure, most of them aren't that notable, but some of them might be?

Link rot - Wikipedia en.wikipedia.org

A few notes about self-hosting a fediverse account. I was interested in hosting a single-user instance and it seems like there are more or less three options:

  • Honk - written in Go, kinda funky, no dependencies other than SQLite, actively developed, but looks like a mostly solo project. Can support multiple users, but seems to be mostly for a single-user use case.
  • microblog.pub - written in Python, also using SQLite, has a bug tracker and a few contributors besides the original author. Single-user instance.
  • GoToSocial - written in Go, compatible with Mastodon client API, supports multiple users, but is supposed to be much lighter weight. Doesn't offer its own management interface other than rendering profile web pages.

I went with microblog.pub, since it seemed to fit my needs pretty well and the maintainer was very responsive in the bug tracker (thanks @dev@microblog.pub!). After setting it up, it uses ~200MB of RAM, almost no CPU, and ~30MiB on disk, including the Git repo. Granted, this instance doesn't have much content to store yet. The whole setup process took me a couple of hours, including troubleshooting some chmod mishaps, not counting tweaking CSS to my taste.

The biggest tweak I've done so far is adding EasyMDE for writing. To do that, I had to add the following lines to admin_new.html template:

<link rel="stylesheet" href="https://unpkg.com/easymde@2.18.0/dist/easymde.min.css">
<script src="https://unpkg.com/easymde@2.18.0/dist/easymde.min.js"></script>
<script>const easyMDE = new EasyMDE();</script>

...and fix CSP in profile.toml: custom_content_security_policy = "default-src 'self'; style-src 'self' 'sha256-{HIGHLIGHT_CSS_HASH}' https://unpkg.com/easymde@2.18.0/ https://maxcdn.bootstrapcdn.com/font-awesome/; script-src 'self' https://unpkg.com/easymde@2.18.0/ 'sha256-x3hT41jvAyXptNPHtcnje3M0xIBPpT+PuS/HVkYn8ac='; img-src m.nevkontakte.com nevkontakte.com; frame-ancestors 'none'; base-uri 'self'; form-action 'self'; connect-src 'self' https://cdn.jsdelivr.net/codemirror.spell-checker/; font-src 'self' https://maxcdn.bootstrapcdn.com/font-awesome/;"

The only feature I am really missing so far is the ability to edit posts, surely ActivityPub supports that?

-hosting

GoToSocial Documentation docs.gotosocial.org