My previous attempts to have a network infrastructure that was reliable, worked and that I could call truly in-house had been ultimately foiled, and I had surrendered to the idea that I could not have Nice ThingsTM.
Then, I had the temerity of asking AI about this years-long frustration of mine. It suggested I attempt the same setup under FreeBSD. Wary, I dawdled, diddy-dallied, postponed, dithered, and procrastinated; until I finally yielded to temptation and took the plunge.
I had been running an Artix workstation as a streaming server of sorts. This was taken down, as that machine was reformatted and FreeBSD 15.1 was installed into it. Then, DNS was deployed, and Kea DHCP for IPv4 and IPv6.
My biggest fear was that I would lose TV, which is delivered through boxes connected to the Internet. In the past, the system was IPTV-based, through subnets and multicast, apparently. With the advent of Google TV, this changed radically, and the infrastructure on the ISP side was greatly simplified to be straight IP streaming, which in turn allowed me the freedom to do what I had always wanted to do — a fully in-house dual-stack DNS resolver, IPv6 route advertiser and DHCP server for IPv4 and IPv6.
Each server is a FreeBSD jail, which reduces the attack surface. Security done transparently with no container nonsense.
for DNS, I opted for a two-view structure. The external view, the one exposed to the Internet, is non-recursive so as not to allow DNS amplification attacks. The internal view is recursive and is capable of automatically assigning hostnames to DHCP clients.
For DHCP itself, I chose Kea as my server; it is a viable alternative to the ISC DHCP server and will probably replace it eventually — both Kea and DHCP were created by ISC, like DNS.
My miggest source of frustration, though, was the absence of a FreeBSD port of AzuraCast. I had attempted to run simple Icecast and ezstream, but I had… issues with the setup. So, I turned to AI to help me solve the problem.
Yes, I am going to Hell, I don’t care.
Azuracast, as it turned out, was largely portable to Unix. Two things made it difficult to port cleanly: Docker and Liquidsoap.
Docker is Linux’s container solution. It has its idiosyncrasy, and as it turnes out, FreeBSD has something that works as well as Docker, or even better: Jails.
a FreeBSD jail is, in essence, a virtual machine. It can be used to tun a sensitive daemon in isolation, for example; that is the approach I took to build AzuraCast for FreeBSD. It was not free of problems, but eventually I got AzuraCast to work in FreeBSD, with an acceptably good performance, no latency, and very good stability.
Liquidsoap was a different animal altogether.
Liquidsoap is the “glue” htat drives AzuraCast. it is an OCaml scripting language that as of today is no longer supported in FreeBSD. So, I had to look for an alternative, otherwise, no music would be streamed.
The alternative was to create the Liquidsoap functionality in Rust. Once again, AI came through for me and crafted a music engine whose configuration can be changed via a .toml configuration.
I also added the possibility of connecting to separate jails for the AzuraCast database and Iecast.
So, the results are in. I have been running a local, on-metal instance of AzuraCast within a FreeBSD jail for my music needs.
I was not very happy about the fact that FreeBSD has no Second Life viewer; so, taking a page off Megapahit, I forked its source and set out (with the help of AI) to apply it to Firestorm. It was grueling; it was glorious; it was entertaining, educational, and all of this made me rediscover the joy of computing.
So, now I have a fully functional BSD port of Firestorm that runs and uses a few alternative backends (Grok for image processing, SoLoud for sound, and meshsimplify for mesh calculation.)
Like I said before, I don’t care about those who say I am evil and lazy because I used AI to help me achieve my objectives. The model did its job competently, educated me in the process, and fulfilled a real need I had. Does it have its risks? yes. Is it a massively disruptive technology? Absolutely. Does it democratize access to computing and serve a real need? Yes, it does. I’ll take the win and move on.
Like I said — it has been a fun journey, and now I have some proper Unix geek bragging rights.
