“Many times what we perceive as an error or failure is actually a gift. And eventually we find that lessons learned from that discouraging experience prove to be of great worth.” ― Richelle E. Goodrich

This website was moved from WordPress to Ghost partly because I didn't find Wordpress themes that matched my design sensibilities (a s t h e t i c s), but also because I wanted to look at different publishing platforms as part of my interest in learning new things.

I am here to tell you that I have done a good bit of learning during this migration. From failing.

Some of the issues resulted from my fundamental lack of understanding on what was expected during the installation, and some of it was from poor choices on my part.

Installation Issues

I chose Digital Island for the Ghost install as they have a mechanism called a droplet. The droplet is a purpose built VM that generally includes installation scripts that are executed during the installation process. I chose the Ghost droplet from Digital Island's Marketplace (available droplets designed for specific roles), and chose their 1gb AMD virtual processor droplet for $7-ish a month to get my feet wet. Getting the SSH key in was no problem, and I configured Putty to access the droplet via suppled IP address. While that was running, I changed the A-record at my domain registrar. It happily ran through the install process, but failed with a database error.

After repeating the process 3 or 4 times, I did some googling and found out that the 1GB droplet is not capable of running Ghost, MySQL, and nginx all at the same time.

I destroyed the droplet, and installed Ghost on a 2GB droplet. Installed ok, but threw an SSL-error on the CLI interface. But I was able to reach the site, and SSL seemed to be working, so off I went and I started configuring and placing content onto the site.

Run Issues

While the site administration worked properly for the most part, I had issues with Ghost 'portal'. The portal was the functionality associated with things like the subscribe function, tiers, and newsletters (I think). On that admin page, the portion of the screen intended to show a preview of what the subscribe portal would look like with the proper configuration instead had a cylon spinning circle (never a good sign). After doing some detective work, it turns out that it was SSL related.

Yeah, that SSL error mentioned earlier mattered. Further testing indicated that I had failed in two areas in terms of SSL. As part of the Ghost installation process, there is a prompt for the site URL. I had put 'http://...' instead of 'https://...' That error appeared to be fixable with a Ghost command on the CLi. The more serious error was that I did not allow enough time for the IP to propogate once I made the change at the registrar. Given that, the Digital Island script was unable to properly put that info into the nginx configuration, and that was not fixable at my level of comprehension.

Export Issues

Once I decided to blow up the misconfigured droplet, I exported the existing data into a JSON file so I could import it after it was rebuilt. That did a great job, except it did not export locally contributed photos used for posts. I was relieved to see that imported posts did retain their unsplash links, so those posts were good.

I also had an issue with the 'About' page as Ghost installs an about page during new installs. It was simple enough to fix by adjusting the slugs (post URLs).

Install Procedure

In order to retain all of what I've learned throughout this process, I have created an install procedure/checklist needed to get the Ghost instance up and running properly the first time on a Digital Island droplet:

  1. Log in to Digital Island, Select a project, and create a droplet.
  2. Select Ghost from the Marketplace
  3. Select at least a 2gb RAM image ($14-16 month depending on AMD or Intel choice) with SSH.
  4. Create droplet.
  5. Note public IP and adjust IP root and www A records with new IP address.
  6. Wait for address to propogate and confirm.
  7. Access droplet via IP address using SSH
  8. When asked for Site URL, put in https://yoursite.com and make sure the S in in the pruotocol. THE S MATTERS.
  9. Assuming no errors, test SSH functionality by configuring the portal.

Everything now seems to be working properly. Good times.