Archive

All posts

616 posts latest post 2026-10-06
Publishing rhythm
Jun 2026 | 3 posts

I’m building a few FastAPI apps to throw in docker and run on my homelab… I wanted to add healthchecks and here’s a simple way to do it

Make sure to install curl in the dockerfile (near the top for effeciency)

# Install curl with minimal dependencies
RUN apt-get update && \
    apt-get install -y --no-install-recommends curl && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

Then I recommend making compose files even for single image deployments

services:
  app:
    build: .
    volumes:
      - type: bind
        source: .
        target: /app
    environment:
      - PYTHONPATH=/app
      - DOCKER_ENV=true
      - UV_VIRTUALENV=/opt/app-env
    user: "1000:1000"
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s

Then finally you’ll need a /health endpoint


@app.get("/health", response_class=HTMLResponse)
async def health_check():
    """
    A health check endpoint that returns a status message.
    """
    return "<html><body><h1>Service is healthy</h1></body></html>"

statically.io offers a CDN that I’m going to try to lean into for images in my blog. My hope is that the builds get and stay fast, and that page loads are fast too.

Example:


<img src="https://cdn.statically.io/gh/pypeaday/images.pype.dev/main/blog-media/skimpy-zsh.png" alt="Skimpy ZSH" title="A fancy data summary in the shell" />
Skimpy ZSH

I use LSIO Jelyfin container for the easy addon they provide for AMD GPUs but I couldn’t get trickplay to work with HWE…

There was almost NOTHING on the internet about the error, and all the threads were about BSD systems…

Thankfully someone posted on the formum here but the only answer was to literally upgrade stuff in the container…

Someday maybe I’ll build off of LSIO to add this, but until then I shell’d in and homelab’d the hell out of it

THIS IS INSIDE THE CONTAINER - I use Portianer to make it easy


apt update && apt install -y curl gpg

mkdir -p /etc/apt/keyrings

curl -fsSL https://repo.radeon.com/rocm/rocm.gpg.key | gpg --dearmor -o /etc/apt/keyrings/rocm.gpg

cat <<EOF | tee /etc/apt/sources.list.d/rocm.sources

Types: deb

URIs: https://repo.radeon.com/rocm/apt/latest

Suites: ubuntu

Components: main

Architectures: amd64

Signed-By: /etc/apt/keyrings/rocm.gpg

EOF

apt update && apt install -y rocm-opencl-runtime

The Flood Story - Types and Baptism

The Flood Story and Jesus Jesus brings up the Flood story from Genesis just one time (in the recorded teachings we have). First to set the scene, Jesus and his disciples are visiting the temple, and the disiples are kind of “ooo-ing” and “aaah-ing” when Jesus tells them about about the coming destruction… At one point in Jesus’ description of the destruction of the temple in Jerusalem, he brings up the Son of Man and Noah… Jesus says that the “coming of the Son of Man” will be like when Noah built the ark, and no one understood until the flood (κατακλυσμός | kataklysmos) came and took them away. In Jesus’ mind the flood narrative gives him imagery and vocabulary to talk about when God allows foreign powers to come and bring judgement… This isn’t an interpretation of the flood narrative, but it clues us into the idea that the Hebrew bible is full of imagery, like a quilt, that follows a (or several) pattern(s). I think sometimes we look at the flood and think God is so bad for taking ou…

The Flood Story - Quilt Analogy

The Flood Story in the Hebrew Bible I’m slowly making my way through some Bible Project classes online because Tim Mackie is a fantastic teacher and BP has done be a great service by opening my eyes to the reality of the Biblical narrative and what it means for my life of faith in Jesus. The second session is filled with great points and 10 minutes in I had to jot this one down… A Quilt as History # Imagine your grandmother’s grandmother made a quilt, and passed it down the family tree. In a sense, that quilt contains history that would pre-date you but would absolutely have meaning to you… However, you might look for meaning that was never intended to be present. The pieces of the quilt have their own history - there will be material that might’ve been part of a dress, or curtains, or bedsheets, or anything else someone in the family tree found interesting and meaningful for the story they are telling with their quilt. The question of what each of the pieces mean on their own, or in w…

