title: Mastodon on your own domain without hosting a server
url: https://blog.maartenballiauw.be/post/2022/11/05/mastodon-own-donain-without-hosting-server.html
hash_url: 2b4baf23121e6a8cfb4d29008e478770

<p>Like many in the past week, I have been having a serious look at <a href="https://joinmastodon.org/">Mastodon</a> as an alternative to Twitter.</p><p>Mastodon is a social network that is distributed across many servers that have their own smaller communities, and federate with other servers to provide a more “global” social network.</p><p>There are <a href="https://joinmastodon.org/servers">many servers out there</a> that you can choose from. Alternatively, you can also <a href="https://docs.joinmastodon.org/admin/prerequisites/">self-host</a> your Mastodon server, or use <a href="https://joinfediverse.wiki/How_to_host_your_own_Fediverse_instance%3F">one of many hosted instances</a>, “Mastodon as a service”.</p><p>In recent hours, I have seen many people wanting to host their own servers, which is great fun! Self-hosting also has the added benefit of being able to have a Mastodon account on your own domain, and you own your data.</p><p>Now, I don’t really care about that (<em>yet?</em>). I ran my own mail server back in the day and am very happy with someone running it for me now. The same goes with Mastodon: I trust the folks at <a href="https://mastodon.online">Mastodon.online</a>, the server I joined, to do a much better job at this than I will ever do.</p><p>However, there is one thing I <em>would</em> like my own server for: <strong>discoverability</strong>. Much like with e-mail, I want folks to have an easy address to find me, and one that I can keep giving out to everyone even if later I switch to a different Mastodon server. A bit like e-mail forwarding to your ISP’s e-mail service.</p><p>The good news is: <strong>you can use your own domain</strong> and share it with other folks. It will link to your actual account.</p><p>Go on, try it. Search for <code class="language-plaintext highlighter-rouge">@<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="593438382b2d3c37193b38353530382c2e773b3c">[email protected]</a></code>, and you will find my <code class="language-plaintext highlighter-rouge">@<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="395458584b4d5c575b58555550584c4e7954584a4d565d5657174a565a505855">[email protected]</a></code>.</p><h2 id="how-to-discover-mastodon-account-via-custom-domain">How to discover Mastodon account via custom domain</h2><p>Reading <a href="https://blog.joinmastodon.org/2018/06/how-to-implement-a-basic-activitypub-server/">“how to implement a basic ActivityPub server”</a>, there are a couple of things that stand out:</p><ul><li>Mastodon (and others) use <a href="https://activitypub.rocks/">ActivityPub</a> as their protocol to communicate between “actors”.</li><li>Actors are discovered using <a href="https://webfinger.net/">WebFinger</a>, a way to attach information to an email address, or other online resource.</li></ul><p>Since discovery is what I was after, WebFinger seemed like the only thing I would need to implement.</p><p>WebFinger lives on <code class="language-plaintext highlighter-rouge">/.well-known/webfinger</code> on a server. For Mastodon, your server will be queried for accounts using an endpoint that looks like this:</p><p>And indeed, if I look at my Mastodon server’s <code class="language-plaintext highlighter-rouge">webfinger</code> for my account, I get a response back!</p><div class="language-http highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">GET https://mastodon.online/.well-known/webfinger?resource=acct:<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="234e42425157464d41424f4f4a425654634e4250574c474c4d0d4c4d4f4a4d46">[email protected]</a>

{
  "subject": "acct:<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9bf6fafae9effef5f9faf7f7f2faeeecdbf6fae8eff4fff4f5b5f4f5f7f2f5fe">[email protected]</a>",
  "aliases": [
    "https://mastodon.online/@maartenballiauw",
    "https://mastodon.online/users/maartenballiauw"
  ],
  "links": [
    {
      "rel": "http://webfinger.net/rel/profile-page",
      "type": "text/html",
      "href": "https://mastodon.online/@maartenballiauw"
    },
    {
      "rel": "self",
      "type": "application/activity+json",
      "href": "https://mastodon.online/users/maartenballiauw"
    },
    {
      "rel": "http://ostatus.org/schema/1.0/subscribe",
      "template": "https://mastodon.online/authorize_interaction?uri={uri}"
    }
  ]
}
</span></code></pre></div></div><p>Sweet!</p><p>The next thing I tried was simply copy-pasting this JSON output to my own server under <code class="language-plaintext highlighter-rouge">.well-known/webfinger</code>, and things magically started working.</p><p>In other words, if you want to be discovered on Mastodon using your own domain, you can do so by copying the contents of <code class="language-plaintext highlighter-rouge">https://&lt;your mastodon server&gt;/.well-known/webfinger?resource=acct:&lt;your account&gt;@&lt;your mastodon server&gt;</code> to <code class="language-plaintext highlighter-rouge">https://&lt;your domain&gt;/.well-known/webfinger</code>.</p><p>One caveat: this approach works much like a catch-all e-mail address. <code class="language-plaintext highlighter-rouge">@<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="01606f787569686f6641786e7473656e6c60686f2f626e6c">[email protected]</a></code> will match, unless you add a bit more scripting to only show a result for resources you want to be discoverable.</p><p>Discoverability, at this stage, is one of the things that matter to get a proper social graph going. Over the past days, there were a couple of tools I found very useful in finding Twitter folks on Mastodon:</p><ul><li><a href="https://twitodon.com/">Twitodon</a> learns about which Twitter account matches a Mastodon account, from folks using this service.</li><li><a href="https://fedifinder.glitch.me/">Fedifinder</a> and <a href="https://pruvisto.org/debirdify/">Debirdify</a> scan Twitter accounts and checks if there is a Mastodon account in their profile data.</li></ul><p>Good luck! And give <code class="language-plaintext highlighter-rouge">@<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7d101c1c0f0918133d1f1c1111141c080a531f18">[email protected]</a></code> a follow if you make the jump to Mastodon.</p><p><strong>Edit:</strong> Seems <a href="https://github.com/mastodon/mastodon/issues/2668">there is a GitHub issue which requests custom domains</a> as well.</p>
