2025-09-02

Deploying Authentik as the new, unified authentication solution for my homelab.


2025-08-31

Playing around with SSTV. Only at the audio level for now, yet to transmit the first Luna (the cat) on the amateur bands.

Luna pondering upon the network cable tester.

2025-08-30

Luna pondering upon the network cable tester.

2025-08-29

Spent the day operating the HF0CEBULA special event ham radio station, which was active for the duration of Cebula Camp 2025. I've made approx. 20 QSOs on the 2m band, which I'm quite proud of – the station made even more QSOs in total that day. Ironically, I think there was more interest in the station's operation (and ham radio in general) on-site from the attendees, than remotely, over the ham frequencies. Good times!

HF0CEBULA special event station.

2025-08-27

  • Reading about the music analysis and clustering algorithms in AudioMuse-AI.
  • Connecting my cloud VPS to the homelab via Tailscale.
  • Deploying a fresh instance of Prometheus and Grafana in the cloud. Used to have these on my K3s cluster, but it's not the best design in case of K3s issues.

2025-08-26

Spent the afternoon on 20/40M bands at the SP6PWT radio club. Operated the Yaesu FT-710. Made a couple successful QSOs: IU1RVT, SO8DON, ED5FS8, IT9DOR.

Making shortwave contacts at the SP6PWT radio club.

2025-08-24

Today it's just logs, without the dev.

Wooden logs in the mountains.

2025-08-23

  • TIL about exportify, an export/backup tool for Spotify playlists.
  • Troubleshooting invalid behavior of the Tailscale widget, when multiple instances are spawned in the same group.
  • Filed an issue with the Homepage project, regarding documentation site breakage – discussions/5707.

2025-08-21

Playing around with Homepage sources. Experimenting with feature enhancements for the Tailscale widget.


2025-08-20

  • Made a small docs contrib to the Truecharts Homepage Helm chart — #38666
  • Adding even more pretty lil' widgets to my Homepage instance.

In case you wondered, here's how you can escape environment variable interpolation in Homepage configs, within Helm manifests:

              - Immich:
                  icon: immich.svg
                  href: {{`"{{HOMEPAGE_VAR_IMMICH_URL}}"`}}
                  widget:
                    type: immich
                    url: {{`"{{HOMEPAGE_VAR_IMMICH_URL}}"`}}
                    key: {{`"{{HOMEPAGE_VAR_IMMICH_API_TOKEN}}"`}}
                    version: 2

2025-08-19


2025-08-18

  • Adding pretty lil' widgets to my Homepage instance.
  • Learned about this cool dot matrix printer font, the EPSON MX-80 — courtesy of Michael Walden.
  • Learned about ESO, the project which I've recently deployed to my homelab, is experiencing serious team capacity issues. I'm seriously considering signing up as a maintainer, but still need to weigh my priorities.

2025-08-17

  • Figured out why my K8s metrics server workload started failing recently — this will be a nice short post.
  • Deploying Homepage.
  • Deploying Grafana, Prometheus and Node Exporter to my VPS (on NixOS). Kudos to Xe Iaso for this guide!

2025-08-16

  • Migrated my Kubernetes secrets to ExternalSecrets (tokens, passwords, logins, etc.).
  • Added the Flannel CNI to my Kubernetes cluster.
  • Figuring out a better approach to homelab monitoring.
    • I'll probably migrate Prometheus and Grafana off of the homelab, onto the cloud VPS. That's where I plan to host my alerting system, so it makes sense to keep things close.
    • metrics-server is acting up on my cluster, looking into it.
  • Added some nicer CSS transitions to the blog.

2025-08-15

Finished deploying ESO with Bitwarden integrations. That Bitwarden guide is severely outdated, so I'm already planning to improve it.

After some initial NetworkPolicy shenanigans, I got my first ExternalSecret provisioned successfully, from the now Kube-connected Bitwarden Vault. I'm gradually migrating homelab secrets over there.

ClusterSecretStore K8s resource list

I'll probably also roll my own Docker image sources (and builds) for the Bitwarden CLI. Currently I've manually built a custom image, based off of charlesthomas/bitwarden-cli. I've submitted some improvements to it in the past, but the maintainer generally isn't very responsive. Once I create my own sources from scratch, the image will be exactly how I need it. Can't promise I'll respond quicker, but I'll definitely make time to intake repo activities once or twice per week. Fingers crossed, hehe 🤞.

And finally, since Bitwarden has access to sensitive data, it'd be nice to have the images signed. That's a good opportunity for hands-on experience with sigstore/cosign.


