It’s the January of 2018, and the sickness is upon me again. Sometimes you can feel it coming, like that first head fog that warns of a coming cold, or the klaxon of a stomach churn that alerts you to an impending flu. Other times, it comes out of nowhere, and it’s like your world is completely upended by some viral agent that you can’t even see.
In hindsight, all the warnings were there. The text based email client, the open source distributed social network, and the ported Markov bot. I should have known it was on its way, but that’s the way of it with me. The open source and Linux nerdery begins small, but incubates quickly.
The first sniffle
It started with a simple question. I had moved most of my fiction writing from my computer to my iPad Pro, which when paired with the Apple Smart Keyboard and Ulysses becomes an amazing workspace for writing. I soon found that with the exception of documents for work, everything that involved writing was becoming mobile for me. Which is what led me to question that started it all: What else could I move from my computer to the iPad?
It was about this same time, that I came across this article about a backend engineer who had successfully moved to an iPad Pro as his main computer, by leveraging a
mosh connection to his development VPS box. Ultimately, his goal was to have the same environment on his computer as what he could access via his iPad on the server. To achieve this, he chose to use Docker to ensure that his setup would be easily portable to any location.
At the time, I thought to myself, “this is kind of neat,” and then moved on. But, a week later, I couldn’t get the idea out of my mind. For giggles, I started by mimicking his Docker setup on my home computer, and then using the resulting image on my Linode VPS. After all, its resources were being underutilized hosting a static website, so why not run a Docker server behind the firewall?
That turned out to be less fun than I expected. Don’t get me wrong; it was a neat trick, and got me really interested in Linux Containers, but for the kinds of hobby development I do it was overkill. I bounce around between hobby projects and I ended up making so many rapid changes to the shell container that it grew impractical. Risking losing those changes in the container— since they didn’t lend themselves to a volume —was unpleasant, and attempting to preserve them by updating the Docker image proved to create a lot of busy work. I quickly realized that while I wouldn’t hesitate to use Docker containers to deploy a project, it wasn’t a great way to set up my hobbyist playground.
Turn back? Now? Pshaw!
So what now? Drop the whole thing or just configure the host directly to meet my needs? Come on, the answer to that is obvious. Though if I was going to take that approach, I didn’t particularly want to do that on the same box as my production web server. After all, personal site or no, I’m not totally insane. So I spun up another Linode VPS, and because the sickness was well and truly in me by this point, I used it as an opportunity to try out Funtoo. Mostly out of nostalgia from the old days when I used Gentoo as my primary OS.
Ok, so let me tell you something that will make some people roll their eyes at me. Yeah, I mean that guy in the corner. Ignore him. Here’s the secret: building your OS from source is cool. 😎
Nerdy? Sure. Time consuming? I’ll give you that. But it’s a hell of a lot of fun. It can be overwhelming the first time, but as I mentioned above, I’d done several Gentoo installs from scratch in my past, so even being rusty the procedure came back to me fast.
So what have I got now? A dev box with all my preferred tooling, configured top to bottom exactly as I want it, with NeoMutt for mail, and NeoVim for code editing with syntax aware code completion. Plus, I have a L2TP over IPSec VPN I can use in order to connect to any number of services behind the firewall from my iPad or any other machine.
Well that was fun. What else can I get away with?
Reader, I did not stop there. Of course I didn’t. Once you have the bug, it’s like walking pneumonia; it takes forever to kick it.
I reasoned with myself. Ok, now you have two VPS instances, but one is still only being used as a web server, and the only reason you’re using a Linode for that one is that you wanted to be able to do scheduled posts. But now you have a dev box that could handle your automated site deployments.
Well… since all the sites that were being hosted on that Linode are static, why not throw each one in an S3 bucket and serve it up over Cloudfront on AWS?
Yeah, so that happened.
It’s not as seamless as some people would have you believe. Cloudfront has an annoying practice of not serving up the index.html in subdirectories unless it’s explicitly requested, so you end up having to use a Lambda function to get that to work. With the exception of solving that issue, I was able to get things migrated over relatively quickly. As an added plus, based on my billing projections, I’m probably going to end up saving a couple bucks per month with this setup than I was paying before.1
Feeding a fever
I honestly doubt I’m kicking this thing anytime soon, so I’m resolved to enjoy it as much as I can. The jury is still out for me on Funtoo vs Gentoo, which is probably worth a post of its own sometime in the future, but for now, I’m having fun, and I’m going to roll with it.
FYI, this thing is going around. I reached out to one of my friends to share this madness and he laughed and said he was already planning to set up another Linux box of his own as well.
So watch yourselves out there people. This thing is highly communicable, and if you catch it, you will be condemned to these nerdy delights. If you do, I’d love to hear about it.
The web server used Linode’s backup services, which is a great tool for the price. I can’t use Linode’s backup service for my dev box because I’m running full disk encryption. Instead, I use Duplicity to back up the server to S3 in the form of encrypted and compressed archives.
My AWS bill is likely going to be around $1/mo, which combined with a $10 Linode is still about $1.50 cheaper than the $12.50 I was paying before. ↩