karelvo

Self-hosting forms, the sane way

published on 2024-04-26

I run a few (very) small websites, nothing serious: they’re not businesses, they’re hobbies. There is no risk involved if they would go down, apart from maybe disappointing a few hundred people that found a link to it on search engines. Because working on them is sometimes a fun challenge, but at the same time I am not a developer/sysadmin, there are two rules I follow:

Some examples of how the combo of those two things translates to my setup:

In other words: DIY, unless there’s a great FOSS tool to help me out. The excuse I give myself is “this is more hacky than 95% of people doing the same thing, anyway”.


DIY vs form services


On one of my sites, I needed to install a form with file upload capability. After some research, I found a few solutions to solve my need:

I didn’t like what I found: I wanted something


My solution: the middle ground


In the end, I decided to build something myself that adhered to the above points as much as possible. In summary, it looks like this:

Most people reading this will understand this chart without much further explanation. Before I dive into the details, here are the pros and cons of this setup:

Here’s the step by step process. Yes, it’s really this simple:


Form gets filled


<form
    action="${webhook}"
    method="post"
    >
    <label for="name">Name</label>
    <input name="name" type="text">
    <button
        data-umami-event="buttonname"
        type="submit"
        >
        Submit
    </button>
</form>

n8n processes



NocoDB collects



Email notifies


And there you have it: one way to host forms yourself, without losing your mind.