devops
Technical notes on web development, DevOps, and AI integration.
29 articles
- 20:43devops
Scheduling Home Wi-Fi With Squid Delay Pools in Docker
A time-based bandwidth cap on a home LAN using Squid delay pools: bytes vs bits, the acl time trap, container TZ, and a second unlimited pool.
#squid#docker#devops - 02:25devops
Subtree Split or Rsync Snapshot: Picking the Publish Mechanism
One folder or five scattered paths? The shape of your include set decides when subtree split is safe and when an rsync snapshot wins.
#git#rsync#forgejo - 10:36devops
One API Key Just Stops Research at 429
A 429 rate limit froze my research pipeline. Designing multi-key rotation: per-HTTP-status cooldown, single-pass failover, and errors that should not rotate.
TL;DR: The pipeline hit 429 rate limits, so the author added key rotation with per-status cooldowns: 60s for 429, 300s for 402, an hour for auth errors. Rotation is single-pass to avoid infinite loops, and request errors like 404 throw immediately. The author stresses rotation only raises ceilings; fix wasteful requests first.
#firecrawl#python#automation - 10:36devops
Backing Up an Active Database Is Never Just Cp
Copying an active SQLite file is not a backup. Lessons from a light backup script: hot backup, verified atomic tar, and layered pruning.
TL;DR: The script backs up SQLite databases using the official .backup API instead of raw cp, since copying active WAL files can yield corrupt snapshots. Archives are staged, verified with tar, then atomically renamed, with flock preventing overlap. Pruning keeps 14 days plus a floor of 3 newest archives, so failures can't silently destroy valid backups.
#backup#sqlite#cron - 10:36devops
The Watchdog Still Checked a Container Path That Was Gone
Migrating the Hermes watchdog to host-native was not just swapping paths. Lessons in git diff --quiet, set -euo pipefail, and a zero-token pattern.
TL;DR: Migrating Hermes to host-native broke hermes-patch-watchdog.sh, which still pointed at the old container path. The fix required more than a find-and-replace: git semantics shifted, the venv moved, and set -euo pipefail turned silent mid-script failures into false healthy signals. Every check now fails loudly, since for a silence-means-healthy watchdog, noise beats quiet mistrust.
#hermes#devops#cron - 20:48devops
Env Vars Reach the Container, Connectivity Does Not Come Free
Wiring env vars in Compose is only half the job; the container still needs a deliberate network path before the LLM search feature can talk to its router.
#docker#devops#fastapi - 20:53devops
Sudo That Survives Every Container Recreate
The upstream image ships no sudo and /etc is ephemeral. A tiny entrypoint override in compose reinstalls passwordless sudo on every boot.
#docker#devops#security - 20:46devops
Bind-Mounting the Projects Folder Into a Container
Two small compose decisions, identical paths on both sides and a matched UID, make the host Projects folder safe to use from a container without chmod 777.
#docker#devops - 20:28devops
An OAuth Callback Refused in a Host-Mode Container
My first guess was a ports block in compose. Host-mode already shares the host loopback, and ports actually breaks compose validation.
#docker#oauth#devops