Technology

ZFS Woes, or how ZFS Saved Me From Data Corruption

OpenZFS
OpenZFS

I’ve been using ZFS for years on my Linux storage server. Recently I upgraded from Alpine 3.12 to 3.14, which included a ZFS 0.8 to ZFS 2.0 update. Not soon after, I started getting random file corruption issues. I didn’t see any SMART errors on the drives, but still assumed that my hard drive could be going bad. My storage had outgrown my previous backup drive anyway, so I purchased an additional drive. When I attempted to sync snapshots to the new device, I started to see I/O errors and kernel panics. I took a long journey through ZFS bug reports, attempted to switch to Btrfs and even migrated my storage to a different computer. In the end, ZFS saved me from what could have been disastrous amounts of data corruption due to faulty hardware.

Read More Right Chevron

Upgrading OpenSMTPD 6.3 and Running E-mail in Docker

Photo of vintage airmail envelopes

I’ve been administering e-mail servers since the early 2000s, for both my myself and for various jobs. For a brief period I stopped hosting my own e-mail, but returned to running my own stack due to the revelation of domestic spying in 2013. Even though the larger providers have made e-mail less reliable than it once was, I’m still glad I host my own e-mail. I had been using an OpenBSD 6.3 VM for e-mail, and couldn’t upgrade to OpenSMTPD 6.4+ because of some big configuration file changes. Thanks to many good 6.3 → 6.4+ tutorials, I finally tackled this lingering piece of technical debt, and migrated my e-mail from an OpenBSD VM to my standard Docker infrastructure.

Read More Right Chevron

Lineage with microG on a Sony XA2

Lineage with microG Logo
Lineage with microG Logo

I’ve owned a lot of smart phones. I started off in the PalmOS world and have been solidly in the Android camp for the past several years. Although I’ve used a lot of custom ROMS, I typically still install Google Apps and services. As my concerns over privacy have grown, I’ve started looking at microG, a bare-bones implementation of Google Services that limits personal and location information being continually sent to Google. I purchased a Sony XA2 a few years ago as a backup device, and decided to try out the Lineage for microG project on this device. Although flashing a new operating system on a phone should be a common affair by this point, I ran into issues that left me digging through forum threads for help. Hopefully documenting the errors I encountered, and my solutions, will help others with similar devices.

Read More Right Chevron

Setting up IPv6 on a Linux Router

World IPv6 Launch Logo
World IPv6 Launch Logo

It’s fairly straightforward to build your own router, and there are a number of tutorials for setting up IPv4 forwarding and NAT rules on Linux. However, IPv6 is a bit more complicated. There are many BSD and Linux based operating systems like pfSense and OpenWRT, which have web management tools to make setting up IPv6 straight forward. However, if you like to run your own custom Linux distribution on your home router and control everything from the command line, this tutorial will take you through configuring dhcpcd, dnsmasq, unbound, iptables and ip6tables for full IPv6 support on your local network.

Read More Right Chevron

Installing Void Linux with a Serial Terminal

Lanner FW-7541C-E01 (Front View)
Lanner FW-7541C-E01 (Front View)

I recently picked up a Lanner FW-7541C off eBay for $88.31 (including shipping). This industrial device has a 2-core/4-thread Atom D525 processor, a 30GB SATA SSD, 4GB of DDR3 ram and six independent Intel gigabit Ethernet adapters. It’s a well built little device I bought to replace my custom Linux router. However, it has no video output ports. It took some work, but I was able to setup and install Void Linux on this device using the serial port console. This guide goes through building the installation media with the custom parameters needed for a serial console. It also goes through the post installation steps that will keep a login prompt active on the serial port after install.

Read More Right Chevron

Gaming System Upgrades

SFF Time P-ATX V2 case with an i7-9700KF and a 3080-Ti
SFF Time P-ATX V2 case with an i7-9700KF and a 3080-Ti

