This is a brief (2025) overview of my Syncthing setup and the method to the madness when it comes to synchronizing data across multiple computers with some phones thrown in to the party. It is a little different from other solutions such as Google Drive or Dropbox as the data rests (is stored) locally on my NAS instead of the cloud.
Continue readingCategory Archives: Uncategorized
How I Use Ansible (2025)
As I am nearing 100 commits on one of my Ansible repos, I figured that it would be a good time to share how I use Ansible to configure VPSes, VMs and LXCs at home and in the lab, and at work.
TL;DR: Configuration files and tasks are documented which is helpful for when I configure a service and not look at it for months at a time. Also, regularly committing changes to the roles and playbooks also serves as a log of what I did and sometimes why certain changes made sense at the time.
Continue readingThings Learned While Rebuilding My Proxmox Cluster
I have (somewhat) rebuilt my Proxmox cluster and learned a couple things while doing so: an approach to migrating VMs/containers to a new cluster and renaming storage pools.
Continue readingUnable to play audio on GNOME and Firefox
A while ago I was unable to play audio on GNOME and Firefox running on Arch Linux. When I tried to play a video on YouTube, the video would just pause. To get things immediately working was to toggle my audio devices from the onboard audio interface to an external audio interface and then back to the onboard audio interface. Another workaround for the time being was to toggle the device’s profile via pavucontrol.
This affected both my desktop and recently my T460s laptop. This issue popping up on my laptop was almost problematic as I was using laptop as a playback device for live sound. Luckily I was able to set the playback interface in Audacity and get through it for the time being.
At some point, something in the stack decided to go all in on PipeWire and I missed the memo. Per the ArchWiki, it turned out that I needed to install pipewire-pulse. What slowed things down was that I had to remove pulseaudio-bluetooth first which did not necessarily make sense to me at first since my desktop does not have Bluetooth capabilities.
TL;DR
If your Arch Linux stack has gone all in on PipeWire and media playback is not working as expected, there is a chance that pipewire-pulse needs to be installed, replacing pulseaudio. If you are blocked by pulseaudio-bluetooth, remove that first.
wAP ax 5 GHz Wi-Fi not appearing on devices
Recently, I picked up a MikroTik wAP ax access point (wAPG-5HaxD2HaxD) because I wanted something that is not UniFi. Out of the box, the 5 GHz Wi-Fi was not visible to most devices at my place including a Pixel 3a, iPhones, and ThinkPads. On the other hand, my Pixel 7a connected without issue. Strange …
Continue readingBinding container port(s) to a specific IP address
By default, when one publishes a port for a container, all interfaces (IP addresses) listen for traffic on that port. There may be instances where we only want to publish the port on a specific IP address.
Continue readingContainerizing my PHP application from the 2010s
I have a PHP application I started writing back in 2010 and worked on it until 2016. Years later, I want to containerize the application since that is what we do. Also, I want to revisit the application and make some improvements. When I first started the project, the development landscape was a lot different back then which also includes tooling.
Continue readingConfiguring Pi-hole v6 with a TLS certificate
Pi-hole v6 was recently released and adds support for HTTPS. In /etc/pihole/pihole.toml under the webserver.tls configuration block, the documentation mentions that Pi-hole expects the certificate and the key in the same .pem file.
My 2025 updated approach to organizing photos
Taking photos is fun, but organizing them might not be as much fun. Here is a snapshot of my approach to ingesting and organizing photos.
Continue readingRunning a reverse proxy to serve services on the Internet
I have the occasional need to make a local/self-hosted service be reachable on the world wide web. However, I do not want to host them on my cloud VMs for reasons such as:
- RAM: I am currently using the lowest-priced tier of VMs, which means that I get only 1 GB of RAM
- Storage: For the similar reason as RAM, my disk is 25 GB
- CPU: Having access to more than 1 core would be nice
Although the easy answer is to provision a bigger VM, I have a small Proxmox cluster that is more than capable of running VMs and (LXC) containers with access to more compute, RAM, and storage. Also, running them in separate instances is also great for separation.
While services like Tailscale Funnel or Cloudflare Tunnel exists, I wanted to roll my own as a learning exercise.
Continue reading