Documents three lessons from the 2026-05-10 fleet outage where the Fedora half (majorhome, majorlab) had been silently failing to send notification mail for days: - Missing /etc/pki/tls/certs/ca-bundle.crt symlink (extracted bundle exists at /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem but the consumer-path symlink was lost during a ca-certificates package event). Diagnosis includes the cross-tool tell — dnf and curl break with the same path. Fix is a single ln -sfn. - Methodology: Fedora and majormail log postfix to journald; Debian and Ubuntu log to /var/log/mail.log. Querying the wrong source returns false negatives for healthy hosts. - Bounce-source addresses (Watchtower NOTIFICATION_EMAIL_FROM, fail2ban sender, root@<host>.localdomain) must resolve to real mailboxes — otherwise the first failed delivery generates bounce-of-bounce churn. Also promoting the article from untracked to committed; it had been authored on 2026-05-09 and not yet added to the repo. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
19 KiB
19 KiB
| created | updated |
|---|---|
| 2026-04-06T09:52 | 2026-05-10T01:30 |
MajorLinux Tech Wiki — Index
A growing reference of Linux, self-hosting, open source, streaming, and troubleshooting guides. Written by MajorLinux. Used by MajorTwin.
Last updated: 2026-05-10 Article count: 110
Domains
| Domain | Folder | Articles |
|---|---|---|
| 🐧 Linux & Sysadmin | 01-linux/ |
12 |
| 🏠 Self-Hosting & Homelab | 02-selfhosting/ |
39 |
| 🔓 Open Source Tools | 03-opensource/ |
10 |
| 🎙️ Streaming & Podcasting | 04-streaming/ |
2 |
| 🔧 General Troubleshooting | 05-troubleshooting/ |
47 |
🐧 Linux & Sysadmin
Distro-Specific
- Linux Distro Guide for Beginners
- WSL2 Backup via PowerShell Scheduled Task
- WSL2 Instance Migration (Fedora 43)
- Wsl2 Rebuild Fedora43 Training Env
Files & Permissions
Networking
Package Management
Process Management
Shell & Scripting
- Ansible Getting Started: Inventory, Playbooks, and Ad-Hoc Commands
- Bash Scripting Patterns for Sysadmins
Storage
🏠 Self-Hosting & Homelab
Cloud
DNS & Networking
- Network Overview
- Pi-hole DoH / DoT Bypass Defense
- Pi-hole v6 Adlist Management via SQL
- Pi-hole v6 Group Management: Per-Client DNS Rules
- Tailscale for Homelab Remote Access
- Wake-on-LAN via Router SSH
Docker & Containers
- Debugging Broken Docker Containers
- Docker Healthchecks
- Docker vs VMs in the Homelab: Why Not Both?
- Self-Hosting Starter Guide
- Watchtower SMTP via Localhost Postfix Relay
Monitoring
- Deploying Netdata to a New Server
- Netdata SELinux AVC Denial Monitoring
- Netdata n8n Enriched Alert Emails
- Tuning Netdata Docker Health Alarms to Prevent Update Flapping
- Tuning Netdata Web Log Alerts
Reverse Proxies
Security
- ClamAV Fleet Deployment with Ansible
- Fail2Ban Digest Mode — Fleet-Wide Quiet Alerts
- Fail2ban Custom Jail: Apache 404 Scanner Detection
- Fail2ban Custom Jail: Apache Bad Request Detection
- Fail2ban Custom Jail: Apache PHP Webshell Probe Detection
- Fail2ban Custom Jail: WordPress Login Brute Force
- Fail2ban: Enable the nginx-bad-request Jail
- Firewall Hardening with firewalld on Fedora Fleet
- Linux Server Hardening Checklist
- SELinux: Fixing Fail2ban grep execmem Denial on Fedora
- SSH Hardening Fleet-Wide with Ansible
- Standardizing unattended-upgrades Across Ubuntu Fleet with Ansible
- UFW Firewall Management
- wp-fail2ban Plugin Logpath on Debian/Ubuntu (auth.log, not syslog)
Services
- Claude Code Remote Control — Mobile Access to a Persistent Host Session
- Ghost Email Configuration with Mailgun
- Mastodon DB Maintenance — Statuses, Accounts, and VACUUM
- Mastodon Federation — Domain Blocks, Silencing, and FediSeer
- Mastodon Instance Tuning
- Mastodon — The
--prune-profilesTrap and How to Recover - Updating n8n Running in Docker
Storage & Backup
🔓 Open Source Tools
Alternatives
Development Tools
- Ventoy — Multi-Boot USB Tool
- rsync — Fast, Resumable File Transfers
- screen — Simple Persistent Terminal Sessions
- tmux — Persistent Terminal Sessions
Media & Creative
Privacy & Security
Productivity
🎙️ Streaming & Podcasting
OBS Studio
Plex
🔧 General Troubleshooting
- Ansible Check Mode False Positives in Verify/Assert Tasks
- Ansible Fails with Permission Denied While
ssh <alias>Works (Host Alias Bypass) - Ansible SSH Timeout During dnf upgrade on Fedora Hosts
- Ansible: Vault Password File Not Found
- Ansible Ignores ansible.cfg on WSL2 Windows Mounts
- claude-mem Silently Fails with Claude Code 2.1+ (Empty --setting-sources)
- Cron Heartbeat False Alarm: /var/run Cleared by Reboot
- Docker & Caddy Recovery After Reboot (Fedora + SELinux)
- Fantastical Google Sync Error Flood — Phantom Calendars Fixed via syncselect
- Fantastical MCP Server: Permission Denied on Launch (macOS Quarantine)
- Fedora Networking & Kernel Troubleshooting
- Gemini CLI: Manual Update Guide
- Ghost EmailAnalytics Lag Warning — What It Means and When to Worry
- Gitea Actions Runner: Boot Race Condition Fix
- ISP SNI Filtering & Caddy Troubleshooting
- macOS Repeating Alert Tone from Mirrored iPhone Notification
- MajorWiki Setup & Publishing Pipeline
- Obsidian Vault Recovery — Loading Cache Hang
- Ollama:
ollama runwith Piped Stdin Bypasses Chat Template + SYSTEM Prompt - Ollama Drops Off Tailscale When Mac Sleeps
- Python smtplib: Missing Date/Message-ID Headers Break Mail Clients
- SELinux: Fixing Dovecot Mail Spool Context (/var/vmail)
- Ubuntu dist-upgrade Quarantines Third-Party Repos
- wget/curl: URLs with Special Characters Fail in Bash
- yt-dlp YouTube JS Challenge Fix (Fedora)
Docker & Containers
- Nextcloud AIO Container Unhealthy for 20 Hours After Nightly Update
- n8n Behind Reverse Proxy: X-Forwarded-For Trust Fix
GPU & Display
- LoRA adapter — GGUF conversion fails with 'config.json not found
- Qwen2.5-14B OOM on RTX 3080 Ti (12GB)
Networking
- Apache Outage: Fail2ban Self-Ban + Missing iptables Rules
- Fail2ban & UFW Rule Bloat: 30k Rules Slowing Down a VPS
- Mail Client Stops Receiving: Fail2ban IMAP Self-Ban
- Pi-hole AI Blocklist Blocks Claude Desktop (ERR_CONNECTION_REFUSED)
- Tailscale SSH: Unexpected Re-Authentication Prompt
- Windows OpenSSH Server (sshd) Stops After Reboot
- Windows OpenSSH: WSL as Default Shell Breaks Remote Commands
- firewalld: Mail Ports Wiped After Reload (IMAP + Webmail Outage)
- iOS Tailscale Clients Report HostName="localhost" — Breaks /etc/hosts Generators
- rsync over Tailscale: Hung in TCP Teardown After Transfer Completes
Security
- ClamAV Safe Scheduling on Live Servers
- Custom Fail2ban Jail: Apache Directory Scanning & Junk Methods
- Tuning Netdata
web_log_1m_successfulfor Redirect-Heavy WordPress Sites - Castopod: Stale Federated Avatar URLs After Remote Profile Updates
- Castopod Posts Don't Appear on Mastodon — Diagnosing the Federation Path
Storage
Systemd
Recently Updated
Writing Backlog
| Topic | Domain | Priority | From Gap? |
|---|---|---|---|
| Docker Compose networking deep dive | Self-Hosting | High | No |
| Troubleshooting NVIDIA on Linux | Troubleshooting | Medium | No |
| Pi-hole setup and local DNS | Self-Hosting | Medium | No |
| Nextcloud setup with Docker | Self-Hosting | Medium | No |
Related
- MajorWiki Deploy Status — deployment status and update workflow