GitHub backup with Gickup and Forgejo

A large part of my work lives in my GitHub account codebude, which has grown over several years. It now contains around 70 repositories, public and private, including forks. You know the trade-off: a hosted account is convenient, but the copy still lives with someone else.
My goal is simple and concrete: every repository should be mirrored automatically to my own self-hosted Forgejo instance once a day. Not as a manual export I will eventually forget, but as a routine that keeps running while I am busy with something else.
That gives me a complete copy I can clone at any time, regardless of what happens to my GitHub account or the service. It does not prevent every possible kind of data loss, but it removes one important dependency.
First I will explain why I take this detour at all. Then we will build the workflow step by step with Gickup, Docker and […]

When Docker Is Faster Than the NAS

One morning, my backup tool failed for every GitHub repository it should mirror into my self-hosted Forgejo instance. The log contained ERR pkt-line 3: EOF git=push and Exiting with status=1. I first suspected the recently updated tool image. Plausible, quick to assume, and completely wrong.
The real cause was one layer below. Forgejo stores its repositories on the NAS, mounted into the container through NFS. My Docker host booted at 04:06:14, the Forgejo container started at 04:06:45, and the NFS mounts became active at 04:07:06, with the last one arriving at 04:07:16. Docker was faster than the NAS.
This order is dangerous because Docker resolves bind mounts when the container starts and creates missing source directories itself. If the mount point is only a local directory at that moment, Docker binds that empty directory. When NFS appears later, the host sees the real data, but the container remains attached to its local […]

llama.cpp in Docker on WSL2 with CUDA

In this guide, I will show you how I set up a local, OpenAI-compatible llama-server in Docker under WSL2 with CUDA acceleration, taking you from the basic arrangement to the first working request.
The finished setup runs llama-server in a container, uses the GPU through WSL2, and is configured with exactly one slot, -np 1, and at least 128k context. I need that size from my own experience because I run a coding agent such as OpenCode against it: smaller contexts trigger compaction too often and make the work tedious. A larger context would be nice, but it no longer fits into the VRAM of my setup. It is meant for one local workstation, not for a multi-user server where several people send requests at the same time.
Any client that speaks the OpenAI-compatible API can call the resulting endpoint, while the models run locally on your own machine instead of in […]

How I start Spotify on any Alexa with Home Assistant

At home, my music comes from Spotify Premium, and most of my playback devices are Amazon Alexa devices.
I wanted my daughter to start her favorite songs without handling a phone or a screen. Tap an NFC card on the reader and the music starts: a kind of Toniebox, just built myself. The reader is a DIY build based on an ESP32 microcontroller and ESPHome Builder, following the adonno/tagreader template.
The obvious Home Assistant approach is the official Spotify integration plus media_player.play_media. That is not enough for a cold start, though. The integration can use play_media sensibly only when something is already playing. Starting a specific song, playlist or podcast from a stopped player is therefore not supported by this path. This is a limitation of the integration and its current media_player behavior, not a configuration mistake.
The solution is a small Python script. It asks the Spotify Web API for available Spotify […]

Optimizing code-bude.net for PageSpeed: What I changed and what actually helped

Diagram showing the measurement of load time, layout shift, images, CSS and fontsPageSpeed is not an oracle. Bytes lie much less often than a single score.
I had run code-bude.net long enough to know its little points of friction. A homepage with 22 external CSS files, more than 100 KB of HTML and 1.2 MB PNG title images in listing views was no longer a charming bit of history. Lighthouse estimated 6.25 MB of image savings. The score moved between 27 and 55 depending on the run. That is not a measurement. It is a weather forecast with a very small cloud.
I worked in two rounds. First came images, CSS, critical CSS and fonts. Then I tackled Site Health findings, CLS, accessibility, security headers and icon fonts. The scores are useful […]

en.code-bude.net
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.