It's been a very long time since I posted to my blog, but I'm back š
I had been considering moving this blog away from WordPress for a long time as well, but I guess it took actually losing it to an unexplainable "critical error" to finally get me to make the switch.
The Problem
I wanted to upgrade my server from Ubuntu 20.04 to Ubuntu 22.04, which normally is an easy process. But I have been managing most of my server's functions through the ISPConfig3 hosting control panel, and unfortunately it still does not support the latest Ubuntu LTS release after 6 months. Looking for alternatives, which are few in number, I stumbled upon Hestia Control Panel, which is a fork, or could probably be better described as the continuation, of the venerable Vesta Control Panel, but Hestia Control Panel is still very actively developed, and it supports PHP 8.0 and 8.1 as well as Ubuntu 22.04 LTS. Testing Hestia Control Panel on a couple of non-production servers first, I found that I like the ease of install, the cleaner interface and even the user directory structure of Hestia Control Panel much better than the ISPConfig 3 control panel I have been using for many years. So I decided to upgrade and migrate both my shared host and the server where I run my own websites to Ubuntu 22.04 and the Hestia Control Panel.
I had a few minor hiccups getting my sites and services installed and working, mostly due to differences between ISPConfig's concept of clients where each web domain is a user vs Hestia's concept of users that are real Unix user accounts on the system with their own web and email domains, DNS zones, etc. But in the end, all went fairly smoothly, right up until the time I tried to restore my blog site. Imagine my frustration after I restored the files and the database, opened up the website and was greeted with:
Critical Error
There has been a critical error on your website. Please check your site admin email inbox for instructions.
along with a link to a page that was supposed to help me troubleshoot problems with WordPress, but that in reality took me nowhere at all. So I looked in my error logs and I was able to track the problem to a host of various function calls that had too few arguments. Crazy I know, but those arguments must have been aimed at me instead of the functions that wanted them, seeing as how every time I wanted to load the site, it argued with me instead of loading the page I wanted. So I tried deleting and recreating the database, deleting all my WordPress files and performing a clean install, telling it to use the database I already created. If I told it to use the database I had already created and imported from my backup, the same critical error greeted me. But if I deleted the database, told the panel installer to perform a clean install and create the database automatically and then tried to restore the backup to the existing database, opening and even reloading the page a number of times showed me the same sample that I saw after the clean install. Apparently restoring my backup had absolutely no effect after installation. Of course just deleting and recreating the database and restoring the backup at that point greeted me with the infamous critical error again.
So I decided I would try to outsmart WordPress by importing my RSS feed into it. In a flash of uncanny brilliance, I headed right over to the Wayback Machine, plugged in https://kyle.ga and wouldn't you know, the calendar popped up and I was able to open a recent copy of my blog that they kept for me. From there, I just opened up the link to the feed, which took me to another calendar where I could select the latest version they had, which happened to be last built near the end of April 2016, which included my latest post up to now.
But wouldn't you know, the fun was far from over. I once again deleted the database and files and performed a fresh WordPress install. I then logged into my admin page and proceded to install the RSS import plugin. All went perfectly until I actually imported my feed. At this point, I received a rather nasty-looking email about something going wrong, and right there on the admin page, sitting pretty as you please was this really helpful message:
Critical Error
There has been a critical error on your website. Please check your site admin email inbox for instructions.
I know that insanity is doing the same thing many times expecting the same result, but call me crazy, I went through the whole process one more time, and you guessed it, the same pretty words appeared on my admin page and I got the same helpful email. So after 10 long and somewhat productive years, I have decided to break it off with WordPress. Buh-bye! It's not me, it's you! Let's not even be friends, OK?
Getting New Blogging Software
Imagine my surprise at how hard it is to find free and open source blogging software that is not WordPress, and is easy to install and use, with the added requirement that I need to be able to import the feed that the Wayback Machine preserved for me.
Ghost
In looking for good alternatives to WordPress, of course the first thing I found was the very popular Ghost. But the problem is that although it is free and open source, the last thing they want is to make it easy to self-host, because that of course would cut into their revenue stream, which is derived from their hosting service, and since I'm already paying for hosting, I don't need to double my hosting cost just for a blog that I can host on what I already have. Yes, they do have an official Docker image, but I didn't find it easy at all to get Docker going, especially since that would require a reverse proxy to yet another web server and all. So it may be easier than I think, but that seemed to be a non-starter, so I left it alone.
The Flat-File CMS
I stumbled upon this thread on Reddit that was 5 years old, but was looking for exactly the same thing I needed, so I thought it could maybe still help. I was right. In one of the many comments, someone mentioned Grav, and I found that in my Hestia installer, so I thought I would give it a shot. It was last updated about 6 to 8 months ago, but it did win awards for being one of the best flat-file content management systems for several years, so I gave it a shot. Well, it does look OK,and I think I could have found a plugin or theme to make it look like a blog, but in order to edit pages and create posts, I have to log into the server over ssh or use my panel's file manager to edit files on the server itself, and then I didn't get very far with the admin dashboard, as it kept trying to sell proprietary "premium" addons to the tune of $50/year and up. So I really felt like they wanted the open source software to be a marketing platform to hopefully get me to buy anything that would be useful, without giving me the freedom to study, modify or share the useful parts ... no good. There are other flat-file CMS's that probably can be made into decent enough blogs, but although they didn't try to upsell, it looked like I wouldn't be able to edit my posts or pages on the website itself, or wouldn't be able to import my RSS feed, although I may possibly come back to this at a later date; perhaps I missed something.
Static Site Generators
This same thread mentioned several static site generators as well that I tested. I tried Hugo, Nikola, and Pelican. I decided to avoid Jekyll, since it seems too closely affiliated with Microsoft's Github; I don't think it's just hosted there, and ... well ... Ruby ... I'm not a fan. The nice thing about static site generators is that they run on my local computer and then I deploy the generated website to my server via rsync. This does mean though that although I can edit my posts and pages the way I want using the editor I want, much like the flat-file CMS, I am pretty much tied to the computer, as there is no way to edit my files from a web interface or an app. They do however all have servers that show me the entire site as I build it, so that I can edit things that show up wrong before deploying the website. The other nice thing is that I can completely blow away a site generated with one static site generator and replace it with the same site generated with another.
Hugo
Well, Hugo was rather nice, since its test server actually built my site immediately as I made any changes to the source files. This real-time build seems to be unique to Hugo, although deployment doesn't take it into account; it still requires a build. I did rather like the theme I chose, as I found one called Arabica, but Hugo seems to have a bit of a learning curve to get the site into a useful state. No, I don't want to have to manually download a theme, and I don't really want my whole site to be a git repository either. Having the options is nice, but I didn't want to have to start from zero and try to find stuff, I just wanted to look at the options available and have a place to start. Well, I stuck with it long enough to try to find out how to import my feed, and well, that was a bit more difficult than I liked as well, so I abandoned it for now.
Nikola
I started playing with this maybe a year or so back, but didn't really get into it much. I like Tesla, but I didn't wanna have to be Tesla to figure out my blogging software. Well, it turns out it's not so difficult as all that after all. It is a bit longer and more involved process than logging into my blog's admin panel, writing a post and submitting it, and it does still tie me to the computer to actually post something, but I do have the option to use a text editor on my phone, or even NextCloud Notes, to write my post anywhere, connect my phone to my computer, or sync it to my SkyDisk, and then just put the file in the right place on the computer and rebuild and deploy the website, which takes less than 5 seconds in total. The best thing about Nikola is that I was able to import my 10-year-old RSS feed that hasn't seen a post in 5 years right into it, and it very happilly copied every post in its original HTML format right where it needed to be. I will need to fix a few links probably, and there are some posts with no titles and it just wrote in "No Title" for those, but overall, it went very smoothly, and even the music I had recorded still plays with no issues at all. Thanks to the WayBack Machine preserving my feed for me, I have every post I wrote on my blog going all the way back to 2012, and they still even have the share buttons that I probably need to go ahead and remove, or replace with either a Nikola plugin or a theme mod that I'm certain is available. The only glitch I found was that after I imported my feed, I could only post in HTML format, as for some reason, installing the plugin somehow disabled the Markdown compiler. So I cheated a little and just created a new site configured for The Kyle File and moved all those posts from the old site to the new site, and I can write posts and pages in Markdown once more.
But now we have a problem. Nikola, like other static site generators, integrates with very few comment systems, and only two of them can be self-hosted. I tried for hours to get Commento working, even though they tell me it's supposed to "just work." Yeah so much for that. I guess if just works if you want to fool around with Docker and such, but their dependencies are so old that if you want to use it without all the container mess, it's impossible. I spent hours and hours trying to figure out why it was unable to authenticate to the Postgresql database it had me create, only to find out that it relied on a version of Postgresql that was like 3 years old, and couldn't even talk to the version in Ubuntu 22.04. So my only other choice was Isso. What a mess! I pounded on that thing for days trying to get it working, and no joy whatsoever. I even tried putting it on a different server, but no matter what I did, I only saw a comments header with nothing underneath it, and no way to write a new comment. Project abandoned. Seems Nikola makes great websites with nothing other than Markdown text, but if I want a blog and don't want to rely on a third-party proprietary comment system or an open source comment system that is near impossible to self-host, Nikola makes for a lackluster blog.
Pelican
Well, that was a non-starter. All I wanted to do was to import my feed. But anything that didn't have a title was simply thrown away. It didn't ask me what to do with it, it didn't even just create "No Title" or "Empty Title" posts. It simply trashed everything it didn't know what to do with. I spent all of 10 minutes on it before it went to bye-bye-ville.
Enter the Bird
The Reddit thread I have referenced here gave me one more option to try. It's not a flat-file CMS, nor is it a static site generator. It's just a plain old simple blog, although it can be extended to create all kinds of things. Its primary purpose though is blogging, so knowledge of theming is important to go beyond the blog. This really nice little web app is called Chyrp Lite. Although it does require a database, the first question it asks is whether your database is MySQL, Postgresql or SQLite3. So based on how easy it is to move an SQLite3 database from one computer to another, or to copy it, or whatever, since it's a file and doesn't require a TCP connection to a server in order to access it, I chose the SQLite3 database. The rest of the installation ran very smoothly, and my new blog site ran very fast. The main hurdles had yet to be jumped however: importing my feed and allowing comments.
Well, here I thought we were gonna have another non-starter when it came to importing the feed. There is an importer, but it wants an Atom feed, and all I had was RSS. Of course it complained about that, so I tried converting the feed to Atom. Same old story, it didn't like it. So I let Nikola, which had happily converted my RSS feed to separate HTML posts, generate an Atom feed for me. Strangely, Chyrp Lite didn't like that either. Either it had errors about invalid keys I couldn't understand, or it complained about the export file being invalid.
Then I remembered something very important. It seems I still had a blog at Tumblr that had apparently been kept updated all the way up to the time I stopped blogging in 2016. By this point, I saw that there was an extension to Chyrp Lite that is disabled by default that is a migrator from WordPress, Tumblr, TextPattern and Movable Type. Well, since I had Tumblr already, I gave it a shot. Bad, bad, bad! Nothing but errors! It complained about my Tumblr URL being invalid, even though I was logged in and looking right at it. I was ready to throw in the towel and get WordPress back, since I knew it could import from Tumblr.
WordPress Fails Again
I love my new hosting panel and the way it organizes things. I can put several full public_html.* directories inside the main folder of my web domain, and just rename the one I want to use to be called just public_html. If I want to go back to something I used previously, I just rename public_html to public_html.whatever and rename public_html.oldsite to public_html. So this is what I did. I renamed public_html to public_html.chyrplite and created a new empty public_html directory and let my Hestia Panel install WordPress for me. But then when I tried to import my Tumblr, it asked for keys that I already saw and was able to copy and paste, but it complained about the authorization signature not matching the expected value. Well, I thought this was due to the fact that when I initially connected The Kyle File, I had it on a different domain. So I went and registered a new app, just like WordPress told me I would need to do. Nope! Again, the new authorized signature didn't match the expected value. So I had one of two options as I saw it. I could rebuild one post at a time into Chyrp Lite from the backup that i was able to download successfully from Tumblr, or I could just put my Nikola site back up, say to heck with comments, and just never touch it again, leaving it up for historical purposes only, even though the Internet Archive already had a decent enough historical copy.
The Puzzle Is Solved
So I tried one more time to find a way to export Tumblr to something I could import into Chyrp Lite, since I had pretty much decided that this is what I wanted; despite its import issues, it really looked like the best of everything I had tried up to now. And so I somehow stumbled upon this article. Who would have thought that even though importing tumblr to self-hosted WordPress doesn't work, even though they have both been owned by the same company for nearly three years now, transferring Tumblr to wordpress.com would work so well? As it turns out, the feed I got from the Wayback Machine was only about a tenth of the posts that I had actually made over the years. So I successfully got my Tumblr imported into a WordPress site hosted at wordpress.com, but not visible to the public, and then immediately trashed the "Hello World" post they put on every site, and went in and got my media and my xml file. I was able to switch back to Chyrp Lite very easily, and then tried to import the WordPress xml. Well, it complained again, but this time it was because I had a trashed post that I didn't delete. I simply deleted the item from the xml file using a text editor, and the import was quite successful. After just a little more time to figure out why the comment form wasn't being displayed, I traced that to a permission issue, simply granted the permissions to my visitors that I wanted, that allows anyone to post a comment if they solve the easy math problem that pops up, and just like I wanted, comments appear in the moderation queue for me to approve, deny or delete. And even after all my posts have been imported, this blog runs much much faster than my WordPress blog. So now I can delete all my other attempts, along with my wordpress.com site, and maybe even my Tumblr as well, especially since my posts to Talkabout can show up on here as well, since it supports XMLRPC.
Conclusion
I know it's been quite a while, but I'm back on a blog, hosted on my own server using Chyrp Lite, and I don't think I'll be looking for new blogging software any time soon. It runs very fast, offers a fair number of client/server-based or file-based database options, it's clean and simple, easy to use, and most importantly, it follows w3c accessibility standards for use with assistive technologies right out of the box. What's not to love! I have 13-year-old posts that made it onto the new blog, and hope to be able to post for the next 13 years or more. Just keep my new favorite blog software updated and I'll be happy.
Update
In the original version of this article, I mentioned how difficult it was to self-host some software, e.g. Isso Comments and the Ghost blogging software. However, because Hestia Control Panel runs an out-of-the-box nginx reverse proxy to Apache configuration by default, it is much easier to set up non-PHP web software than I had initially thought. All I ended up having to do was to copy the nginx default templates for both regular http and for ssl, giving them the name I wanted, edit the ssl template to proxy pass to http://localhost:<port>
specifying the port I chose for the web server built into the software I wanted to run, then choose that template in the advanced settings for the web domain. I was able to see Isso comments on a Nikola test blog, and I was able to very easily set up several other web applications written in Go, including gitea with very minimal difficulty. I did try Ghost initially once I figured out how this reverse proxy thing worked, but this still gave me nothing but trouble, as apparently the version of node.js available from the Ubuntu 22.04 repositories is far older than what Ghost requires, and I had already decided to run Chyrp Lite here, so I just didn't try much harder to get that working. Still, seeing how easy it really was to get the reverse proxy working as expected on my current setup opens up a whole new world of web applications I can run quite easily now. As I mentioned, I already spun up my very own gitea site, so I can move off Gitlab or just let it lay dormant now; I can manage my own git repositories, even for my websites, all on my own server, using entirely free open source software. As for the blog, I put too much time into exporting, migrating, importing and updating everything in Chyrp Lite to even continue looking at any other solutions, and I know that I have found the best for my needs already, so I'm definitely sticking with this. I'm just very happy that I am able to do much more with my server space than I initially thought possible; this experience has taught me much.