For the past few years, my gaming rig has been an MSI Trident-X, a prebuilt PC that uses standard ITX components. It replaced my previous gaming laptop, which I also upgraded a few years ago. The Trident-X case does fit a standard PCI-E video card, so I thought it would a good future-proof system. I’ve upgraded the storage of this unit, although not without issues. Back when the current generation of nVidia and AMD graphics cards were announced, I noticed most of them were over 2.5 to 3 slots wide, and likely wouldn’t fit in the current Trident-X enclosure. I watch way too many tech reviews, and found myself pre-ordering an SFF Time P-ATX V2 case. I had the intentions of moving the guts of my gaming PC into an enclosure that could support newer video cards, sometime in the distant future. I placed a pre-order in February, and the case shipped fairly quickly in March. However, it was held up in shipping due to the pandemic, and didn’t arrive until recently. The far future turned into this summer. I moved my gaming PC components into this very nice small form factor case, while adding a few upgrades.

Read More Right Chevron

Docker with IPv6 and Network Isolation

Photo of network switch in a data center rack cabinet

Fancy Docker orchestration systems, like Kubernetes or DC/OS, have networking layers that can be setup for complicated ingress and load balancer configurations. But what if you just have a single Docker daemon and multiple IPs assigned to a single server? How do you bind individual containers to specific public IP addresses? It’s fairly straight forward to bind a service running in a container to a specific IP listening address, but getting outgoing traffic to egress via a specific IP address takes additional work. If you’re attempting to use Docker with IPv6, you’re in for a world of very counterintuitive configuration. In this post, I’m going to take you through setting up Docker to work with IPv4 and IPv6, using isolated networks, so all incoming and outgoing traffic are restricted to specific IP addresses.

Read More Right Chevron

Moving my phone numbers from Google Hangouts/Voice to an SIP/XMPP Service

Google Notice on Service Discontinuation
Google Notice on Service Discontinuation

A few months ago, I got a notice stating Google Hangouts would stop handling SMS/Voice. In 2012 I transfered my primary phone number to Google Voice before leaving the country, so I could still send texts and keep my American number. At the time, it cost $20 to transfer a number to Google Voice. Eventually Voice was deprecated and Google moved their customers’ phone numbers into Hangouts. Now they’re moving everything back to Voice apparently, in their never ending confusingly labeled and hopelessly broken suite of communication tools. Rather than wait for Google to finally put their telephony products out of their misery, I decided to port the two phone numbers I had on Google over to another service. After some experimenting and trials with various providers, I decided to go with jmp.chat which allows for both Session Initiation Protocol (SIP) for voice calls and XMPP for texts/MMS.

Read More Right Chevron

Parler is a Dumb Platform

Parler Logo

As people have been banned from one major platform after another, one common response has been, “build your own platform”. Of course, it’s not as simple as that. Platforms need infrastructure to run on, and if every hosting provider decided to not offer someone service, corporate censorship can kill a website. Parler made the mistake of tightly coupling their website to Amazon Web Services (AWS). The weaponization of the courts essentially made their contract with AWS entirely worthless. Parler’s response makes me question a lot of their core business decisions, and their future.

People may have flocked to the new network because Parler promoted themselves as an alternative to the current social media landscape. Yet Parler has made critical mistakes with their infrastructure stack, and arbitrary decisions about what content to allow. Parler also suffers the same failure points as any centralized social media platform. To paraphrase Obi-Wan Kenobi, “This is not the free platform you are looking for”.

Read More Right Chevron

Backup Your Social Media Accounts

Photo of Portage Storage Drive

Home storage is not very expensive today, and the magic of the cloud is more fragile than ever. We hear story after story of accounts getting locked, suspended or terminated on platforms like Google, Facebook and Twitter, often with little to no explanation. Thanks to certain legal requirements around the world, you can usually make full backups from these services. This is a quick guide on how I regularly backup my data. It’s pretty easy and everyone should have a reminder on their calendar to do this at least twice a year (or until you loose access to your calendar).

Read More Right Chevron