2025-08-12

Deploying External Secrets Operator.


2025-08-11

Deploying the Arr stack.


2025-08-10

Visited SP6PWT, the Student Radio Club of the Wroclaw University of Science and Technology.

SP6PWT radioamateur club
SP6PWT radioamateur club — part of the antenna system

2025-08-07

Learning about PostGIS and Leaflet.


2025-08-05

Figuring out Intel iGPU passthrough for QEMU VM on PVE, to facilitate hardware video acceleration for my workloads dealing with video processing.


2025-08-04

For years I've used Spotify, but I'm unhappy about where it's headed as a service. I've decided to explore alternative, networked music player alternatives. This obviously poses a big challenge in terms of the library and content curation. Regardless, I'm going to start purchasing physical CDs from artists that I value, and then rip and ingest into my homelab. As a test run, today I've deployed Jellyfin.


2025-08-03

Finished building my ham radio power supply, everything is working as intended ♥️.

Testing my radio power supply

I'd still like to do some load testing, to ensure the connectors and wiring are solid, when conducting higher, sustained currents.


2025-08-02

Went to the local hackerspace to get some change of scenery at the end of the week. Intended to blog a bit while there, but got nerd-sniped by someone else's issues with a Wordpress plugin post-migration. While I was troubleshooting, they made a laser-cut depiction of my cat, Luna.

Shout out to wowkdigital!

Laser cut Luna and some other kitty

2025-08-01

Printed the enclosure for my ham radio power supply, wiring is in progress.

Work in progress on wiring my custom ham radio power supply

2025-07-31

Xiegu G90 comes with a single-fuse power supply cable (positive rail). That's nice of the manufacturer to do, but it's not enough to protect from certain failure modes. To alleviate this risk, I've added another (littel)fuse, to the ground wire. Don't be fooled by the red insulation – the fuse socket came pre-wired and sealed, so I had to cut a piece of the original black cable out 😉.

Added a second fuse to my Xiegu G90 power supply cable

K0NR shared a nice write-up on when and why you might wanna have two fuses (one on each lead), instead of one.


2025-07-30

Writing a post on my homelab rack display (continued).


2025-07-29

Finished rewiring and mapped out the hardware on my modded Petlibro PLAF101. Luna (the kitty) provided valuable feedback throughout the process.

Modded Petlibro PLAF101 internals

2025-07-28

Figuring out how to properly drive the motor and detect axis rotation increments. Will need to add more modwires, since the motor was definitely connected to the underside pins of the WBR3, which the ESP-12E does not have.

ESPHome logs screenshot depicting button binary sensor events

2025-07-27

Flashed ESPHome onto the modded Petlibro PLAF101 board. Configured the basics, mapped out buttons and LEDs.

ESPHome logs screenshot depicting button binary sensor events

2025-07-26

Built a custom ISP harness for the Petlibro PLAF101 motherboard. Soldered an ESP-12E module in place of the original WBR3.

Custom ISP harness for Petlibro PLAF101 with ESP-12E

2025-07-24

Writing a post on how I built my homelab rack display.


2025-07-22

Finally repaired my ZFS storage pool. Turns out the USB3/SATA adapter was acting up, leading to random IO issues, and the disk eventually going offline.

Replacing the adapter solved the issue. This result is in line with the lack of SMART errors and no bad blocks detected during full-surface read testing without the adapter. If it was the disk at fault, the failures would have occurred in both environments (regardless of the adapter).

USB3/SATA controller chip – JMS578

The original adapter board has a JMicron JMS578. Initial analysis shows that adapters using this chip tend to be flaky in terms of power management, disk enumeration, and SMART support. This can be improved by flashing alternative firmware [1]. It's certainly an interesting avenue, but it's not a priority to me at the moment.

Questions:

  • If it was the JMS578 firmware at fault, why didn't this fail earlier?
  • I've seen the same behavior with a different unit of the same exact adapter model, how likely is it that both are defective and exhibiting the same behavior?
  • I've had this hardware setup for almost a year now. Perhaps a recent hypervisor's kernel update caused an interoperability regression?

2025-07-21

  • Studying for my ham radio exam.
  • Ordered replacement parts for my main virt server:
    • new SSD for the ZFS storage pool,
    • new external 2.5" USB3 disk enclosure.
  • Tweaked blog Zola macros to sort recent posts by update date, instead of creation date.

2025-07-20

  • Learning shortwave propagation theory.
  • Investigating IO instability issues with one ZFS storage pool disk on my main hypervisor.

2025-07-19

Modding the server PSU

