Guide: Community overview of Ghost v6.0 for self-hosted installations

Hi! I’m not sure if I’m just dense vs other users, but I manage a self-hosted Ghost deployment (selfh.st) and have been struggling to piece together what I need to know about the new v6.0 release despite all of the documentation floating around (some in the official Ghost docs, some I stumbled across on Notion, etc.).

As a result, I thought it’d be helpful to compile and document what I’ve come up with so far for others in the same boat.

Feel free to correct me if I’m wrong on any of the points below – it’s not meant to be a complete guide, but rather a sort of FAQ for those looking to get grounded.

  • Installation: Docker Compose is now the official self-host installation method, although it’s currently only in preview.
  • Upgrading: The official Ghost documentation provides guides for upgrading bare metal installations, and Hannah from the Ghost staff has outlined a brief guide on how to upgrade Ghost v5 and earlier Docker installations to the new v6.
  • Web Analytics: Ghost now comes with ‘built in’ analytics via an integration with Tinybird (essentially just an open source wrapper for ClickHouse), which has free/paid plans and a self-hosted option for those who want to avoid paying.
    • Tinybird seems to be lacking in features (click events, etc.) compared to mature self-hosted alternatives (Plausible, Umami, etc.). I’ll personally be passing for the time being, although the idea of built-in analytics directly from the Ghost dashboard is appealing.
  • ActivityPub: Ghost v6.0 now comes with built-in ActivityPub integration, which needs to be enabled when deploying. The installation guide outlines how to enable it via variables and proper reverse proxy declarations (docs only list Caddy, but someone recently merged an NGINX template in the repo).
    • By default, Ghost will be configured to use the Ghost team’s hosted AP server, which comes with limits (2,000 max followers/following, 100 interactions/day). Users can self-host their own AP server and point their Ghost instance to it instead to bypass these limits.
  • Users can easily deploy Ghost without web analytics or ActivityPub enabled if desired (don’t enable them in the .env file when deploying)

Thanks!

4 Likes

Update: As a new member to this forum, I’m apparently not able to share more than three links in a post (I had several hyperlinks for the various items in the original post).

Until I build up enough experience, here’s a draft post on my Ghost site with the full original post and relevant links:

1 Like

A note: one Ghost 6.0 migration uses an iffy syntax. It’s valid MySQL but not valid SQL, so if you have switched on ANSI_QUOTES upgrading will fail with this error:

Searchable: SELECT value FROM settings WHERE `key` = “active_theme”; - Unknown column ‘active_theme’ in ‘where clause’

This happened to me on a self-hosted DigitalOcean installation (from the marketplace) altered to use DigitalOcean’s managed databases instead of one hosted within the Droplet; this is one of the default settings at at least DigitalOcean:

A more compatible migration would have been

SELECT value FROM settings WHERE `key` = 'active_theme'

(single quotes instead of double quotes for strings).

Alternatively, disable the ANSI_QUOTES settings during migration.

Just wanted to share in case others run into the issue.

1 Like

I wrote some really rough notes on my upgrade. I was already using Docker Compose, upgrading from 5→6 worked flawlessly by just changing the container version. Then converting my setup to match the new official self host guide, and adding Caddy to get ActivityPub working was all pretty straightforward.

I’m using the ActivityPub server provided by ghost and it’s definitely not perfect, but things are slowly starting to populate so I assume itll work itself out.

2 Likes