Topic
Linux
Linux as it actually shows up at work — not the "hello world" tutorial version. systemd quirks, bash you'll reach for again, filesystem layouts that scale, package managers that won't betray you, and the small operational habits that keep boxes running. Mostly Debian and Ubuntu, with detours through Arch and Alpine when they're the right call.
257 articles in this topic.
Featured posts
-
Btrfs RAID 5/6: Still Don't
The kernel docs still warn about it. The Btrfs wiki still warns about it. People still build it and lose data. Here's the write hole, why RAID 1/10 are fine, and what to use instead.
6 min read -
SnapRAID: Parity Without Real-Time RAID
Your media library doesn't write often enough to justify mdadm or ZFS overhead. SnapRAID calculates parity on a schedule, mixes drive sizes, and pairs with MergerFS for a unified pool. Here's the setup.
9 min read -
mdadm Day-2: Grow, Replace, Scrub
Creating a RAID array is the easy part. The drama starts six months later when one drive starts dying. Here's the survival guide for everything that happens after mdadm --create.
11 min read -
Hardware RAID vs Software RAID in 2026
Hardware RAID controllers used to be necessary. Now they're often a liability. Here's when to flash that LSI card to IT mode, when to keep it, and why ZFS specifically refuses to share.
13 min read -
RAID-Z and dRAID: ZFS Parity Explained
RAID-Z isn't just RAID 5 with a new name. Variable stripe widths, no write hole, and dRAID's distributed spares change the rebuild math entirely.
13 min read -
RAID 50/60: Nested Parity Done Right
RAID 5 and 6 don't scale gracefully past 8 drives. RAID 50 and RAID 60 stripe across multiple parity sub-arrays so rebuilds only stress one group. Here's when nesting actually pays off.
13 min read
All Linux articles
- Btrfs RAID 5/6: Still Don't
- SnapRAID: Parity Without Real-Time RAID
- mdadm Day-2: Grow, Replace, Scrub
- Hardware RAID vs Software RAID in 2026
- RAID-Z and dRAID: ZFS Parity Explained
- RAID 50/60: Nested Parity Done Right
- Borgmatic: Borg Backup, Done Right
- Bazzite vs Nobara vs CachyOS Gaming
- Flatpak vs Snap vs AppImage in 2026
- Wayland vs X11 in 2026: It's Time
- COSMIC vs KDE vs GNOME in 2026
- BIOS/UEFI Tweaks for Headless Servers
- Rootless Docker: Tips, Gotchas & Fixes
- Network Booting Diskless Nodes with iPXE
- Dell R720 vs HP DL380 G9: Used Server Knife Fight
- ddrescue vs TestDisk vs PhotoRec
- Borg vs Duplicacy: Dedup Backup Wars
- KVM/QEMU/libvirt: CLI Workflows
- fd vs find: Rust Speed vs POSIX Power
- Linux Namespaces from Scratch
- rclone vs Restic: Sync vs Backup
- mtr vs traceroute: Packet Loss
- ZFS Encryption vs LUKS
- iperf3 + nload: Network Diagnosis
- SMART Disk Monitoring with smartmontools
- fio: Real Disk Benchmarking
- Access Docker socket via TCP
- Advanced UFW Techniques: Enhancing Firewall Security
- awk for Log Parsing: 5 Patterns You'll Actually Use
- Bash One-Liners Worth Remembering
- Browser GPU Acceleration on Linux in 2026
- Alsa CLI Volume control
- Compiling on Linux With Low RAM
- Creating Image Slideshows with Voiceovers using FFMPEG
- Differences Between nohup, disown, and & in Linux
- Docker Compose useful commands
- Docker Networking: Connecting to the Host from a Container
- Enable WebGL on Chrome or Firefox
- Executing Commands with Asterisks in Docker
- How to Transfer docker Images Without a Repository
- Install docker on Ubuntu/Debian
- Install & use Doxygen via Docker
- Linux Bash Tips and Tricks pt1
- Linux distribution info & kernel info
- Linux Home Lab Security: Planning for the Unexpected
- linux shell argument list too long rsync or cp
- Linux System Monitoring: Tools and Techniques
- Ollama Memory Management: Why Models Keep Loading
- OpenConnect vs AnyConnect
- Optimizing Ansible for Faster Playbook Execution
- Podman Quadlets: Running Containers Without the Docker Daemon (or Your Sanity)
- Preserving Bash History in Multiple Terminal Windows
- Proxy Chains and Anonymization: What Actually Works and What's Just Theater
- Remove spaces or Edit chracters in filenames
- Repair & Optimize all Mysql Databases one liner
- Restic vs Borg vs Kopia: Backup Tools for People Who've Lost Data Before
- Self-Hosted Email Is Probably a Bad Idea
- Set the Timezone in Ubuntu with timedatectl
- Socat: The Swiss Army Knife of Networking
- ss Is the New netstat (And It's Better)
- SSH keys and secure file copy
- Suricata vs Snort: Intrusion Detection for the Paranoid Home Lab Owner
- Switch Ubuntu to Hardware Enablement (HWE)
- Techniques for Writing Robust, Reliable Bash Scripts
- the lost+found Directory in Linux
- The Role of Antivirus and Endpoint Detection and Response Systems
- Ubuntu Debian packages have been kept back error
- UFW Basics: Setting Up Your Linux Firewall
- Ulimit, Cgroups, and the Art of Stopping Processes From Eating Your Server
- Understanding Docker vs. Full Virtual Machines (VMs)
- Understanding PostgreSQL Connection URIs
- Understanding printf vs echo in Bash
- A Guide to LXC/LXD
- Update a Single Package Using APT
- WireGuard Is Fast, But You're Leaving Performance on the Table
- FRR vs BIRD
- Lima vs Multipass
- tini vs dumb-init vs --init
- Kdenlive vs DaVinci Resolve on Linux
- Kdenlive Proxy Editing on Weak Hardware
- A Guide to Fixing OpenH264 Access Issues
- Kdenlive + OBS Studio: Screencast Pipeline
- ZFS Replication with syncoid + sanoid: The Lazy Admin's Backup
- Kdenlive Basics: Effects You Actually Use
- eBPF for the Curious: Kernel Tracing Without the PhD
- NixOS First Impressions for Pragmatists
- tmux vs Zellij vs Screen: Pick Your Multiplexer
- The Modern Unix Toolkit: fzf, ripgrep, fd, bat, eza
- systemd-nspawn: The Container Runtime Already on Your Box
- RAID Is Not Backup: Rebuild Math
- RAID 6 vs RAID 10: Two Dead Disks
- Incident Response for Self-Hosters
- RAID 0, 1, and 5: Pick One
- Package Management in 2026: apt, brew, nix, and the Friends We Made Along the Way
- Escaping Zim: Migrate to Obsidian
- CVE-2026-31431: The 9-Year Linux Root Bug
- GeForce Now: Cloud Gaming Done Right
- OpenCanary: Honeypots for Your Home Lab
- nftables: Modern Linux Firewalling
- Restic vs Borg vs Kopia: Backups That Actually Deduplicate
- Suricata vs Snort: Network Intrusion Detection That Actually Works
- Sysctl Tuning: The Linux Kernel Settings Nobody Told You About
- Falco: Catch Container Attacks at Runtime
- Cockpit vs Webmin: Web Admin Panels That Don't Make You Cry
- Your Server Doesn't Know What Random Means (And That's a Problem)
- Fail2ban vs CrowdSec: Blocking the Bots Actually Smartly
- Sysctl Tuning: The Linux Kernel Knobs That Actually Matter
- 2FA for SSH and sudo via PAM
- Systemd Timers vs Cron: Scheduling That Doesn't Suck
- SSH CA: Finally Ditch authorized_keys
- Wazuh: Open Source SIEM for Your Home Lab
- ZFS vs Btrfs: Which Modern Filesystem Wins?
- SBCs in 2026: Homelab on a Budget
- Podman Quadlets: Systemd-Native Containers
- LUKS Full Disk Encryption on Linux
- Rootless Docker: Run Without Root
- PostgreSQL + Linux: Kernel Tuning That Actually Matters
- Proxmox NAT Bridge: One IP, Many VMs
- Linux Privilege Escalation: The Defensive Playbook
- Adding Extra Swap to Linux
- Bash for loops sequential counting
- Directory FileCount
- Find out whats taking up all the hdd space
- Linux CLI Tarball Extraction — Flags, Formats, Gotchas
- Linux su with custom shell
- Logrotate & Compression
- MySQL CLI: From Connection to Maintenance
- Three ways to upload ISOs to Proxmox
- Recursively delete all empty subdirectories
- Remove all old installed but unused kernels
- Bulk rename files in bash
- When systemd swallows your service logs
- Sed 101
- Why You Should Switch to ZShell (zsh)
- Steam on Linux: It Actually Works Now
- dotenv Files: The Mistakes That Leak Secrets
- Alert Fatigue: Why Your Alerts Are Meaningless
- Shell Setup in 2026: Starship, Plugins, Fish
- MySQL & MariaDB CLI in 2026: What Changed
- Systemd Socket Activation: Start Services Only When Someone Actually Knocks
- make for Project Automation (It's Not Just for C Code)
- Vault vs Infisical: Secrets Management for Teams Who've Learned the Hard Way
- Git Hooks You Should Be Using Locally Right Now
- Running Multiple Ollama Models Without Running Out of RAM
- Bulk File Renaming on Linux: rename, vidir, fd
- Disk Space Tools in 2026: Beyond du and df
- Self-Hoster's Disaster Recovery: When Everything Goes Wrong at Once
- Compression in 2026: zstd Changed the Game
- Healthcheck vs Restart Policy: The Difference Matters
- Linux Suspend and Hibernate: Teaching Your Machine to Take a Nap Without Dying
- Sysctl Tuning: The Linux Kernel Knobs That Actually Matter
- VLAN Basics for Home Labs: Segment Your Network Before It Segments You
- Port Knocking: Simple Obscurity for SSH Access
- Building CLI Tools in Go: Because Shell Scripts Have a Maximum Complexity
- Linux Audio in 2026: PipeWire Replaced Everything
- The Reverse Proxy Timeout That Kills Long Uploads
- Time Is a Lie and Chrony Is Here to Fix It: NTP for Home Labs
- SSH Keys in 2026: Ed25519 Is the Standard
- Why Your VPN Isn't Routing What You Think
- The Header Your Reverse Proxy Keeps Dropping
- Kernel Live Patching: Security Updates Without the 3am Reboot
- You Should Be Testing Your Restores
- IPv6 on Your Home Lab: You Should Care (Here's Why)
- Tmpfs vs Ramfs: When Your Disk Is Too Slow and Your RAM Is Just Sitting There
- Log Rotation for Self-Hosted Apps
- tcpdump Basics: Capture Traffic Without Wireshark
- AppArmor vs SELinux: Mandatory Access Control Without the Existential Dread
- Your Server Doesn't Know What Random Means (And That's a Problem)
- TCP Keepalives: Why Connections Die and How to Fix It
- Auditd & Audit Logging: Know Exactly Who Touched What on Your Server
- Time Sync on VMs: Why NTP Keeps Drifting
- The MTU Problem Nobody Diagnoses Correctly
- VPN Kill Switch and DNS Leak Prevention: Paranoia, Justified
- BGP in Your Home Lab: Dynamic Routing for People Who've Run Out of Static Routes
- DNS Troubleshooting from the Command Line
- Linux Capabilities: Drop Root Without Breaking Everything
- curl Flags Every Developer Should Know
- Named Pipes (FIFOs) in Shell Scripts
- UFW Advanced: Rate Limiting, Logging, and Rules That Actually Make Sense
- Bash Arrays: The Feature That Makes Scripts Readable
- Bash Process Substitution: What <() and >() Actually Do
- Here Documents vs Here Strings in Bash
- GNU parallel for Embarrassingly Parallel Tasks
- LVM Advanced: Snapshots, Thin Provisioning, and Not Losing Your Data
- SSH Hardening: Lock Down Remote Access Without Locking Yourself Out
- trap in Bash: Clean Up When Your Script Dies
- Docker Volumes vs Bind Mounts: Where Your Data Actually Lives
- Debugging Bash Scripts: set -x and Beyond
- Word Splitting: The Bash Gotcha That Corrupts Filenames
- String Manipulation in Bash (Without sed or awk)
- bash `set -e` Doesn't Work Like You Think
- Bash Arithmetic Without bc
- Linux Audit Log: What's Really Happening on Your Server
- Ventoy: Boot Any OS, Any Time
- Bash Strict Mode: set -euo pipefail Explained
- The sudoers Mistake Everyone Makes Once
- jq One-Liners Every Sysadmin Needs
- Certificate Expiry: Monitor Before the 3 AM Call
- xargs vs while read: Which One and When
- Where Environment Variables Actually Live in Linux
- The Firewall Rule Order That's Breaking Your Setup
- Sticky Bit, Setuid, Setgid: Linux Special Permissions Explained
- Is fail2ban Actually Working? Here's How to Check
- Diagnosing Slow Linux Boot with systemd-analyze
- Docker CMD vs ENTRYPOINT: The Final Answer
- SSHFS: Ditch SCP & Access Remote Files
- How to Actually Read `systemctl status` Output
- SSH Agent Forwarding: How It Works
- Is Your Linux Server Destroying Its SSD?
- journalctl Queries Every Sysadmin Needs
- Why Your SSH Connection Keeps Dropping
- Cleaning Up Docker Disk Space the Right Way
- Why Your Cron Job Is Failing Silently
- SSH Multiplexing: Stop Reconnecting Every Time
- The Linux OOM Killer: Why It's Killing Your App
- find Flags You Keep Forgetting
- The SSH Config File: The Shortcut You're Not Using
- Why the `latest` Docker Tag Is Lying to You
- Why kill -9 Is the Wrong Default
- The umask You've Been Ignoring
- /proc as a Debugging Tool
- zram vs Swap: What's Actually Faster for Low-RAM Servers
- strace for Beginners: See What Any Process Is Doing
- Using the Clipboard from the Linux Terminal
- lsof: The Tool That Shows You Everything
- Docker Exit Codes: Why Your Container Keeps Restarting
- CPU and I/O Priority with nice and ionice
- Linux File Descriptor Limits: When 1024 Isn't Enough
- Why Your Docker Logs Are Eating Your Disk
- The `at` Command: One-Time Scheduled Tasks in Linux
- Why Your Docker Container Ignores Ctrl+C
- Understanding and Optimizing Docker’s daemon.json File
- Disabling Discord’s Activity Tracking
- Optimize Ubuntu Logs: btmp Log Rotation
- Navigating the Storm: Analysis of Intel’s 13th and 14th Gen CPU Instability Issues
- Finding the PID of a Process Using a Specific Port in Linux
- Understanding Grep: A Comprehensive Guide
- Essential Linux Commands for Daily Use
- Copying Files Between Docker Containers and Host Machines
- Understanding the regreSSHion Vulnerability in OpenSSH
- Multiple Actions with a Single docker exec Call
- Mastering xargs in Linux
- FFmpeg: Advanced Video & Audio Manipulations
- FFmpeg: Comprehensive Audio Processing Techniques
- Mastering Vim: Essential Commands and Tips
- Tmux for Streamlining Dev Workflow
- Understanding and Optimizing Performance in Proxmox VE
- LVM The Linux Sysadmin’s Guide to Flexible Storage
- Docker vs Podman: Key Differences
- SSH Tunneling: A Secure Conduit for Your Data
- User and Group Management in Linux
- Talos OS: API-Driven, Kubernetes-First OS
- SumGuy’s Guide to Linux Log Analysis
- Understanding the Mogrify Tool in Linux: A Guide to Image Manipulation
- Ed25519 ssh keys
- Ubuntu & Bash tutorial & basic utilities
- Archive & Compression utilities