#weeklyreview 25/2025
COVID
Finally got me. After ditching it (at least according to tests) for the whole pandemic I finally watched COVID last week. The first two days were the “worst”. Felt like a flu for me. But fortunately subsided quickly just leaving a bit of sniffles and occasional coughing. But the annoying part is, that I’m still testing positive. So have to confine myself to home office and wear mask all around to not spread the stuff. Let’s see how long this takes…
Wallabag
Since Mozilla is shutting down “Pocket” many people are seeking alternatives. I stopped using Pocket ages ago and instead was using LinkDing for my bookmarks. But there seems to be an additional use case in Pocket that people like… the reader view. And since my dear friend Slamr is looking for a Pocket replacement I took a look at Wallabag as recommended by Gemlog.
There is a docker container… so how hard can it be to install …
As usual… harder than one expects… The default installation comes with its own Database container. But I’m using a central DB container and don’t want to give the Wallabag app the full root permissions. So I had to create the database manually myself upfront (described in this issue: https://github.com/wallabag/docker/issues/412 ). That was the easy part. Now the app also needs to send eMail. They are using the PHP Symfony framework for sending eMail and that’s using a single string for username, password and host of the Mailserver. Yes, that’s technically possible…but comes with a whole lot of challenges. All the special characters of a password will need to be URL escaped. Since that String needs to be passed from Docker compose to the Containers ENVIRONMENT and then be parsed by PHP to be eventually used for the actual connection there is a lot of moving parts that need handle these strings correctly. Took me a while to find https://github.com/wallabag/wallabag/issues/6927 which tells me that one has to double escape “%” … quite annoying.
So the rule is… special characters need to be URL encoded. That would make an @
look like %40
and a blank space like %20
. Now the literal %
is also a special character for SYMFONY and needs to be escaped with a %
in front. So an @
for the Wallabag DSN string in the Docker config would look like %%40
But now Wallabag is working. The web interface is a bit simple, but works. The mobile client for the iPhone is nice though and offers an optional (payed) AI integration that suggests tags automatically and also provides summaries. One click saving of URLs from the Browser via bookmarklet and also from the iPhone share dialog forks nice.
What’s also pretty convenient is that Wallabag provides its own ATOM feed that one can use to consume with your favourite RSS reader. I’ve integrated that into my FreshRSS setup.
Gemma3 no Vision
With a school intern we were playing around with image description generation using local #LLM tools (Ollama) and Python Flask. I spend quite some time filling around with the Gemma3 model as that supports text and vision and was small enough to fit into the memory of the MacBook Air of the school intern. Gemma did provide image description… but they were always wildly off and totally made up. Didn’t had anything to do with the actual image content. No matter how I massaged the prompt to avoid hallucination Gemma would happily make up random image descriptions. Very weird and scary. We eventually found moondream:latest model which is small and does a good enough job.
Apple Containers + Pihole
Apple recently released their own Container engine for macOS which can consume OCI images. So far containers do not run natively on macOS. Docker Desktop uses the trick of bringing up a single virtual machine under the hood and run the containers inside that VM. This comes with a whole bunch of limitations when it comes to networking and volumes. Despite the fact that it’s a commercial app.
Apple uses a different approach. The support for OCI images is a big step forward. The containers obviously still do not run natively on macOS as the OS kernel is too different. But Apple now starts a very lightweight virtual machine for every container. This allows the use of x86 Docker images as well as Rosetta takes care of the translation. It consumes less memory than the Docker Desktop approach and is pretty fast as well.
I’ve wanted to give this a try although it’s still in a very early stage. I’m constantly running a virtual machine via UTM with a Pihole instance to have ads and trackers blocked. I thought it would be nice to just use the official Pihole Docker container for this purpose.
The installation of Apple Container is pretty straightforward. Just download the pre-compile package from https://github.com/apple/container/releases/tag/0.1.0 and follow the instructions on their README.
The hurdle I had to take was reconfiguring the container networking so I can actually reach the user interface of Pihole. Moellus pointed me into the right direction here. For some reason the container network was not bound to the bridge interfaces on my host. I had to reconfigure that and now it’s working.
Just pulled the Pihole Container and started it. Works
Hetzner Object Storage
pondering about the cost of my network setup again. I’m running the object storage for some of my services (Mastodon, Pixelfed, Bookwyrm) on my home server connected to my Synology NAS. As I have still plenty of disk space on the NAS and additional disk space at Hetzner is relatively expensive. But of course it’s annoying when the images are temporarily gone whenever my DSL provider at home has a hiccup. So was looking at Hetzner Object storage. For about 6 EUR/month I’d get 1TB of storage and 1TB of data transfer. That’s actually more than enough for my current usage. I’ve got around 500GB of object storage usage currently on my Minio setup. The traffic is much less than that according to my FritzBox stats (which also includes all other network traffic we cause in the household).
So the big question is, is the 6 EUR/month cheaper than the existing home setup? According to my measure the server + the NAS and FritzBox are consuming around 100W. That doesn’t sound much… but this run’s 24×7. It sums up to 2.4kWh per day … 365 days. At a price of about 0,39 EUR/kWh I’m clocking in at ~ 340 EUR/year. That’s roughly 28 EUR/month ….
So I’m looking into moving that to Hetzner now. First steps are done, but I’m still struggling to get the Reverse Proxy properly talking to the Hetzner endpoints. Still getting an access denied via the ReverseProxy, while a direct access to the Hetzner Endpoint via cURL works fine. So it’s not an object permission problem. Must be something weird with the Headers.
Cleaning Up
Needed to clean up the spare room for have in our big flat in Berlin. Will rent that out for the next year as it’s a waste of space and we can use the money for #project25