Skip to content

Instantly share code, notes, and snippets.

Composition: Renovate Story

Explainer video detailing the transition from manual homelab maintenance to an automated, self-hosted Renovate workflow.

Technical Context

  • Platform: K3s Cluster
  • Automation Engine: Self-hosted Renovate (CronJob)
  • Manifest Management: Static rendering via Kustomize/Helm
  • Rendering Framework: HyperFrames + GSAP
FROM node:22.14.0-bookworm
RUN apt-get update && apt-get install -y --no-install-recommends \
ffmpeg \
chromium \
fonts-liberation \
libnss3 \
libatk-bridge2.0-0 \
libx11-xcb1 \
libxcomposite1 \
@tcaddy
tcaddy / README.md
Last active September 9, 2024 14:40
Golang text/template for parsing a redis database URL

Golang text/template for parsing Redis database URL

This is backup docs for this Go Template Playground setup: here

The idea is that we want to use External Secrets Operator to parse a secret that happens to be a Redis dat

@tcaddy
tcaddy / bluetoothctl.py
Created July 2, 2024 01:00 — forked from castis/bluetoothctl.py
Bluetoothctl wrapper in Python
# Based on ReachView code from Egor Fedorov (egor.fedorov@emlid.com)
# Updated for Python 3.6.8 on a Raspberry Pi
import time
import pexpect
import subprocess
import sys
import logging
@tcaddy
tcaddy / Gemfile
Created January 9, 2024 23:50
getport.io Webhook validation in Ruby
source "https://rubygems.org"
gem "functions_framework", "~> 1.4"
@tcaddy
tcaddy / README.md
Created August 29, 2022 01:55
BirdNet Pi Setup

Overview

This is an explanation of my BirdNET-Pi (https://birdnetpi.com/) hardware installation.

Details

The idea is to have minimal hardware outdoors (a microphone) and keep the rest indoors where it is easier to manage and keep climate controlled. I had an existing CAT5 cable running from my computer area to an outdoor telco box. It was used for an old DSL install. I used the telco box to house a CAT5-to-XLR adapter and most of an XLR omnidirectional lavalier microphone, with the tip of

@tcaddy
tcaddy / ping_gateway.sh
Last active September 23, 2020 19:53
ping_gateway
#!/bin/sh
# See https://serverfault.com/a/31179
gateway=$(route -n | grep 'UG[ \t]' | awk '{print $2}')
echo "Pinging Gateway IP: $gateway"
echo "Press CTRL + C to cancel"
ping $gateway
@tcaddy
tcaddy / folderify_mp3s.rb
Created August 20, 2020 20:57
Put mp3s in folders based on id3 tags for artist and album. Create filenames based on disk #, track #, and title from id3 tags.
#!/usr/bin/env ruby
begin
require 'fileutils'
require 'id3tag'
require 'pry'
class FolderifyMp3s
REGEX = /\(|\)|\/|\\/.freeze
def call
@tcaddy
tcaddy / example.rb
Created October 25, 2019 18:12
GMail usage example
callback = lambda do |result, err|
if err
# handle error
else
require_relative './mail'
mail = ::CheckEmail::Mail.new(result)
end
end
@tcaddy
tcaddy / .gitconfig
Created May 9, 2018 18:10
dot files
# This is Git's per-user configuration file.
[user]
# Please adapt and uncomment the following lines:
name = Firstname Lastname
email = user@domain.com
[color]
ui = auto
[rebase]
autosquash = true
[alias]