Welcome to the start of my attempts to move the applications / programs / services we use around the house to FreeBSD jails.
So what will be in the jails? Link to heading
So far (2023-12-26), the jails contain:
- This site (a combination of gitea, webhook, hugo, apache)
- Mastodon
- Gitea
- Syncthing
- Home Assistant (with Zigbee2MQTT)
- Poudriere
Why FreeBSD and why jails? Link to heading
The main reason is simple: the services we use around the house are tools, not appliances. An appliance is used the way the developer intended, but a tool is something that I will adapt and modify to suit my own needs. In order to use them as tools, I prefer to know how they work so that I can use them in my own way. FreeBSD and jails meeet this need very well. There are just enough tools to get the job done that are well-documented and stable. This means that when I have a problem to solve, it is easier to find out the proper way to solve that problem. And probably the biggest attraction, changes to tools are well documented.
In order to modify something to suit my own needs, I need to be able to understand enough of how it works. This is where good quality documentation and write-ups are absolutely vital. I am not an application developer, and while I can read code, I do not grok the code. Especially code that is built on large toolkits.
As a result, I search the internet, hoping to find an example or tutorial buried somewhere. I hope that it was written:
- by a person and not churned out by a large language model,
- by someone who understands (not groks) the code.
- by someone who was forward thinking enough to make it clear which version of software and relevant dependencies they are writing about .
If I wanted to use the service as an appliance in the way that the developer intended, I’d happily rely on pre-compiled virtual machines or containers. But I dont. Ultimately, I want to be able to choose how the services run. Docker meets a need that I don’t have.
Jails offer this flexibility in the way that I prefer. I am happy to trade away the convenience of being able to get a swathe of services up and running in a short amount of time (e.g. through a docker compose script) for being able to understand how each service works together. This means that I can add services that are not available as containers or pre-compiled virtual machines, perhaps services that I create. It also means that I can customise the services to my own needs. Jails let me install the software that I can customise to my own needs. FreeBSD tools like Bastille make this easy.