Deploy Fedora CoreOS in Hetzner cloud

Hetzner has always been a reliable and cost-effective hosting company for me for several years. I’ve run icanhazip.com on their dedicated servers and I run several small applications in their cloud. When I run containers, I love using Fedora CoreOS for its easy updates and very small server footprint. Almost everything you need for hosting containers is provided right out of the box, but you can add extra packages via rpm-ostree layers and reboot to use them....

2021-08-20 · 5 min · Major Hayden

Set network interface speed with systemd-networkd

Sometimes automation is your best friend and sometimes it isn’t. Typically, when two devices are connected via ethernet cables, they negotiate the best speed they can manage across a network link. They also try to agree on whether they can run full or half duplex across the network link. Most of the time, this works beautifully. It can break down with strange networking configs, damaged adapters, or finicky cables....

2021-08-20 · 3 min · Major Hayden

Wildcard LetsEncrypt certificates with Traefik and Cloudflare

Wildcard certificates make it easy to secure lots of subdomains under a single domain. For example, you can secure web.example.com and mail.example.com with a single certificate for *.example.com. Fortunately, LetsEncrypt allows you to get wildcard certificates via a DNS ownership check (often called a DNS-01 challenge). Fortunately, Traefik can request a certificate from LetsEncrypt automatically and complete the challenge for you. It can publish DNS records to multiple providers, but my favorite is Cloudflare....

2021-08-16 · 4 min · Major Hayden

Build Fedora AWS images in GitHub Actions with Image Builder

GitHub Actions provides infrastructure for all kinds of amazing automation. Anyone can test software, build packages, deploy applications, or even publish a blog (like this one!) with a few snippets of YAML. I often use it to bundle my software in a container after testing it. 🤖 One day, as I was working through another Packer configuration, I wondered if there was a way to build cloud images directly in GitHub Actions without building an instance in the cloud, making tons of changes, and snapshotting that image....

2021-08-06 · 7 min · Major Hayden

DHCPv6 prefix delegation with systemd-networkd

My home internet comes from Spectrum (formerly Time Warner Cable) and they offer IPv6 addresses for cable modem subscribers. One of the handy features they provide is DHCPv6 prefix delegation. If you’re not familiar with that topic, here’s a primer on how you get IPv6 addresses: SLAAC: Your machine selects an IPv6 address based on router advertisements DHCPv6: Your machine makes a DHCPv6 request (a lot like DHCP requests) and gets an address back to use DHCPv6 with prefix delegation: Your machine makes a special DHCPv6 request where you provide a hint about the size of the IPv6 network prefix you want....

2021-07-28 · 4 min · Major Hayden

Enable dark mode in Firefox without changing themes

Most modern web browsers, such as Firefox, take cues from the desktop environment or from themes applied to the browser to determine whether a user wants light or dark mode from websites. This is often done through the prefers-color-scheme CSS media feature: .day { background: #eee; color: black; } .night { background: #333; color: white; } @media (prefers-color-scheme: dark) { .day.dark-scheme { background: #333; color: white; } .night.dark-scheme { background: black; color: #ddd; } } @media (prefers-color-scheme: light) { ....

2021-07-19 · 2 min · Major Hayden

Enable touchpad tap to click in i3

One of the first things I look for on a fresh installation of a laptop is how to enable tap-to-click automatically. Most window managers and desktop environments make this easy with a control panel that has toggles or drop-down menus. However, this requires a little more effort in i3. Fortunately, there are two routes to get it enabled: in xorg’s configuration or via your i3 configuration. Via the i3 configuration The advantage of this method is that it’s easy to configure and test out quickly....

2021-07-18 · 4 min · Major Hayden

Tray icons in i3

The i3 window manager delivers a lot of what I like: simplicity, speed, and configurability. Some things, like tray icons, magically appear in other window managers. These items require a bit more configuration within i3 to get them set up well. In this post, I’ll explain how I handle tray icons in i3. Basic configuration The tray icon configuration is within the bar configuration for i3. You control it via tray_output....

2021-07-12 · 2 min · Major Hayden

Persuasion engineering

Mentorship stands out as one of my favorite parts of working in technology and I’ve been fortunate to be on both sides of mentoring relationships over the years. One common aspect of career growth is the ability to come up with a solution and then persuade other people to get on board with it. Not every change is a winner, but if you feel strongly that your solution will improve your product, transform your customer experience, or just make everyone’s lives a little easier, how do you convince other people to join you?...

2021-07-11 · 12 min · Major Hayden

Rootless container management with docker-compose and podman

Everyone has an opinion for the best way to manage containers, and there are many contenders depending on how much complexity you can handle and how much automation you require. One of my favorite ways to manage containers is docker-compose. Overview of docker-compose docker-compose uses a simple YAML syntax to explain what your desired end state should look like. The compose specification covers all of the relevant configurations for containers, volumes, networks, and more....

2021-07-09 · 4 min · Major Hayden