TrustView: A Self-Hosted SSL Certificate Dashboard for Your Homelab

Every homelabber and small-ops admin knows the moment: you browse to one of your own services and get slapped with a full-screen certificate warning. The cert expired three days ago. Nothing told you. Now you’re renewing it under pressure instead of on a schedule. I got tired of that moment, so I built TrustView — a lightweight, self-hosted dashboard that…

Read More »

Restoring a Classic: The All-New PHP Pick ‘Em for the 2026–2027 NFL Season

Regular readers know I have a soft spot for restoration projects. Usually that means a creased instruction manual, a worn 78rpm label, or a database that hasn’t been opened since 2007. This time, the restoration project was software: Kevin Roth’s original 2013 PHP Pick ‘Em, the free web application that let anyone self-host a weekly NFL football pool. The original…

Read More »

Debian 12 (Bookworm) → Debian 13 (Trixie) Upgrade Guide

Debian 12 (Bookworm) → Debian 13 (Trixie) Upgrade Guide Debian 13 “Trixie” has been stable since August 9, 2025. It ships kernel 6.12 LTS, Python 3.13, GCC 14.2, and is supported until 2028 (LTS to 2030). Debian 12 is now oldstable. Only the 12 → 13 jump is supported. There is no clean downgrade path back to bookworm — recovery…

Read More »

Python Virtual Environments on Debian 12

Notes on setting up and managing Python virtual environments on Debian 12 (bookworm), including what to do with a venv copied from another machine. System Python Debian 12 ships Python 3.11 as the system Python. There is no python3.12 package in the bookworm repos (3.12 arrives with Debian 13). python3 –version # Python 3.11.x Copied Venvs Don’t Work If a…

Read More »

Compressing PNG and JPG Images from the Linux Command Line

WordPress generates a small mountain of image files over the years — originals, plus a thumbnail for every registered image size. Before (or after) cleaning up the sprawl, it pays to compress what you keep. Here’s the toolset for PNG and JPG on the command line, covering both Debian and Enterprise Linux 8 (RHEL/Alma/Rocky). PNG Tools Several tools, two categories:…

Read More »

NUC Audio Failure After Reboot — Debian 13, PipeWire, and the Missing Session

The Problem An Intel NUC running Debian 13 had been playing music continuously for weeks without issue. One morning the music stopped. A reboot did not restore audio — the system came up normally, but no sound played. Environment Intel NUC, Realtek ALC283 codec (HDA Intel PCH), analog output + 3 HDMI outputs Debian 13 with LightDM and a desktop…

Read More »

Chasing Down Phantom Swap Usage: When Gunicorn Hides in Swap

A long-running app server was sitting on nearly 2 GB of swap with a swappiness of only 30. Nothing felt slow, but the number looked wrong. This is a walkthrough of how I traced it from “the swap looks full” to a concrete one-line fix in the service definition — and a reminder that resident memory only tells you half…

Read More »

SSH logins hang after sshd restart — duplicate sshd masters / notify timeout EL8

Symptoms New SSH connections hang immediately after the TCP connection is established. The client shows the connection open and then stalls before the server banner (e.g. stops right after Local version string … with ssh -vvv). The same hang occurs over loopback (ssh user@127.0.0.1), confirming the problem is local to the host, not the network or the client. sshd logs…

Read More »

Modernizing a Legacy WordPress Database to InnoDB and utf8mb4

Modernizing a Legacy WordPress Database to InnoDB and utf8mb4 Many long‑running WordPress sites still use a mix of MyISAM tables and legacy charsets such as utf8/utf8mb3 or even latin1_swedish_ci. Updating these to InnoDB and utf8mb4 improves reliability, Unicode/emoji support, and consistency across environments. This article describes a practical, repeatable process using a sample database named example, but the same steps…

Read More »

How to install npm on Ubuntu 24.04

Using NVM (Recommended for Developers) Node Version Manager (NVM) lets you install and switch between multiple versions of Node.js and npm on the same machine — useful when different projects require different Node versions. Download and run the NVM installation script: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash Apply the changes to your current shell session: source ~/.bashrc Install the latest Long-Term…

Read More »

Duo Unix on EL8: Why You Shouldn’t Mix EPEL and Duo Repositories

There are a couple of valid methods, but don’t do what I did and mix them. If you install Duo two-factor authentication for Unix systems. There are four files that are needed and differ in the approach on how they are installed pending on the path you had taken.  Once again, I stress, don’t mix them. The four files, pam_duo.so,…

Read More »

Powershell Script to write M3U playlists

Nearly 20 years ago, I came upon a VB script that would recursively traverse through a folder tree and create a M3U playlist for each folder respectively. I slightly modified the script over the years to fit my requirements, and have since ported it to PowerShell. This script will look for MP3 and WMA files and create a M3U playlist…

Read More »

How to Switch from a Microsoft Account to a Local Account in Windows

If you’d prefer not to sign in to Windows with a Microsoft account, you can switch to a local account at any time. Once you’ve made the switch, the option to remove the Microsoft account entirely will become available. Step 1: Switch to a Local Account Open Settings with Win + I Go to Accounts → Your info Under Account…

Read More »

ProjectSend Install Script

ProjectSend is a self-hosted file sharing application for users or clients that avoids handing control over to a third-party service. It runs on standard web infrastructure, keeps data local, and focuses on managing uploads, access, and downloads in a straightforward way. The accompanying install script exists for the same reason. Instead of locking the system to a specific PHP release…

Read More »

Installing Go (Golang) Properly on Rocky Linux, RHEL, AlmaLinux, and CentOS

When installing Go (Golang) on Enterprise Linux systems, the default package repositories are usually behind the official Go release cycle. This can cause compatibility issues when compiling modern projects or building statically linked binaries. This guide walks through a proper, official installation method using the Go project’s own binaries. The result is a clean, system-wide Go installation that is safe…

Read More »

Proxmox: List all Running VMs with IPs

This shell loop queries Proxmox for the IPv4 addresses of all currently running virtual machines by leveraging the QEMU Guest Agent. It first lists running VMs using qm list, extracts their VMIDs, and then iterates over each one. For every VM, the command qm guest cmd <vmid> network-get-interfaces asks the guest agent inside the VM to report its network interfaces…

Read More »

Migrating Virtual Machines from VMware to Proxmox

What to Fix After Migration — and Best-Practice Proxmox VM Settings Migrating virtual machines from VMware to Proxmox is usually straightforward: convert the disk, boot the VM, and confirm it runs. But a VM that boots is not necessarily a VM that is correct, stable, or future-proof. This article documents real-world migration issues and the correct cleanup process after moving…

Read More »