I Built an Async Notification Flow That Called Back Into Itself

A reflection on an asynchronous notification design, why it became difficult to operate, and the alternatives I would consider now.

Aug 2025

Deploying Docker and Nginx configuration with Gitea Actions

A guarded CI/CD pipeline for validating and deploying self-hosted infrastructure as code

Dec 2024

Deploying Hugo automatically with Gitea Actions

A self-hosted CI/CD pipeline that builds, publishes, and verifies my Hugo site

Dec 2024

Building and serving a production Hugo site with Docker and Nginx

Fixing a minified Hugo build and separating source, output, and web-server paths

Nov 2024

Debugging Gitea SSH across Docker and two firewalls

A layer-by-layer method for diagnosing a published Git SSH port

Nov 2024

Upgrading Gitea and correcting its reverse-proxy configuration

Notes from upgrading a stateful Gitea container and fixing its public URL behind Nginx

Oct 2024

Cleaning and securing a spam-abused Gitea instance

How I removed unwanted users and repositories without corrupting Gitea's database

Oct 2024

Recovering a Docker host from a full filesystem

How I traced a Gitea outage to abandoned temporary uploads and recovered the server safely

Sep 2024

A self-host life

My notes on going self-hosted

Jan 2023