Linux
SSH, systemd, disks, logs, packages, and the load average.
SSH first login and keysSSH first login on a new VPS means matching the host fingerprint, installing your public key, and proving a second key-based session before you disable passwords.Updated Aug 29, 2026
Users, groups, and sudoCreate a named user on your VPS, add it to the sudo group, and avoid living as root. Scope deploy accounts tightly so a leaked CI token cannot…Updated Aug 29, 2026
systemd: start, stop, journalctlUse systemctl to start, stop, and enable services, and journalctl to read a unit’s recent log. Status plus the last journal lines usually name the real failure before…Updated Aug 29, 2026
Disk: df, du, and inodesdf -h shows free bytes; df -i shows free inodes. A disk can look partly empty in size and still refuse writes when tiny files have used every…Updated Aug 29, 2026
Logs and logrotateLogrotate trims growing log files on a schedule so disks stay usable. Learn how stanzas, journald caps, and cPanel log locations work together without filling the volume.Updated Aug 29, 2026
Package updates: apt and dnfUse security-only unattended updates on a VPS, hold MariaDB and similar packages for a planned window, and reboot after kernel mail. Shared nodes are patched by us; you…Updated Aug 29, 2026
Cron vs systemd timersCron uses crontab lines; systemd timers use unit calendar events. Pick one scheduler per job on your VPS so the same task never runs twice.Updated Aug 29, 2026
ufw and firewalldufw and firewalld manage the Linux firewall on a VPS or dedicated server. Allow SSH on 22 for IPv4 and IPv6 before you enable, then add 80, 443,…Updated Aug 29, 2026
Load average and topLoad average counts runnable tasks and D-state waits, not CPU percent. Use uptime, vmstat, and top first so you can tell disk wait from real compute before you…Updated Aug 29, 2026
Time, NTP, and TLSWrong clocks break TLS, logs, and TOTP. Use timedatectl to confirm NTP is synchronized so certificates and codes keep working on your VPS.Updated Aug 29, 2026
journalctl -u until you love itUse journalctl -u with a unit name and a time window to read one service log cleanly. Add -p err, -b, or -b -1 when you need errors…Updated Aug 29, 2026
sshd_config safe defaultsOnce SSH keys work, set safe sshd_config defaults such as PasswordAuthentication no and a careful PermitRootLogin value. Always run sshd -t before you reload so a typo cannot…Updated Aug 29, 2026
A failed systemd unitList failed systemd units, read status and the journal, fix the path or port, then reset-failed and start. A single failed unit rarely means the whole server is…Updated Aug 29, 2026
Inode exhaustionInode exhaustion means every file name slot is used while disk space may still be free. Use df -i, count files in suspect folders, and remove sessions, caches,…Updated Aug 29, 2026
When /tmp fills upA full /tmp breaks MySQL sorts, package installs, and services with odd temp-file errors. Check df /tmp, find the writer, and keep the sticky bit at 1777.Updated Aug 29, 2026
dmesg and the OOM killerThe OOM killer ends a process when RAM runs out. Use dmesg to see the victim, then fix worker counts, database size, backup overlap, or add memory.Updated Aug 29, 2026
Timezone and cron, a quiet footgunCron follows the system timezone unless CRON_TZ overrides it. Keep the server on UTC, set WordPress for display, and align PHP so midnight jobs do not hit peak…Updated Aug 29, 2026
ulimit and nfileToo many open files usually means a low nofile limit. Shell ulimit only affects your session; set LimitNOFILE on the systemd unit so nginx or php-fpm actually pick…Updated Aug 29, 2026
SELinux vs AppArmor, without folkloreSELinux and AppArmor are mandatory access controls that can deny writes normal permissions allow. Identify which one your VPS runs, read the denial, and keep enforcing.Updated Aug 29, 2026
Why load is not CPULoad average counts the run queue and uninterruptible sleep, often disk wait. It is not CPU percent. Use vmstat to separate user time, iowait, steal, and memory pressure…Updated Aug 29, 2026