RSSAmplifier

Blog

garron.me — English

Guillermo Garron's personal site and blog in English

garron.meRSS feed ↗724 posts

Latest posts

GRUB2 — how to change the boot menu timeout on Linux

This post was originally published on go2linux.org. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. When you have multiple operating systems installed, the GRUB bootloader shows a menu at startup. By default the ti…

SSH troubleshooting — fix common connection problems on Linux

This post was originally published on go2linux.org. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. SSH is one of those tools that works so well you only notice it when it breaks. When it does break, the error mess…

Backup files over SSH with rsync — a practical guide

Originally published on go2linux.org in March 2007. Although I no longer own that domain, I am the original author. This version has been updated for 2026 and republished here on garron.me. Introduction If you have two servers, cross-backups are a smart safety net: if one fails, you can restore from…

Apache, PHP 8.3 FPM and MariaDB 11 on FreeBSD 14

Introduction This is an updated guide for running Apache 2.4 with Event MPM, PHP 8.3 via PHP-FPM, and MariaDB 11 on FreeBSD 14. All packages are installed via pkg, the binary package manager — no compiling from ports required. If you are looking for the older guide using FreeBSD 10 and PHP 5.6, it i…

WireGuard — set up a VPN on Linux in minutes

WireGuard is a modern VPN protocol built into the Linux kernel since version 5.6. Compared to OpenVPN, it is significantly simpler to configure, faster, and has a much smaller attack surface (~4000 lines of code vs ~100,000 for OpenVPN). Prefer OpenVPN? See How to set up an OpenVPN server and client…

chgrp — change the group of a file on Linux

This post was originally published on go2linux.org on October 10, 2007. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Introduction chgrp changes the group associated with a file or directory. Every file on Linux …

xrandr — change screen resolution from the Linux command line

This post was originally published on go2linux.org on February 9, 2008. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Introduction xrandr is the command-line interface to the X Resize and Rotate extension. It let…

Bash history expansion — reuse commands without retyping

This post was originally published on go2linux.org on January 4, 2009. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Introduction The Bash history command lists your recent commands. Once you have found the one y…

Bash tab completion — make it case insensitive

This post was originally published on go2linux.org on August 10, 2009. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. The problem Linux file and directory names are case-sensitive. If you have a directory named My…

basename — strip directory and suffix from file names

This post was originally published on go2linux.org on February 24, 2008. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Introduction basename strips the directory path from a file name, and optionally removes a tr…

WireGuard — set up a VPN on Linux in minutes

In 2012, I wrote an article on how to set up a VPN using OpenVPN. With so many companies offering VPN services nowadays, I thought it would be a good idea to run your own VPN service; however, WireGuard is a much better fit for this goal. WireGuard is a modern VPN protocol built into the Linux kerne…

GoAccess — real-time web log analyzer for Apache, Nginx, and Caddy

Introduction GoAccess is an open-source real-time web log analyzer. It works directly in the terminal as an interactive ncurses dashboard, and can also generate self-contained HTML reports with charts. It supports Apache, Nginx, Caddy, Amazon S3, Elastic Load Balancing, and any server that writes st…

bc — GNU Linux command line calculator

This post was originally published on go2linux.org on February 22, 2009. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Introduction bc is a precision arithmetic calculator available on almost every Linux and Unix…

How to change the default text editor on Debian and Ubuntu

This post was originally published on go2linux.org on January 5, 2009. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Introduction Many system commands open a text editor when needed — visudo, crontab -e, git comm…

How to add a user to a group in Linux

This post was originally published on go2linux.org on February 11, 2009. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Introduction In Linux, groups control what resources a user can access. When you add a user t…

chown — change file owner and group on Linux

This post was originally published on go2linux.org on July 29, 2007. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Introduction chown changes the owner and/or group associated with a file or directory. Only root …

chage — manage password expiry and aging on Linux

This post was originally published on go2linux.org on October 4, 2008. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Introduction chage (change age) manages password aging information for user accounts. As a syst…

at — schedule one-time tasks from the Linux command line

