My Ghostly Strategy: Avoid the Graveyard

This Week In Writing, we fully explore how I’m building Ghost into a self-hosted content hub and how you can too.

My Ghostly Strategy: Avoid the Graveyard
Photo by Tandem X Visuals / Unsplash

I purchased JustinCox.com in 2005. In the nearly two-decades since, I've created many different versions of a personal website. There were multiple blog formats, splash pages, and the domain even pointed to Tumblr at one point. Regardless of what my site looks like or what it runs on, it will always be my digital home.

A few years ago, I relaunched my website by copying everything from Medium. It was an expansive and time-consuming experience. In light of centralized platforms collapsing left and right, the move was intended to have a place where I was always in control of my creations.

I recently went through the same process moving everything from WordPress to Ghost. Ghost is an open-source, nonprofit-backed website software similar to WordPress. While it is far less expandable than WordPress (no plugin support), Ghost offers fully integrated memberships and newsletter support. What started as a life raft for Substack, converting my website to Ghost has become a fun and frustrating project.

No matter what platforms come and go, my website will always be the centralized hub that houses all of my writing. I won't lose anything should a platform die. Ironically (intentionally?), Ghost will keep my content out of the platform graveyard.

Now, fully functioning and open for business, I figure it's time to share answers to some of the many questions I've been asked along the way. Buckle up because this will be the longest newsletter I've sent in a long while (ever?).

Let's rock and roll.

Ghosts | Source: CBS

Why Ghost and why not WordPress?

WordPress's for-profit arm recently launched a paid membership and newsletter feature. Similar features can be added to self-hosted WordPress installs with (mostly paid) plugins. Part of the reason I chose Ghost over these options is because memberships and newsletters are baked right in. Ghost can completely replace Patreon, Substack (if needed), and host my blog, contact forms, and whatever else I want to build in.

Plus, the Ghost interface is really slick (more on this in a bit).

Isn’t Ghost expensive?

Ghost(Pro) is the for-profit arm of Ghost – similar to WordPress.com. It's priced based on the number of subscribers you have. If I ported the 18k subscribers of This Week In Writing, Ghost(Pro) would cost about $150/month. This is actually a bit lower than what it'd cost for the same audience size on CovertKit or MailChimp.

Like WordPress, Ghost also has a free-to-use self-installed version. I have an Opalstack server that costs $150/year and provides enough RAM to run Ghost without any issues. However, sending newsletters requires using Mailgun (terrible name). They have different plans, but I'm basically paying $1 per 1,000 emails sent.

Self-hosting Ghost and using Mailgun (terrible name) is more expensive than using Substack, but it is still on the very low end of other email marketing platforms. Plus, there's the added benefit of my entire website built in as well.

The best part about Ghost (whether self-hosted or using Pro) is the complete lack of platform percentages. Substack takes 10% of every subscription fee even if you move subscriptions off the platform. Ghost takes zero. The only cut goes to Stripe, which comes with any credit card processing online.

That 10% Substack cut ends up being a lot. While I completely understand that's how Substack supposedly covers their costs, 10% is still 10%. Especially when I could run everything on my own.

To celebrate fully launching Ghost, I have a Subscribe Without Substack 10% discount! Sign up before the end of July to claim the discount. If you're already a paying subscriber on Substack, message me, and I'll help you transition your subscription with a customized discount.

Is Ghost easy to use?

Once Ghost is installed and fully set up, Ghost is mostly easy to use. I'm constantly delighted by Ghost's backend. It's sleek, modern, and wicked fast. Ghost's editor shares a lot of similarities with Medium, which means it's simple and well-focused.

Updates, however, are less simplistic. Unlike WordPress, updates are not built into the admin system -- there's no "click to upgrade" process. Instead, all updates and server backups require SSH command line access.

Firing up a new SSH terminal every time Ghost updates (practically weekly) is a bit of a pain. So, I built a Siri Shortcut to make it a one-click experience. While this is something that I'm comfortable with, eliminating SSH updates alone may be worth considering Ghost(Pro) for some people.

If the thought of SSH updates gives you pause, you're really not going to like the installation process. Installing Ghost requires a lot of web server and coding competency, modifying configuration files, running terminal commands, and more. Thankfully, Opalstack created a step-by-step guide, but installation is not for the faint of heart.

Practically all server-related settings require modifying a configuration file. Want to change the permalink structure? It's a config file. Want to create redirects? It's a config file. Want to change the content upload file to the correct location so it doesn't get deleted every time you upgrade? It's a config file.

Mailgun (terrible name) is a bit of a pain to set up, too. But once it's running, you can basically forget it even exists. Strangely, you have to add the email API codes in a Ghost configuration file and the newsletter admin settings. This messed me up for two weeks until I figured it out.

Ghost in Ant-Man and the Wasp | Source: MCU

What’s missing from Ghost?

Ghost isn't perfect. For one, it's really missing an email share button. This seems like an essential feature for any email newsletter. I can create a mailto link, but there isn't a block to easily and quickly add to each post.

