renstur@coopnet:~/blog$ ls -lt ./topics/services/
services/
Self-hosted apps behind reverse proxies, and services that look healthy but aren't.
-
I edited a Portainer stack's compose file on disk and it stuck
I thought Portainer would discard compose edits made on disk, but on my install the editor just showed them. Stack files are plain files in Portainer's data volume, one folder per stack id. To apply an edit, recreate with docker compose -p set to the stack name, or you get a second project.
-
Monitoring every box with Checkmk over NetBird
Checkmk over a NetBird overlay paged me for every tunnel blip because my checks were sized for a LAN. Four check attempts with a 1 minute retry, ping levels of 2 and 5 seconds, and looser error levels on the wt0 interface turned constant noise into alerts worth reading.
-
Nexterm logged my reverse proxy instead of the client
Nexterm logged my reverse proxy as the source of every session because Express wasn't trusting the proxy. I patched it with a bind mounted index.js. Current releases read TRUST_PROXY, so drop the patch and set that to the proxy's own address, not true.
-
'npm is not available' except npm is right there on PATH
A service said npm wasn't available while npm sat on its PATH. Running node directly showed the real error, libatomic.so.1 missing after a Debian to CentOS Stream migration. I installed libatomic, then upgraded the bundled npm to 12 with --prefix aimed at the app's runtime.
-
Why Traefik 502s your service right after you recreate its container
Traefik kept serving a 502 after I recreated a container behind it. Setting the Compose prefixed network name cleared a warning but not the 502. Pinning every container to a fixed ipv4_address did, so Traefik never has a new address to miss.
-
Your CrowdSec is running, connected and completely blind while running NetBird
CrowdSec looked healthy everywhere, but acquis.yaml still pointed at the image's /does/not/exist placeholder, so it read zero logs for weeks. cscli metrics shows it in Lines read. I fed it Traefik's JSON access log and installed the crowdsecurity/traefik collection.