Building a webmentions receiver

May 10 2026

For the last few years at least, I’ve been pretty opposed to the idea of websites having public comments sections. I think the context online is very different from that of an in-person conversation with a group of people you know, and so I think online public comments go very easily awry. I recently got around to looking into webmentions since they seem much healthier as a discourse mechanism, and have since decided that I will add support for them to this site.

Adding support for receiving webmentions seems like a good place to start. This site is a static site built with Jekyll and I want it to stay that way. Since the standard allows for the receiver endpoint to be a different server, I thought I’d make a separate application to run on my homeserver. I have a private repo for the site on my Forgejo instance so it would need to make commits and pull requests there which I could then merge to trigger CI to update the site.

Rust is my go-to language nowadays and seems like a reasonable fit for this kind of project. The applications consists of a single endpoint HTTP server which handles incoming requests, parses them, does some basic validation and then queues them for processing by a worker task which does more in-depth validation and communicates with Forgejo.

Altogether, it’s less than 1,000 lines of code and less than a day of work to get something that I’m happy with. The whole thing is built into a docker container and is now running happily on my homeserver. If you’d like to checkout the code you can find the repo at https://forgejo.zacjw.com/zac/webmention-receiver

Next step will be actually integrating it into the site so the files it creates become links at the end of posts. I’ll also add a little form into each post for adding a webmention in case your site doesn’t automatically send webmentions.

Webmentions

Mentioned this post on your website? Enter the link below and I'll add it to this section.

Recommended Blogposts

Jekyll-feed combined feeds

Adding a new feature to jekyll-feed so I can use it on this site

Recreating GitHub Pages on my own servers

Auto-building a Jekyll site and deploying it over SFTP without GitHub