This post was originally published on go2linux.org on August 6, 2008. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Introduction The at command schedules a command or script to run once at a specific time in the …

Bash for loop — a practical guide

This post was originally published on go2linux.org on March 31, 2010. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Introduction A for loop executes a block of commands repeatedly, once for each item in a list. I…

apt-get and aptitude — package management and orphan cleanup on Debian and Ubuntu

This post was originally published on go2linux.org on March 13, 2008. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Introduction Both apt-get and aptitude are front-ends for the APT package management system on D…

How to change the hostname on Linux

This post was originally published on go2linux.org on March 20, 2009. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Introduction The hostname is the name that identifies your machine on a network. On modern Linux…

checkinstall — create a .deb or .rpm package from source code

This post was originally published on go2linux.org on February 7, 2008. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Introduction When you compile software from source and run make install, the files get scatter…

How to self-host your email server with Mailcow

I have been trying to host all my own services, from email to web servers, also Asterisk and lots of other examples, as written on my personal blog I also see some good points about hosting your own email server. If you want to host your own email server, Mailcow is one of the best options available…

diff — Linux command to compare files

diff compares two files line by line and shows you what is different between them. It is one of the most useful commands on Linux — you will reach for it every time you need to check what changed in a config file, review a patch, or verify that two directories are in sync. Syntax diff [options] file…

df — Linux command line tool to display disk space usage

This post was originally published on go2linux.org on May 18, 2007. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. When you need to know how much space is used on your disks and how much is free, df (Disk Free) is…

du — Linux command line to display disk usage per file and directory

This post was originally published on go2linux.org on May 1, 2007. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. When you need to know how much space a file or directory is using, du (Disk Usage) is the right too…

iotop — monitor disk I/O in real time on Linux

This post was originally published on go2linux.org on March 30, 2009. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Continuing with my review of performance tools, I will now introduce you to iotop, a top-like to…

htop — an improved top for Linux

This post was originally published on go2linux.org on August 6, 2007. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Almost every Linux user has used top to check how the system is doing — running processes, CPU u…

grep — Linux command line, search for patterns in files

This post was originally published on go2linux.org on August 15, 2007. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. Introduction grep is a utility to look for specific strings in files, searching line by line. Y…

history — the Linux command to manage your command line history

This post was originally published on go2linux.org on December 20, 2008. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. history is one of those commands I use every day. Once you learn a few tricks around it, you …

tail — Linux command line to display the end of a file

This post was originally published on go2linux.org on May 5, 2007. The domain is no longer mine, but I am the original author. I am republishing it here on garron.me with corrections and improvements. This command is related to head, but opposite — instead of displaying the beginning of a file, it d…

Docker for Self-Hosting on a VPS — No Kubernetes Needed

As mentioned in this post about garron.me coming back, this site is self-hosted again. I have been self-hosting my sites since 2008 with Go2Linux, back when it was Drupal running on a Linode VPS, through the years I have experimented with Varnish, Nginx and written posts about all of that. This time…

The site is back after two years offline

The site is back, after being offline for almost two years and going three years without new content. The site went down when I migrated servers, and because it was generated with Middleman, it was complicated to get it online again. Now, with the help of AI (more about this later), I was able to br…

Ten useful Docker commands

Introduction Docker launched in 2011, but was founded in 2010 by Solomon Hykes, and was finally released to the public in 2013. Docker is an Open Source project, that allows running virtualized containers where complete applications run. It is like Virtual Machines, but, a lot lighter, because the K…

Show Docker container logs

If you need to check the logs of a Docker compose created container, just go to the folder where the docker-compose.yml file is and run these commands. docker-compose ps That will have an output like this: Name Command State Ports ---------------------------------------------------------------------…

Arch Linux, Aur error - FAILED unknown public key

Introduction Just a small tip for me to remember when this happens again, as it was not easy to solve. Arch Linux error When trying to install something from AUR, after downloading it with git, I got this error. ==> Making package: caddy2 2.1.1-3 (Thu 09 Jul 2020 08:21:05 PM UTC) ==> Checking runtim…

