Recent Posts
Set Up vsftpd on Debian 13 for FTP Connections from MS-DOS 6.22
The built-in FTP.EXE client in MS-DOS 6.22 speaks plain FTP only. It does not support TLS, FTPS, or SFTP. Modern FTP servers often push encrypted connections by default, which makes them unusable from a retro MS-DOS machine on the same lab network.
This post walks through installing and configuring vsftpd on Debian 13 (Trixie) with encryption explicitly disabled, so files can be transferred to and from MS-DOS 6.22 using the stock FTP client. The same approach applies to other plain-FTP DOS clients, such as NCFTP.
Set an ext4 partition label
By default, partitions in /etc/fstab are referenced by UUID.
UUID=a141d416-dbc6-4b4e-9095-24b3f48eab6d / ext4 errors=remount-ro,noatime 0 1
The correspondence between a UUID and a block device can be seen under the path /dev/disk/by-uuid/:
ls -la /dev/disk/by-uuid/a141d416-dbc6-4b4e-9095-24b3f48eab6d
The output is a symbolic link to the block device:
a141d416-dbc6-4b4e-9095-24b3f48eab6d -> ../../sda2
UUIDs are used because block device paths are not stable. After an additional drive is installed, a partition that was /dev/sdb may appear as /dev/sdc. Referencing partitions by UUID or LABEL avoids confusion and reduces the risk of data loss.
How to Change a User Password in MySQL
Changing a MySQL user password is always a good idea. It is often done periodically for credential rotation. It can also respond to compromised credentials, for example, when a password is committed by mistake to a code repository.
First, identify the user whose password needs to be changed. In MySQL, users are identified by a username and the host from which they are allowed to connect. In most cases, the host is % (any host) or localhost.
Configure a local HTTP proxy to a Java application with Apache on Ubuntu 26.04 LTS
Suppose the local development app is served on the domain application.local, with the following entry in /etc/hosts:
127.0.0.1 application.local
Usually a web-based Java application runs on port 8080, with a local URL like http://application.local:8080/.
To reach that app at http://application.local without the port, configure Apache as a reverse proxy. Create a virtual host file under /etc/apache2/sites-available/, for example application.conf, with the following content:
<VirtualHost *:80>
ServerName application.local
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
ProxyPreserveHost On forwards the browser’s Host header (application.local) to the backend instead of 127.0.0.1:8080. That usually matches what Java apps expect for host-based routing, redirects, and generated URLs. If something breaks, try removing this line or set ProxyPreserveHost Off so the backend sees the origin it was configured for.
How to fix MySQL APT EXPKEYSIG B7B3B788A8D3785C
When attempting to upgrade packages from the MySQL APT repository:
sudo apt update
The error below may appear when you run sudo apt update.
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://repo.mysql.com/apt/ubuntu focal InRelease: The following signatures were invalid: EXPKEYSIG B7B3B788A8D3785C MySQL Release Engineering <mysql-build@oss.oracle.com>
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/focal-security/InRelease Connection failed [IP: 2a06:bc80:0:1000::17 80]
W: Failed to fetch http://repo.mysql.com/apt/ubuntu/dists/focal/InRelease The following signatures were invalid: EXPKEYSIG B7B3B788A8D3785C MySQL Release Engineering <mysql-build@oss.oracle.com>
The cause is an expired signing key. The quickest fix is to reinstall the MySQL APT configuration package (mysql-apt-config). Download the .deb from MySQL’s APT repository.