Posts
GRUB2 — how to change the boot menu timeout on Linux
— June 25, 2026
How to change the GRUB2 boot menu timeout in /etc/default/grub and apply the change with update-grub on Debian, Ubuntu, and other Linux systems.
SSH troubleshooting — fix common connection problems on Linux
— June 25, 2026
How to diagnose and fix the most common SSH connection failures on Linux: refused connections, key errors, permission problems, and firewall blocks.
Backup files over SSH with rsync — a practical guide
— June 17, 2026
How to back up files between servers using rsync and SSH, with key-based authentication and automatic scheduling via cron
Apache, PHP 8.3 FPM and MariaDB 11 on FreeBSD 14
— June 15, 2026
How to install Apache 2.4 Event MPM, PHP 8.3 FPM and MariaDB 11 on FreeBSD 14 using pkg
WireGuard — set up a VPN on Linux in minutes
— June 14, 2026
How to install and configure WireGuard on Linux to create a fast, modern VPN between a server and one or more clients
chgrp — change the group of a file on Linux
— June 14, 2026
How to use the chgrp command on Linux to change the group ownership of files and directories, with practical examples and a comparison with chown
xrandr — change screen resolution from the Linux command line
— June 14, 2026
How to use xrandr on Linux to change screen resolution, refresh rate, orientation, and manage multiple monitors from the terminal
Bash history expansion — reuse commands without retyping
— June 14, 2026
How to reuse commands from Bash history using !N, !!, !string, Ctrl+R, and other history expansion shortcuts on Linux
Bash tab completion — make it case insensitive
— June 14, 2026
How to configure Bash tab completion to ignore case on Linux using ~/.inputrc or /etc/inputrc, with other useful readline settings
basename — strip directory and suffix from file names
— June 14, 2026
How to use the basename command on Linux to extract file names from paths and strip extensions, with practical shell scripting examples
WireGuard — set up a VPN on Linux in minutes
— June 14, 2026
How to install and configure WireGuard on Linux to create a fast, modern VPN between a server and one or more clients
GoAccess — real-time web log analyzer for Apache, Nginx, and Caddy
— June 8, 2026
How to install and use GoAccess to analyze web server access logs in real time, both as an interactive terminal dashboard and as a self-contained HTML report
bc — GNU Linux command line calculator
— June 8, 2026
How to use bc, the GNU Linux command line calculator, for basic and advanced arithmetic directly from the terminal or inside shell scripts
How to change the default text editor on Debian and Ubuntu
— June 8, 2026
How to change the default text editor on Debian and Ubuntu using update-alternatives, select-editor, and the EDITOR environment variable
How to add a user to a group in Linux
— June 8, 2026
How to add a user to a group in Linux using usermod, useradd, and gpasswd — with examples for existing users, new users, primary groups, and multiple groups at once
chown — change file owner and group on Linux
— June 8, 2026
How to use the chown command on Linux to change the owner and group of files and directories, with practical examples
chage — manage password expiry and aging on Linux
— June 8, 2026
How to use the chage command on Linux to set password expiration policies, force password changes, and manage account expiry for users
at — schedule one-time tasks from the Linux command line
— June 8, 2026
How to use the at command on Linux to schedule commands and scripts to run once at a given time, with practical examples
Bash for loop — a practical guide
— June 8, 2026
Learn how to use the bash for loop in scripts and the command line, with practical examples including counters, ranges, break and continue
apt-get and aptitude — package management and orphan cleanup on Debian and Ubuntu
— June 8, 2026
Understand the difference between apt-get and aptitude on Debian and Ubuntu, and how autoremove keeps your system clean from orphan packages
How to change the hostname on Linux
— June 8, 2026
How to change the hostname on Linux permanently using hostnamectl on systemd systems, and also the traditional method for older systems
checkinstall — create a .deb or .rpm package from source code
— June 8, 2026
How to use checkinstall to compile software from source and install it as a proper .deb or .rpm package, making it easy to track and remove later
How to self-host your email server with Mailcow
— May 29, 2026
Step by step guide to host your own email server with Mailcow and Docker
diff — Linux command to compare files
— May 29, 2026
How to use the diff command in Linux to compare files and directories, with examples for unified output, patches, and recursive directory comparison.
df — Linux command line tool to display disk space usage
— May 28, 2026
How to use the df command on Linux to check disk space usage, free space, filesystem types, and inode usage
du — Linux command line to display disk usage per file and directory
— May 28, 2026
How to use the du command on Linux to find which files and directories are using the most disk space
iotop — monitor disk I/O in real time on Linux
— May 27, 2026
How to use iotop to monitor disk read and write activity per process in real time on Linux
htop — an improved top for Linux
— May 27, 2026
How to use htop to monitor processes, CPU, and memory on Linux — a friendlier and more powerful alternative to top
grep — Linux command line, search for patterns in files
— May 27, 2026
How to use the grep command on Linux to search for strings and patterns in files, with practical examples
history — the Linux command to manage your command line history
— May 27, 2026
How to use the history command on Linux: search, re-run, configure and get the most out of your shell history
tail — Linux command line to display the end of a file
— May 27, 2026
How to use the tail command on Linux, including the -f option to follow log files in real time
Docker for Self-Hosting on a VPS — No Kubernetes Needed
— May 26, 2026
A simple and practical Docker setup for self-hosted apps using Caddy as a reverse proxy on a single VPS
The site is back after two years offline
— May 26, 2026
A short note about bringing the site back online after almost two years offline and three years without publishing new content.
Ten useful Docker commands
— July 29, 2020
Ten useful Docker commands
Show Docker container logs
— July 20, 2020
How to check Docker compose logs from the host
Arch Linux, Aur error - FAILED unknown public key
— July 9, 2020
How to solve Arhc Linux problem of FAILED unknown public key
How to add a second private key to ssh in Linux
— July 6, 2020
How to add a second private Key to Linux server to log using ssh
How to install Wallabag on Ubuntu using SQLite
— July 4, 2020
How to install Wallabag on Ubuntu Linux with Nginx and SQLite
How to use awk to print text string between characters
— June 14, 2020
How to print a specific string of text that is between specific characters
How to list the active cronjobs in Linux
— June 2, 2020
How to list active cronjobs in Linux
How to create users in Linux with useradd
— May 31, 2020
How to create Linux users with useradd
How to add a new service to systemd
— May 31, 2020
How to add a new service to systemd
Install from Debian backports
— May 23, 2020
How to enable Debian Backports
Install old ruby 2.3.x on latest Ubuntu 20.04
— May 22, 2020
How to install ruby 2.3.3 on Ubuntu 20.04
Install Zoom on Ubuntu
— May 21, 2020
How to install zoom on Ubuntu Linux
How to install pip on Ubuntu
— May 20, 2020
How to install python pip on Ubuntu Linux
Access WSL Linux files from Windows 10 Explorer
— May 20, 2020
How to access WSL files from Windows 10
Create python virtual environment
— May 20, 2020
How to create virtual environment for Python on Ubuntu Linux
Install NodeJS on Ubuntu
— May 19, 2020
How to install NodeJS on Ubuntu
Install ruby on Ubuntu 20.04
— May 16, 2020
How to install ruby on Ubuntu 20.04 with rbenv