Deploy Ghost

Ghost 6 with MySQL, your owner account created at deploy

Deploy Ghost

Just deployed

Deploy and Host Ghost on Railway

Ghost (MIT) is a publishing platform for blogs and newsletters, with memberships and paid subscriptions built in.

This template runs the official Ghost 6 image (6.65.0) with MySQL 8.4 and the content folder (images, themes) on a volume.

About Hosting Ghost

A new Ghost site lets whoever opens /ghost first create the owner account. On a public URL that can be anyone, so this template creates the owner for you: the deploy form asks for your email, a password is generated into GHOST_ADMIN_PASSWORD, and a start step calls Ghost's own setup API as soon as the site answers. Ghost accepts that call once, so nobody can set the site up after you. Open GHOST_ADMIN_URL and sign in.

Ghost 6 emails staff a code when they sign in from a new device. Without mail configured you'd be locked out of your own admin, so the template turns that check off (security__staffDeviceVerification=false). Set up mail (mail__* variables, see Ghost's docs) and turn it back on; mail is also what sends newsletters and member sign-in links.

Before publishing I tested it end to end. After the deploy, Ghost reported the site as set up and a second setup request was refused with "Setup has already been completed". The owner signed in, published a post through the Admin API, and the post was on the public site. After a restart the post was still there.

Two details from testing: Ghost logs "Unable to send welcome email" on first start because no mail is set up, which is harmless; and the service has no healthcheck path, because Railway checks over plain HTTP and Ghost answers that with a redirect to the https URL.

Common Use Cases

  • A blog or publication on your own domain, with themes and a built-in editor
  • A newsletter with free and paid members, once mail and Stripe are connected

Dependencies for Ghost Hosting

MySQL is included. For newsletters and member sign-in, Ghost needs a mail provider (for example Mailgun for bulk mail plus any SMTP service), set through mail__* variables.

Deployment Dependencies

Implementation Details

GHOST_ADMIN_EMAIL / GHOST_ADMIN_PASSWORD   # owner account, created on first start
url=https://               # change it when you add a custom domain
database__client=mysql, database__connection__*   # MySQL over the private network
security__staffDeviceVerification=false    # turn on after configuring mail

To upgrade, set GHOST_VERSION (an image tag) on the Ghost service; Ghost runs its migrations on start.

Idle, Ghost used 0.14 GB of RAM and MySQL 0.56 GB.

Why Deploy Ghost on Railway?

Your site is live on HTTPS with an owner account nobody else can claim, and the database stays on Railway's private network. Both services come to about $7 a month in RAM at idle.


Template Content

More templates in this category

View Template
Libredesk - Complete Setup
Complete self-hosted omnichannel customer support desk.

codestorm
2
View Template
Paperless-ngx
Paperless-ngx — document management with OCR and full-text search

INAPP
1
View Template
Instatic CMS - Postgres
Design, build and manage powerful static sites from state-of-the-art CMS

Instatic
169