I am moving a hefty amount of data to a new ZFS pool due to some corruption and I want to avoid using zfs send/recv for this just to make sure I don’t propagate any corrupted data to my new pool.

I’ve used rsync for simple things before but I needed this to be a little smarter and I wanted to see simple progress without flooding my terminal with a billion filenames.

TLDR #

TLDR: rsync -aHAX --chmod=Da+s --info=progress2 --inplace --exclude='encrypted/docker/frigate-media' /tank/ /harbor/

Explanation #

-aHAX: Preserves attributes (archive mode, hard links, ACLs, extended attributes). –chmod=Da+s: Ensures the setgid bit is applied to directories. –info=progress2: Provides detailed progress information, including overall data transfer stats. –inplace: Writes directly to the destination file, avoiding temporary files (useful for large files). –exclude=‘encrypted/docker/frigate-media’: Excludes the specified path (relative to the /tank root). /tank/ /harbor/: Ensures the contents of /tank are copied directly into /harbor.

Htop #

I recently have been having significant home server issues, and that’s not the point of this - today I learned what D state is when looking at htop.

htop-d

Apparently this means “uninterruptable sleep” and it’s a dev’s nightmare…

Context #

The issue I was having was that some zfs rollback commands were hung - for hours… I wasn’t sure what was going on, rollbacks should be instant but I figured it was just an artifact of these issues.

Turns out I still don’t know what locked the disks up but I learned why <C>-c did nothing… the more you know

Advent 2024 - Peace

Advent 2024 - Peace

Scripture # Luke 2:14 (ESV): 14 “Glory to God in the highest, and on earth peace among those with whom he is pleased!” Edification # There is a word we probably know - Shalom. It’s the Hebrew word we translate often as “peace”. But when I hear “peace” I often think about being calm - and that oversimplifies Shalom… I think a more appropriate understanding is “things are as they are supposed to be”. In the Garden, we see Shalom - the Lord partnering with humanity to steward the earth, to make things as they were supposed to be… You all know we messed that up, Shalom was broken and humanity was exiled. But we have a Great Healer. Jesus is Lord of all, King of Heaven and Earth, Ruler of your lives and mine, and he is the Prince of Peace Things in our lives are probably not often as they are supposed to be… We get sick, worry about bills, experience tragedy, and weather the storms of life. But there is hope - confident expectation - that peace already has been, and will continue to be, res…

hostnamectl is apparently a linux utility for easily changing your hostname in a variety of ways


❯ hostnamectl --help
hostnamectl [OPTIONS...] COMMAND ...

Query or change system hostname.

Commands:
  status                 Show current hostname settings
  hostname [NAME]        Get/set system hostname
  icon-name [NAME]       Get/set icon name for host
  chassis [NAME]         Get/set chassis type for host
  deployment [NAME]      Get/set deployment environment for host
  location [NAME]        Get/set location for host

Options:
  -h --help              Show this help
     --version           Show package version
     --no-ask-password   Do not prompt for password
  -H --host=[USER@]HOST  Operate on remote host
  -M --machine=CONTAINER Operate on local container
     --transient         Only set transient hostname
     --static            Only set static hostname
     --pretty            Only set pretty hostname
     --json=pretty|short|off
                         Generate JSON output

See the hostnamectl(1) man page for details.

I learned there’s transient and static hostnames, so that’s cool…

The thing I needed was hostnamectl --static hostname babyblue-aurora

pretty sweet tool

How To Survive The Flood

There a lot of flood stories throughout the history of the world, and the Bible is no different in this regard. God warns Noah of a de-creation event, whereby he’ll start over with humanity via Noah and his family. Noah survives the flood by abiding in Yahweh and staying close to the One who loves him. Note this reflection doesn’t address AT ALL if the flood narrative is a “real” historical event, whether it’s a global or local event, or anything like that - regardless of those points the Biblical authors used this type of imagery of chaos waters to communicate themes of judgement and wrath. Jesus, in the Sermon on the Mount with the 2 houses, calls back to the images of the chaos waters (the winds and the rains). His instruction is that the wise man who built his house on the rock will survive, but the foolish man builds his house on the sand and the winds and the rains destroyed it. Somewhat obviously this is metaphorical for basing your life on wisdom or folly. The wisdom is Jesus’…