Ghost from the past

I finally got this site, and a few other pet projects, up and running from backups. I had been toying with the Ghost blog a few years ago.

It was all very simple and straightforward:

  • Locate the backup file
  • Decide I'm going to host it on my NAS
  • Set up a virtual machine on the NAS for web projects
  • Set up an NFS share to avoid having important data buried inside of a virtual machine
    • Troubleshoot connectivity between the VM and the NAS host
    • Decide to just physically add cables to the NAS to just have a separate interface
    • Troubleshoot TrueNAS' decision to have all NICS use DHCP, even though I don't want this and it doesn't work
  • Back to the VM, create jails to host the ghost images
    • Attempt to run ghost update
    • Realize that the 3.x version of ghost, to be upgraded, does not work on node18
    • Realize that node 14 is not any kind of available on FreeBSD
    • Switch to my laptop to handle the upgrade steps
      • Attempt to figure out how to use node 14 in Lando, which I was already using for development work
      • Spend another chunk of time attempting to mount NFS onto my laptop
        • Spend yet another chunk of time attempting to access the NFS share, in read/write mode, from inside the Lando setup
        • Notice, along the way, that file access is slow. Just incredibly, unusably slow.
        • Realize this is all a lost cause and just copy the backup files to the laptop to process locally inside the container
      • In Lando, running node 14, update ghost sites to the latest possible version that can run on node 14. Note that this isn't the latest version of Ghost, just the latest that can run on this version of node.
      • Everything is upgraded to 5.47, but I want to run 5.80. Try to switch to Node 18 in Lando, but it throws an 'unsupported' error - even though the docs said it'd work.
  • Sync everything back to the NAS, where I can complete the process
  • Now I'm running a VM under TrueNAS. It's using FreeBSD, which isn't technically supported by the Ghost team, but it's what I'm happiest using. It's running Node 18. It's mounting the Ghost data from the NAS via NFS. It's not fast, at all. But it works.
  • Upgrade to ghost 5.84.1 on each ghost site.
  • Now I need to access these sites from the outside world! I will use Cloudflare for added performance and to obscure my home lab's IP
  • But I still need to route from my home network's public IP to the VM resources. Like any good geek, I am using a pfsense firewall, which has plugins for things like HAProxy, and that's better, at this point, than trying set up another app on my under-powered NAS.
  • Try to get pfsense on the latest version
    • Try, and fail, repeatedly, to skip a major version
    • Upgrade once and reboot
    • Upgrade a second time; reboot
    • Install HAproxy and add basic configuration
      • Why isn't it running? Look at the logs.
      • It's throwing a 'missing libssl.so.3' error. But I just upgraded to the latest OS?
        • I hadn't upgraded to the latest OS. I upgraded to the latest major version, and the HAProxy was built for a patch leve.
        • Upgrade a third time; reboot.
  • Configure HAProxy to support multiple internal services. This is not intuitive, but it is doable
    • Set up hostnames for Cloudflare to reference, which in turn will send hostnames to HAProxy, which in turn will understand which backend to serve
  • Finish setting up Cloudflare and SSL

I now have publicly-available blog sites, running on my home lab, and proxied via Cloudflare. All for free!

On this site, I recovered four blog posts. There were a lot more on the others, some of which were really nice to read later.

Why did I do all of this?

I spent a fair portion of this journey muttering to myself things like, "what's next?" and "why am I doing this?" and, "is this even going to work?"

These are all valid questions. But I'm not sure what my alternatives were:

  1. I could have paid for hosting
    1. Ghost provides an excellent option for hosting, which would also have included ongoing version updates. Pricing starts at a reasonable $9/month, per site. At this rate, my oldest site would have accumulated a tab of nearly $1,000 over the course of the last 9 and a half years. When I set this up, we were at our lowest point, financially. I would have felt this kind of money, hard. In fact, one of the reasons we were blogging was to find gratitude, making the best of what we had.
    2. Alternatively, you can set up a droplet at Digital Ocean for as little as $5. This would have softened the blow, but I would have been less likely to set up 2 additional ghost sites if I'd had to make a financial decision.
  2. I could have been using a free resource
    1. What free resource hasn't been monetized, enshittified or simply removed from the internet?
    2. My time investment in using social networks or other online resources would have been lower. Waaay lower. But, in exchange, I give up my ability to control the use and future of my content.
  3. I could have just... not
    1. Sure, but I have missed the feeling I get from self-expression. Even if nobody was watching. The act of creating and sharing was giving me something I haven't been able to find anywhere else.