No description
Find a file
MajorLinux 155651c373 wiki: ssh.socket wait-ready gate + mastodon post-install hardening
Two related additions covering the 2026-05-31 cutover-night incidents on
majorlinux and majortoot-hetzner.

ssh-socket-tailscale-race-condition.md (update Race 1 fix):
- After=tailscaled.service Requires=tailscaled.service orders against the
  service becoming active, not against tailscale0 having an IPv4 — hosts
  kept losing SSH intermittently after reboots (incident: majorlinux +
  majortoot-hetzner 2026-05-31, during cutover-night Ansible reboot).
- Canonical fix: a oneshot tailscale-wait-ready.service that polls
  `ip -4 -o addr show tailscale0` until an address is present, with
  ssh.socket After=/Requires= that service. Document the full evolution
  (2026-05-19 BindsTo → 2026-05-23 Requires → 2026-05-31 wait-ready) so
  future readers don't try the half-fixes thinking they're sufficient.
- Add majortoot-hetzner to affected hosts.

mastodon-post-install-hardening.md (new):
Four upstream-install gaps that bit during the majortoot-hetzner cutover:
1. /home/mastodon at 0750 (useradd default) → nginx www-data can't
   traverse → every static asset 403s → unstyled "purple screen" in the
   browser while API/HTML still work through the puma proxy.
2. .env.production at 0644 (mastodon-setup default) → DB_PASS,
   SECRET_KEY_BASE, OTP_SECRET world-readable once gap (1) is fixed.
3. mastodon user shell at /usr/sbin/nologin → `su - mastodon` blocked.
4. rbenv init in .bashrc only → login shells don't source .bashrc; even
   when chained, Ubuntu's .bashrc returns early for non-interactive
   shells. Fix: .bash_profile sets up rbenv BEFORE sourcing .profile +
   .bashrc, so it works for both interactive and non-interactive logins.

All four codified in MajorAnsible configure_mastodon_permissions.yml
with self-asserting verification steps.

02-selfhosting/index.md + SUMMARY.md:
Add a "Services" section to the selfhosting index linking the
mastodon-post-install-hardening article (and the other orphaned
services/ entries while there). SUMMARY.md gains one new entry.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-31 11:08:24 -04:00
.githooks githooks: mark pre-commit executable 2026-05-06 09:42:06 -04:00
01-linux wiki: update fail2ban digest + netdata docker health + 3 new articles 2026-05-02 14:58:07 -04:00
02-selfhosting wiki: ssh.socket wait-ready gate + mastodon post-install hardening 2026-05-31 11:08:24 -04:00
03-opensource Add 5 wiki articles from 2026-04-17/18 work 2026-04-18 11:13:39 -04:00
04-streaming wiki: batch update — 4 new articles + 4 updates 2026-05-25 13:55:10 -04:00
05-troubleshooting wiki: ssh.socket wait-ready gate + mastodon post-install hardening 2026-05-31 11:08:24 -04:00
.gitattributes Add .gitattributes with obsidian-timestamps merge driver 2026-04-29 22:52:07 -04:00
index.md Logwatch fleet article: add cloud-image config-drift section 2026-05-10 12:58:00 -04:00
MajorWiki-Deploy-Status.md wiki: update fail2ban digest + netdata docker health + 3 new articles 2026-05-02 14:58:07 -04:00
README.md wiki: update fail2ban digest + netdata docker health + 3 new articles 2026-05-02 14:58:07 -04:00
SUMMARY.md wiki: ssh.socket wait-ready gate + mastodon post-install hardening 2026-05-31 11:08:24 -04:00

created updated
2026-04-06T09:52 2026-04-30T05:21

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-04-14 Article count: 76

Domains

Domain Folder Articles
🐧 Linux & Sysadmin 01-linux/ 12
🏠 Self-Hosting & Homelab 02-selfhosting/ 22
🔓 Open Source Tools 03-opensource/ 10
🎙️ Streaming & Podcasting 04-streaming/ 2
🔧 General Troubleshooting 05-troubleshooting/ 30

🐧 Linux & Sysadmin

Files & Permissions

Process Management

Networking

Package Management

Shell & Scripting

Storage

Distro-Specific


🏠 Self-Hosting & Homelab

Docker & Containers

Reverse Proxies

DNS & Networking

Storage & Backup

  • rsync Backup Patterns — flags reference, remote backup, incremental with hard links, Glacier Deep Archive

Monitoring

Security

Services


🔓 Open Source Tools

Alternatives

Productivity

Development Tools

Privacy & Security

Media & Creative


🎙️ Streaming & Podcasting

OBS Studio

Plex


🔧 General Troubleshooting


Recently Updated

Date Article Domain
2026-04-13 Cron Heartbeat False Alarm: /var/run Cleared by Reboot Troubleshooting
2026-04-09 Fail2ban Custom Jail: Apache PHP Webshell Probe Detection Self-Hosting
2026-04-08 wget/curl: URLs with Special Characters Fail in Bash Troubleshooting
2026-04-07 SSH Config & Key Management Linux
2026-04-07 Windows OpenSSH: WSL Default Shell Breaks Remote Commands Troubleshooting
2026-04-07 Windows OpenSSH Server (sshd) Stops After Reboot Troubleshooting
2026-04-02 Fail2ban Custom Jail: WordPress Login Brute Force Self-Hosting
2026-04-02 Mastodon Instance Tuning Self-Hosting
2026-04-02 mdadm — Rebuilding a RAID Array After Reinstall Linux
2026-04-02 Fedora Networking & Kernel Troubleshooting Troubleshooting
2026-04-02 Ventoy: Multi-Boot USB Tool Open Source
2026-03-18 Deploying Netdata to a New Server Self-Hosting
2026-03-18 Tuning Netdata Docker Health Alarms Self-Hosting
2026-03-17 Ollama Drops Off Tailscale When Mac Sleeps Troubleshooting
2026-03-17 Windows OpenSSH Server (sshd) Stops After Reboot Troubleshooting
2026-03-16 Standardizing unattended-upgrades with Ansible Self-Hosting
2026-03-16 WSL2 Training Environment Rebuild (Fedora 43) Linux
2026-03-16 WSL2 Backup via PowerShell Scheduled Task Linux
2026-03-15 firewalld: Mail Ports Wiped After Reload Troubleshooting
2026-03-15 Plex 4K Codec Compatibility (Apple TV) Streaming
2026-03-15 mdadm RAID Recovery After USB Hub Disconnect Troubleshooting
2026-03-15 yt-dlp: Video Downloading Open Source
2026-03-14 SELinux: Fixing Dovecot Mail Spool Context (/var/vmail) Troubleshooting
2026-03-14 Gitea Actions Runner: Boot Race Condition Fix Troubleshooting
2026-03-14 Mail Client Stops Receiving: Fail2ban IMAP Self-Ban Troubleshooting
2026-03-14 SearXNG: Private Self-Hosted Search Open Source
2026-03-14 FreshRSS: Self-Hosted RSS Reader Open Source
2026-03-14 Gitea: Self-Hosted Git Open Source
2026-03-14 yt-dlp: Video Downloading Open Source
2026-03-13 Vaultwarden: Self-Hosted Password Manager Open Source
2026-03-13 Gemini CLI Manual Update Troubleshooting
2026-03-13 rmlint: Duplicate File Scanning Open Source
2026-03-13 SnapRAID & MergerFS Storage Setup Linux
2026-03-13 Qwen2.5-14B OOM on RTX 3080 Ti (12GB) Troubleshooting

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
OBS audio routing on Linux (PipeWire) Streaming Medium No
Nextcloud setup with Docker Self-Hosting Medium No