Ghost also has no email workflows or automation sequence options. In fact, there's no way to automatically send a welcome email when people sign up. Again, this feels like an essential feature that Ghost needs. Thankfully, I can work around it with Zapier, but it'd be nice if it were fully built into the system.

Email bounces don't report in Ghost. I have to go into Mailgun (terrible name) to see these. Supposedly, after a handful of undeliverable attempts, Mailgun (terrible name) reports to Ghost, and the subscription is purged. Which, I guess, is fine? But it'd still be nice to have an easy way quickly filter out bounced addresses within the Ghost admin.

Strangely, Ghost also doesn't have a way to build contact forms. This kind of seems like it'd be easy to do, considering the email service is already built in. But it's not there. I had to rely on old-fashioned HTML with JavaScript to create a contact form.

How do you use Ghost as your content hub?

My website is now the home of everything I publish. I follow the POSE method: publish once and syndicate everywhere. Following this method, my site is the main place everything exists. If I wanted to fully move away from Substack, Medium, or Patreon (ok, that one I really do want to leave), my website supports the effort.

I write everything in iA Writer and export it to Ghost. Then, I add images and flourishes and schedule the post for publishing. Thanks to the magic of Zapier and APIs, that draft instantly appears in Medium, ready to schedule. Zapier sets up the canonical links, adds it as a draft to The Writing Cooperative, and more. It's a pretty fantastic tool!

Substack, on the other hand, kind of sucks and doesn't have an API. So, I have to manually copy and paste the article into their editor. Following this method is still much quicker than when I was manually creating a draft everywhere at the same time, pre-Ghost.

I go through this hassle to fully own my content (on my self-hosted Ghost) while taking advantage of Medium and Substack's audience and engagement. It gives me the best of both (three?) worlds. Though to future-proof my content while also building SEO for my website, every time I link to an article, it's the version on my site. If another platform collapses, my content won't go with it.

I'm also now moving to make my website and not Substack the primary place for subscriptions. Not only is there no 10% cut, but it's a direct connection with my audience. However, I'm not eliminating Substack. I can still benefit from their audience-building features while still having my site as the primary hub.

Speaking of the 10% Substack cut, they continue taking that even if you choose to port subscriptions off the platform. Which, you know, seems kind of shady. Let me remind you about the Substack Fee Free Promo!

Was it worth the time and effort?

I won't lie to you, setting up Ghost was a lot of work.

Exporting from WordPress and importing into Ghost went smoothish. Well, unless you consider the images. In the end, I had to fix every image file individually on every post. It kind of sucked. Though to be fair, it's largely because I screwed up the configuration file during installation, which resulted in the content folder getting deleted after every update. Oops.

So, yeah, setting up Ghost was actually a massive pain in the ass. But, yes, it was totally worth the effort and headaches. Ghost provides the essential backbone for my writing hub, which is really important to me.

How will you expand the hub?

There's a possibility I can move Writing Cooperative contributor requests to my website from Flodesk. This will require some additional configuration and, likely, automated workflows (which don't exist in Ghost). But, it's a possibility for future contemplation. And, if I managed to pull it off, I could shutter my Flodesk subscription and save $208/year.

Does this mean you’re leaving Medium and Substack?

Medium is not going anywhere. I love the platform and will continue to cross-post and support it as long as it exists (unless it gets bought by a racist billionaire and turns into a haven for hate speech, I'm not down with that).

Substack is sticking around for now. I will continue to take advantage of the audience communication and engagement tools Substack offers. I truly enjoy responding to comments each week and connecting with readers. So, that's not going anywhere.

However, I am now actively encouraging supporters to sign up on my website instead of Substack (cough, discount, cough). Again, it’s a matter of ensuring there isn’t some silly platform change that makes this stuff more difficult in the future. It's part of completely turning my website into the hub for all my writing. Or, I guess I should say, returning my website to the hub it once was before platforms came into play.

The Ghost Crew from Star Wars: Rebels | Source: Disney

Should I set up a Ghost site too?

That's a hard question to answer. Because of the technical challenges, self-hosting Ghost really isn't for everyone. There is the turnkey option of Ghost(Pro). While I only tested it for a few days to familiarize myself before self-installing, Ghost(Pro) seemed stable and was about as simple as possible to get started. If you do decide to go the Ghost(Pro) route, they will even help you copy/move your content from Substack, WordPress, or wherever.

Whether you decide to set up Ghost or not, I think it's vital that every creator have a fully functioning backup of your content. If we've learned anything from the recent issues at Twitter and Reddit, it's essential that your creations live somewhere that you completely control.

The next-generation internet is a return to decentralization, which I'm 100% here for. I miss the old days of creative, individualized websites and niche communities. My website was once that place and, with these steps, is again returning to its roots.

I say bring on the RSS feeds, bring on the blogrolls, and bring on the gifs! Platforms are crumbling. Instead of relying on them for everything we do, let's use them as a way to amplify what we're already doing.