Fast-scan summary of every hard-won lesson so far. See the linked pages for full detail.
- Nixpacks auto-detection fails often here - default to a Dockerfile build.
- Docker Compose / one-click services (like Wiki.js) don't expose a domain field where you'd expect it. Full detail: Docker Compose Services & Custom Domains.
- Every static file needs its own
COPY line in the Dockerfile - nginx only serves what's explicitly copied in.
- Check the build log, not just the "running" status - a stale image can still show green if a build silently failed.
- New A records must be DNS-only (grey cloud) in Cloudflare until the first Let's Encrypt cert is issued, or the HTTP-01 challenge fails silently.
issuer=/CN=TRAEFIK DEFAULT CERT on a live cert check means the real cert was never issued. Full detail: DNS & TLS.
- Email at
magnusschult.de lives at domainfactory - never touch MX records when editing DNS.
SERVICE_FQDN_* / SERVICE_URL_* env vars are read-only reflections - editing them doesn't change actual routing.
- Coolify's API can report a "correct" stored config while the live container still runs stale labels, if a real redeploy never happened. When in doubt, trigger an explicit redeploy rather than just restart.
- Compose services often only show Restart/Stop, not a plain Deploy button - redeploys usually trigger automatically on a saved config change, or can be triggered explicitly.
- Use full absolute paths to binaries (e.g.
/usr/local/bin/node) in Claude Desktop's MCP config - it doesn't reliably inherit shell PATH. Full detail: Claude Desktop & Coolify MCP Setup.
- Keep local project folders outside Documents/Desktop/Downloads - macOS's "disclaim" mechanism strips file-access permissions from processes launched out of those folders.
- Validate
claude_desktop_config.json with python3 -m json.tool before restarting - broken JSON fails silently.
- Multi-line pastes into zsh can corrupt heredocs. For pushing files/folders to GitHub, use the GitHub Desktop app or the GitHub web UI's folder drag-and-drop instead of terminal paste-heavy workflows.
- Overpass API:
out tags strips coordinates - use out body when coordinates are needed.