Deploy Ghost
Ghost 6 with MySQL, your owner account created at deploy
Just deployed
MySQL
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
- Ghost: https://github.com/TryGhost/Ghost
- Configuration docs: https://docs.ghost.org/config
- Image:
ghost:6.65.0 - The wrapper this template builds: https://github.com/dektionstudio/railway-template-images/tree/main/ghost
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
GHOST_ADMIN_EMAIL
Email of the owner account, created on first start. Sign in at /ghost with it and GHOST_ADMIN_PASSWORD
MySQL
mysql:8.4