💻 Back on my bullshit: Self-hosted Adventures ✉️

🎵 The song for this post is Bills, by LunchMoney Lewis. 🎵

becoming this guy, for computers


This is a companion discussion topic for the original entry at https://morepablo.com/2019/05/self-hosted-adventures.html

This article is right up my alley! Thanks for posting this, and I like the goals you’ve set for yourself and accomplished. I’m 100% on board with this type of endeavor.

Games, art programs, and desktop productivity software made me want to be good at using computers, but web development made me want to be good at programming computers. I saw self-hosting as a logical extension to that, because I needed to learn everything I possibly could about making great web sites. I started doing self-hosting probably in 2004, and here’s where I’m at now. I love it.

  • Hardware: Desktop computer in my parents’ house in NY, which I built in 2009. It’s long in the tooth, with an Intel Pentium Wolfdale dual-core, 2GB of DDR2 RAM, and the OS is installed on RAID-mirrored 7200RPM hard disks. I will be replacing most of the hardware when I visit my parents this Christmas, and since I have a job and can fund this myself now, I can get them an i7, a ton of RAM, and an SSD and maybe be good for another ten years.
  • Operating system: Windows Server 2008 R2: it’s so outstandingly easy to deal with, and I’m really good at Windows.
  • Network: local ISP with slow DSL. The speed makes it the weakest link of the whole setup, but there’s a static IP address and they don’t block any ports, plus I don’t need to host anything large or latency-sensitive like videos.
  • Domain and DNS: Gandi, they’re straightforward and great.
  • SSL: Comodo 3-year cert, bought cheaply through some reseller like SSLS. The more time between cert renewals, the less often you have to bust out that OpenSSL script to convert a PEM to PKCS12 or whatever the fuck.
  • Web: Apache httpd and PHP5 for static or simple dynamic things. Also, httpd has a great WebDAV implementation that I use for storing read-write files that I can modify remotely, like my KeePass2 password manager database, so I don’t have to use OneDrive or DropBox.
  • Blog: I’m starting to build a blog-type site, and I have decided to create a static site in Dreamweaver using Templates because I like WYSIWYG for document creation, and honestly a static text file full of <p> elements is so simple it can be handled by any editor under the sun, from vi to Visual Studio. Throw in a tablespoon of fonts, a teaspoon of CSS, a teaspoon of PHP for a dynamic index page and RSS feed, and a pinch of Javascript for syntax highlighting, and I’ve got a blog that does what I want and doesn’t require a gigantic WordPress monster. This will all just be served with httpd. That’s the theory, anyway.
  • Application server: Apache Tomcat, for complicated projects that benefit from static typing, a compiler, and an IDE. I write a lot of Java for work and I enjoy it, so this solves many problems I face.
  • Email: MDaemon, works well, I might try to upgrade SpamAssassin.
  • Backups: Retrospect. This is the main use-case for this computer: back up the other computers my parents use every day in case of hardware failures or accidental deletions. Backing up to The Cloud other people’s off-site computers is way too slow, and when you need to restore a backup when a computer becomes a boat anchor, it’s even worse and you have less patience. Gigabit LAN backups all the way. This has saved our butts in a major way at least three times in the last 10 years. Periodic off-site rotation optional. Retrospect kind of sucks though.
  • Management: Remote Desktop Connection is king. Cygwin sshd for SFTP and simple command-line operations.
  • VPN: I technically run an OpenVPN server on this computer, but in practice, if I want to cover my tracks, I use Private Internet Access which is much faster and not too expensive for how much I use it.
  • IRC: I used to run an IRC server using UnrealIRCD, which was cool, but I eventually stopped using it for social reasons more than technical ones.
  • FTP: Also shut down, since the Gene6 server I was using wasn’t being updated so newer clients like Filezilla couldn’t deal with the SSL1.0 connection or something. SFTP replaces this.
  • Monitoring: Pingdom shut down their free accounts, so I moved to FreshPing.
  • Source code management: A lot of it’s on GitHub, but they’re a fucking terrible company that I hate, so I’ve been using hosted Bitbucket more, especially since their private repositories are free. We used GitLab at work and I didn’t really like it.
  • Photo hosting: I like taking pictures, but after the giant price increases from Flickr and lack of worthwhile perks, I cancelled my Pro account. Then they introduced a 1000-photo limit for free accounts, which I find aggravating but not worth doing anything about. I’m not actually losing data, since the source of truth for my photography collection is a good-old folder-fulla’-JPEGs on my hard drive, and try as they might, Flickr/Yahoo/Verizon/SmugMug can never take that away from me. Photo management is done with Lightroom, and not the shitty web port version.
  • RSS: The most elegant solution to many problems.
    • Inoreader: For feed readers, I have decided that Inoreader is fantastic, more so than The Old Reader and Blogtrottr.
    • Scraping: I’ve been doubling down on RSS with a custom Java web application that I use to convert non-RSS sources into RSS feeds for Inoreader to consume, because I don’t want to manually, compulsively check everyone’s websites every day or get email alerts.
  • Twitter: I’m not planning to quit the platform, but I have done what I can to make it hospitable for me, especially after the election.
    • Talon: Android client with blocking/muting string patterns, chronological sorting, no ads, no suggested content.
    • Larry’s Twitter Filter: Chromium extension to add blocking/muting string patterns to the OEM Twitter web application
    • Stylus: Custom user style sheets to get rid of Twitter webapp garbage like suggested tweets and trending hashtags.
    • uBlock Origin: Twitter deserves exactly $0 from me.
    • A ruthless sense of self-protection: Seeing a bunch of tweets about a topic that decreases your mental health? Muted. Seeing a bunch of bad tweets from a specific person? Unfollowed. Bunch of randos yelling at you? Followers-only notifications mode on. Nobody has the time to invite negativity into their life, so protect yourself. You wouldn’t open your email inbox without a spam filter, so why should Twitter be any different?
  • Facebook: Over my dead body.

The best part is that this can all run in a datacenter house that is not in an earthquake zone, has a backup electrical generator, already has internet paid for (this server doesn’t increase their ISP costs), and barely uses any electricity (a few cents a month). Paying someone else to host just the email portion would blow the entire budget by a factor of at least 3; when you consider all the other functions this server provides, it would cost way more for someone else to host this externally, especially for the terabytes of storage space and bandwidth costs that are used to provide hardware failure recovery with backups. Last but not least, my dad (an engineer, but not the computer kind) is very handy with replacing a burned-out ATX power supply when needed.

Next steps:

  1. Get the blog presentable, including more articles and the index and RSS pages.
  2. Upgrade the server hardware (Q4).