The Linux Page

Help other users realize that everything is possible, especially avoiding Windows for their own personal use.

Welcome to The Linux Page

Fox Trot by Bill Amend. Click to enlarge.
Click to enlarge

This site is a collection of my own work with Linux. Certain things are easy, others take time to decipher and if I ever need to repeat the work (which usually happens!), then I need to remember everything by memory or... have a site with all the steps taken and to take again.

The following are my most recent posts:

Setting up a USB over IP environment

Many times, under Linux, you have a device that uses a USB port and not the network. Yet, if you want multiple users to have access to said device, you need to somehow share it.

One solution is to have a driver which allows for network connections from remote systems. However, the likelihood of such is close to 0.

Another solution under Linux is to have the USB/IP (read USB over IP) modules setup and share any USB device from any computer to any other computer.

The reason why I looked for this is the limited number of USB port I have on my new server. I did not realize that I'd need 9 ...

Which destination has to be used?

Wildcard Certificate with letsencrypt

I have my own DNS, so I need to set it up myself to get letsencrypt to work as expected and generate a wildcard certificate for my websites.

They decided to test the DNS because that way they know you are in control of the domain and its sub-domains (only the owner  of a domain name would be able to allow such a test to work.) When creating a certificate for just one website they can ask you to place a file there, which is very easy, but for an entire domain, that wouldn't be quite enough, especially since some business endeavors actually ...

Binary code to Zones

Today I needed to check a zone file to see why the IP address was wrong on one of my servers.

Sure enough, the IP was the old one (We switch servers about 9 months ago). Although once in a while I would get the right IP, the second name server still had the old IP. I thought the cache would be renewed more often than that, but I guess this is well optimized!

The error I made is not change the time info which means that the second name server never saw the change. This is just a domain name I redirect so I never noticed the problem before.

To check the cached file, though, I needed a way ...


My old computer only has 8Gb of RAM. The motherboard was supposed to support 16Gb, but it looks like the one model I got did not work with that much memory.

I've used that computer for too long now and I have been looking at upgrading for a few years, but I was not quite ready to do it. In 2019, now I'm finally moving forward with an upgrade. Why? Because 1Tb computers are actually becoming affordable!

For now, I'll be getting only 512Gb of RAM, but even just that will allow me to run 24/7 without having to close my X-Windows sessions every night (which is sad because ...

Localstack — services simulating the Amazon S3 environment

Today I had a need to run the localstack services to emulate Amazon S3 and get some work done.

Note that below I talk about how to get localstack run on your own. The latest, though, offers a Docker which I highly recommend (see section about the Docker install below). You have nothing to do. Download and run with docker instead of trying to get the correct version of python on a system which does not offer that exact version...

Also, since Sep 15, 2020, the library took a sharp turn in regard to all the ports it manages, Instead of opening one port per feature, it will only open 4566 ...


I have not been able to find a reliable source describing the Info/Xing/LAME tag which appears in the very first frame of an MP3 Layer III file.

Here I describe the structure based on the GetVbrTag() function found in LAME.

See: libmp3lame/VbrTag.c (around line 362 in version 3.100).

Layer III

The tag requires the file format to be of Layer III.

This means the bits 1 and 2 of the second byte of the frame header must be equal to 1.

((frame[1] >> 1) & 3) == 1

MPEG Info to VBR Tag

Part of the data in the LAME VBR Tag comes from the frame header:

  • h_id ...

Video showing our firewall counters increase every second.

What Happened?

Once in a while, we get a large number of totally unwanted hits. I am thinking that the ones we're getting now are not really DDoS, but rather spiders looking for forms to fill out to send us spam. That being said, the result has been many:

503 Server Unavailable

So for us it was very similar to a DDoS. That's what happens whenever a robot sends you multiple HTTP requests per second non-stop all day long. Our servers are only for some 10,000 to 50,000 hits a month at this point, so receiving that many ...

Paper Archives

Today I really got fed up by the Archive feature. I never archive anything in Thunderbird. I have an automatic archival system and have all my emails since 2010. No need for that in my IMAP3 system!?

The biggest problem for me is that I work really fast. So when I go to my Junk folder and select all the emails to delete them, the Archive button appears where the Delete button was just a split second ago... and you guessed it, I end up clicking on that button...

So I thought I'd file a bug report to see whether they would consider not having the Archive button in the Junk folder. ...

Old Broken Plane, reminds me of old broken modules in Drupal...

Last night I found a problematic module... Specifically, it was XML Sitemap, but I do not think it was specific to that module.

The problem? I lost the XML Sitemap menu. I could not access it at all. So I decided to run the update.php code to see whether that would wake it up. Did not work. Then I tried going in the Modules list and disabling the modules. Did not work! Wow! I could not disable these modules!!! How weird...

So I finally decided to go in the database and mark the status as disabled (i.e. 0 instead of 1). That worked and the module was now disabled. I could even ...

Port in use prevents NGINX to start with a bind error.


I'm writing a test against nginx to verify the validity of a module. To make sure that each one of my test runs against a pristine version of nginx and my module, I decided to restart nginx each time. That's my own compiled version of the server, of course.

NGINX Bind Errors

Once in a while, this causes this bind error:

[emerg]: bind() to failed (98: Address already in use)

The fact is that if things go too fast then a previous instance of the socket will still be in the TIME_WAIT state.

Unsecure Fix (useful for testing!)

In order to avoid ...

Thank you for visiting my website.