Blog
When Syntax Errors Cause Nightmares
The problem with network upgrades is that we usually have an idea of what a successful upgrade implies in our head and we base our testing on it. Needed better connectivity and managment of the routers linking two sites, and all went well. Internet access was confirmed, upgraded speed was confirmed and all services exposed work. Queue the “five minutes later” meme, and random things started failing - Microsoft Store wouldn’t load, Minecraft wouldn’t connect, the Rockstar launcher would complain about no connectivity.
December 18, 2025
Vyos Script to Update DDNS Peers
Vyos seems like a great project but it’s documentation gives you an odd feeling as if you are looking at Lorem Ipsum stances. According to T4930 it’s supposed to support dynamic dns for wireguard peers but sadly it still doesn’t. So here we are, this script goes through a given list of peers and updates the config. Tested on 2025-11 Stream of Vyos. Revised Dec 16, 2025: Forgot to add the necessary exit at the end of the script. Without the exit statement, vyos keeps creating a new mountpoint on each script-template sourcing until you get the following warning: fusermount: too many FUSE filesystems mounted; mount_max=N can be set in /etc/fuse.conf
December 15, 2025
Incus: How to Add the Incus Agent to Vyos
Adding the Incus Agent to Vyos Stream 1.5-2025-Q2 is relatively simple. Note that this did not work for me with 1.4.3 LTS.
December 12, 2025
NGINX FPM Configuration for InvoiceNinja to fix mixed-content (http/https) load errors
Seems like putting InvoiceNinja behind a reverse proxy causes a lot of mixed-content errors on aspects of the site. This usually manifest themselves in assets, eg. pictures, not loading properly. and there are a lot of recommendations but the easieast is to just define the “fastcgi_param HTTPS “on”;” as seen below. This is the Ansible template I am presently using to deploy the NGINX configuration file
December 8, 2025
Headscale NGINX Reverse Proxy Configuration
Spent some time to get HAProxy to work with Headscale to no avail, so decided to use NGINX which never fails to disappoint. This is a verbatim copy of the Jinja2 template I use in Ansible, but just replace the items in {{ }} with your values.
December 6, 2025
Ansible get_url with regex to fetch the latest github release from a repo
This is the best I’ve come up with so far to get_url within Ansible to fetch the latest release from a Github repository. To customize to your needs, change the url portion to point to your desired repo (this one points to Duplicacy) and then adjust the “linux_x64” to a substring from the release files to narrow down what file you want.
November 23, 2025
Ansible Setting Ldap Server in Phpldapadmin
If you add this block to your Ansible playbook for phpldapadmin, it will inject the changes towards the bottom so that you can specify your own ldap server
November 20, 2025
Ansible Block to Add Miniflux Deb822 Repository
To install miniflux on Debian with Ansible, add the following task block
November 19, 2025
Using terraform/opentofu with versitygw
To use terraform or opentofu with versitygw, you need to enable the skip credentials validation via the STS API.
November 18, 2025