How to Install Linux: On a PC, a Server or a VPS
Install Linux step by step: choosing a distribution, bootable USB, partitioning, dual boot, server installs, and installing an OS on a VPS from the panel.
Blog
Linux server administration: Debian, Ubuntu, AlmaLinux, storage, performance and troubleshooting.
Install Linux step by step: choosing a distribution, bootable USB, partitioning, dual boot, server installs, and installing an OS on a VPS from the panel.
What the setuid, setgid and sticky bits do, how to set them with chmod, reading s, S, t and T in ls output, shared directories, and auditing setuid files.
How umask sets default permissions for new files and directories: the calculation, 022 vs 002 vs 077, per user, per systemd service and in scripts.
Create filesystems with mkfs: ext4 vs XFS vs Btrfs, labels, reserved blocks, inode counts for many small files, checking with fsck, and safe formatting steps.
Stop processes on Linux the right way: SIGTERM vs SIGKILL, kill by PID, pkill and killall by name, freeing a port, stubborn D-state processes and services.
Use the extra space after a VPS disk upgrade: grow the partition with growpart, then the filesystem with resize2fs or xfs_growfs, online and without a reboot.
Set up OpenZFS on Ubuntu or Debian: mirror and RAIDZ pools, datasets with compression, ZFS snapshots, send/receive backups, scrubs and ARC tuning.
Capture packets with tcpdump: filter by host, port and protocol, read the TCP handshake, debug connections and DNS, and save pcap files for Wireshark.
Use chown to change the owner and group of files and directories: syntax, recursive changes, symlinks, numeric IDs, chgrp, and fixing web server ownership.
Partition a new disk with fdisk: GPT vs MBR, create and delete partitions, set types, write changes, inform the kernel, and format and mount the result.
Use GNU parted for disks over 2 TB: create GPT labels, make aligned partitions, resize partitions, script parted non-interactively, and compare with fdisk.
Enable sysstat to record performance history, then use sar to see CPU, memory, swap, disk and network usage for past hours and days.
Fix apt update and upgrade errors: NO_PUBKEY, no Release file, dpkg lock held, unmet dependencies, hash sum mismatch and end-of-life releases.
Set up Duplicati with Docker: web UI over SSH, backup jobs to S3, B2 or SFTP, AES encryption, schedules and retention, restores, and restic as an option.
eBPF for server admins: safe in-kernel tracing, ready-made BCC tools like execsnoop, opensnoop and biolatency, bpftrace one-liners, and requirements.
sh, dash, bash, zsh and fish compared for interactive use and scripting: portability, shebangs, bash-only features, changing the default shell, server tips.
Learn sed with practical examples: substitute text, edit files in place safely, delete and print lines, work with ranges, regex groups and config file edits.
Extract fields from CSV, /etc/passwd and logs with cut: delimiters, field ranges, characters and bytes, complement, and when awk is the better tool.
Schedule jobs with systemd timers: .service and .timer units, OnCalendar syntax, persistent and randomized timers, journald logs, and timers vs cron.
Read iostat -x output: IOPS, throughput, await latency, queue size and %util, find the process doing I/O with iotop, and spot disk bottlenecks.
Configure logrotate for app and Nginx logs: daily or size rotation, compression, retention, copytruncate vs postrotate, testing with -d, and fixes.
Use mosh instead of SSH on unstable or mobile connections: install it, open UDP ports, how roaming and local echo work, and limits like scrollback.
Debian APT sources explained: sources.list and deb822 files, main, contrib and non-free, security and updates suites, mirrors, and safe third-party repos.
Copy a Linux server to a new VPS: rebuild-and-restore vs full rsync clone, what to exclude, fixing hostname, SSH host keys and machine-id, and testing.