diff --git a/05-troubleshooting/index.md b/05-troubleshooting/index.md index 9bfc177..e6234dc 100644 --- a/05-troubleshooting/index.md +++ b/05-troubleshooting/index.md @@ -2,8 +2,19 @@ Practical fixes for common Linux, networking, and application problems. -- [ISP SNI Filtering with Caddy](isp-sni-filtering-caddy.md) -- [Obsidian Cache Hang Recovery](obsidian-cache-hang-recovery.md) -- [yt-dlp Fedora JS Challenge](yt-dlp-fedora-js-challenge.md) -- [MajorWiki Setup & Publishing Pipeline](majwiki-setup-and-pipeline.md) +## 🖥️ GPU & AI +- [Qwen2.5-14B OOM on RTX 3080 Ti (12GB)](gpu-display/qwen-14b-oom-3080ti.md) + +## 🌐 Networking & Web +- [Apache Outage: Fail2ban Self-Ban + Missing iptables Rules](networking/fail2ban-self-ban-apache-outage.md) +- [Mail Client Stops Receiving: Fail2ban IMAP Self-Ban](networking/fail2ban-imap-self-ban-mail-client.md) +- [ISP SNI Filtering & Caddy](isp-sni-filtering-caddy.md) +- [yt-dlp YouTube JS Challenge Fix](yt-dlp-fedora-js-challenge.md) + +## 📦 Docker & Systems - [Docker & Caddy Recovery After Reboot (Fedora + SELinux)](docker-caddy-selinux-post-reboot-recovery.md) +- [MajorWiki Setup & Publishing Pipeline](majwiki-setup-and-pipeline.md) + +## 📝 Application Specific +- [Obsidian Vault Recovery — Loading Cache Hang](obsidian-cache-hang-recovery.md) +- [Gemini CLI Manual Update](gemini-cli-manual-update.md) diff --git a/05-troubleshooting/networking/fail2ban-imap-self-ban-mail-client.md b/05-troubleshooting/networking/fail2ban-imap-self-ban-mail-client.md new file mode 100644 index 0000000..6983851 --- /dev/null +++ b/05-troubleshooting/networking/fail2ban-imap-self-ban-mail-client.md @@ -0,0 +1,119 @@ +# Mail Client Stops Receiving: Fail2ban IMAP Self-Ban + +## 🛑 Problem + +A mail client stops receiving new email on one device while other devices (e.g., phone on cellular) continue to work normally. The mail server is healthy — Postfix is delivering to maildir and Dovecot is running — but the affected device receives no new messages and is never prompted for credentials. + +--- + +## 🔍 Diagnosis + +### Step 1 — Confirm the mail server is delivering + +```bash +ssh root@ "tail -20 /var/log/maillog | grep 'status=sent'" +``` + +If you see `status=sent (delivered to maildir)`, the server is working. The issue is on the client side. + +--- + +### Step 2 — Check if the client is connecting at all + +```bash +ssh root@ "grep '' /var/log/maillog | tail -10" +``` + +If there are **zero results**, the client is not reaching the server at all — not a credentials or sync issue. + +--- + +### Step 3 — Get the client's current public IP + +Run this on the affected machine: + +```bash +curl -s https://api.ipify.org +``` + +--- + +### Step 4 — Check if that IP is banned by Fail2ban + +```bash +ssh root@ "fail2ban-client status postfix-sasl" +ssh root@ "fail2ban-client status dovecot-invalid" +``` + +Look for the IP in the `Banned IP list`. If it's there, that's your problem. + +--- + +### Step 5 — Find when the ban was applied + +```bash +ssh root@ "grep '' /var/log/fail2ban.log | tail -20" +``` + +This shows the exact timestamps of auth failures and the ban event. + +--- + +## ✅ Fix + +Unban the IP from all relevant jails: + +```bash +fail2ban-client set postfix-sasl unbanip +fail2ban-client set dovecot-invalid unbanip +``` + +Mail should resume immediately without restarting any services. + +--- + +## 🔁 Why This Happens + +| Symptom | Cause | +|---|---| +| One device stops getting mail, others don't | Each device has a different public IP. Only the banned IP is blocked. | +| No auth prompt in the mail client | Fail2ban issues a TCP `REJECT` — the client sees a connection error, not an auth failure, so it doesn't prompt for new credentials. It silently retries on a timer. | +| Multiple failed attempts before ban | The mail client retried with a previously valid session token or stale auth state, triggering the `maxretry` threshold. | +| Ban on `postfix-sasl` blocks IMAP (port 993) | The `postfix-sasl` jail monitors ports 25, 465, 587, 143, 993, 110, and 995 — not just SMTP. A failed SMTP auth attempt can ban access to IMAP as well. | + +--- + +## ⚠️ Key Notes + +- **Fail2ban `postfix-sasl` covers all mail ports** — a single jail can lock out SMTP *and* IMAP simultaneously. +- **The affected device's IP is never logged in Dovecot** once banned — the rejection happens at the iptables/Fail2ban layer before Dovecot sees the connection. +- **Tailscale doesn't help** if the mail client connects via the public interface — the ban applies to the public IP, not the Tailscale IP. +- Check when the ban happened: `grep '' /var/log/fail2ban.log` shows exact timestamps. + +--- + +## 🔎 Quick Diagnostic Commands + +```bash +# Get your current public IP (run on affected machine) +curl -s https://api.ipify.org + +# Check all Fail2ban jail statuses +fail2ban-client status + +# Check a specific jail for a banned IP +fail2ban-client status postfix-sasl +fail2ban-client status dovecot-invalid + +# Unban from a specific jail +fail2ban-client set postfix-sasl unbanip +fail2ban-client set dovecot-invalid unbanip + +# Unban from all jails at once +for jail in $(fail2ban-client status | grep "Jail list" | sed 's/.*://;s/,/ /g'); do + fail2ban-client set $jail unbanip 2>/dev/null && echo "Unbanned from $jail" +done + +# Find when a specific IP was banned +grep '' /var/log/fail2ban.log | tail -20 +``` diff --git a/MajorWiki-Deploy-Status.md b/MajorWiki-Deploy-Status.md index cd03aca..447b830 100644 --- a/MajorWiki-Deploy-Status.md +++ b/MajorWiki-Deploy-Status.md @@ -31,7 +31,7 @@ DNS record and Caddy entry have been removed. ## Content -- 23 articles across 5 domains +- 37 articles across 5 domains - Source of truth: `MajorVault/20-Projects/MajorTwin/08-Wiki/` - Deployed via Gitea webhook (push from MajorAir → auto-pull on majorlab) @@ -60,3 +60,45 @@ rsync -av --include="*.md" --include="*/" --exclude="*" \ - **Cause:** `majwiki` container was in a restart loop due to a `LiterateNavParseError` in `SUMMARY.md` (invalid globbing syntax). - **Repair:** Rewrote `SUMMARY.md` with explicit links. Repaired `majwiki-webhook.service` by killing an orphaned process and correcting the Caddy reverse proxy routing for `/webhook`. - **Result:** Site live and auto-deployment functional. + +--- + +*Updated 2026-03-14* + +## Canonical Update Workflow + +Obsidian Git plugin was evaluated and dropped — too convoluted. Manual git from the terminal is the workflow going forward. + +```bash +cd ~/Documents/MajorVault +git add 20-Projects/MajorTwin/08-Wiki/ +git commit -m "wiki: describe your changes" +git push +``` + +Gitea receives the push → fires webhook → majorlab pulls → MkDocs rebuilds → `notes.majorshouse.com` updates automatically. + +## 📋 Wiki Maintenance Protocol + +Every time a new article is added, the following **MUST** be updated to maintain index integrity: + +1. **`SUMMARY.md`**: Add the article to the navigation tree. +2. **Category Index**: Update the `index.md` within the specific domain folder (e.g., `05-troubleshooting/index.md`). +3. **Main `index.md`**: + - Update the **Article count**. + - Add the article to the domain section. + - Add the article to the **Recently Updated** table. +4. **Root `README.md`**: Sync with the main `index.md` (Article count, domain lists, and Recently Updated). + +> [!note] The rsync one-liner in the Update Workflow section above was a one-off during initial setup. It is no longer the canonical method. + +--- + +## Related +- [[majorlab|majorlab]] — deploy host (port 8092, Caddy reverse proxy, Gitea webhook) +- [[01-Phases|Implementation Phases]] — Phase 9 (wiki & knowledge base) +- [[09-Lessons-Learned-v5|Lessons Learned v5]] — ISP SNI filtering on wiki.majorshouse.com (why it's notes.majorshouse.com) +- [[MajorAir|MajorAir]] — push host for git workflow +- [[MajorRig|MajorRig]] — alternative git push host (WSL2 path documented) +- [[03-11-2026|Status Update 2026-03-11]] — deployment date journal entry +- [[03-13-2026|Status Update 2026-03-13]] — content expansion and SUMMARY.md sync diff --git a/README.md b/README.md index e9f7697..59af5d5 100644 --- a/README.md +++ b/README.md @@ -2,18 +2,18 @@ > A growing reference of Linux, self-hosting, open source, streaming, and troubleshooting guides. Written by MajorLinux. Used by MajorTwin. > -> **Last updated:** 2026-03-12 -> **Article count:** 22 +**Last updated:** 2026-03-14 +**Article count:** 37 ## Domains | Domain | Folder | Articles | |---|---|---| -| 🐧 Linux & Sysadmin | `01-linux/` | 8 | +| 🐧 Linux & Sysadmin | `01-linux/` | 9 | | 🏠 Self-Hosting & Homelab | `02-selfhosting/` | 8 | -| 🔓 Open Source Tools | `03-opensource/` | 0 | +| 🔓 Open Source Tools | `03-opensource/` | 9 | | 🎙️ Streaming & Podcasting | `04-streaming/` | 1 | -| 🔧 General Troubleshooting | `05-troubleshooting/` | 5 | +| 🔧 General Troubleshooting | `05-troubleshooting/` | 10 | --- @@ -35,6 +35,9 @@ - [Ansible Getting Started](01-linux/shell-scripting/ansible-getting-started.md) — inventory, ad-hoc commands, playbooks, handlers, roles - [Bash Scripting Patterns](01-linux/shell-scripting/bash-scripting-patterns.md) — set -euo pipefail, logging, error handling, argument parsing, common patterns +### Storage +- [SnapRAID & MergerFS Storage Setup](01-linux/storage/snapraid-mergerfs-setup.md) — Pooling mismatched drives and adding parity on Linux + ### Distro-Specific - [Linux Distro Guide for Beginners](01-linux/distro-specific/linux-distro-guide-beginners.md) — Ubuntu recommendation, distro comparison, desktop environments - [WSL2 Instance Migration to Fedora 43](01-linux/distro-specific/wsl2-instance-migration-fedora43.md) — moving WSL2 VHDX from C: to another drive @@ -67,7 +70,24 @@ ## 🔓 Open Source Tools -*(Articles coming)* +### Alternatives +- [SearXNG: Private Self-Hosted Search](03-opensource/alternatives/searxng.md) — metasearch engine that queries multiple engines without exposing your identity +- [FreshRSS: Self-Hosted RSS Reader](03-opensource/alternatives/freshrss.md) — algorithm-free feed aggregator with mobile app sync +- [Gitea: Self-Hosted Git](03-opensource/alternatives/gitea.md) — lightweight GitHub alternative, webhooks, single Docker container + +### Productivity +- [rmlint: Duplicate File Scanning](03-opensource/productivity/rmlint-duplicate-scanning.md) — extremely fast duplicate file finding and storage reclamation + +### Development Tools +- [tmux: Persistent Terminal Sessions](03-opensource/dev-tools/tmux.md) — detachable sessions for long-running jobs over SSH +- [screen: Simple Persistent Sessions](03-opensource/dev-tools/screen.md) — lightweight terminal multiplexer, universally available +- [rsync: Fast, Resumable File Transfers](03-opensource/dev-tools/rsync.md) — incremental file sync locally and over SSH, survives interruptions + +### Privacy & Security +- [Vaultwarden: Self-Hosted Password Manager](03-opensource/privacy-security/vaultwarden.md) — Bitwarden-compatible server in a single Docker container, passwords stay on your hardware + +### Media & Creative +- [yt-dlp: Video Downloading](03-opensource/media-creative/yt-dlp.md) — download from YouTube and hundreds of other sites, Plex-optimized format selection --- @@ -80,10 +100,14 @@ ## 🔧 General Troubleshooting +- [Apache Outage: Fail2ban Self-Ban + Missing iptables Rules](05-troubleshooting/networking/fail2ban-self-ban-apache-outage.md) — diagnosing and fixing Apache outages caused by missing firewall rules and Fail2ban self-bans +- [Mail Client Stops Receiving: Fail2ban IMAP Self-Ban](05-troubleshooting/networking/fail2ban-imap-self-ban-mail-client.md) — diagnosing why one device stops receiving email when the mail server is healthy - [Docker & Caddy Recovery After Reboot (Fedora + SELinux)](05-troubleshooting/docker-caddy-selinux-post-reboot-recovery.md) — fixing docker.socket, SELinux port blocks, and httpd_can_network_connect after reboot - [ISP SNI Filtering with Caddy](05-troubleshooting/isp-sni-filtering-caddy.md) — troubleshooting why wiki.majorshouse.com was blocked by Google Fiber - [Obsidian Cache Hang Recovery](05-troubleshooting/obsidian-cache-hang-recovery.md) — resolving "Loading cache" hang in Obsidian by cleaning Electron app data and ML artifacts -- [yt-dlp JS Challenge Fix on Fedora](05-troubleshooting/yt-dlp-fedora-js-challenge.md) — fixing YouTube JS challenge solver errors and missing formats on Fedora +- [Qwen2.5-14B OOM on RTX 3080 Ti (12GB)](05-troubleshooting/gpu-display/qwen-14b-oom-3080ti.md) — fixes and alternatives when hitting VRAM limits during fine-tuning +- [yt-dlp YouTube JS Challenge Fix on Fedora](05-troubleshooting/yt-dlp-fedora-js-challenge.md) — fixing YouTube JS challenge solver errors and missing formats on Fedora +- [Gemini CLI Manual Update](05-troubleshooting/gemini-cli-manual-update.md) — how to manually update the Gemini CLI when automatic updates fail - [MajorWiki Setup & Pipeline](05-troubleshooting/majwiki-setup-and-pipeline.md) — setting up MajorWiki and the Obsidian → Gitea → MkDocs publishing pipeline --- @@ -92,20 +116,16 @@ | Date | Article | Domain | |---|---|---| -| 2026-03-12 | [Docker & Caddy Recovery After Reboot](05-troubleshooting/docker-caddy-selinux-post-reboot-recovery.md) | Troubleshooting | -| 2026-03-11 | [MajorWiki Setup & Pipeline](05-troubleshooting/majwiki-setup-and-pipeline.md) | Troubleshooting | -| 2026-03-11 | [Obsidian Cache Hang Recovery](05-troubleshooting/obsidian-cache-hang-recovery.md) | Troubleshooting | -| 2026-03-11 | [yt-dlp JS Challenge Fix on Fedora](05-troubleshooting/yt-dlp-fedora-js-challenge.md) | Troubleshooting | -| 2026-03-08 | [OBS Studio Setup & Encoding](04-streaming/obs/obs-studio-setup-encoding.md) | Streaming | -| 2026-03-08 | [Linux File Permissions](01-linux/files-permissions/linux-file-permissions.md) | Linux | -| 2026-03-08 | [rsync Backup Patterns](02-selfhosting/storage-backup/rsync-backup-patterns.md) | Self-Hosting | -| 2026-03-08 | [Tailscale for Homelab Remote Access](02-selfhosting/dns-networking/tailscale-homelab-remote-access.md) | Self-Hosting | -| 2026-03-08 | [Package Management Reference](01-linux/packages/package-management-reference.md) | Linux | -| 2026-03-08 | [Bash Scripting Patterns](01-linux/shell-scripting/bash-scripting-patterns.md) | Linux | -| 2026-03-08 | [Setting Up Caddy as a Reverse Proxy](02-selfhosting/reverse-proxy/setting-up-caddy-reverse-proxy.md) | Self-Hosting | -| 2026-03-08 | [SSH Config & Key Management](01-linux/networking/ssh-config-key-management.md) | Linux | -| 2026-03-08 | [Ansible Getting Started](01-linux/shell-scripting/ansible-getting-started.md) | Linux | -| 2026-03-08 | [Self-Hosting Starter Guide](02-selfhosting/docker/self-hosting-starter-guide.md) | Self-Hosting | +| 2026-03-14 | [Mail Client Stops Receiving: Fail2ban IMAP Self-Ban](05-troubleshooting/networking/fail2ban-imap-self-ban-mail-client.md) | Troubleshooting | +| 2026-03-14 | [SearXNG: Private Self-Hosted Search](03-opensource/alternatives/searxng.md) | Open Source | +| 2026-03-14 | [FreshRSS: Self-Hosted RSS Reader](03-opensource/alternatives/freshrss.md) | Open Source | +| 2026-03-14 | [Gitea: Self-Hosted Git](03-opensource/alternatives/gitea.md) | Open Source | +| 2026-03-14 | [yt-dlp: Video Downloading](03-opensource/media-creative/yt-dlp.md) | Open Source | +| 2026-03-13 | [Vaultwarden: Self-Hosted Password Manager](03-opensource/privacy-security/vaultwarden.md) | Open Source | +| 2026-03-13 | [Gemini CLI Manual Update](05-troubleshooting/gemini-cli-manual-update.md) | Troubleshooting | +| 2026-03-13 | [rmlint: Duplicate File Scanning](03-opensource/productivity/rmlint-duplicate-scanning.md) | Open Source | +| 2026-03-13 | [SnapRAID & MergerFS Storage Setup](01-linux/storage/snapraid-mergerfs-setup.md) | Linux | +| 2026-03-13 | [Qwen2.5-14B OOM on RTX 3080 Ti (12GB)](05-troubleshooting/gpu-display/qwen-14b-oom-3080ti.md) | Troubleshooting | --- @@ -113,10 +133,15 @@ | Topic | Domain | Priority | From Gap? | |---|---|---|---| -| KeePassXC self-hosted password management | Open Source | High | No | | 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 | | OBS audio routing on Linux (PipeWire) | Streaming | Medium | No | | Nextcloud setup with Docker | Self-Hosting | Medium | No | -| tmux basics | Linux | Low | No | + +--- + +## Related +- [[MajorWiki-Deploy-Status|MajorWiki Deploy Status]] — deployment status and git workflow +- [[01-Phases|Implementation Phases]] — Phase 9 (wiki & knowledge base) +- [[majorlab|majorlab]] — hosting server diff --git a/SUMMARY.md b/SUMMARY.md index 6d73af9..281840b 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -1,10 +1,42 @@ -* [Home](index.md) -* [Linux & Sysadmin](01-linux/index.md) - * [Introduction](01-linux/index.md) -* [Self-Hosting](02-selfhosting/index.md) - * [Introduction](02-selfhosting/index.md) -* [Streaming](04-streaming/index.md) - * [Introduction](04-streaming/index.md) -* [Troubleshooting](05-troubleshooting/index.md) - * [ISP SNI Filtering & Caddy](05-troubleshooting/isp-sni-filtering-caddy.md) - * [Docker & Caddy Recovery After Reboot (Fedora + SELinux)](05-troubleshooting/docker-caddy-selinux-post-reboot-recovery.md) +* [Home](index.md) +* [Linux & Sysadmin](01-linux/index.md) + * [Linux File Permissions](01-linux/files-permissions/linux-file-permissions.md) + * [Managing Linux Services with systemd](01-linux/process-management/managing-linux-services-systemd-ansible.md) + * [SSH Config & Key Management](01-linux/networking/ssh-config-key-management.md) + * [Package Management Reference](01-linux/packages/package-management-reference.md) + * [Ansible Getting Started](01-linux/shell-scripting/ansible-getting-started.md) + * [Bash Scripting Patterns](01-linux/shell-scripting/bash-scripting-patterns.md) + * [SnapRAID & MergerFS Storage Setup](01-linux/storage/snapraid-mergerfs-setup.md) + * [Linux Distro Guide for Beginners](01-linux/distro-specific/linux-distro-guide-beginners.md) + * [WSL2 Instance Migration to Fedora 43](01-linux/distro-specific/wsl2-instance-migration-fedora43.md) +* [Self-Hosting & Homelab](02-selfhosting/index.md) + * [Self-Hosting Starter Guide](02-selfhosting/docker/self-hosting-starter-guide.md) + * [Docker vs VMs for the Homelab](02-selfhosting/docker/docker-vs-vms-homelab.md) + * [Debugging Broken Docker Containers](02-selfhosting/docker/debugging-broken-docker-containers.md) + * [Setting Up Caddy as a Reverse Proxy](02-selfhosting/reverse-proxy/setting-up-caddy-reverse-proxy.md) + * [Tailscale for Homelab Remote Access](02-selfhosting/dns-networking/tailscale-homelab-remote-access.md) + * [rsync Backup Patterns](02-selfhosting/storage-backup/rsync-backup-patterns.md) + * [Tuning Netdata Web Log Alerts](02-selfhosting/monitoring/tuning-netdata-web-log-alerts.md) + * [Linux Server Hardening Checklist](02-selfhosting/security/linux-server-hardening-checklist.md) +* [Open Source & Alternatives](03-opensource/index.md) + * [SearXNG: Private Self-Hosted Search](03-opensource/alternatives/searxng.md) + * [FreshRSS: Self-Hosted RSS Reader](03-opensource/alternatives/freshrss.md) + * [Gitea: Self-Hosted Git](03-opensource/alternatives/gitea.md) + * [rmlint: Duplicate File Scanning](03-opensource/productivity/rmlint-duplicate-scanning.md) + * [tmux: Persistent Terminal Sessions](03-opensource/dev-tools/tmux.md) + * [screen: Simple Persistent Sessions](03-opensource/dev-tools/screen.md) + * [rsync: Fast, Resumable File Transfers](03-opensource/dev-tools/rsync.md) + * [Vaultwarden: Self-Hosted Password Manager](03-opensource/privacy-security/vaultwarden.md) + * [yt-dlp: Video Downloading](03-opensource/media-creative/yt-dlp.md) +* [Streaming & Podcasting](04-streaming/index.md) + * [OBS Studio Setup & Encoding](04-streaming/obs/obs-studio-setup-encoding.md) +* [Troubleshooting](05-troubleshooting/index.md) + * [Apache Outage: Fail2ban Self-Ban + Missing iptables Rules](05-troubleshooting/networking/fail2ban-self-ban-apache-outage.md) + * [Mail Client Stops Receiving: Fail2ban IMAP Self-Ban](05-troubleshooting/networking/fail2ban-imap-self-ban-mail-client.md) + * [Docker & Caddy Recovery After Reboot (Fedora + SELinux)](05-troubleshooting/docker-caddy-selinux-post-reboot-recovery.md) + * [ISP SNI Filtering with Caddy](05-troubleshooting/isp-sni-filtering-caddy.md) + * [Obsidian Vault Recovery — Loading Cache Hang](05-troubleshooting/obsidian-cache-hang-recovery.md) + * [Qwen2.5-14B OOM on RTX 3080 Ti (12GB)](05-troubleshooting/gpu-display/qwen-14b-oom-3080ti.md) + * [yt-dlp YouTube JS Challenge Fix on Fedora](05-troubleshooting/yt-dlp-fedora-js-challenge.md) + * [Gemini CLI Manual Update](05-troubleshooting/gemini-cli-manual-update.md) + * [MajorWiki Setup & Publishing Pipeline](05-troubleshooting/majwiki-setup-and-pipeline.md) diff --git a/index.md b/index.md index 440f880..22f7019 100644 --- a/index.md +++ b/index.md @@ -2,18 +2,18 @@ > A growing reference of Linux, self-hosting, open source, streaming, and troubleshooting guides. Written by MajorLinux. Used by MajorTwin. > -> **Last updated:** 2026-03-12 -> **Article count:** 22 +> **Last updated:** 2026-03-14 +> **Article count:** 37 ## Domains -| Domain | Folder | Articles | -| -------------------------- | --------------------- | -------- | -| 🐧 Linux & Sysadmin | `01-linux/` | 8 | -| 🏠 Self-Hosting & Homelab | `02-selfhosting/` | 8 | -| 🔓 Open Source Tools | `03-opensource/` | 0 | -| 🎙️ Streaming & Podcasting | `04-streaming/` | 1 | -| 🔧 General Troubleshooting | `05-troubleshooting/` | 5 | +| Domain | Folder | Articles | +|---|---|---| +| 🐧 Linux & Sysadmin | `01-linux/` | 9 | +| 🏠 Self-Hosting & Homelab | `02-selfhosting/` | 8 | +| 🔓 Open Source Tools | `03-opensource/` | 9 | +| 🎙️ Streaming & Podcasting | `04-streaming/` | 1 | +| 🔧 General Troubleshooting | `05-troubleshooting/` | 10 | --- @@ -35,6 +35,9 @@ - [Ansible Getting Started](01-linux/shell-scripting/ansible-getting-started.md) — inventory, ad-hoc commands, playbooks, handlers, roles - [Bash Scripting Patterns](01-linux/shell-scripting/bash-scripting-patterns.md) — set -euo pipefail, logging, error handling, argument parsing, common patterns +### Storage +- [SnapRAID & MergerFS Storage Setup](01-linux/storage/snapraid-mergerfs-setup.md) — Pooling mismatched drives and adding parity on Linux + ### Distro-Specific - [Linux Distro Guide for Beginners](01-linux/distro-specific/linux-distro-guide-beginners.md) — Ubuntu recommendation, distro comparison, desktop environments - [WSL2 Instance Migration to Fedora 43](01-linux/distro-specific/wsl2-instance-migration-fedora43.md) — moving WSL2 VHDX from C: to another drive @@ -67,7 +70,24 @@ ## 🔓 Open Source Tools -*(Articles coming)* +### Alternatives +- [SearXNG: Private Self-Hosted Search](03-opensource/alternatives/searxng.md) — metasearch engine that queries multiple engines without exposing your identity +- [FreshRSS: Self-Hosted RSS Reader](03-opensource/alternatives/freshrss.md) — algorithm-free feed aggregator with mobile app sync +- [Gitea: Self-Hosted Git](03-opensource/alternatives/gitea.md) — lightweight GitHub alternative, webhooks, single Docker container + +### Productivity +- [rmlint: Duplicate File Scanning](03-opensource/productivity/rmlint-duplicate-scanning.md) — extremely fast duplicate file finding and storage reclamation + +### Development Tools +- [tmux: Persistent Terminal Sessions](03-opensource/dev-tools/tmux.md) — detachable sessions for long-running jobs over SSH +- [screen: Simple Persistent Sessions](03-opensource/dev-tools/screen.md) — lightweight terminal multiplexer, universally available +- [rsync: Fast, Resumable File Transfers](03-opensource/dev-tools/rsync.md) — incremental file sync locally and over SSH, survives interruptions + +### Privacy & Security +- [Vaultwarden: Self-Hosted Password Manager](03-opensource/privacy-security/vaultwarden.md) — Bitwarden-compatible server in a single Docker container, passwords stay on your hardware + +### Media & Creative +- [yt-dlp: Video Downloading](03-opensource/media-creative/yt-dlp.md) — download from YouTube and hundreds of other sites, Plex-optimized format selection --- @@ -80,10 +100,14 @@ ## 🔧 General Troubleshooting +- [Apache Outage: Fail2ban Self-Ban + Missing iptables Rules](05-troubleshooting/networking/fail2ban-self-ban-apache-outage.md) — diagnosing and fixing Apache outages caused by missing firewall rules and Fail2ban self-bans +- [Mail Client Stops Receiving: Fail2ban IMAP Self-Ban](05-troubleshooting/networking/fail2ban-imap-self-ban-mail-client.md) — diagnosing why one device stops receiving email when the mail server is healthy - [Docker & Caddy Recovery After Reboot (Fedora + SELinux)](05-troubleshooting/docker-caddy-selinux-post-reboot-recovery.md) — fixing docker.socket, SELinux port blocks, and httpd_can_network_connect after reboot - [ISP SNI Filtering with Caddy](05-troubleshooting/isp-sni-filtering-caddy.md) — troubleshooting why wiki.majorshouse.com was blocked by Google Fiber - [Obsidian Cache Hang Recovery](05-troubleshooting/obsidian-cache-hang-recovery.md) — resolving "Loading cache" hang in Obsidian by cleaning Electron app data and ML artifacts -- [yt-dlp JS Challenge Fix on Fedora](05-troubleshooting/yt-dlp-fedora-js-challenge.md) — fixing YouTube JS challenge solver errors and missing formats on Fedora +- [Qwen2.5-14B OOM on RTX 3080 Ti (12GB)](05-troubleshooting/gpu-display/qwen-14b-oom-3080ti.md) — fixes and alternatives when hitting VRAM limits during fine-tuning +- [yt-dlp YouTube JS Challenge Fix on Fedora](05-troubleshooting/yt-dlp-fedora-js-challenge.md) — fixing YouTube JS challenge solver errors and missing formats on Fedora +- [Gemini CLI Manual Update](05-troubleshooting/gemini-cli-manual-update.md) — how to manually update the Gemini CLI when automatic updates fail - [MajorWiki Setup & Pipeline](05-troubleshooting/majwiki-setup-and-pipeline.md) — setting up MajorWiki and the Obsidian → Gitea → MkDocs publishing pipeline --- @@ -92,20 +116,16 @@ | Date | Article | Domain | |---|---|---| -| 2026-03-12 | [Docker & Caddy Recovery After Reboot](05-troubleshooting/docker-caddy-selinux-post-reboot-recovery.md) | Troubleshooting | -| 2026-03-11 | [MajorWiki Setup & Pipeline](05-troubleshooting/majwiki-setup-and-pipeline.md) | Troubleshooting | -| 2026-03-11 | [Obsidian Cache Hang Recovery](05-troubleshooting/obsidian-cache-hang-recovery.md) | Troubleshooting | -| 2026-03-11 | [yt-dlp JS Challenge Fix on Fedora](05-troubleshooting/yt-dlp-fedora-js-challenge.md) | Troubleshooting | -| 2026-03-08 | [OBS Studio Setup & Encoding](04-streaming/obs/obs-studio-setup-encoding.md) | Streaming | -| 2026-03-08 | [Linux File Permissions](01-linux/files-permissions/linux-file-permissions.md) | Linux | -| 2026-03-08 | [rsync Backup Patterns](02-selfhosting/storage-backup/rsync-backup-patterns.md) | Self-Hosting | -| 2026-03-08 | [Tailscale for Homelab Remote Access](02-selfhosting/dns-networking/tailscale-homelab-remote-access.md) | Self-Hosting | -| 2026-03-08 | [Package Management Reference](01-linux/packages/package-management-reference.md) | Linux | -| 2026-03-08 | [Bash Scripting Patterns](01-linux/shell-scripting/bash-scripting-patterns.md) | Linux | -| 2026-03-08 | [Setting Up Caddy as a Reverse Proxy](02-selfhosting/reverse-proxy/setting-up-caddy-reverse-proxy.md) | Self-Hosting | -| 2026-03-08 | [SSH Config & Key Management](01-linux/networking/ssh-config-key-management.md) | Linux | -| 2026-03-08 | [Ansible Getting Started](01-linux/shell-scripting/ansible-getting-started.md) | Linux | -| 2026-03-08 | [Self-Hosting Starter Guide](02-selfhosting/docker/self-hosting-starter-guide.md) | Self-Hosting | +| 2026-03-14 | [Mail Client Stops Receiving: Fail2ban IMAP Self-Ban](05-troubleshooting/networking/fail2ban-imap-self-ban-mail-client.md) | Troubleshooting | +| 2026-03-14 | [SearXNG: Private Self-Hosted Search](03-opensource/alternatives/searxng.md) | Open Source | +| 2026-03-14 | [FreshRSS: Self-Hosted RSS Reader](03-opensource/alternatives/freshrss.md) | Open Source | +| 2026-03-14 | [Gitea: Self-Hosted Git](03-opensource/alternatives/gitea.md) | Open Source | +| 2026-03-14 | [yt-dlp: Video Downloading](03-opensource/media-creative/yt-dlp.md) | Open Source | +| 2026-03-13 | [Vaultwarden: Self-Hosted Password Manager](03-opensource/privacy-security/vaultwarden.md) | Open Source | +| 2026-03-13 | [Gemini CLI Manual Update](05-troubleshooting/gemini-cli-manual-update.md) | Troubleshooting | +| 2026-03-13 | [rmlint: Duplicate File Scanning](03-opensource/productivity/rmlint-duplicate-scanning.md) | Open Source | +| 2026-03-13 | [SnapRAID & MergerFS Storage Setup](01-linux/storage/snapraid-mergerfs-setup.md) | Linux | +| 2026-03-13 | [Qwen2.5-14B OOM on RTX 3080 Ti (12GB)](05-troubleshooting/gpu-display/qwen-14b-oom-3080ti.md) | Troubleshooting | --- @@ -113,10 +133,14 @@ | Topic | Domain | Priority | From Gap? | |---|---|---|---| -| KeePassXC self-hosted password management | Open Source | High | No | | 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 | -| OBS audio routing on Linux (PipeWire) | Streaming | Medium | No | | Nextcloud setup with Docker | Self-Hosting | Medium | No | -| tmux basics | Linux | Low | No | + +--- + +## Related +- [[MajorWiki-Deploy-Status|MajorWiki Deploy Status]] — deployment status and update workflow +- [[01-Phases|Implementation Phases]] — Phase 9 (wiki & knowledge base) +- [[majorlab|majorlab]] — hosting server (notes.majorshouse.com)