Making your own Mastodon Handle

As any technology geek I decided to switch to Mastodon! Why would you ask? Well, several reasons prompted this switch:

  • Twitter is increasingly adding pay-to-use features (verification, prioritized answers, ...)
  • Twitter always had a huge amount of bots on the platform, continuously spamming my account

So, I wanted to go to Mastodon but use my personal handle: @xavier@m18x.com instead of the @xavier@fosstodon.org one I am on now. Luckily for us, this is possible through WebFinger and the /.well-known/webfinger endpoint which is used to discover information about people or other entities.

WebFinger Configuration

To configure the WebFinger spec, we should set-up the /.well-known/webfinger route that we can query and return a JSON response back.

For Mastodon, we should be able to query /.well-known/webfinger?resource=acct:xavier@fosstodon.org that will return a JSON file containing information about our profile. Let's fire up the URL https://fosstodon.org/.well-known/webfinger?resource=acct:xavier@fosstodon.org which returns:

{
    "subject": "acct:xavier@fosstodon.org",
    "aliases": [
        "https://fosstodon.org/@xavier",
        "https://fosstodon.org/users/xavier"
    ],
    "links": [
        {
            "rel": "http://webfinger.net/rel/profile-page",
            "type": "text/html",
            "href": "https://fosstodon.org/@xavier"
        },
        {
            "rel": "self",
            "type": "application/activity+json",
            "href": "https://fosstodon.org/users/xavier"
        },
        {
            "rel": "http://ostatus.org/schema/1.0/subscribe",
            "template": "https://fosstodon.org/authorize_interaction?uri={uri}"
        }
    ]
}

To get our own handle working and discoverable, we can simply copy this file to our server and we should then be able to look for our handle! (e.g., @xavier@m18x.com)

Using WebFinger on Ghost

For my personal website I am using Ghost, so how can we add the /.well-known/webfinger route here as well. Simply go to your theme and open up the routes.yaml file.

In there, add a route named /.well-known/webfinger that points to a handlebars file containing the JSON from above.

routes:
  /.well-known/webfinger:
    content_type: application/json
    template: well-known/webfinger

Finally, create the handlebars file under ./well-known/webfinger.hbs

Summary

We are now able to use our own custom handle on Mastodon! Through the WebFinger spec, Mastodon instances will query this profile for more information and will know where to go towards.

Extra: If you want to add a link to your mastodon profile for verification, check out https://ghost.org/tutorials/add-social-media-icons/