All posts

ghost

How to self-host a Ghost blog

A plain-English guide to what you need, what can break, and how to keep a self-hosted Ghost blog understandable over time.

  • ghost
  • self-hosting
  • blogging
A VPS server card connects to a Ghost blog panel and a maintenance checklist for backups, updates and clarity.

You want Ghost’s clean writing experience without handing the whole blog to someone else, but the words “server setup” make it sound like you are adopting a small machine with moods.

Short version: to self-host a Ghost blog, you need a server, a domain name, Ghost itself, a database, HTTPS, email for sign-in and newsletters, and backups. The hard part is not starting Ghost once; it is keeping the domain, certificate, database, updates, and mail settings in a state you can still understand six months later.

What are you actually self-hosting with Ghost?

Ghost is a publishing platform. Think of it as the whole little newspaper office: the writing desk, the archive room, the public front window, and the membership counter if you use paid or free members.

When you self-host Ghost, that office lives on your own server. A few parts work together:

  • Ghost serves the admin area and public blog.
  • A database, usually MySQL, stores posts, members, settings, and themes.
  • A web server, often Nginx, acts like the receptionist that sends visitors to the right place.
  • HTTPS, usually through Let’s Encrypt, gives the padlock in the browser.
  • Email, often through a mail provider, handles staff login links, member emails, and newsletters.

So “self host Ghost blog” does not mean one magic app floating alone. It means a small stack of pieces that need to agree with each other.

What do you need before you install Ghost?

Start with a domain name. Your domain is the street address, like example.com. It needs to point to your server before people can reliably reach the blog. If that part is fuzzy, the domain-first explanation in How to point a domain at your server is a good companion.

You also need a server with enough breathing room. Ghost is not huge, but it still needs memory for Node.js, space for images and themes, and database storage for your content. A tiny test blog and a publication with thousands of images are not the same animal.

Then decide how you will handle HTTPS. Without it, browsers show warnings or treat the site as less trustworthy. For most personal and small publication sites, free HTTPS from Let’s Encrypt is the normal path; see How to get free HTTPS on your own server for the plain-English version.

Finally, plan backups before you publish. Your posts are not just files in a folder. They live partly in the database, partly in uploaded images, and partly in configuration. A good backup plan covers the whole set, and more importantly, can be restored. That difference matters; How to back up your server — and actually be able to restore it goes deeper on that.

Should you use Docker, a one-click image, or a manual install?

There are three common ways to self-host a Ghost blog. The right one depends less on bravery and more on how much responsibility you want to hold in your head.

ApproachPlain-English ideaBest fit
One-click imageA pre-packed apartment: Ghost is already placed in the room for you.Quick experiments, simple personal blogs, learning the shape of things.
DockerLabeled boxes: Ghost, MySQL, and supporting pieces are kept more separate.People who may run more than one app or want cleaner boundaries.
Manual installBuilding the room by hand: every piece is placed directly on the server.People comfortable maintaining Node.js, Nginx, database services, and updates.

Docker is not required, but it can make the setup easier to reason about later because the pieces are boxed up instead of scattered across the server. If Docker still feels abstract, read Docker on a server for beginners before choosing.

The main rule: pick the path you can explain back to yourself. If future-you cannot remember where Ghost, MySQL, uploads, HTTPS, and email settings live, the setup becomes fragile.

What usually breaks on a self-hosted Ghost blog?

The most common failures are boring, which is good news. Boring failures are easier to prevent.

The domain can point to the wrong place. In that case, your browser may show an old site, a blank page, or nothing at all. It is like sending readers to the old office after you moved.

HTTPS can expire or be issued for the wrong name. Then visitors see certificate warnings, even if Ghost itself is fine. The exact browser message varies, but the root problem is often a wrong or expired certificate.

The database can be missing, unreachable, or out of sync with Ghost. Ghost may start but show an error, or refuse to load the admin area. This is the archive room being locked while the front desk is open.

Email can be half-working. You may be able to publish posts, but staff login links or member emails fail. Ghost depends on email for more than marketing; it is part of access and membership.

Updates can also surprise you. Ghost, Node.js, MySQL, and the operating system all change over time. If nobody knows how the original setup was assembled, a simple update can feel like pulling one wire from a wall and hoping the lights stay on.

FAQ

Can I self-host Ghost for free? Ghost itself is open source, but you still need a server, a domain, and often an email provider. Those pieces may cost money.

Is Ghost easier than WordPress? For writing and publishing, many people find Ghost simpler. For plugins and broad website features, WordPress has a larger ecosystem.

Do I need Docker to run Ghost? No. Docker is optional. It helps keep Ghost and its database in clearer boxes, but a manual setup can also work.

Can I run Ghost and another website on the same server? Yes, but you need clean routing, separate domains, and careful HTTPS handling so one site does not trip over the other.

What should I back up? Back up the database, uploaded images, themes, and the setup details needed to restore the site somewhere else.

The shortcut

Server Manager helps when you want the outcome — a working Ghost blog on your own server — without turning the setup into a private memory test. The domain, HTTPS, app, and storage layout stay visible enough that you can come back later and still see what belongs to what.

That matters for the failure modes above: a wrong domain target, an expired certificate, Ghost pointing at the wrong database, or one project breaking another on the same server. The real benefit is not avoiding every technical detail; it is keeping the important relationships legible.

So when you return months later to update Ghost, move a domain, restore a backup, or add another site, you are not decoding a mystery left by your past self.

A self-hosted Ghost blog is a small system, not a single switch. Once the address, certificate, database, email, and backups are clear, you get what you wanted in the first place: a fast, focused place to publish that still feels like something you own and understand.