Linux guides
408 guides.
ZFS on Root on Debian (deep dive)
Install Debian 12 with ZFS on root: partition layout, boot pool vs root pool, dataset hierarchy, GRUB configuration, and first-boot verification.
Set Up an Encrypted ZFS Pool
Configure native ZFS encryption with aes-256-gcm, manage keys and boot unlock, rotate keys safely, and replicate datasets encrypted with zfs send -w.
Write an Ansible Role
Learn to build a reusable Ansible role from scratch: directory layout, defaults vs vars, handlers, templates, dependencies, and publishing to Ansible Galaxy.
Write Your First Kernel Module
Build, load, and debug a Linux kernel module from scratch: hello-world source, kbuild Makefile, insmod/modprobe workflow, and dmesg debugging on modern distros.
Ship Logs with Vector
Configure Vector to collect systemd-journald logs, reshape events with VRL transforms, and ship structured data to Grafana Loki and Elasticsearch.
Use Toolbx on Fedora (and Silverblue)
Learn how to create and use Toolbx containers on Fedora and Silverblue — including package installs, GPU passthrough, and running GUI apps from inside.
Use Kustomize (Without Templates)
Manage Kubernetes manifests without templates using Kustomize bases, overlays, patches, and generators — applied with plain kubectl -k.
Use kubectl Effectively
Master kubectl contexts, namespace switching, built-in API docs with explain, structured output, live debugging with ephemeral containers, and Kustomize overlays.
Use Helm Charts on Linux
Install Helm 3, manage chart repos, override values, render manifests locally with helm template, and package your own chart for Kubernetes.
Use GPIO Pins on a Raspberry Pi
Control Raspberry Pi GPIO pins using libgpiod — the modern replacement for deprecated sysfs. Covers CLI tools, Python, and C with real working examples.
Use distrobox to Run Other Distros in Containers
Run Arch, Fedora, Ubuntu, or any distro as an integrated container on your current system using distrobox—with shared home, GUI support, and shell integration.
Use direnv for Per-Project Environments
Learn to use direnv to automatically load per-project environment variables, with integration guides for pyenv, nvm, mise, and asdf.
Use mise (or asdf) for Tool Versioning
Install mise (or asdf) to manage Node, Python, Ruby, and more from one .tool-versions file — replacing nvm, pyenv, and rbenv with a single fast tool.
Tune PHP-FPM Pools for Production
Configure PHP-FPM pool process managers (dynamic, static, ondemand), calculate max_children from real memory usage, enable slowlog, and monitor with the status page.
The Linux Page Cache Explained
Deep dive into Linux page cache mechanics: how reads and writes flow through cache, dirty page writeback, fsync durability guarantees, and vm.dirty_* sysctl tuning.
Terraform State Management
Migrate Terraform from local to S3+DynamoDB remote state, enable locking, and master state surgery commands to handle drift and refactors safely.
Set Up a Raspberry Pi From Scratch
Flash a Raspberry Pi SD card with Imager, configure headless SSH access before first boot, update the system, and apply basic hardening on Raspberry Pi OS Bookworm.
Self-Host a GitHub Actions Runner on Linux
Install a GitHub Actions self-hosted runner on Linux, configure it as a systemd service, assign labels, register at org level, and harden the execution environment.
Seccomp-BPF Syscall Filtering
Apply seccomp-BPF syscall filtering with libseccomp and systemd SystemCallFilter to harden Linux services using allowlists, denylists, and argument-level rules.
Rootless Podman for Server Workloads
Run production containers without root using Podman's user namespaces, systemd Quadlets, subuid/subgid mapping, and rootless networking on Linux servers.
Build a Raspberry Pi Kiosk
Boot a Raspberry Pi straight into full-screen Chromium with no desktop, no cursor, and no screen blanking using labwc, systemd autologin, and Wayland.
Use a Raspberry Pi as a Headless Server
Turn a Raspberry Pi into a reliable headless server: configure SSH-only access, set a static IP, mount USB storage persistently, enable the hardware watchdog, and tune swap.
PostgreSQL Performance Tuning
Tune PostgreSQL 15/16 with pg_stat_statements for query visibility, smarter autovacuum thresholds, targeted indexing, and parallel query execution.
PostgreSQL Streaming Replication
Set up PostgreSQL 16 streaming replication with a primary and hot standby, covering WAL configuration, pg_basebackup, sync vs async modes, and manual failover.
PostgreSQL Backup and Point-in-Time Recovery
Learn PostgreSQL PITR: configure WAL archiving, take base backups with pg_basebackup, manage production backups with pgBackRest, and restore to a specific timestamp.
Offsite Backups to Backblaze B2 / R2 / S3
Back up Linux servers to Backblaze B2, Cloudflare R2, or AWS S3 using rclone, restic, and BorgBackup—with lifecycle policies and restore testing.
Monitor a Server with node_exporter
Install Prometheus node_exporter as a hardened systemd service, configure scraping, and set up Grafana dashboards for full server observability.
A Modern nginx TLS Configuration
Configure nginx with TLS 1.2/1.3, Mozilla Intermediate cipher suites, OCSP stapling, HSTS, and DH parameters for a production-ready HTTPS setup.
nginx as a Reverse Proxy: Best Practices
Configure nginx as a production-grade reverse proxy: upstream keepalive pools, buffering tuning, WebSocket upgrades, and correct X-Forwarded-* header handling.
Set Up a MariaDB Galera Cluster
Set up a synchronous three-node MariaDB Galera Cluster: gcomm addressing, bootstrap sequence, SST with mariabackup, garbd arbitrator, and split-brain prevention.
Linux Memory: Anonymous, File-backed, zswap
Deep dive into Linux anonymous vs file-backed pages, reclaim mechanics, vm.swappiness, zswap compression tuning, and zram setup for maximum memory efficiency.
Linux Virtual Memory Tuning
Tune Linux virtual memory for production: control overcommit_memory, swappiness, min_free_kbytes, and use drop_caches safely to reduce OOM kills and swap pressure.
Bufferbloat-Free Networking with CAKE
Fix bufferbloat on Linux using CAKE qdisc with tc, including autorate-ingress for variable links, persistent systemd configuration, and latency verification.
Linux Namespaces Deep Dive
A hands-on guide to all seven Linux namespace types — mnt, pid, net, user, uts, ipc, cgroup — plus unshare and nsenter with concrete shell examples.
The Linux CPU Scheduler Explained
Deep dive into the Linux CPU scheduler: how CFS, nice values, real-time policies, multi-queue SMP, and the new sched_ext BPF framework work and how to tune them.
Linux Capabilities Explained
Learn how Linux capability bits work, how to audit and replace setuid binaries with setcap/getcap, and how to use ambient capabilities in systemd services.
Hands-on Linux Auditing with auditd
Learn to configure auditd rules, watch critical files and syscalls, and extract actionable security intelligence with ausearch and aureport on modern Linux.
IPv6 on Linux — A Practical Guide
Configure IPv6 on Linux from scratch: address types, SLAAC with privacy extensions, DHCPv6, static addressing, routing, nftables firewall rules, and dual-stack operation.
Install the Wazuh Agent on Linux
Install and configure the Wazuh Agent on Linux: add the repo, enroll with your manager, set up log collection, file integrity monitoring, and vulnerability detection.
Install Uptime Kuma for Uptime Monitoring
Self-host Uptime Kuma with Docker Compose to monitor websites, TCP ports, and services — then configure alerts and a public status page in under 30 minutes.
Install Typesense on Linux
Install Typesense on Debian, Ubuntu, Fedora, or Arch; configure a secure API key; define a collection schema; index documents; and run filtered search queries.
Install TimescaleDB on PostgreSQL
Install TimescaleDB on PostgreSQL, create hypertables, automate continuous aggregates, and enforce data-retention policies on Ubuntu, Fedora, and Arch.
Install the gcloud SDK on Linux
Install the Google Cloud CLI on Linux via package repository or tarball, then configure authentication, optional components, and kubectl for GKE.
Install the Azure CLI (az) on Linux
Install the Azure CLI on Debian, Ubuntu, Fedora, RHEL, and Arch Linux using package repos, then authenticate, switch subscriptions, and add extensions.
Install and Configure the AWS CLI
Install AWS CLI v2 on Linux, configure IAM credentials, named profiles, SSO login, MFA-backed roles, region defaults, and shell tab completions.
Install and Use Terraform on Linux
Install Terraform on Debian, Fedora, and Arch Linux, configure AWS, Hetzner, and DigitalOcean providers, and manage infrastructure with plan, apply, and remote state backends.
Distributed Tracing with Tempo or Jaeger
Set up OpenTelemetry Collector with Grafana Tempo or Jaeger, instrument a Python service with OTLP exporters, and verify end-to-end distributed traces.
Try Stalwart, a Modern Rust Mail Server
Install Stalwart, a single-binary Rust mail server, with SMTP, IMAP4, JMAP, DKIM, SPF, and DMARC configured end-to-end on a Linux VPS.
Install ROCm for AMD GPUs on Linux
Install AMD's ROCm compute platform on Ubuntu, Fedora, and Arch Linux: add repos, install packages, configure groups, and verify with rocminfo.
Install PyTorch with GPU Support
Install PyTorch with NVIDIA CUDA or AMD ROCm GPU support inside a Python venv, then verify torch.cuda.is_available() returns True on Linux.
Install Pulumi on Linux
Install Pulumi on Debian, Fedora, or Arch Linux, pick a language runtime, configure a state backend, manage secrets, and compare Pulumi to Terraform.
Install Prometheus on Linux
Install Prometheus on Linux from tarball or distro packages, configure scrape targets and retention, and run it securely under a hardened systemd unit.
Configure PipeWire for Pro Audio
Configure PipeWire as a full JACK replacement for pro audio: low-latency buffer tuning, realtime scheduling privileges, MIDI bridging, and DAW integration.
Use OpenTofu (the Terraform Fork)
Install OpenTofu, the MPL-licensed Terraform fork, migrate existing projects safely, and understand provider compatibility and new features like state encryption.
Install Ollama for Local LLMs
Install Ollama on Linux to run LLMs locally, pull models like Llama 3 and Mistral, use the REST API on port 11434, and connect a web UI — no cloud required.
Install OBS Studio on Linux
Install OBS Studio on Linux via native packages or Flatpak, configure NVENC and VA-API hardware encoders, enable Wayland PipeWire capture, and add key plugins.
Install the NVIDIA CUDA Toolkit on Linux
Install NVIDIA CUDA on Linux the right way: understand driver vs toolkit, choose distro packages or the runfile, and verify with deviceQuery. Covers Ubuntu, Fedora, and Arch.
Install Netdata for Real-Time Monitoring
Install Netdata on Linux with kickstart.sh, connect to Netdata Cloud, configure alarms and plugins, and tune performance impact — step-by-step for all major distros.
Install MongoDB on Linux
Install MongoDB 7.0 on Linux via the official apt/dnf repo, configure mongod, enable authentication, and set up a single-node replica set ready for production.
Install Meilisearch on Linux
Install Meilisearch on Linux, secure it with a master key, create indexes, tune typo tolerance, and sync data from PostgreSQL using a systemd timer.
Self-Host Mail with Mailcow Dockerized
Deploy a full self-hosted mail server with Mailcow Dockerized: DNS setup, DKIM, SOGo groupware, Let's Encrypt TLS, automated backups, and monitoring.
Install Mail-in-a-Box
Set up a self-hosted mail server on Ubuntu 22.04 with one command. Covers the MiaB installer, DNS records (SPF, DKIM, DMARC), admin panel, and verification.
Install Loki and Promtail for Logs
Install Grafana Loki and Promtail as single binaries, ship systemd-journald logs, and create log-based metric rules — managed with systemd.
Install and Use llama.cpp
Build llama.cpp from source on Linux, enable CUDA/ROCm GPU offloading, load GGUF models, and serve an OpenAI-compatible local inference API.
Build a Kubernetes Cluster with kubeadm
Bootstrap a production Kubernetes cluster with kubeadm: control-plane init, Calico or Cilium CNI, worker joins, kubelet hardening, and safe minor-version upgrades.
Install k3s on a Single Linux Node
Install k3s on a single Linux node in minutes: covers the curl installer, kubeconfig setup, built-in Traefik ingress, and essential kubectl commands.
Set Up a Multi-Node k3s Cluster
Deploy a production-ready k3s cluster with embedded etcd HA across server and agent nodes — covering installation, joining, kubeconfig, and safe rolling upgrades.
Install Grafana on Linux
Install Grafana from the official repo on Debian, Ubuntu, Fedora, RHEL, or Arch, then configure datasources, dashboards, alert rules, and authentication.
Install and Configure a GitLab Runner
Install GitLab Runner on Linux, register Shell and Docker executors, configure caches, route jobs with tags, and understand autoscaling with the fleeting plugin.
Install Flux on k3s
Bootstrap Flux CD on a k3s cluster, set up GitRepository and Kustomization reconciliation, and deploy applications via HelmRelease — step by step.
Runtime Security with Falco
Install Falco with the modern eBPF probe, write custom detection rules, and route real-time runtime security alerts to Grafana Loki and Slack.
Install Drone / Woodpecker CI
Deploy Woodpecker CI (or Drone) with Docker Compose, wire OAuth to Gitea or GitHub, connect agents, and run your first pipeline in under an hour.
Install DaVinci Resolve on Linux
Install DaVinci Resolve on Ubuntu, Fedora, and Arch Linux with correct GPU drivers, codec workarounds, and audio fixes for a working professional setup.
Install ComfyUI for Stable Diffusion
Install ComfyUI for Stable Diffusion on Linux: set up a Python venv, install PyTorch for CUDA or ROCm, place models, tune GPU memory flags, and add custom nodes.
Install ClickHouse on Linux
Install ClickHouse on Linux from the official repo, configure users and storage, design an efficient MergeTree schema, ingest data, and tune for query performance.
Install BunkerWeb for nginx-based WAF
Deploy BunkerWeb as an nginx-based WAF using Docker Compose, configure ModSecurity with OWASP CRS, enable bot blocking, and verify malicious traffic is blocked.
Install Blender on Linux for 3D and Game Dev
Install Blender on Linux using the official tarball or Flatpak, configure NVIDIA, AMD, or Intel GPU drivers for Cycles rendering, and verify your setup works.
Install Argo CD on k3s
Install Argo CD on a k3s single-node cluster using Helm, then create and auto-sync your first GitOps Application from a Git repository.
Install Ardour for Audio Recording
Install Ardour on Linux via distro packages, official binary, or source build. Configure JACK or PipeWire, set up a recording session, and add LV2/VST plugins.
Install Ansible and Run Your First Playbook
Install Ansible via pip or your distro package manager, build an inventory file, then write and run your first idempotent playbook with privilege escalation.
Install and Tune Redis for Production
Install Redis on Linux, configure RDB and AOF persistence, set maxmemory eviction policies, and add replication with Sentinel for production HA.
Auto-Deploy a Static Site with Caddy + Git Hooks
Set up a zero-CI deploy pipeline: push to a bare Git repo, run a build hook, and let Caddy serve your static site with automatic TLS.
Set Up a Hetzner Cloud Server from Scratch
Create a Hetzner Cloud server from scratch: project setup, SSH key upload, cloud-init bootstrapping, cloud firewall, IPv6, and snapshots in one structured guide.
Self-Host the Tailscale Control Plane with Headscale
Run your own Tailscale control plane with Headscale: install, configure TLS, register nodes with pre-auth keys, and enforce ACL policies on your infrastructure.
Linux Server Disaster Recovery Checklist
A practical Linux server disaster recovery checklist: what to back up, RTO/RPO planning, immutable off-site copies, automated restore drills, and verification.
Set Up a DigitalOcean Droplet for Production
Create a hardened, production-ready DigitalOcean Droplet: SSH keys, doctl, cloud and host firewalls, monitoring agents, backups, and Reserved IPs explained step by step.
Container Image Best Practices
Reduce container attack surface with multi-stage builds, distroless base images, non-root users, and automated CVE scanning using Trivy, Scout, and Grype.
Set Up an OpenVPN Server
Build a complete OpenVPN server on Linux using Easy-RSA 3 for PKI, a hardened server.conf, client .ovpn profiles, and systemd — with a WireGuard comparison.
Expose a Service with Cloudflare Tunnel
Expose local services to the internet without port-forwarding using Cloudflare Tunnel. Install cloudflared, create a named tunnel, configure ingress rules, and run as a systemd service.
cloud-init Explained (with worked examples)
Learn how cloud-init bootstraps cloud VMs: user-data formats, key modules, datasource detection, and hands-on debugging on Hetzner, EC2, and DigitalOcean.
Caddy as a Reverse Proxy
Set up Caddy as a reverse proxy with automatic HTTPS, load balancing, WebSocket passthrough, reusable snippets, and header control — no certbot required.
Build a .rpm Package
Learn to build .rpm packages step by step: set up the rpmbuild tree, write a spec file with BuildRequires, and produce clean builds with mock.
Build an Arch AUR Package (PKGBUILD)
Learn to write an Arch Linux PKGBUILD from scratch, build it with makepkg, lint it with namcap, and publish it to the AUR step by step.
Build a Mesh VPN with Nebula
Build a fully self-hosted mesh VPN with Nebula: create a CA, sign node certs, configure lighthouses, enforce group-based firewall rules, and run as a systemd service.
Build a .deb Package
Step-by-step guide to building a .deb package using dh_make, debian/control, debian/rules, lintian quality checks, and clean chroot builds with sbuild.
Build a Custom Kernel the Debian Way
Build a custom Linux kernel on Debian or Ubuntu using make deb-pkg, producing clean .deb packages for easy install, update, and rollback.
Apply CIS Benchmarks with OpenSCAP
Use OpenSCAP and scap-security-guide to evaluate, report on, and remediate Linux systems against CIS Benchmarks — covering install, eval, and automation.
Manage Secrets with Ansible Vault
Encrypt Ansible secrets with AES-256 using ansible-vault: encrypt files and inline vars, automate with password files, and isolate group-level secrets with vault IDs.
Configure Prometheus Alertmanager
Configure Prometheus Alertmanager with routing trees, receivers, inhibition rules, grouping, Go templates, and PagerDuty/Slack on-call integrations.
zsh vs bash: Which Shell Should You Use?
Bash vs zsh compared honestly: POSIX scripting, tab completion, history, Oh My Zsh, Starship prompts, and exactly when each shell is the right choice.
ZFS vs Btrfs on Linux
ZFS vs Btrfs on Linux: a direct comparison of maturity, licensing, RAID safety, snapshots, performance, and which filesystem to pick for your use case.
ZFS Snapshots and Send/Receive
Create atomic ZFS snapshots, replicate datasets incrementally over SSH with zfs send/receive, and automate retention policies using zfs-auto-snapshot.
Write a Makefile for Anything (Not Just C)
Learn how to write a Makefile for any project—targets, prerequisites, .PHONY, variables, pattern rules, and the classic gotchas explained with real examples.
Void Linux and Artix — Quick Takes
A practical comparison of Void Linux and Artix Linux: how xbps and runit work on Void, OpenRC and pacman on Artix, and which distro suits which user.
Virtualisation with QEMU/KVM (deep dive)
Full guide to QEMU/KVM with libvirt: storage pools, virtual networks, virsh management, CPU pinning, and VFIO GPU passthrough on Linux.
A Vim Config From Scratch
Build a Neovim config from scratch: sensible defaults, lazy.nvim plugin manager, Treesitter, LSP via Mason, and autocompletion — all explained step by step.
Verify a Linux ISO with Checksums and GPG
Learn to verify a Linux ISO using sha256sum and GPG signatures, fetch signing key fingerprints, and respond safely to any checksum or signature mismatch.
Use a YubiKey for SSH and GPG
Move SSH and GPG private keys onto a YubiKey using the OpenPGP applet with gpg-agent and FIDO2 resident keys, with touch policies and offline backups.
Use yq to Process YAML
Learn to read, filter, transform, and safely edit YAML files in place using mikefarah/yq — the Go-based jq equivalent for YAML.
Use Wireshark on Linux
Install Wireshark on Linux, configure non-root capture, use capture and display filters, decrypt TLS with SSLKEYLOGFILE, and follow TCP streams end-to-end.
Use tcpdump Effectively
Master tcpdump with BPF filters, ring buffer tuning, rotating pcap captures, and a systemd service wrapper — without dropping packets or wasting disk space.
How to Use Snap on Linux
Learn how to install snapd, find and install snaps, choose channels, control automatic refresh schedules, understand classic confinement, and remove snap entirely.
Replace grep and find with ripgrep and fd
Replace grep and find with ripgrep and fd for faster searches, automatic .gitignore support, and safer scripting patterns—with key gotchas explained.
Use pass — the UNIX Password Manager
Set up pass, the UNIX password manager: initialise a GPG-encrypted store, manage credentials, sync across machines with Git, and integrate with your browser.
Use the GNOME Keyring or KWallet
Learn how GNOME Keyring and KWallet store secrets, enable auto-unlock at login via PAM, integrate libsecret apps and Git, and wire up SSH agent support.
Use Git Effectively from the Command Line
Master Git from the terminal: branches, merge vs rebase, interactive rebase to clean history, stash for context switching, and reflog to recover lost commits.
How to Use Flatpak on Linux
Install Flatpak, add Flathub, install and manage sandboxed apps, adjust permissions with Flatseal, and keep your system tidy by removing unused runtimes.
Use curl Like a Pro
Master curl beyond basic GET requests: inspect and send headers, authenticate with tokens, POST JSON, upload files, manage cookies, and debug with -v.
Use cgroup v2 for Resource Limits
Learn to use cgroup v2 with systemd slices, scopes, MemoryMax, CPUWeight, and IOWeight to enforce precise resource limits on Linux services and processes.
Use bpftrace for Live Kernel Tracing
Learn to use bpftrace for live Linux kernel tracing: one-liners, tracepoints, kprobes, and syscall latency histograms with real eBPF scripts.
Modern Replacements: bat, eza, zoxide
Replace cat, ls, and cd with bat, eza, and zoxide for syntax highlighting, richer file listings, and instant directory jumping — with safe shell aliases.
How to Run AppImage Files
Download, chmod +x, and run — or go further with AppImageLauncher for menu integration and Firejail for sandboxing. A complete practical guide.
Encrypt Files with age and rage
Learn to encrypt and decrypt files with age and rage: generate keys, encrypt for multiple recipients, use SSH keys, and integrate with the passage password manager.
Try a Tiling Window Manager (i3 or sway)
Install i3 or sway, understand tiling layouts and config syntax, add a status bar, and keep the useful parts of your old desktop environment.
How to Upgrade Ubuntu LTS to the Next LTS
Step-by-step guide to upgrading Ubuntu LTS to the next LTS: pre-upgrade backups, disabling PPAs, running do-release-upgrade, and fixing common post-upgrade issues.
How to Upgrade Fedora to a New Release
Upgrade Fedora in-place using dnf system-upgrade. Covers pre-upgrade prep, third-party repos, the upgrade reboot, post-upgrade cleanup, and common fixes.
Test HTTP Endpoints with curl and httpie
Learn to test HTTP APIs from the command line using curl flags and HTTPie syntax, covering GET/POST, JSON bodies, auth headers, and mutual TLS.
Snapshot Backups with Btrfs and Snapper
Set up Btrfs subvolumes, configure Snapper for automated snapshots, integrate with GRUB for bootable recovery points, and perform full system rollbacks.
Shell Script Strict Mode
Learn how set -euo pipefail, IFS, and traps protect bash scripts from silent failures, undefined variables, and leaked temporary files.
Set Up a Printer and Scanner on Linux
Set up printing and scanning on Linux using CUPS, IPP Everywhere driverless printing, and SANE with network/eSCL scanner support across Ubuntu, Fedora, and Arch.
Set Up systemd-resolved Cleanly
Enable systemd-resolved's stub listener, configure DNS-over-TLS, set up conditional forwarding for split-horizon DNS, and debug with resolvectl.
Set Up a WireGuard VPN Server
Configure a WireGuard VPN server from scratch: key generation, server and client configs, NAT with nftables, IP forwarding, firewall rules, and MTU tuning.
Self-Host Nextcloud
Install a production Nextcloud server using Nginx, PHP-FPM, MariaDB, and Redis — including systemd-managed cron and performance tuning.
Schedule Backups with systemd Timers
Use systemd timers to schedule reliable backups with OnCalendar, RandomizedDelaySec, and Persistent=true — replacing cron with better logging and catch-up runs.
rsync Recipes Every Sysadmin Needs
Practical rsync recipes for mirrors, SSH transfers, exclude lists, bandwidth throttling, hard-link snapshots, and safe dry-run verification. Ready to adapt.
Recover a Broken Package Database
Fix half-installed packages, corrupt RPM databases, and broken apt/dpkg states with targeted recovery commands for Debian, Ubuntu, Fedora, and RHEL systems.
Replace fail2ban with CrowdSec
Replace fail2ban with CrowdSec: install the agent and firewall bouncer, activate crowd-sourced blocklists, configure scenarios, and verify enforcement with nftables.
Protect SSH against Brute-force with fail2ban
Install and configure fail2ban to automatically block SSH brute-force attacks using jails, custom ban times, allowlists, and the recidive jail.
Use osquery for Linux Host Visibility
Install osquery on Linux, write SQL queries against processes, files, and sockets, configure FIM packs, and enroll hosts into a Fleet manager for full fleet visibility.
NUMA and CPU Pinning on Linux
Pin processes to specific CPUs and NUMA nodes using taskset, numactl, and systemd cgroup cpusets to cut memory latency and boost throughput on multi-socket Linux servers.
An Introduction to NixOS
NixOS uses declarative configuration and atomic generations to make Linux systems reproducible and rollback-capable. Learn installation, flakes, and when it fits.
Neovim From Scratch with Lua
Build a modern Neovim config from scratch using init.lua, lazy.nvim, Treesitter, nvim-lspconfig, and Mason — step by step with no pre-made distribution.
Diagnose Routing with mtr and traceroute
Learn to diagnose network routing problems using mtr and traceroute, covering ICMP/UDP/TCP probe types, asymmetric routing, and when results mislead you.
Migrating from Windows to Linux: A Detailed Plan
A practical, step-by-step plan for moving from Windows to Linux — covering files, email, bookmarks, license keys, peripherals, and gaming.
Migrating from macOS to Linux
Move from macOS to Linux without losing your workflow: remap ⌘ keys, restore trackpad gestures, find app alternatives, set up Time Machine-style backups, and manage dotfiles.
Mastering tmux (Power-User Guide)
Go beyond the basics with tmux: persistent sessions, pane layouts, vi copy mode, a production tmux.conf, session scripting, and TPM plugins including resurrect.
Mastering jq for JSON on the Command Line
Master jq from field access to map/select, object reshaping, type conversion, and safe shell variable injection for real-world JSON processing on the command line.
Manage SSH Keys and the SSH Agent
Generate ed25519 and RSA SSH keys, manage passphrases with ssh-agent and keychain, forward credentials safely, and harden with FIDO2 hardware tokens.
Manage Old Kernels and Clean /boot
Keep /boot from filling up by safely removing old kernel packages on Ubuntu, Fedora, and Arch — with autoremove tips and emergency recovery steps.
Mail Server Deliverability Checklist
A step-by-step advanced checklist covering PTR records, HELO identity, SPF, DKIM, DMARC, TLS, blocklist remediation, and IP warm-up for a deliverable mail server.
Audit a Linux Server with Lynis
Run Lynis on any Linux server, interpret the hardening index and findings, apply the most impactful fixes, and automate weekly audits with a systemd timer.
Lock Down systemd Services (Sandboxing)
Harden Linux daemons using systemd sandboxing directives: ProtectSystem, PrivateTmp, NoNewPrivileges, CapabilityBoundingSet, and SystemCallFilter explained step by step.
VLANs on Linux
Configure 802.1Q VLAN sub-interfaces on Linux using ip link and NetworkManager, covering switch trunk port setup, persistence, and firewall integration.
Troubleshoot a Linux Bootloader (GRUB, systemd-boot)
Step-by-step repair guide for GRUB and systemd-boot on UEFI and legacy BIOS systems, covering BLS entries, dual-boot fixes, and EFI partition recovery.
Recover a Linux System from a Live USB
Boot a live USB, mount your broken Linux install, chroot into it, and fix the most common failures: bad fstab, forgotten passwords, and broken GRUB.
Record Your Screen on Linux
Record your Linux screen using GNOME's built-in recorder, Kooha, or OBS Studio — with Wayland portal setup and hardware encoding explained.
Detect Rootkits and Malware on Linux
Use chkrootkit, rkhunter, ClamAV, and Lynis to scan a Linux system for rootkits and malware — what each tool actually checks and how to read the results.
Linux Power Management for Laptops
Extend Linux laptop battery life using TLP, auto-cpufreq, PowerTOP, and kernel boot parameters. Practical configuration for all major distros.
Linux Network Bonding (LACP and active-backup)
Configure Linux network bonding in LACP (802.3ad) and active-backup modes, including switch setup, systemd-networkd, NetworkManager, and fault-injection testing.
Analyse Linux Logs with journalctl, lnav and grep
Learn to investigate Linux logs using journalctl filters, grep pipelines, and lnav's interactive interface — then know when ELK or Loki makes more sense.
New Linux Laptop Setup Checklist
Post-install laptop checklist covering TLP power management, systemd lid actions, S3 suspend, fingerprint enrollment with fprintd, and Wi-Fi tuning for reliability and battery life.
An Introduction to io_uring
Learn how io_uring's shared ring buffers work, benchmark it against libaio with fio, and harden multi-tenant Linux servers against its known attack surface.
Bash Globbing and Extended Glob Patterns
Master Bash globbing beyond * and ?: learn globstar recursive matching, extglob operators, brace expansion, and the gotchas that cause real-world bugs.
Linux Disk Encryption Strategies
A practical guide to Linux disk encryption: full-disk LUKS2, encrypted /home partitions, kernel-native fscrypt, and file-level tools age and gocryptfs.
Calendar and Contacts on Linux
Sync Google Calendar, iCloud, and Nextcloud to Linux using CalDAV/CardDAV, GNOME Online Accounts, Evolution, Thunderbird, and vdirsyncer.
Linux Bridges (br0 etc.) Explained
Learn how Linux bridges (br0) work, when to use them for VMs and containers, how to configure them with iproute2, and how to manage STP correctly.
Turn a Linux Box into a Router
Configure a Linux machine as a full router: static interfaces, kernel IP forwarding, nftables NAT, dnsmasq DHCP, and DNS forwarding — step by step.
How to Install Ubuntu Server
Install Ubuntu Server 24.04 with Subiquity, configure LVM and OpenSSH during setup, understand cloud-init, and harden the system before your first workload.
How to Install Rocky Linux or AlmaLinux
Install Rocky Linux or AlmaLinux using the Anaconda installer: choose between minimal and server profiles, automate with kickstart, and apply first updates.
Install Python with pyenv
Install pyenv on Linux to manage multiple Python versions safely alongside your distro Python, with build deps, version switching, and virtualenv setup.
Install PostgreSQL with Sensible Tuning
Install PostgreSQL from PGDG repos and apply evidence-based tuning for shared_buffers, work_mem, effective_cache_size, and WAL settings on any Linux server.
Install and Use Podman (Docker without a daemon)
Run OCI containers without a daemon using Podman. Covers rootless setup, podman-compose, and systemd Quadlet units for production-grade container management.
Install Pi-hole for Network-Wide Ad Blocking
Install Pi-hole on Linux to block ads and trackers network-wide via DNS. Covers install, blocklists, router DNS setup, whitelisting, and keeping it updated.
How to Install openSUSE Leap or Tumbleweed
Install openSUSE Leap or Tumbleweed step by step: ISO verification, YaST partitioning, Btrfs subvolumes, Snapper snapshots, and first-boot updates.
Install Node.js with nvm on Linux
Install nvm on Linux to manage multiple Node.js versions per project, set defaults, pin versions with .nvmrc, and choose the right approach for servers and CI.
How to Install MX Linux
Step-by-step guide to installing MX Linux 23 on bare metal: writing the ISO, partitioning, choosing systemd or SysV init, and setting up MX Tools post-install.
How to Install Manjaro Linux
Install Manjaro Linux step by step: verify the ISO, write bootable media, partition with Calamares, pick a kernel, and configure drivers on first boot.
Install and Configure HAProxy
Install HAProxy and configure frontends, backends, ACL-based routing, TLS termination, sticky sessions, and HTTP health checks on modern Linux distros.
Install Google Chrome or Chromium
Install Google Chrome, Chromium, or ungoogled-chromium on Debian, Ubuntu, Fedora, and Arch. Covers repos, Wayland flags, and default browser setup.
Install Go and Rust on Linux
Install Go via the official tarball and Rust via rustup on Linux. Covers PATH setup, multiple versions side by side, and keeping both toolchains updated.
Self-Host Git with Gitea or Forgejo
Install Forgejo or Gitea on Linux, configure Caddy as a reverse proxy, enable SSH access on a custom port, push your first repository, and register an Actions runner.
Try the Fish Shell
Install Fish shell, configure autosuggestions, abbreviations, and functions, use the web UI, and understand where POSIX incompatibility will bite you.
How to Install elementary OS
Step-by-step guide to downloading, verifying, and installing elementary OS 8, covering the Calamares installer, Pantheon desktop basics, and first app setup.
Install Elasticsearch or OpenSearch
Install Elasticsearch 8 or OpenSearch 2 on Linux, tune JVM heap, configure security, set up single-node or cluster mode, and verify with live index operations.
Install and Configure zsh
Install zsh, set it as your default shell, and configure history, completions, zinit plugins, and a modern prompt like Starship or Powerlevel10k.
Install and Configure Firefox on Linux
Install Firefox on Linux via distro packages, Flatpak, or Mozilla's tarball, then set up profiles, Firefox Sync, and GPU hardware acceleration.
Install and Configure Caddy
Install Caddy on Linux, configure auto-HTTPS, set up reverse proxying and static file serving, and extend Caddy with third-party modules — all via the Caddyfile.
Immutable Linux: Fedora Silverblue, Vanilla, openSUSE Aeon
Learn how Fedora Silverblue, openSUSE Aeon, and Vanilla OS implement immutable, atomic updates with OSTree, transactional-update, and ABRoot—and how to work productively inside them.
Hugepages and Transparent Huge Pages
Learn when Transparent Huge Pages hurt database performance, how to disable THP persistently with systemd, and how to configure static hugepages for PostgreSQL and other databases.
Host Static Sites with nginx
Install nginx on Linux, host multiple static sites with SSL, gzip/brotli compression, long-lived caching headers, and HTTP-to-HTTPS redirects.
Host Multiple Sites on One Linux Server
Host multiple websites on one Linux server using Nginx as a reverse proxy, systemd-managed app services, per-domain TLS, and isolated system users.
GPU Passthrough for a Gaming VM
Pass a GPU directly to a KVM/QEMU Windows VM using IOMMU, vfio-pci, and Looking Glass — with honest notes on anti-cheat compatibility.
Diagnose and Fix "No Space Left" When Disk Is Empty (Inodes)
"No space left" with gigabytes free? You've hit inode exhaustion. Learn how to confirm it, find the culprit directories, clean up millions of files, and prevent recurrence.
Fix Locale, Charset and Timezone Issues
Fix broken locale, charset, and timezone settings on Linux—covering locale-gen, LC_* variables, timedatectl, container images, and cron environment traps.
The Best Email Clients on Linux
Compare Thunderbird, Evolution, Geary, and Claws Mail on Linux — with installation commands and OAuth2 setup for Gmail and Office 365 on each client.
Docker Compose in Production
Deploy Docker Compose in production with compose.yaml, explicit networks, named volumes, restart policies, journald logging, and file-based secrets.
How to Diagnose a Slow Network on Linux
Diagnose Linux network slowness layer by layer using ping, mtr, iperf3, ethtool, tcpdump, and dmesg—from bad cables to kernel buffer tuning.
Debug systemd Units that Won't Start
Learn a repeatable workflow to debug systemd services that won't start: status output, journalctl, systemd-analyze verify, and safe override.conf patches.
Auto-unlock LUKS at Boot with TPM2 and Clevis
Bind a LUKS2 volume to your TPM2 chip with Clevis so encrypted disks unlock automatically at boot—without sacrificing your recovery passphrase.
Configure the Touchpad and Multitouch Gestures
Configure Linux touchpad behavior and multitouch gestures using libinput, libinput-gestures, and native GNOME and KDE Plasma settings on both Wayland and X11.
Configure Tailscale on Linux
Install Tailscale on Linux, authenticate devices, enable MagicDNS, configure exit nodes and subnet routes, and set up basic ACLs for access control.
Configure systemd-networkd
Learn how to configure systemd-networkd with .network unit files for static IPs, DHCP, bonding, bridges, and VLANs on modern Linux servers.
nftables from Scratch
Build a complete nftables firewall from scratch: tables, chains, hooks, sets, maps, NAT, and atomic transactional updates explained with real rules.
Set Up a Mail Server with Postfix
Build a complete self-hosted mail server with Postfix, Dovecot IMAP, OpenDKIM signing, SPF, and DMARC—step by step for Debian, Fedora, and Arch.
firewalld Zones and Rich Rules in Practice
Assign interfaces to firewalld zones, open services, write rich rules for source-based and rate-limited policies, and manage runtime vs permanent config.
Linux Clipboards Explained (+ Clipboard Managers)
Learn the difference between Linux's PRIMARY and CLIPBOARD selections, use xclip, xsel, and wl-clipboard from the terminal, and manage history with GPaste or Klipper.
chrony and Secure Time on Linux
Configure chrony with NTS (authenticated NTP over TLS) on Linux to prevent clock-skew attacks and protect Kerberos, TLS, and TOTP authentication.
Build an nftables Firewall Script
Build a complete nftables firewall from scratch: tables, chains, sets, default-deny input policy, service allowlisting, and persistent systemd configuration.
Build a Real Command-Line Tool in Shell
Build a proper CLI tool in Bash with strict mode, long/short argument parsing, --help, usage(), and clean packaging via install and a Makefile.
The Linux Boot Process Explained
Trace the full Linux boot sequence from UEFI firmware through GRUB2, the kernel, initramfs, and systemd to your login prompt — with diagnostics at each stage.
Bash Functions and Variable Scoping
Master Bash function scoping with local variables, source-based libraries, correct use of return codes, and array passing techniques including namerefs.
Bash Arrays and Associative Arrays
Master bash indexed and associative arrays: declaration, element access, looping, mapfile, namerefs, and practical patterns for real scripting work.
Back Up Linux with Borg or restic
Set up encrypted, deduplicated backups with BorgBackup or restic: local and remote repos, retention pruning, restoring files, and systemd timer scheduling.
Arch vs EndeavourOS vs Manjaro
Arch, EndeavourOS, and Manjaro compared honestly: repository differences, AUR compatibility, install experience, and which one suits your actual workflow.
Alpine Linux on Servers and in Containers
Deploy Alpine Linux on servers and in containers: musl vs glibc trade-offs, apk package management, OpenRC init, security hardening, and container best practices.
How to Write Portable POSIX Shell Scripts
Write shell scripts that run correctly under dash, BusyBox sh, and Bash by avoiding Bashisms, using POSIX constructs, and linting with shellcheck.
How to Write Bash Functions Properly
Learn to write reliable bash functions: safe argument handling, correct return values, proper use of local, error handling with set -e, and clean naming conventions.
How to Use a YubiKey on Linux
Use a YubiKey on Linux for PIV SSH, FIDO2 sudo and login via PAM, GPG smart card subkeys, and SSH through gpg-agent — step by step.
How to Use tldr for Quick Command Help
Install tealdeer or the Node.js tldr client, populate the offline cache, and look up practical command examples faster than man pages allow.
How to Use ripgrep (rg) Instead of grep
ripgrep (rg) is a fast, Rust-powered grep replacement with gitignore support built in. Learn installation, regex syntax, and the most useful flags.
How to Use jq for JSON on the Command Line
Learn to filter, transform, and reshape JSON on the command line with jq — covering selectors, map/select, object construction, and real API pipelines.
How to Use fzf, the Fuzzy Finder
Install and configure fzf to fuzzy-search files, shell history, processes, and git branches — with shell integration for Bash, Zsh, and Fish.
How to Use fd Instead of find
Learn to use fd, the modern find alternative: friendlier syntax, smart defaults, .gitignore support, and parallel command execution with --exec.
How to Use bat as a Better cat
Learn how to use bat as a modern replacement for cat, with syntax highlighting, line numbers, paging control, and Git diff integration on Linux.
How to Tune PostgreSQL for Performance
Tune PostgreSQL for production by configuring shared_buffers, work_mem, autovacuum, index hygiene, and pg_stat_statements query profiling — with per-distro commands.
How to Build a WireGuard Mesh Between Servers
Build a WireGuard mesh VPN across multiple servers: key generation, per-node configs, AllowedIPs routing logic, NAT traversal, firewall rules, and full verification.
How to Set Up Unbound as a Recursive DNS Resolver
Install Unbound, configure root hints and DNSSEC validation, and point your LAN at a private recursive DNS resolver — no upstream forwarder required.
How to Set Up Tailscale on Linux
Install Tailscale on Linux, authenticate devices, configure ACLs, and enable MagicDNS to build a secure WireGuard mesh VPN in minutes.
How to Run Rootless Containers with Podman
Run OCI containers without root or a daemon. Learn Podman installation, user namespace setup, rootless networking, and systemd Quadlet unit files for production use.
How to Set Up Pi-hole on a Linux Server
Set up Pi-hole on Linux for network-wide ad and tracker blocking — covers installation, blocklists, gravity updates, conditional forwarding, and DHCP.
How to Configure nginx as a Reverse Proxy
Configure nginx as a reverse proxy: proxy_pass basics, correct header forwarding, WebSocket upgrade handling, and TLS termination with Let's Encrypt.
How to Set Up Kubernetes with k3s
Set up a lightweight Kubernetes cluster with k3s on Linux: single-node or multi-node, kubectl config, and your first real deployment in under 30 minutes.
How to Set Up HiDPI and 4K Displays on Linux
Configure HiDPI and 4K scaling on Linux across GNOME, KDE, Sway, and X11—including fractional scaling and mixed-DPI multi-monitor setups.
How to Set Up and Use Docker Compose
Learn how to write Compose files, define networks and volumes, manage environment variables, and control multi-container Docker stacks with the modern Compose CLI plugin.
How to Add Two-Factor Authentication to SSH
Enforce two-factor authentication on SSH using PAM and Google Authenticator TOTP, with YubiKey alternatives and per-user exemption patterns for automation accounts.
How to Scan a Linux System for Malware with ClamAV
Install ClamAV on Linux, update virus signatures with freshclam, run on-demand and scheduled scans, and verify detection works with the EICAR test file.
How to Reset the Linux Network Stack
Reset a broken Linux network stack without rebooting: restart NetworkManager or systemd-networkd, flush the DNS cache, renew DHCP leases, and clear stale routes.
How to Recover Deleted Files on Linux with PhotoRec
Accidentally deleted files on Linux? PhotoRec scans raw disk sectors to recover documents, images, and more — no filesystem needed. Here's exactly how.
How to Protect nginx with fail2ban
Build custom fail2ban filters for nginx to block bad bots, brute-force attempts, and scanners — with tuned ban times and firewall backend configuration.
How to Observe a Linux System with eBPF
Use bpftrace one-liners and BCC tools to trace syscalls, I/O latency, CPU flame graphs, and TCP sessions on a live Linux system with minimal overhead.
Master Vim: A Practical Path Beyond the Basics
Go beyond the basics: master Vim buffers, registers, macros, and the help system, then add only the plugins that genuinely earn their place.
How to Manage Dotfiles with GNU Stow
Use GNU Stow to turn a Git repository into a symlink farm for your dotfiles — deploy any config to a new Linux machine in under a minute.
Linux vs macOS: How They Compare
A practical comparison of Linux and macOS for developers and switchers: terminal tools, package managers, hardware support, and daily workflow differences.
How to Learn Regular Expressions on Linux
Learn regex on Linux from the ground up: character classes, anchors, quantifiers, and hands-on practice with grep, sed, awk, and ripgrep.
How to Install Zsh and Oh My Zsh
Install Zsh and Oh My Zsh on Linux, set Zsh as your default shell, configure Powerlevel10k, and add syntax highlighting and autosuggestion plugins.
How to Install Zorin OS for Windows Switchers
Install Zorin OS on any PC for a Windows-like Linux experience — bootable USB, disk partitioning, layout chooser, pre-installed apps, and first troubleshooting steps.
How to Install Traefik as a Reverse Proxy
Install Traefik v3 as a Docker-based reverse proxy with automatic Let's Encrypt TLS, static and dynamic config, and label-driven service routing.
How to Install and Use the Fish Shell
Install Fish shell on Linux, set it as your default, and learn abbreviations, autosuggestions, and how to migrate your bash habits in one practical guide.
How to Install Rocky Linux on a Server
Install Rocky Linux 9 on a server with correct partitioning, static networking, a minimal software profile, and post-install hardening steps.
How to Install and Configure Redis
Install Redis on Debian, Ubuntu, Fedora, and Arch; configure persistence, memory limits, authentication, and manage the service with systemd for production use.
How to Install RabbitMQ on Linux
Install RabbitMQ on Debian, Ubuntu, Fedora, Rocky, and Arch using official repos, enable the management UI, create users, and test a live queue.
How to Install Prometheus and Grafana on Linux
Install Prometheus and Grafana on Linux, configure node_exporter scraping, connect the datasource, and build your first system metrics dashboard.
How to Install Pop!_OS
Install Pop!_OS step by step: pick the right NVIDIA or Intel ISO, write a bootable USB, configure disk encryption, and complete day-one setup.
How to Install NixOS
Install NixOS from scratch: partition disks, write configuration.nix, pick a channel, run nixos-install, and master the nixos-rebuild workflow for atomic system changes.
How to Install Manjaro Linux
Install Manjaro Linux the right way: verify the ISO, run the Calamares installer, pick a kernel, configure drivers, and harden your new system in minutes.
How to Set Up HAProxy as a Load Balancer
Set up HAProxy as an HTTP load balancer with active health checks, stick tables for session persistence, and a live stats dashboard — step by step.
How to Install Debian 12 (Bookworm)
Step-by-step walkthrough of the Debian 12 Bookworm installer: disk partitioning, tasksel, GRUB setup, and essential post-install configuration.
How to Install Caddy: The TLS-Automatic Web Server
Install Caddy web server, configure the Caddyfile, get automatic HTTPS from Let's Encrypt, and set up reverse proxying in under 15 minutes.
How to Fix Screen Tearing on Linux
Fix screen tearing on Linux for Intel, AMD, and NVIDIA GPUs using TearFree, Force Composition Pipeline, and compositor settings on X11 and Wayland.
How to Fix dpkg "Broken Packages" Errors
Fix dpkg broken package errors step by step: configure pending packages, repair dependencies with apt --fix-broken, force-remove stuck packages, and rebuild the dpkg database.
How to Fix "Could not get lock /var/lib/dpkg/lock"
Fix the /var/lib/dpkg/lock error safely: identify the process holding the lock, handle stale files, and repair the package database without causing corruption.
How to Detect Rootkits with rkhunter
Install rkhunter, build a clean file-property baseline, tune the config to cut false positives, and automate daily scans with a systemd timer.
Wayland vs X11: How to Choose and Configure Each
Know when to run Wayland or X11, how to check your current session, switch at login with GDM/SDDM/LightDM, and handle NVIDIA and XWayland edge cases.
How to Configure ModSecurity as a Web Application Firewall
Install ModSecurity with OWASP CRS on Apache or Nginx, run it in detection mode to catch false positives, tune exclusions, then enforce blocking.
How to Benchmark Disk Performance with fio
Learn to benchmark Linux disk performance with fio: writing job files, testing latency and throughput, and interpreting IOPS and percentile output correctly.
How to Audit Linux Hardening with Lynis
Run Lynis to audit your Linux server, interpret the hardening index and warning output, and work through findings from critical to low-effort wins.
ZFS on Linux: The Basics
Set up OpenZFS on Linux: create pools with mirroring or RAID-Z, manage datasets with compression and quotas, and use snapshots for instant backups.
X11 Programming with the Athena Widgets
Build a working X11 GUI application using Xlib, the Xt Intrinsics, and the Athena widget set — covering the full stack from wire protocol to compiled binary.
X11 Pixmaps and Bitmaps
Learn X11 XPM and XBM image formats: file structure, creation with ImageMagick, loading via Xlib/libxpm in C, viewing tools, and when to migrate to PNG or SVG.
WSL: Run Linux on Windows
Install WSL2 on Windows 10 or 11, pick a Linux distro, access files across both systems, and enable systemd for full service management.
Writing Technical Documentation (the Linux way)
Write and publish Linux technical documentation using Markdown, AsciiDoc, man pages, DocBook, pandoc, and MkDocs—with CI integration and practical examples.
Windows to Linux: App Alternatives for Everything
A practical mapping of Windows software to Linux equivalents covering office, photo editing, audio production, development tools, and gaming.
What Is Arch Linux? (And Should You Use It)
Arch Linux is a rolling-release, DIY distribution built on minimal defaults and user control. Learn what it demands and whether it fits your workflow.
Webmin: The Complete Setup Guide
Install Webmin on Debian/Ubuntu and RHEL-family Linux, configure core modules, and harden it with TLS, 2FA, and IP restrictions for production use.
Vim for Beginners
Learn Vim's modal editing model from scratch: modes, movement, editing, saving, search, and the essential commands every Linux user needs to know.
How to Use tmux
Master tmux sessions, windows, panes, detach/reattach, and a practical ~/.tmux.conf so you can manage persistent terminal workflows like a pro.
How to Use the ip Command
Master the ip command to manage interfaces, addresses, routes, and ARP neighbours — the modern replacement for ifconfig, route, and arp on Linux.
How to Upgrade to a New Distro Release
Step-by-step in-place distro upgrades: Ubuntu/Debian do-release-upgrade, Fedora dnf system-upgrade, and Arch Linux rolling upkeep, with verification and recovery tips.
Understanding Linux File Permissions
Master Linux file permissions from scratch: understand rwx bits, owner/group/other classes, chmod numeric and symbolic modes, chown, and the sticky bit.
Understanding Linux Load Average
Load average measures scheduler demand—not CPU usage. Learn what the three numbers really mean, how to interpret them per CPU count, and how to separate CPU from I/O load.
Ubuntu vs Debian: Which Should You Use?
Debian and Ubuntu share a foundation but differ on release cadence, package freshness, and default tooling. Here's how to pick the right one for your workload.
How to Tune Kernel Parameters with sysctl
Learn how to tune Linux kernel parameters at runtime and permanently using sysctl and /etc/sysctl.d, with practical network and VM tunables explained.
Try Linux Without Installing: Live USB Guide
Run Linux from a flash drive without touching your hard drive. This guide covers creating a live USB with Ventoy or Etcher, enabling persistence, and testing hardware compatibility.
How to Troubleshoot Network Connectivity
Diagnose Linux network problems layer by layer using ip, ping, traceroute, ss, and dig — from interface state to DNS resolution.
Touchscreen Configuration on Linux
Configure Linux touchscreens end-to-end: verify libinput detection, calibrate under Wayland and X11, map to the right display, and enable multi-touch gestures.
The X Window System Explained
Understand how X11 actually works — X server, clients, display managers, window managers, compositors — and how Wayland's architecture differs and why it matters.
The Linux Framebuffer Console
Understand Linux framebuffer internals, the fbdev-to-DRM/KMS evolution, and how to set a crisp high-resolution console with the right kernel parameters.
The History of Berkeley Unix (BSD)
From Bell Labs to Berkeley to the courtroom: how BSD Unix was built, fought over, and shaped the open-source software world that Linux users live in today.
TCP/IP Protocols Explained
Understand IP, TCP, UDP, ICMP, ports, and the four-layer model — the core networking concepts every Linux sysadmin must know before touching a firewall or debugg
How to Take Screenshots on Linux
Learn how to take screenshots on Linux using GNOME and KDE built-in tools, Flameshot with annotations, and Wayland-compatible command-line utilities.
Sync Phones and Handheld Devices with Linux
Sync Android phones with Linux using MTP for file transfer and KDE Connect or GSConnect for wireless integration. Includes PalmOS history and CalDAV setup.
How to Switch from Windows to Linux
A practical migration plan covering backups, dual-booting, app replacements, and Linux habits — for Windows users making the switch for the first time.
SSH: The Complete Guide
Master SSH from first login to port forwarding: key-based auth, client config files, the SSH agent, and local/remote tunnels on any Linux distribution.
Squid Debug Logging: Turn It On and Read It
Learn how to enable Squid debug_options, navigate cache.log and access.log, and trace the exact cause of a denied or failed proxy request.
Set Up Squid as a Caching Web Proxy
Install and configure Squid as a forward caching proxy on Linux — covering ACLs, cache tuning, firewall rules, and explicit vs transparent intercept mode.
Squid ACL Configuration Explained
Learn how Squid proxy ACL definitions and http_access rules work, why ordering is critical, and avoid the most common allow/deny configuration mistakes.
Software RAID on Linux with mdadm
Build and manage Linux software RAID arrays with mdadm: choose the right RAID level, create and persist the array, monitor health, replace a failed disk, and handle boot safely.
Shadow Passwords Explained
Learn why /etc/shadow exists, how to read its nine fields, which hashing algorithms are current, and how to manage password aging with chage, pwconv, and pwck.
How to Set Up Multiple Monitors on Linux
Configure multiple monitors on Linux: physical arrangement, per-display resolution, refresh rates, and scaling on both X11 (xrandr) and Wayland (GNOME, KDE, Sway, kanshi).
How to Set Up KVM Virtualization
Set up KVM/QEMU virtualization on Linux with libvirt and virt-manager. Covers hardware checks, installation on Ubuntu, Fedora, and Arch, networking, and creating VMs.
How to Set Up GPG Encryption
Generate GPG key pairs, encrypt and decrypt files, sign data, manage your keyring, and verify signatures on Debian, Fedora, and Arch Linux.
How to Set Up Bluetooth on Linux
Install BlueZ, pair Bluetooth devices from the command line or GUI, configure audio profiles with PipeWire, and fix the most common Bluetooth issues on Linux.
How to Set Up an NFS Server
Set up a production-ready NFSv4 server on Linux: configure exports, mount shares on clients, lock down permissions, and tune read/write performance.
How to Set Up a VPN with WireGuard
Set up a WireGuard VPN on Linux from scratch: generate keys, configure server and client peers, enable routing, and verify a live encrypted tunnel.
How to Set Up a Samba File Share
Step-by-step guide to installing Samba, creating a share user, configuring smb.conf, opening the firewall, and mounting the share from Windows and Linux clients.
How to Set Up a LEMP Stack
Install and configure Nginx, MariaDB, and PHP-FPM on a fresh Linux server. Covers Debian, Ubuntu, Fedora, RHEL, Rocky, and Arch with systemd service management.
How to Set Up a Firewall with UFW
Learn to configure UFW on Linux: set secure default policies, open only the ports you need, read existing rules, and verify your firewall is working correctly.
How to Set Up a Firewall with firewalld
Learn how to configure firewalld using zones, services, rich rules, and source bindings — with a clear explanation of runtime vs permanent changes.
How to Set Up a DNS Server with BIND
Install and configure BIND 9 as a caching resolver and authoritative nameserver, with forward/reverse zones, common resource records, and firewall rules.
How to Set Up a DHCP Server on Linux
Install and configure ISC DHCP or Kea on Linux: define scopes, set static reservations, inspect leases, open firewall ports, and hook into dynamic DNS.
SELinux Explained (and How to Live With It)
Learn SELinux modes, file contexts, booleans, and how to fix denials with restorecon, setsebool, and audit2allow — without ever disabling it.
A Practical Guide to sed and awk
Learn sed and awk through practical examples: substitutions, in-place edits, field splitting, pattern-action programs, and real pipeline use cases.
How to Secure Webmin
Harden Webmin against attack: restrict access by IP, enforce HTTPS with valid certs, set up TOTP two-factor auth, integrate Fail2ban, and lock down modules.
How to Run a Node.js App in Production with PM2
Deploy a Node.js application with PM2: process management, ecosystem config files, systemd startup integration, and structured log rotation.
RHEL vs Rocky vs AlmaLinux
CentOS is gone. Here's how RHEL, Rocky Linux, and AlmaLinux compare on governance, compatibility, certifications, and which to choose for production.
Remote X Sessions with XDMCP (and modern alternatives)
Learn how XDMCP works, why it is insecure, and how to replace it with X2Go, VNC-over-SSH, xrdp, or native Wayland remoting on modern Linux systems.
How to Recover a Forgotten Root Password
Forgot the Linux root password? Boot into single-user mode or use rd.break to reset it safely, with steps for Debian, Fedora/RHEL, and Arch.
How to Read Logs with journalctl
Learn to filter systemd journal logs by unit, time, and priority with journalctl, follow logs live, and manage disk usage on any modern Linux system.
How to Profile Linux Performance
Learn to profile Linux performance using the USE method, perf stat, perf record, flame graphs, and scheduler tracing to systematically find CPU, memory, and I/O bottlenecks.
Port Forwarding on Linux
Forward ports on Linux using nftables DNAT rules, SSH local/remote tunnels, and router NAT configuration — with persistence and troubleshooting tips.
How to Play Games on Linux with Steam and Proton
Install Steam, enable Proton, use ProtonDB to check compatibility, and set up Lutris to run Windows games on any major Linux distro.
Pipes and Redirection in Bash
Master Bash pipes and redirection: learn stdin, stdout, stderr, |, >, >>, 2>&1, /dev/null, tee, xargs, and how to build reliable command pipelines.
Multicast Networking on Linux
Configure IPv4/IPv6 multicast on Linux: addressing, IGMP group membership, interface flags, and live testing with iperf3 and socat.
MTU and Packet Fragmentation Explained
Learn what MTU is, how path MTU discovery works, why it breaks, and how to diagnose and fix MTU mismatches on Linux with practical commands and examples.
How to Mount and Unmount Drives
Learn how to mount and unmount drives on Linux using mount, umount, and /etc/fstab with UUIDs for reliable, persistent automounting across reboots.
How to Monitor Processes on Linux
Learn to monitor Linux processes with ps, top, htop, and btop. Covers reading process states, killing processes safely, and tuning CPU priority with nice/renice.
Master the grep Command
Learn grep from plain string searches to recursive directory scans, regular expressions, context flags, and practical log-analysis one-liners on Linux.
How to Manage Services with systemctl
Learn to start, stop, enable, disable, and mask Linux services using systemctl, plus how to read failures and diagnose problems with journalctl.
How to Manage Disk Partitions on Linux
Learn to create, resize, and format Linux disk partitions using fdisk and parted, covering GPT, ext4/xfs/btrfs filesystems, fstab, and safe resizing procedures.
LVM: The Logical Volume Manager Explained
Learn how LVM works — Physical Volumes, Volume Groups, Logical Volumes — then create, resize, and snapshot volumes with real commands on any major Linux distro.
Linux Troubleshooting: A Practical First-Response Guide
A repeatable first-response method for Linux problems: read the error carefully, query journalctl, isolate the triggering change, search precisely, and ask for help effectively.
Building Linux Thin Clients
Deploy Linux thin clients using modern LTSP, PXE boot, and NFS root setups. Covers server config, squashfs images, UEFI/BIOS PXE, and Wayland caveats.
Linux Server Security Checklist
A step-by-step Linux server hardening checklist: secure SSH, firewall rules, automatic updates, service auditing, fail2ban, and intrusion detection for any internet-facing server.
Linux on Old and Low-RAM Hardware
Breathe life into old hardware with lightweight Linux desktops, proper swap file setup, zram compression, and I/O tuning for machines with 1–4 GB of RAM.
Linux Networking Fundamentals
Master Linux networking from the ground up: interfaces, IP addressing, gateways, DNS, and the essential tools ip, ping, and ss with distro-specific examples.
Linux Hardware Compatibility: What Works and How to Check
Check GPU, Wi-Fi, and printer compatibility before installing Linux. Learn lspci, lsusb, firmware packages, and the best lookup resources for your hardware.
Linux for Astronomy
Set up KStars, Stellarium, and INDI on Linux for telescope control, automated imaging sequences, and image stacking with Siril.
The Linux File System for Beginners
Learn how Linux organizes files into a single directory tree: what / vs /home means, how mount points work, and where binaries, configs, and logs live.
Linux DNS Configuration
Configure Linux DNS end-to-end: understand /etc/resolv.conf, manage systemd-resolved, use /etc/hosts for static overrides, and verify with dig.
The Linux Command Line for Absolute Beginners
Learn the Linux command line from scratch: what the shell is, how to navigate with cd/ls/pwd, manage files, and master your first essential commands.
Limit Bandwidth on Linux with tc
Shape Linux network traffic with tc, HTB qdiscs, and fq_codel. Enforce per-interface and per-host bandwidth limits that survive reboots via systemd.
Lightweight Window Managers and Desktops
Install and configure i3, Sway, and Openbox on Linux. Learn tiling vs floating WMs, minimal session setup, status bars, and autostart with systemd.
How to Keep Linux Updated
Learn how to safely update Debian, Ubuntu, Fedora, RHEL, and Arch Linux systems using apt, dnf, and pacman — including how to hold or exclude packages.
IP Masquerading and NAT on Linux
Set up IP masquerading and NAT on Linux using nftables to turn any machine into a router. Covers ip_forward, SNAT, DNAT, and iptables equivalents.
An Introduction to TCP/IP
Learn how TCP/IP works — IP addressing, routing, TCP vs UDP, ports, DNS, and the layered model — with practical Linux commands to see it all in action.
An Introduction to eBPF
Learn what eBPF is, how the kernel verifier keeps it safe, and how to use bpftrace to trace syscalls, disk I/O, and CPU scheduling with working examples.
An Introduction to cgroups
Learn how cgroups v2 work, how systemd maps services onto the cgroup tree, and how to set CPU, memory, and I/O limits for processes and services.
How to Install Ubuntu 24.04 LTS Desktop
Install Ubuntu 24.04 LTS Desktop step by step: create a bootable USB, partition your disk, set up your user account, and apply first-boot updates.
How to Install Software on Linux
Learn how to install software on Linux using apt, dnf, pacman, Flatpak, Snap, and AppImage — with clear guidance on when to use each method.
How to Install and Configure PostgreSQL
Install PostgreSQL on Debian, Fedora, or Arch, then configure roles, databases, pg_hba.conf authentication, and secure remote access in clear, production-ready steps.
How to Install NVIDIA Drivers on Linux
Install NVIDIA proprietary drivers on Ubuntu, Debian, Fedora, and Arch Linux. Covers driver selection, Wayland setup, and troubleshooting common failures.
How to Install MySQL or MariaDB
Install MySQL or MariaDB on Debian, Fedora, or Arch; secure it with mysql_secure_installation; create users with least-privilege grants; and automate backups.
How to Install Linux Mint
Step-by-step walkthrough to install Linux Mint alongside or instead of Windows — from downloading the ISO to applying your first updates.
Install Linux in a Virtual Machine
Install Linux in VirtualBox or KVM (GNOME Boxes/virt-manager), configure guest additions for clipboard and display, and take snapshots for safe experimentation.
How to Install Fonts on Linux
Install fonts on Linux for a single user or system-wide, understand fontconfig's directory layout, and refresh the font cache so apps pick them up immediately.
How to Install Fedora Workstation
Step-by-step guide to installing Fedora Workstation 40: create a bootable USB with Fedora Media Writer, partition your disk in Anaconda, and complete first-run setup.
How to Install Docker on Linux
Install Docker Engine on Ubuntu, Debian, Fedora, RHEL, or Arch from the official repository, configure the docker group, run a first container, and get Compose working.
How to Install Arch Linux
Install Arch Linux using the guided archinstall script or the full manual method — covering partitioning, base system, bootloader, and first-boot setup.
How to Install the Apache Web Server
Install Apache on Linux, enable modules, configure named virtual hosts, use .htaccess, and verify your setup — covering Debian, Ubuntu, Fedora, RHEL, and Arch.
How to Install and Configure nginx
Install nginx, configure server blocks and document roots, set up a reverse proxy to a local application, and verify everything with nginx -t and curl.
How to Install and Configure fail2ban
Install fail2ban, configure the SSH jail, tune ban times, write custom filters, and verify bans are working — on Debian, Fedora, and Arch.
HP Printers and Hardware on Linux
Install HPLIP and CUPS on Linux to print and scan with HP printers. Covers USB and network setup, SANE scanning, and common troubleshooting steps.
How to Download and Install Linux
Choose a Linux distro, download and verify the ISO, write it to USB with dd or Etcher, then boot and run the graphical installer — covered step by step.
How TCP/IP Networking Actually Works
Trace a TCP connection from socket to wire: routing table lookups, ARP, the three-way handshake, MTU/PMTUD, and how NAT rewrites packets on a Linux gateway.
How to Host a Website on a Linux Server
From a fresh VPS to a live HTTPS site: configure DNS, install Nginx, set up a virtual host, and issue a free Let's Encrypt TLS certificate with Certbot.
How to Harden SSH on Linux
Lock down OpenSSH with key-only auth, disabled root login, user allowlists, and firewall rules. Step-by-step for Ubuntu, Fedora, RHEL, and Arch.
GTK GUI Programming on Linux
Build, run, and package GTK4 applications on Linux using C and Python. Covers the GObject model, signals, Meson builds, .desktop files, and Flatpak.
Git from the Command Line
Learn Git from the terminal: install, configure, init or clone a repo, stage and commit changes, create branches, merge, and push to a remote.
How to Free Up Disk Space on Linux
Recover gigabytes on any Linux system by clearing package caches, trimming the systemd journal, removing old kernels, and hunting large files with ncdu.
Free SSL Certificates with Let’s Encrypt
Issue and auto-renew free TLS certificates with Let's Encrypt and Certbot for Nginx or Apache on Ubuntu, Fedora, and Arch Linux.
How to Diagnose High CPU and Memory Usage
Learn to diagnose Linux CPU and memory problems using top, htop, load average, and the OOM killer log—from spotting runaway processes to preventing OOM kills.
How to Fix Audio Problems on Linux
Fix Linux audio issues step by step: identify PipeWire vs PulseAudio, unmute ALSA channels, select the right output device, reload drivers, and verify hardware.
How to Fix a Broken GRUB Bootloader
Fix a broken GRUB bootloader by booting from live media, chrooting into your installed system, reinstalling GRUB, and regenerating grub.cfg — covers BIOS/MBR and UEFI/GPT.
10 Things to Do After Installing Linux
Ten essential post-install steps for any Linux desktop: updates, drivers, firewall, codecs, backups, SSH hardening, and service cleanup — all with modern commands.
How to Find Files on Linux
Learn to find files on Linux using find, locate, and fd — covering searches by name, size, modification time, and running actions on results.
Esperanto and Multilingual Support on Linux
Add Esperanto locale, keyboard layout, and input methods on Linux. A practical walkthrough covering GNOME, KDE, Wayland, TTY, and Fcitx5 that applies to any language.
How to Encrypt a Disk with LUKS
Encrypt a full disk or individual partition on Linux using LUKS2 and cryptsetup, including key management, boot integration, and header backups.
How to Dual-Boot Linux and Windows
Shrink the Windows partition, install Linux without breaking the bootloader, configure GRUB, and handle Secure Boot — all in the correct order.
How to Customize the GNOME Desktop
Customize GNOME with Tweaks, Extension Manager, GTK and Shell themes, keyboard shortcuts, and fixed workspaces — practical steps for GNOME 44/45.
How to Customize KDE Plasma
Customize KDE Plasma with themes, widgets, activities, and System Settings tweaks. Covers all major distros, Wayland, and config file locations.
Cron Jobs Explained
Master cron job scheduling on Linux: full crontab syntax, environment variables, output logging, and when to use systemd timers instead.
How to Create a systemd Service
Learn to write systemd service unit files from scratch: unit types, dependency directives, restart policies, enabling at boot, and reading logs with journalctl.
How to Configure sudo Safely
Learn to configure sudo securely using visudo, sudoers syntax, per-command restrictions, NOPASSWD, and drop-in files to enforce least-privilege access on Linux.
Configure a Squid Proxy with Webmin
Install Squid and the Webmin Squid module, configure disk and memory caching, set LAN access controls, and verify the proxy is serving cached responses.
How to Configure the SMTP HELO/EHLO Name
Set the correct SMTP HELO/EHLO hostname in Postfix and Sendmail, configure FCrDNS records, and verify your mail server won't be rejected or spam-flagged.
Configure a UPS on Linux with NUT
Install and configure Network UPS Tools (NUT) on Linux to detect your UPS, load the right driver, and trigger a safe automatic shutdown when battery runs low.
How to Configure a Static IP on Linux
Configure a static IP on Linux using Netplan, NetworkManager (nmcli), or systemd-networkd across Ubuntu, Fedora, Debian, and Arch with verified steps.
How to Compile the Linux Kernel
Step-by-step guide to downloading, configuring, compiling, and booting a custom Linux kernel from kernel.org on Debian, Fedora, and Arch Linux.
Common Linux Network Ports Reference
Learn Linux port ranges, read /etc/services, find what's listening with ss and nmap, and apply solid firewall rules to expose or block the right ports.
How to Choose a Linux Distribution
Match a Linux distro to your real needs — desktop, server, rolling vs LTS, hardware quirks, and package ecosystems — without wading through marketing noise.
How to Check Disk Health with SMART
Learn to use smartctl to read SMART attributes, run drive self-tests, and identify early warning signs of HDD and SSD failure before data loss occurs.
How to Change the Webmin Port
Move Webmin off its default port 10000 by editing miniserv.conf, updating your firewall (ufw, firewalld, or nftables), and restarting the service.
C Serial Port Programming on Linux
Learn to open /dev/ttyS* and /dev/ttyUSB* in C, configure raw mode with termios, handle blocking reads, and debug serial link problems on Linux.
A C Programming Tutorial for Linux
Learn C on Linux from hello-world through gcc flags, header files, multi-file projects, make, and the standard library — with real commands and examples.
C Pointers Explained
Understand C pointers from first principles: addresses, dereferencing, pointer arithmetic, arrays, common bugs like null dereferences and dangling pointers, and how to use ASan and Valgrind.
How to Build Software from Source on Linux
Build Linux software from source using configure, make, and make install — with dependency tips, CMake and Meson coverage, and clean-install strategies.
Build an Intranet Server on Linux
Set up a complete small-office intranet on one Linux box: Nginx web server, dnsmasq local DNS, Samba file sharing, and a Wiki.js team wiki.
Btrfs Basics and Snapshots
Learn Btrfs subvolumes, instant copy-on-write snapshots, and safe system rollback — with both manual btrfs commands and Snapper automation.
The Best Linux Distros for Servers
Compare Ubuntu LTS, Debian, AlmaLinux, Rocky Linux, RHEL, Arch, and SLES for server use: support lifecycles, stability trade-offs, and how to choose the right fit.
The Best Linux Distros for Beginners
The best Linux distros for beginners in 2024: Ubuntu, Linux Mint, Fedora, and Pop!_OS compared with honest pros, cons, and setup tips.
Bash Scripting for Beginners
Learn Bash scripting from scratch: shebang lines, variables, conditionals, loops, and arguments, plus a real backup script to tie it all together.
Bash Loops: for, while and until
Learn all three Bash loop types — for, while, and until — with practical, copy-paste examples covering file iteration, counting, polling, and safe line reading.
How to Back Up Your Linux System
Learn how to back up your Linux system using Timeshift, rsync, Borg, and Restic — then tie it all together with a practical 3-2-1 backup routine.
How to Enable Automatic Security Updates
Enable automatic security updates on Debian, Ubuntu, Fedora, and RHEL using unattended-upgrades and dnf-automatic — configured to patch safely without manual effort.
How to Audit a Linux System with auditd
Set up auditd on Linux to track file access, syscalls, and privilege use. Covers persistent rules, file watches, ausearch, and aureport across major distros.
Assembly Language on Linux: A Starter Guide
Write x86-64 assembly on Linux from scratch: install NASM and GAS, learn syscalls, assemble and link a working program, then inspect and debug it.
AppArmor Explained
Learn how AppArmor profiles work, how to switch between enforce and complain mode, create new profiles, and diagnose access denials on Ubuntu, Debian, and Arch.
AI and Artificial-Life Tools on Linux
Set up open-source AI/ML and artificial-life toolkits on Linux: PyTorch, JAX, DEAP, Avida, NetLogo, and RL environments with GPU driver guidance.