Posts
All the articles I've posted.
Replacing MinIO with RustFS for self-hosted S3 on a small VPS
I needed S3-compatible storage next to n8n on one VPS and did not want to install MinIO. RustFS in one container, behind nginx, uses about 60–90 MB of RAM.
One n8n error workflow that emails me when any workflow fails
A four-node n8n error workflow that sends failure emails through the Gmail API, plus the patterns I use so failures clean up after themselves and carry a useful message.
n8n form submitted by script: values are null, use field-0 keys
I posted to an n8n hosted form from a script and every value arrived as null. The form expects multipart keys field-0, field-1, not the labels. The reply is also not the final result.
n8n 2.x "Unrecognized node type" for Execute Command: use a sidecar
n8n 2.x excludes the Execute Command node by default, so my workflow would not activate. I left it disabled and moved the shell work into a small HTTP sidecar on a private Docker network.
Generate n8n workflows from a Python script and deploy by API
I build seven n8n workflows from one Python file and push them with the n8n public API. Here are the helpers, the deploy calls, and the expression bug that cost me the most time.
Watch Playwright tests run live on a VPS with noVNC and nginx
How I run headed Playwright tests on a headless server and watch the real browser in a web page: Xvfb, x11vnc and noVNC in one container, locked behind nginx auth_request.
Sandboxing an AI agent web app in Docker behind nginx basic auth
The Docker flags, mounts and resource caps I use to run an AI agent app with shell access on a shared 2 vCPU VPS, plus the localhost-bind problem that needed a one-line patch.
Android emulator with KVM on GitHub Actions: workflow and a caching trap
A working GitHub Actions workflow that boots a hardware-accelerated Android emulator and runs instrumented tests in about three minutes, and why AVD snapshot caching made it worse.