<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>davegallant.ca</title><link>https://davegallant.ca/</link><description>Recent content on davegallant.ca</description><generator>Hugo</generator><language>en</language><copyright>Dave Gallant</copyright><atom:link href="https://davegallant.ca/index.xml" rel="self" type="application/rss+xml"/><item><title>pvectl: A CLI for Managing Proxmox</title><link>https://davegallant.ca/blog/pvectl-a-cli-for-proxmox/</link><pubDate>Mon, 20 Jul 2026 13:00:00 -0400</pubDate><guid>https://davegallant.ca/blog/pvectl-a-cli-for-proxmox/</guid><description>&lt;p&gt;My home Proxmox cluster has grown into two nodes, a few dozen LXC containers, and a handful of VMs. Recently I&amp;rsquo;ve been exploring ways to make this experience more streamlined, especially when creating new containers, shelling into containers, running migrations, restoring from backups, etc. Usually when I need to do this, I either SSH into one of the Proxmox nodes or open up the GUI. When on a node, I usually run &lt;code&gt;pct&lt;/code&gt; or &lt;code&gt;qm&lt;/code&gt;, and then immediately run into the issue: which ID was the thing I actually wanted? Which node was it running on?&lt;/p&gt;</description></item><item><title>Using Home Assistant and Grafana to Monitor Radon</title><link>https://davegallant.ca/blog/using-home-assistant-and-grafana-to-monitor-radon/</link><pubDate>Wed, 25 Mar 2026 20:22:39 -0400</pubDate><guid>https://davegallant.ca/blog/using-home-assistant-and-grafana-to-monitor-radon/</guid><description>&lt;p&gt;I recently became more concerned about radon since I live and work in a basement daily. I decided to explore ways not only to monitor radon levels but also to hook up the metrics to my existing homelab.&lt;/p&gt;</description></item><item><title>Using a Realtek NIC with OPNsense</title><link>https://davegallant.ca/blog/using-a-realtek-nic-with-opnsense/</link><pubDate>Mon, 21 Apr 2025 17:17:46 -0400</pubDate><guid>https://davegallant.ca/blog/using-a-realtek-nic-with-opnsense/</guid><description>&lt;p&gt;For the past few years, I&amp;rsquo;ve been running pfSense (and more recently OPNsense) in a virtual machine within Proxmox. This has been running fine with a single onboard Intel NIC. A few months ago, I upgraded to a machine that has a CPU that supports hardware-accelerated transcoding, has more SATA ports, and has more PCI slots for future expansion. With the goal of having a dedicated NIC for WAN, I bought an inexpensive 1Gbps PCIe NIC (TG-3468) despite reading about some of the concerns around Realtek NICs (sluggish performance, driver instability, and in some cases system crashes).&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;ve been running a Realtek NICs reliably on Linux and Windows desktops, so I figured I could make it work without too much effort, but it turns out Realtek NICs really can be problematic when it comes to FreeBSD-based routers, and commonly documented workarounds did not solve my problems.&lt;/p&gt;</description></item><item><title>Replicating TrueNAS Datasets to SFTPGo over Tailscale</title><link>https://davegallant.ca/blog/replicating-truenas-datasets-to-sftpgo-over-tailscale/</link><pubDate>Thu, 17 Apr 2025 22:03:33 -0400</pubDate><guid>https://davegallant.ca/blog/replicating-truenas-datasets-to-sftpgo-over-tailscale/</guid><description>&lt;p&gt;I&amp;rsquo;ve recently spun up an instance of TrueNAS SCALE after salvaging a couple hard drives from a past computer build and decided I could use additional network storage for various backups such as Proxmox VMs and home directory backups.&lt;/p&gt;</description></item><item><title>Opting Out of HaveIBeenPwned</title><link>https://davegallant.ca/blog/opting-out-of-haveibeenpwned/</link><pubDate>Sun, 16 Feb 2025 21:15:07 -0500</pubDate><guid>https://davegallant.ca/blog/opting-out-of-haveibeenpwned/</guid><description>&lt;p&gt;Data breaches are a concern for anyone trying to live a life of relative privacy. Last month, PowerSchool informed its customers that &lt;a&#10; href="https://www.bleepingcomputer.com/news/security/powerschool-hacker-claims-they-stole-data-of-62-million-students/"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;hackers stole data of 62 million students&lt;/a&gt;. This may not have impacted you, but unless you have been practicing &lt;a&#10; href="https://inteltechniques.com/book7.html"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;Extreme Privacy&lt;/a&gt; techniques for decades, you likely have been impacted by a data breach in the past.&lt;/p&gt;</description></item><item><title>Amazon EBS CSI Driver with Terraform</title><link>https://davegallant.ca/blog/amazon-ebs-csi-driver-terraform/</link><pubDate>Sun, 07 Apr 2024 15:20:23 -0400</pubDate><guid>https://davegallant.ca/blog/amazon-ebs-csi-driver-terraform/</guid><description>&lt;p&gt;I recently configured the Amazon EBS CSI driver and found the setup with Terraform to be more effort than expected. I wanted to avoid third-party modules and keep it as simple as possible, while remaining least privilege.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;UPDATE: This approach can also be used for the aws-efs-csi-driver&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Setting Up Gitea Actions with Tailscale</title><link>https://davegallant.ca/blog/setting-up-gitea-actions-with-tailscale/</link><pubDate>Sun, 10 Dec 2023 17:22:11 -0500</pubDate><guid>https://davegallant.ca/blog/setting-up-gitea-actions-with-tailscale/</guid><description>&lt;p&gt;In this post I&amp;rsquo;ll go through the process of setting up Gitea Actions and &lt;a&#10; href="https://tailscale.com/"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;Tailscale&lt;/a&gt;, unlocking a simple and secure way to automate workflows.&lt;/p&gt;</description></item><item><title>Using AKS and SOCKS to Connect to a Private Azure DB</title><link>https://davegallant.ca/blog/using-aks-and-socks-to-connect-to-a-private-azure-db/</link><pubDate>Mon, 22 May 2023 16:31:29 -0400</pubDate><guid>https://davegallant.ca/blog/using-aks-and-socks-to-connect-to-a-private-azure-db/</guid><description>&lt;p&gt;I ran into a roadblock recently where I wanted to conveniently connect to a managed postgres database within Azure that was not running on public subnets. And by conveniently, I mean that I&amp;rsquo;d rather not have to spin up an ephemeral virtual machine running in the same network and proxy the connection, and I&amp;rsquo;d like to use a local client (preferably with a GUI). After several web searches, it became evident that Azure does not readily provide much tooling to support this.&lt;/p&gt;</description></item><item><title>Watching YouTube in Private</title><link>https://davegallant.ca/blog/watching-youtube-in-private/</link><pubDate>Sat, 10 Dec 2022 21:46:55 -0500</pubDate><guid>https://davegallant.ca/blog/watching-youtube-in-private/</guid><description>&lt;p&gt;I recently stumbled upon &lt;a&#10; href="https://yewtu.be"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;yewtu.be&lt;/a&gt; and found it intriguing. It not only allows you to watch YouTube without &lt;em&gt;being on YouTube&lt;/em&gt;, but it also allows you to create an account and subscribe to channels without a Google account. What sort of wizardry is going on under the hood? It turns out that it&amp;rsquo;s a hosted instance of &lt;a&#10; href="https://invidious.io/"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;invidious&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Virtualizing My Router with pfSense</title><link>https://davegallant.ca/blog/virtualizing-a-router-with-pfsense/</link><pubDate>Sat, 02 Apr 2022 18:50:09 -0400</pubDate><guid>https://davegallant.ca/blog/virtualizing-a-router-with-pfsense/</guid><description>&lt;p&gt;My aging router has been running &lt;a&#10; href="https://en.wikipedia.org/wiki/OpenWrt"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;OpenWrt&lt;/a&gt; for years and for the most part has been quite reliable. OpenWrt is an open-source project used on embedded devices to route network traffic. It supports many different configurations and there exists a &lt;a&#10; href="https://openwrt.org/packages/index/start"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;large index of packages&lt;/a&gt;. Ever since I&amp;rsquo;ve connected some standalone wireless access points, I&amp;rsquo;ve had less of a need for an off-the-shelf all-in-one wireless router combo. I&amp;rsquo;ve also recently been experiencing instability with my router (likely the result of a combination of configuration tweaking and firmware updating). OpenWrt has served me well, but it is time to move on!&lt;/p&gt;</description></item><item><title>Backing Up Gmail with Synology</title><link>https://davegallant.ca/blog/backing-up-gmail-with-synology/</link><pubDate>Sun, 13 Mar 2022 18:49:10 -0400</pubDate><guid>https://davegallant.ca/blog/backing-up-gmail-with-synology/</guid><description>&lt;p&gt;I&amp;rsquo;ve used Gmail since the beta launched touting a whopping 1GB of storage. I thought this was a massive leap in email technology at the time. I was lucky enough to get an invite fairly quickly. Not surprisingly, I have many years of emails, attachments, and photos. I certainly do not want to lose the content of many of these emails. Despite the redundancy of the data that Google secures, I still feel better retaining a copy of this data on my own physical machines.&lt;/p&gt;</description></item><item><title>Running K3s in LXC on Proxmox</title><link>https://davegallant.ca/blog/running-k3s-in-lxc-on-proxmox/</link><pubDate>Sun, 14 Nov 2021 10:07:03 -0500</pubDate><guid>https://davegallant.ca/blog/running-k3s-in-lxc-on-proxmox/</guid><description>&lt;p&gt;It has been a while since I&amp;rsquo;ve actively used Kubernetes and wanted to explore the evolution of tools such as &lt;a&#10; href="https://helm.sh"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;Helm&lt;/a&gt; and &lt;a&#10; href="https://tekton.dev"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;Tekton&lt;/a&gt;. I decided to deploy &lt;a&#10; href="https://k3s.io"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;K3s&lt;/a&gt;, since I&amp;rsquo;ve had success with deploying it on resource-constrained Raspberry Pis in the past. I thought that this time it&amp;rsquo;d be convenient to have K3s running in a LXC container on Proxmox. This would allow for easy snapshotting of the entire Kubernetes deployment. LXC containers also provide an efficient way to use a machine&amp;rsquo;s resources.&lt;/p&gt;</description></item><item><title>Replacing Docker with Podman on macOS (and Linux)</title><link>https://davegallant.ca/blog/replacing-docker-with-podman-on-macos/</link><pubDate>Mon, 11 Oct 2021 10:43:35 -0400</pubDate><guid>https://davegallant.ca/blog/replacing-docker-with-podman-on-macos/</guid><description>&lt;p&gt;There are a number of reasons why you might want to replace Docker, especially on macOS. The following feature bundled in Docker Desktop might have motivated you enough to consider replacing Docker:&lt;/p&gt;</description></item><item><title>Automatically Rotating AWS Access Keys</title><link>https://davegallant.ca/blog/automatically-rotating-aws-keys/</link><pubDate>Fri, 17 Sep 2021 12:48:33 -0400</pubDate><guid>https://davegallant.ca/blog/automatically-rotating-aws-keys/</guid><description>&lt;p&gt;Rotating credentials is a security best practice. This morning, I read a question about automatically rotating AWS Access Keys without having to go through the hassle of navigating the AWS console. There are some existing solutions already, but I decided to write a &lt;a&#10; href="https://gist.github.com/davegallant/2c042686a78684a657fe99e20fa7a924#file-aws_access_key_rotator-py"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;script&lt;/a&gt; since it was incredibly simple. The script could be packed up as a systemd/launchd service to continually rotate access keys in the background.&lt;/p&gt;&#10;&lt;p&gt;In the longer term, migrating my local workflows to &lt;a&#10; href="https://github.com/99designs/aws-vault"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;aws-vault&lt;/a&gt; seems like a more secure solution. This would mean that credentials (even temporary session credentials) never have to be written in plaintext to disk (i.e. where &lt;a&#10; href="https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;AWS suggests&lt;/a&gt;). Any existing applications, such as Terraform, could have their credentials passed to them from aws-vault, which retrieves them from the OS&amp;rsquo;s secure keystore. There is even a &lt;a&#10; href="https://github.com/99designs/aws-vault/blob/master/USAGE.md#rotating-credentials"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;rotate command&lt;/a&gt; included.&lt;/p&gt;</description></item><item><title>Why I Threw Out My Dotfiles</title><link>https://davegallant.ca/blog/why-i-threw-out-my-dotfiles/</link><pubDate>Wed, 08 Sep 2021 00:42:33 -0400</pubDate><guid>https://davegallant.ca/blog/why-i-threw-out-my-dotfiles/</guid><description>&lt;p&gt;Over the years I have collected a number of dotfiles that I have shared across both Linux and macOS machines (&lt;code&gt;~/.zshrc&lt;/code&gt;, &lt;code&gt;~/.config/git/config&lt;/code&gt;, &lt;code&gt;~/.config/tmux/tmux.conf&lt;/code&gt;, etc). I have tried several different ways to manage them, including &lt;a&#10; href="https://www.atlassian.com/git/tutorials/dotfiles"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;bare git repos&lt;/a&gt; and utilities such as &lt;a&#10; href="https://www.gnu.org/software/stow/"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;GNU Stow&lt;/a&gt;. These solutions work well enough, but I have since found what I would consider a much better solution for organizing user configuration: &lt;a&#10; href="https://github.com/nix-community/home-manager"&#10; &#10; &#10; class="link--external" target="_blank" rel="noreferrer"&#10; &#10;&gt;home-manager&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>What to Do with a Homelab</title><link>https://davegallant.ca/blog/what-to-do-with-a-homelab/</link><pubDate>Mon, 06 Sep 2021 01:12:54 -0400</pubDate><guid>https://davegallant.ca/blog/what-to-do-with-a-homelab/</guid><description>&lt;p&gt;A homelab can be an inexpensive way to host a multitude of internal/external services and learn &lt;em&gt;a lot&lt;/em&gt; in the process.&lt;/p&gt;</description></item><item><title>AppGate SDP on Arch Linux</title><link>https://davegallant.ca/blog/appgate-sdp-on-arch-linux/</link><pubDate>Mon, 16 Mar 2020 22:00:15 -0400</pubDate><guid>https://davegallant.ca/blog/appgate-sdp-on-arch-linux/</guid><description>&lt;p&gt;AppGate SDP provides a Zero Trust network. This post describes how to get AppGate SDP &lt;code&gt;4.3.2&lt;/code&gt; working on Arch Linux.&lt;/p&gt;</description></item><item><title>Search</title><link>https://davegallant.ca/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://davegallant.ca/search/</guid><description/></item></channel></rss>