Designing a front enclosure for my HSTNS PL-28 server PSU.

Server PSU enclosure design

2025-07-17

Attending an antenna theory workshop at my local radio club (SP6HACK).


2025-07-16

Finished the lil' dashboard display

Next up:

  • dedicated Grafana dashboard and possibly a playlist;
  • Fully Kiosk browser screen dimming and motion detection configuration.

I'll do a full writeup once I complete this project.

Nokia G22 modded to a dashboard display, installed on a small 10″ server rack

2025-07-15

Designing a surface mounted holder for the modded phone

I've decided to surface mount this phone to the glass door of my homelab's rack. Working on a design to enclose the whole device (with the mods).

Nokia G22 mount design in progress

2025-07-13

Modding Nokia G22 to operate without a battery

I wanted a compact homelab dashboard, but didn't want to implement a custom embedded solution from scratch. I'm modding an old, defective smartphone to operate solely on external power.

Nokia G22 mount design in progress

2025-07-12

Planning the jailbreak strategy for my Petlibro PLAF101 pet feeder

At first glance, the on-board WBR3 module seems electrically compatible with an ESP8266. I'll pursue this avenue, since it would enable the usage of ESPHome. Looks like people have done it before with other devices!

Xiegu G90 HF transceiver in operation

VLC playback issues on Arch Linux

Encountered x264 playback issues in VLC after upgrading on Arch Linux. It appears the vlc package moved plugins into optional packages, which were not explicitly required on my system. Namely the ffmpeg backend plugin, which facilitates x264 decoding.

  • Minimum viable remediation: pacman -S vlc-plugin-ffmpeg.
  • All-in-one fix for other plugins: pacman -S vlc-plugins-all.

Xiegu G90 stand

Printed this stand for my Xiegu G90:

Xiegu G90 HF transceiver in operation

2025-07-11

Xiegu G90 Speaker Deflector

Printed a speaker deflector for my Xiegu G90.

Xiegu G90 speaker deflector

HF rig planning

Planning the at-home power supply for my HF station.

  • During initial tests, the observed current draw at full TX power didn't exceed 4,5A at 13,8V.
  • The unit's manual recommends a supply of at least 8A.
  • I hoped to use my bench PSU, but I misremembered it having a current capacity of 10A, while it's actually 5A. This technically might be enough, given the measurements, but a 4,5A load is awfully close to the limit, and I'd rather not run the PSU that hot on a regular basis.
  • As a long term solution, I've ordered a used 460W server PSU. These are built like tanks and are very cheap – I got mine for just $10. I'm planning to modify it into a 13,8V supply, since HF radios typically operate optimally at that voltage. I'll do a separate write-up on this project once it's finished.

2025-07-10

Got my first HF transceiver! I'm learning to operate it at my local radioamateur club, since I don't have an antenna rig at home (yet).

Xiegu G90 HF transceiver in operation

2025-07-08

Reworking my off-site backup strategy for Kubernetes PVCs.


2025-07-07

Slamming my head against a wall Setting up Nvidia drivers on Arch Linux (btw) for Nvidia RTX4070.

  • Turns out my only HDMI output just refuses to work with the proprietary drivers (575.64.03-2), whereas the DisplayPort outputs work just fine.
  • Followed the official Arch Linux guide for Nvidia, and installed nvidia, nvidia-settings, nvidia-utils.
  • Running kernel linux-lts, which at the time of writing is 6.15.5-arch1-1.
  • I doubt the HDMI issue is rooted in hardware, since it works just fine in BIOS and when booted with nouveau.

2025-07-06

Observed an issue with my Tailscale setup on OPNsense, where it kept losing its Tailnet connection shortly after startup. No clear indication of failure in the logs. I've been previously using the FreeBSD ports implementation and later switched to the recently added, official OPNsense Tailscale plugin. It's possible that any combination of the following would've sufficed, but here's what I did to remediate:

  • ensured the old install is removed from the system and does not attempt to start alongside (possibly conflicting with) the new plugin (like a system service);
  • deleted /var/db/tailscale;
  • reconfigured the Tailscale plugin with a fresh auth key.

2025-07-05

Fixing/improving the Apollo theme for Zola: 1, 2, 3.


2025-07-04

Made my first international shortwave radio contact (20m band) 🎉. Direct comms from Wrocław to Spain, over at the Hackerspace Wrocław club (SP6HACK).


2025-07-02

Migrating site theme from Terminimal to Apollo.


2025-07-01

Ensuring Kubernetes workloads shut down gracefully, on my single node cluster, during scheduled backups. I'll make a brief post out of this.