Skip to content

Known Gotchas & Fixes

These are the things that will waste your time if you don't know them.

Caddy APT repo GPG key expires / goes missing If sudo apt update throws NO_PUBKEY ABA1F9B8875A6661 for the Caddy repo, the signing key needs to be re-fetched:

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
  | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo apt update

Docker APT repo generates spurious i386 warnings The Docker repo source at /etc/apt/sources.list.d/docker.sources doesn't specify an architecture, so apt tries i386 and warns that it's unsupported. Fix by pinning to amd64:

sudo sed -i '/^Components:/a Architectures: amd64' /etc/apt/sources.list.d/docker.sources
sudo apt update

mainsail.yooshtek.com not accessible externally The Caddyfile proxies mainsail.yooshtek.com to 192.168.4.200:4409 but external access is currently broken — cause unknown, likely a Mainsail/Klipper config issue restricting connections to LAN only. Mainsail is accessible directly at http://ender.lan:4409 from the LAN. Needs investigation.

Prometheus reload doesn't work via systemctl or HTTP systemctl reload prometheus and curl -X POST http://localhost:9090/-/reload both silently do nothing (the latter requires --web.enable-lifecycle in ExecStart). Always use systemctl restart prometheus, and always validate the config first with promtool check config.

Prometheus 3.x tarball is missing directories As of 3.10.0, the tarball no longer includes consoles/ or console_libraries/. If your install script does mv prometheus-3.x.x.linux-amd64/{consoles,console_libraries} /etc/prometheus/, those two mv commands will fail. This is harmless — just ignore the errors.

Graphite Exporter download URL is broken The /releases/latest/download/graphite_exporter-linux-amd64.tar.gz URL redirects incorrectly. Always use the explicit versioned URL:

https://github.com/prometheus/graphite_exporter/releases/download/v0.16.0/graphite_exporter-0.16.0.linux-amd64.tar.gz

Grafana APT install on Ubuntu 25.10 apt-key is removed in Ubuntu 25.10. Use the modern keyring method:

sudo mkdir -p /etc/apt/keyrings
wget -q -O /tmp/grafana.gpg https://apt.grafana.com/gpg.key
gpg --dearmor < /tmp/grafana.gpg | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" \
  | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update && sudo apt install -y grafana

Blackbox Exporter YAML indentation The config is strict YAML. Modules must be indented exactly 2 spaces under modules:. A one-space difference silently breaks module lookup — probe results come back empty with no error message. Tedious to debug.

Blackbox duplicate targets in Grafana after config changes After changing target URLs in prometheus.yml, old URLs persist in Prometheus's TSDB for ~5 minutes. The Grafana variable dropdown will show duplicates. Wait 5 minutes, or restart Prometheus to flush them immediately.

qBittorrent is on port 8081, not 8080 Every piece of documentation says 8080. It's 8081. The root path (/) returns 404 unauthenticated and 403 authenticated. The correct health endpoint is /api/v2/app/version.

Immich is on port 30041 with a different API path Official docs say port 2283 and /api/server-info/ping. This installation uses port 30041 and /server-info/ping. The documented API path returns 404.

immichbox memory leak from iOS monitoring app If an iOS monitoring app (e.g. one that initiates a remote desktop session) is left connected, gnome-system-monitor can leak to 8+ GB over several days, eventually exhausting swap (4 GB) and threatening an OOM event. The Prometheus alert node_memory_MemAvailable_bytes{job="immichbox"} < 500000000 will catch this before it becomes critical. Kill gnome-system-monitor to recover the memory. Swap drains back to normal gradually after recovery — no action needed.