Blog
Technical notes on web development, DevOps, and AI integration.
136 articles
- 12:57devops
40 Mbps in the Config, 5 Mbps on the Screen
A half-remembered Mbps-to-bytes formula left the 3proxy bandlim cap at 5 Mbps instead of 40. The manual said bits all along.
TL;DR: A 3proxy bandwidth cap configured at 40 Mbps actually limited traffic to 5 Mbps because bandlim expects bits per second, not bytes, so the fix was changing 5000000 to 40000000. The same commit trimmed a GoAccess dashboard to three panels, surfacing the URL table immediately. Lesson: verify unit conversions against the manpage.
#3proxy#bandwidth#networking - 12:39devops
I Deleted My Dashboard, Then Called It Back
I tore out my self-built GoAccess stack for 3proxy's built-in admin counters, then realized counters can't answer which URLs eat the bandwidth.
TL;DR: The author deleted a self-built GoAccess dashboard for 3proxy, replacing it with the built-in admin directive and secure-mode counters. That answered how much traffic, but not which URLs or hosts consumed it. GoAccess returned properly: stripped fractional timestamps, filtered ADMIN lines, and nginx proxying WebSocket with explicit upgrade headers and longer read timeouts.
#3proxy#goaccess#nginx - 03:04seo
9,200 Articles in the Sitemap, Google Only Indexes the Homepage
An audit of a news site with 9,200 articles in its sitemap and almost nothing indexed: crawl demand, internal linking, and the fixes that actually matter.
TL;DR: An audit of a news site with 9,200 articles in its sitemap found only about 44 that ever earned a Google impression, dropping to zero for the most recent publish months. Every technical check came back clean, so the problem is crawl demand: publishing volume far outpacing authority signals, plus an archive cut off from internal links. The fixes are editorial: lower the volume, build contextual links into old content, trim the news sitemap, and earn external validation.
#seo#google-search-console#crawl-budget - 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 - 22:24devops
WordPress Full vs View: Two Git Repos, Two Different Jobs
One WordPress install, two Git repos: a full Forgejo repo for recovery, a GitHub view repo carrying only source I wrote myself.
#wordpress#git#github - 20:23devops
Dual-Push, Pull Mirrors, and Forgejo's Ground Rules
My per-commit dual-push ritual turned out more honest than a pull mirror that would quietly drop a 631 MB branch GitHub never had.
#git#forgejo#github - 18:50devops
Naming a Loopback Forgejo Through hosts and ROOT_URL
A local domain via /etc/hosts plus DOMAIN and ROOT_URL in Forgejo, and the 100 MB Cloudflare upload cap that makes the SSH path the sensible choice.
#forgejo#dns#cloudflare - 18:33devops
Forgejo in Compose: Built-in SSH, Push-to-Create, and LFS
One Compose service driven by FORGEJO__ env vars: built-in loopback SSH, push-to-create, LFS, and a healthcheck that tells the truth.
#docker#ssh#forgejo