This is kind of a record keeping post, it turns out when you've been blogging for nearly 15 years posts can be useful to remind you of what you did years earlier that you presently have no recollection of. It's my small battle against the ever-creeping memory loss that follows on the heels of balding and additional chins---blog against the dying of the light!
Anyway, I'm trying to keep on top of my various sites and recently I realized that as a result of extracting this blog out of my long-standing WordPress Multisite in 2018, followed by a recent move over to Digital Ocean this January a number of images in posts that were syndicated from bavatuesdays to sites like https://jimgroom.umwblogs.org were breaking. The work of keeping link rot at bay is daunting, but we have the technology. I was able to login to UMW Blogs database and run the following SQL query:
UPDATE wp_13_posts SET post_content = replace(post_content, 'http:///files/', 'https://bavatuesdays.com/wp-content/uploads/')
That brought those images back, and it reminds me that I may need to do something similar for the ds106.us site given I have a few hundred posts syndicated into that site that probably have broken images now.
But the other site I discovered had broken images as a result of my various moves was the Ghost instance I've kept around since 2014. I initially started this site as a sandbox on AWS in order to get a Bitnami image of Ghost running, which was my first time playing with that space in back in 2014. That period was when Tim and I were trying to convince UMW's IT department to explore AWS in earnest. In fact, we would soon move UMW Blogs to AWS as a proof-of-concept but also to try and pave the way for hosting more through Cloud-based services like Digital Ocean, etc.
It's also the time when the idea of servers in the "Cloud" seemed amazing and the idea of new applications running on stacks other than LAMP became real for me. Ghost was one of those. It was the promise of a brave new world, a next-generation sandbox, which was around the time Tim setup container-based hosting for both Ghost and Discourse through Reclaim Hosting as a bit of an experiment. Both worked quite well and were extremely reliable, but there was not much demand and in terms of support it continued to rely too heavily on Tim for us to sustain it without a more robust container-based infrastructure. We discontinued both services a while back, and are finally shutting down those servers once and for all. And while we had hopes for Cloudron over the last several years, in the end that's not a direction we're planning on pursuing. Folks have many options for hosting applications like JupyterHub and the like, and the cost concerns of container-based hosting remains a big question mark---something I learned quickly when using Kinsta.
Part of what makes Reclaim so attractive is we can provide excellent support in tandem with an extremely affordable service. It's a delicate balance to say the least, but we've remained lean, investment free, and as a result have been able to manage it adroitly. We are still convinced that for most folks a $30 per year hosting plan with a free domain will go a long way towards getting them much of what they need when it comes to a web presence. If we were to double or triple that cost by moving to a container-based infrastructure it would remove us from our core mission: provide affordable spaces for folks to explore and learn about the web.* What's more, in light of the current uncertainties we all face we're even more committed to keeping costs low and support dialed-in.
So, I'm not sure why this record keeping post became a manifesto on affordability, but there you have it :) All this to say while we have been removing our Discourse forum application servers we also decided to use the occasion to migrate our Ghost instances that we're currently hosting (which are only a very few) to shared hosting so that we can retire the my.reclaim.domains server that was running them on top of Cloudron. So, Tim and I spent a morning last week going over his guide for setting up Ghost through our shared hosting on cPanel, and it still works.† The only change is now you need to use Node.js version 10+ for the latest version of Ghost.
He migrated his Ghost blog to our shared hosting, and I did the same for mine (which only has a few posts). He has been blogging on Ghost for several years now and I have to say I like the software a lot. It's clean and quite elegant, and their mission and transparency is a model! But if you don't have the expertise to install it yourself (whether on cPanel or a VPS) hosting it through them comes at a bit of a cost, with plans starting at about $30 per month. That price-point is a non-starter for most folks starting out. What's more, there's little to no room to dig deeper into the various elements of web hosting afforded by cPanel for an entire year (including a domain) versus the same cost for just one month of hosting for only one site.
So, I have toyed with the idea of trying to move all my posts over to Ghost, but when I consider the cost as well as the fact it has no native way to deal with commenting cleanly, it quickly becomes a non-starter. With over 14,000 comments on this blog, I can't imagine they would be migrated to anything resembling a clean solution that would not result in just that much more link rot. I guess I am still WordPress #4life :)
*And while it remains something we are keenly interested in doing, we are not seeing it as an immediate path given the trade-off between investment costs and the idea a per-container costs for certain applications which would radically change our pricing model.
†He had to help me figure out some issues I ran into as a result of running the commands as root.