title: Setting up a personal Fediverse ID / Mastodon instance
url: https://jacobian.org/til/my-mastodon-instance/
hash_url: 19bb6f887f452188b738599777d7014d

<p>Elon buying Twitter kicked me towards finally setting up a <a href="https://www.lawfareblog.com/what-earth-fediverse">Fediverse</a> presence, something I’ve been meaning on doing for a while.</p><p>It was important for me to do this in a way that maintains control over my own identity. The easy way would have been to create an account on <a href="https://mastodon.social">mastodon.social</a>, or one of the private Mastodon instances that friends of mine host. But if I did that, it wouldn’t be fixing the main problem with Twitter: that I don’t own my own identity. In other words, it was important to me that I be <code>@<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a8c2c9cbc7cae8c2c9cbc7cac1c9c686c7dacf">[email protected]</a></code>, not <code>@<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0d676c6e626f4d7e626068206962606c646320686162632060646a6579206f7874236e6260">[email protected]</a></code>.</p><p>I <em>also</em> very much didn’t want to operate a server. I experimented with a few of them – even got about 80% of the way toward a working Django implementation – but ultimately my desire to fuck with computers on the weekend is almost nil. I wanted to pay someone else to do the hosting.</p><p>This turned out to be significantly easier than I had thought. I signed up for <a href="https://masto.host/">masto.host</a>, a paid Mastodon service (on the cheapest plan, $6/mo). I set up my instance as <a href="https://social.jacobian.org">social.jacobian.org</a>, which involved setting up a <code>CNAME</code> to, easy. There was some simple initial configuration of the Mastodon server – I did things like turn off public signup, tweak some of the privacy settings, and (of course) enable 2FA on my admin account. Pretty simple, took about 15 minutes from putting in my credit card to having a functioning server.</p><p>That page only describes <code>host-meta</code>, but elsewhere I saw references to a couple of other routes: <code>/.well-known/webfinger</code> and <code>/.well-known/nodeinfo</code>. Initially I only redirected <code>host-meta</code>, and it seemed to work fine, but eventually I added the other two routes as well. I’m not sure if this was necessary, but it seemed like a good idea.</p><p>I’m on Cloudflare Pages, so involved adding three lines to my redirect rules file (<code>_redirects</code>):</p><pre tabindex="0"><code>/.well-known/host-meta* https://social.jacobian.org/.well-known/host-meta:splat 301
/.well-known/webfinger* https://social.jacobian.org/.well-known/webfinger:splat 301
/.well-known/nodeinfo* https://social.jacobian.org/.well-known/nodeinfo:splat 301
</code></pre><p>Finally, masto.host needs to do some config on the backend. I sent them an email, and they’d made the changes within an hour.</p><p>So yeah, I’m on the Fediverse now. Follow me: <code>@<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4c262d2f232e0c262d2f232e252d2262233e2b">[email protected]</a></code> / <a href="https://social.jacobian.org/@jacob">https://social.jacobian.org/@jacob</a>.</p><h2 id="other-implementations">Other implementations</h2><p><a href="https://aeracode.org/2022/11/01/fediverse-custom-domains/">Andrew did the same thing on a Django site</a>.</p><h2 id="next-steps-syncing-twitter-and-mastodon">Next steps: syncing Twitter and Mastodon</h2><p>The next step for me was setting up bidirectional sync to publish content in both places. <a href="https://jacobian.org/til/mastodon-twitter-sync-github-actions/">Here’s how I did that</a>.</p>