How to add a second private key to ssh in Linux

Introduction You can log into Linux servers using passwords, or log in with no password, using ssh key, but there are times when it is not you who create the private/public key pair, or when you want to use a diferente key pair to log to another server. One key pair for one server and another for th…

How to install Wallabag on Ubuntu using SQLite

Introduction Wallabag is an open source alternative for Pocket and similar services or tools, it is Open Source and you can run it on your server. You can read my Wallabag review if you like. Installation Preparing the server We will need to prepare the server first sudo apt update && sudo apt upgra…

How to use awk to print text string between characters

Today while configuring my other blog to be hosted at vercel and moving it out from Apache, I had the need to create a redirect file from my htaccess file, so I needed first to print extract the file-names from a long string, the good thing was that the file-names were between a slash /. These are t…

How to list the active cronjobs in Linux

Part of the maintenance tasks of a Linux system are repetitive, fortunately Linux offers you cronjobs. What are cronjobs? Cron jobs are repetitive tasks executed by the cron daemon, and a deamon is a program that runs all the time in a Linux system, so cron deamon takes care of these tasks and execu…

How to create users in Linux with useradd

Linux as all Unix like operating systems are multi users, that means that multiple users can log into the system, actually multiple users can be logged at the same time, all of then using the computer resources. Users can also be asigned to groups, that gives Linux systems a lot of flexibility. If y…

How to add a new service to systemd

Some years ago ArchLinux started to use systemd instead of init scripts, I like init scripts more, but you have to adapt. So, How to add a new service to be managed by systemd? We'll see just the basic options, systemd has its files at: /etc/systemd/system, so if you want your service to managed by …

Install from Debian backports

Introduction Debian backports are according to its homepage Backports are packages taken from the next Debian release (called "testing"), adjusted and recompiled for usage on Debian stable. Because the package is also present in the next Debian release, you can easily upgrade your stable+backports s…

Install old ruby 2.3.x on latest Ubuntu 20.04

The problem I needed to install ruby 2.3.x actually, it was 2.3.3, I am trying to do it on Ubuntu 20.04, I have followed this guide, but it stops with this error. Last 10 log lines: installing rdoc: /home/user/.rbenv/versions/2.3.3/share/ri/2.3.0/system installing capi-docs: /home/user/.rbenv/versio…

Install Zoom on Ubuntu

If you are running Ubuntu you can install Zoom in two different ways Option number 1 Be sure you have your system up to date sudo apt update Install dependencies sudo apt install libglib2.0-0 libgstreamer-plugins-base0.10-0 libxcb-shape0 libxcb-shm0 libxcb-xfixes0 libxcb-randr0 libxcb-image0 libfont…

How to install pip on Ubuntu

Pip is a tool to manage Python modules, it lets you find, install, updated and remove packages, just like apt does for Debian. Python Version Ubuntu 20.04 comes with python3 installed by default, and if you are starting a new project python3 is what you have to use, phthon2 can be installed, but it …

Access WSL Linux files from Windows 10 Explorer

The latest version of Windows 10 at the time of this writing, is able to access files on Linux installed in WSL through Windows Explorer. There are two ways. From Linux Go to the folder you want to acces in Windows, and enter this command. explorer.exe . Fron Windows Explorer Open Windows Explorer a…

Create python virtual environment

To work with Python projects, it is advisable to create virtual environment, that way each project can have its own modules, and even differente versions of modules and does not interfere with another one. We are going to use python3 and Ubuntu 20.04 for this tutorial. Install python venv sudo apt i…

Install NodeJS on Ubuntu

How to install NodeJS on Ubuntu If you want to install NodeJS in a different version than the one that comes with your Ubuntu distribution, you may proceed this way. First thing, you need to install needed packages. apt-get install build-essential Now, choose one of the next lines, depending on the …

Install ruby on Ubuntu 20.04

Installing ruby on Ubuntu 20.04 using rbenv is at the time of this writing the most recommenden method. First things first, update your computer. sudo apt update && sudo apt upgrade Then install dependencies sudo apt install zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite…