🔧 General Troubleshooting¶
Practical fixes for common Linux, networking, and application problems.
- /usr/local/sbin Is a Symlink: The 'Duplicate' Script That Was One File
- \"Operation not permitted\" on macOS: Agent Sandbox vs TCC (They Look Identical)
- A Cowork MCP Tool Called Before Its Schema Loads Can Return an Empty Result Instead of an Error
- A GUI App's CLI May Not Share Its Name (Spark's CLI Is SparklyRemote)
- A WSL-Launched MCP Server on Windows Doesn't Inherit Claude Desktop's env Block Unless You Also Set WSLENV
- Adobe Creative Cloud Error 108: 'Another Installer Instance Is Running' (macOS)
- Alert Script Never Emails: set -e + && Short-Circuit Kills the Run That Matters
- An MCP Server Reporting \"Connected\" Can Still Be Broken — Verify It Over stdio
- Ansible Check Mode False Positives in Verify/Assert Tasks
- Ansible Fails with Permission Denied While
ssh <alias>Works (Host Alias Bypass) - Ansible Ignores ansible.cfg on WSL2 Windows Mounts
- Ansible Jinja {% include %} Glues the Partial's Last Line to the Next
- Ansible lookup('file', ...) Relative Paths Resolve Against playbook_dir, Not Your Shell's cwd
- Ansible reboot.yml: become Timeout on WSL2 Hosts (Exclude Them)
- Ansible regex_search Capture Groups in set_fact: the Backslash Escaping Is Context-Dependent, Not Broken
- Ansible SSH Timeout During dnf upgrade on Fedora Hosts
- ansible-lint in CI Without the Vault Password: 100+ internal-error Findings and Unlinted Playbooks
- Ansible: Ubuntu Reboot Detection Misses Kernel Upgrades
- Ansible: Vault Password File Not Found
- Auditing & Cleaning macOS Background App Activity (sfltool dumpbtm)
- Castopod 'Max size is 2MiB' — Stock PHP Upload Limits Resurface After a Server Rebuild
- Castopod Feed Empty-GUID Backfill: Natively-Uploaded Episodes Silently Collide in Strict RSS Clients
- Changing
ansible_portBreaks Every Control Node's known_hosts (the ssh-askpass Red Herring) - Claude Code Keychain Prompt Keeps Reappearing on macOS (ACL vs Partition List)
- Claude Code Won't Log In (Warp & iTerm2) — Corrupt Keychain Credential
- Claude Desktop MCP Mass-Disconnect After Blocking SSH Reboot
- Claude Desktop MCP: Four False Signals When Diagnosing a Dead Plugin
- Claude Desktop Skips Remote MCP Servers Defined With a Bare
urlKey - claude-mem Silently Fails with Claude Code 2.1+ (Empty --setting-sources)
- Concurrent Claude Sessions Silently Clobber Vault Journal Writes
- Concurrent Sessions in One Git Checkout: Commits Land on the Wrong Branch
- Copying Nintendo Switch Captures to a Mac: MTP Is a Dead End, Use the microSD
- Cowork's Built-In Shell Is a Sandbox, Not the Local Machine
- Cron Heartbeat False Alarm: /var/run Cleared by Reboot
- do-release-upgrade Can Purge mysql-server-8.0 Without Installing a Replacement
- do-release-upgrade to 26.04 Crashes in _addSecuritySources() (ExplodedDeb822SourceEntry)
- Docker & Caddy Recovery After Reboot (Fedora + SELinux)
- Fantastical \"Couldn't communicate with a helper application\" After an App Store Update
- Fantastical Google Sync Error Flood — Phantom Calendars Fixed via syncselect
- Fantastical MCP Server: Permission Denied on Launch (macOS Quarantine)
- Fedora Networking & Kernel Troubleshooting
- Forgejo Actions: Jobs Finish, Then Are Marked Failed ~12 Minutes Later (Runner Too Old for the Server)
- Forgejo: Account Recovery & CLI Admin When Locked Out of the GUI
- Gemini CLI: Manual Update Guide
- Ghost EmailAnalytics Lag Warning — What It Means and When to Worry
- Gitea Actions Runner: Boot Race Condition Fix
- Grafana Says RESOLVED but Nothing Was Fixed: Stale Alerts After a DatasourceError
- iPhone Mirroring Hangs on 'Connecting…' — AWDL Data Stall (27.0 Beta)
- ISP SNI Filtering & Caddy Troubleshooting (RETRACTED)
- Keep Secrets Out of claude_desktop_config.json (No env Interpolation) — Wrapper + 0600 env File
- Logwatch Reports the Wrong Hostname (
<host>-hetzner) After a Migration - macOS Delivers No Notifications — Stuck Game Mode From a Zombie App
- macOS Repeating Alert Tone from Mirrored iPhone Notification
- MajorDocs Setup & Publishing Pipeline
- MCP Python SDK 2.0 Breaks Unpinned uv-run Servers
- Molly Stuck Loading: Expired Build from a Stale F-Droid Repo
- Mystery Device on Pi-hole: macOS Adopted a Thunderbolt Dock's Name as Its Hostname
- OBS Studio — \"Error opening file: (null)\" After Windows Profile Rename
- OBS Studio — Update Fails with \"Files in Use\" Even Though OBS Is Closed
- Obsidian Vault Recovery — Loading Cache Hang
- Ollama Drops Off Tailscale When Mac Sleeps
- Ollama:
ollama runwith Piped Stdin Bypasses Chat Template + SYSTEM Prompt - Patching PHP 8.4 Implicit-Nullable Deprecations in Vendor Packages
- Postfix Starts Before Its Milters at Boot, Failing the First Inbound Message
- Python smtplib: Missing Date/Message-ID Headers Break Mail Clients
- Search Console Says 'Excluded by noindex' — Telling a Deliberate Archive Noindex From a Real Fault
- SELinux: Dovecot Sieve-Pipe Scripts Break After restorecon (Missing bin_t fcontext Rule)
- SELinux: Fixing Dovecot Mail Spool Context (/var/vmail)
- SELinux: Wrong /etc/localtime Label Silently Breaks Timezone Changes
- SSH to MajorMac Hangs Indefinitely Reading Inside ~/Documents (Full Disk Access)
- Thunderbird Running Slow or Beachballing — A Diagnostic Playbook
- Time Machine 'Unknown Error': Case-Sensitive APFS Destination (and Encrypting It Correctly)
- Time Machine: Orphaned APFS .previous Folder Blocks All Backups
- Ubuntu dist-upgrade Quarantines Third-Party Repos
- Uninstalling Docker Desktop Leaves Dangling Symlinks in /usr/local/bin
- Verify a Health/Alarm Matcher by Counting Bound Instances, Not by Reading Config
- Warp \"Silent\" CLI-Agent Notifications: Check
warp.logfor OSC 777 Before Blaming the Plugin - wget/curl: URLs with Special Characters Fail in Bash
- WordPress 6.7 _load_textdomain_just_in_time Notice (Theme/Plugin Loads Translations Too Early)
- WordPress Auto-Updates Silently Fail for Months After a Root-Run Update (Root-Owned Files)
- wsl.exe Eats Your Shell Variables When the Script Is an Argument
- WSL2: PyTorch Training Deadlocks on Windows Filesystem Checkpoint Saves
- WSL2: screen/tmux Sessions Die When the Last Terminal Closes (Post-July-2026 Lifecycle Change)
- yt-dlp 'Requested format is not available' — Live Streams Serve an HLS-Only Ladder
- yt-dlp HTTP 403: Forbidden — the Subtitle and Unranged-GET Triggers
- yt-dlp HTTP 429: Too Many Requests (YouTube Rate Limiting)
- yt-dlp Merge Fails: 'Invalid data found when processing input' (Stale Cache)
- yt-dlp YouTube JS Challenge Fix (Fedora)
Boot & System¶
Docker & Containers¶
- Docker Port Bind to a Tailscale IP Fails at Boot — Ordering Isn't Enough, Use ip_nonlocal_bind
- n8n Behind Reverse Proxy: X-Forwarded-For Trust Fix
- n8n Webhook Responds Slowly (or Times Out) Even Though the Real Work Is Fast
- Nextcloud AIO 'Upgrade to Latest Major': Benign Stream Error and the 33/34 Version Split
- Nextcloud AIO Container Unhealthy for 20 Hours After Nightly Update
GPU & Display¶
- LoRA adapter — GGUF conversion fails with 'config.json not found
- Qwen2.5-14B OOM on RTX 3080 Ti (12GB)
Networking¶
- A DNS Block That Looks Like a 503 (Blocked Subresources)
- A DNS Block That Looks Like a TLS Error (HTTPS-First vs Pi-hole)
- A Pi-hole Block Reaches an AI Agent as an SSRF-Guard Error, Not a DNS Error
- Ansible UNREACHABLE: Host Key Verification Failed After a Host Rebuild or Migration
- Apache Outage: Fail2ban Self-Ban + Missing iptables Rules
- Diagnosing Intermittent Connection Failures to a Home-Hosted Service (When Everything 'Looks' Fine)
- DNSSEC \"Enabled\" But Never Validates: The DS Record Has to Go to the Registrar, Not the DNS Host
- Dovecot IMAP Clients Fail to Sync: vsz_limit OOM from a Bloated Index Log
- Dovecot Phantom Mailboxes from .dovecot.lda-dupes (mail_home Overlapping the Maildir Root)
- Fail2ban & UFW Rule Bloat: 30k Rules Slowing Down a VPS
- firewalld: Mail Ports Wiped After Reload (IMAP + Webmail Outage)
- iOS Tailscale Clients Report HostName="localhost" — Breaks /etc/hosts Generators
- MagicDNS Names vs Pinned IPs for Tailscale SSH (After a Fleet Migration)
- Mail Client Stops Receiving: Fail2ban IMAP Self-Ban
- Migrating an Apex-CNAME Domain to deSEC: Rejected Records and the minimum_ttl Trap
- Namecheap DNS: Misfiled MX Records, No Null MX, and Apex CNAME Behaviour
- Pi-hole AI Blocklist Blocks Claude Desktop (ERR_CONNECTION_REFUSED)
- pihole allow list Hangs the CLI Instead of Listing the Allowlist
- Ping Latency Spikes That Are Really Collector Scheduling
- Postfix + SendGrid: TLS Handshake Failure (Port 465 vs 587)
- Postfix header_checks Can't Act on Milter-Added Headers (Use Sieve)
- rsync over Tailscale: Hung in TCP Teardown After Transfer Completes
- SSH
Permission denied (publickey)After Rotating a Key — Backfill Everyauthorized_keys - SSH Alias Fails on One Fleet Host — Service Account Squats the Standard User's UID
- SSH Alias Falls Through to MagicDNS — Host-Key Verification Failure (No
HostBlock) - Steam Deck Wi-Fi Flapping: IWD Periodic Scan + rtw88 Power Save
- Tailscale Boot Race Conditions (SSH Unreachable After Reboot)
- tailscale cert Can Silently Return the Stale Cached Cert Instead of Renewing
- Tailscale SSH
none-Auth Root Login Looks Like a Vulnerability — It Usually Isn't - Tailscale SSH: Unexpected Re-Authentication Prompt
- Thunderbird Gmail IMAP: [TRYCREATE] No folder [Gmail]/All Mail (THROTTLED)
- Transient LAN Latency With No Root Cause: An Elimination Method
- Wi-Fi Game Streaming Stutter: 160 MHz Channel Width Saturating the 5 GHz Radio
- Windows OpenSSH + WSL: Large or Quoted Commands Fail Over SSH
- Windows OpenSSH + WSL: sftp Hangs Because Subsystems Launch Through the DefaultShell
- Windows OpenSSH Server (sshd) Stops After Reboot
- Windows OpenSSH: WSL as Default Shell Breaks Remote Commands
Performance¶
- Diagnosing Recurring CPU Spikes on a Small VPS with atop
- Game Crashes With Plenty of Free RAM: RADAR_PRE_LEAK and the Tiny System-Managed Pagefile
Security¶
- Castopod Posts Don't Appear on Mastodon — Diagnosing the Federation Path
- Castopod: Stale Federated Avatar URLs After Remote Profile Updates
- Certbot Renewal Fails With 'Account Does Not Exist': A Stale ACMEv1 Account ID After Migration
- ClamAV Safe Scheduling on Live Servers
- ClamAV Weekly Scan False Alerts: Exit-Code Pitfalls
- Custom Fail2ban Jail: Apache Directory Scanning & Junk Methods
- Fail2ban Misses Low-and-Slow Brute Force: Per-Connection Thresholds and Short findtime
- Fail2ban SMTP-Auth Jail, Notify-Only: Getting Emailed on Every Failed SMTP AUTH Without Actually Banning
- Fedora CA Bundle Missing Symlink — Postfix Relay Silently Stops
- Logwatch Falsely Reports 'No freshclam updates' in ClamAV Daemon Mode
- Mail Over ~500 KB Bypasses SpamAssassin Entirely: spamc's Silent Size Ceiling
- Mitigating Apache HTTP/2 CVE-2026-23918 by Disabling mod_http2 Before a Distro Patch Ships
- Netdata apps-group FD-utilisation false 100% (silenced fleet-wide)
- Secrets Leaking Through 'Harmless' Diagnostic Commands (ansible-inventory, SELECT *, --diff)
- SELinux Confined ClamAV: Your 'Passing' Scans May Never Have Read a File
- Tuning Netdata
web_log_1m_successfulfor Redirect-Heavy WordPress Sites
Storage¶
- Diagnosing Disk Space Alerts
- mdadm RAID Recovery After USB Hub Disconnect
- Windows 11 CapabilityAccessManager 500GB Storage Bug — How to Verify