# Ghost on Railway

Canonical: https://inetgeek.com/stacks/ghost-on-railway/

Railway publishes its own guide for deploying Ghost.

Open-source publishing platform running as a long-lived Node process, requiring MySQL in production and a writable content directory for uploads and themes.

## What Ghost needs

Every host claims to run Ghost, so the claim on its own decides nothing. These are the things Ghost requires from the platform underneath it, and what Railway publishes about each. Railway documents 5 of the 6.

| Requirement | Railway | Why it matters |
| --- | --- | --- |
| Persistent storage | Supported | Ghost writes uploaded images and installed themes into its content directory at runtime. On an ephemeral filesystem those disappear at the next deploy, and the posts referencing them break. |
| Managed databases | Limited | Ghost 5 supports only MySQL 8 for production. SQLite works for development, so a guide that sets one up is not showing you a production install. |
| Persistent processes | Supported | Ghost is one long-running Node process that serves requests and fires scheduled publishing. It is not a set of functions and cannot be deployed as one. |
| Storage (entry plan) | 0.5 GB of volume storage on Free and up to 5 GB on Hobby ($5/month) — a ceiling, not an allocation, and volume storage is billed on usage rather than included. Recorded without a magnitude for the same reason as this record's memory figure: a cap you pay for is not comparable with an allowance you are given. | A publication's image library grows steadily and is almost never pruned, so disk is the cap a busy Ghost site reaches before any other. |
| Scheduled jobs | Supported | Ghost publishes posts at a future time and sends newsletters on a schedule, both fired by timers inside the running process. A host that sleeps the process or offers no scheduler will publish late or not at all. |
| Backup retention | Not documented | A Ghost install is a MySQL database plus a content directory, and losing either loses the publication. How far back the host's own backups reach is the difference between an incident and an outage. |

- Persistent storage source: https://docs.railway.com/reference/volumes
- Managed databases source: https://docs.railway.com/databases
- Persistent processes source: https://docs.railway.com/services
- Storage (entry plan) source: https://railway.com/pricing
- Scheduled jobs source: https://docs.railway.com/reference/cron-jobs

## What Railway documents

> This guide covers deploying Ghost on Railway from the official Docker image with a MySQL database and persistent content storage.

Source: https://docs.railway.com/guides/ghost

### Ghost features on Railway

- **mysql_database**: Supported — Add a MySQL database: click + New, then Database, then MySQL. Ghost requires MySQL. It does not support Postgres. ([source](https://docs.railway.com/guides/ghost))
- **persistent_content_storage**: Supported — Ghost stores themes, images, and other content in /var/lib/ghost/content. This directory must persist across deploys. [...] Add a volume with the mount path /var/lib/ghost/content. Without a volume, all uploaded images and custom themes are lost on each deploy. ([source](https://docs.railway.com/guides/ghost))
- **smtp_email**: Supported — Ghost uses email for member sign-ups, newsletters, and password resets. Configure an SMTP provider by adding these variables: [...] Ghost supports Mailgun, SendGrid, and any SMTP service. ([source](https://docs.railway.com/guides/ghost))
- **one_click_install**: Supported — One-click deploy from a template Railway has a Ghost template: After deploying, generate a domain and update the url environment variable to match. ([source](https://docs.railway.com/guides/ghost))

## What it costs to run there

|  | Railway |
| --- | --- |
| Entry paid plan | $5 / month (Hobby) |
| Pricing model | A base subscription fee that goes towards usage, with the plan's own credit included; anything beyond the credit is billed as resource usage. |
| When you exceed a cap | Billed automatically: on the Hobby plan ($5/month, includes $5 of resource usage) usage above the included amount is charged as a delta on top of the subscription — no throttling or suspension is documented |
| Regions | 4 regions: California, Virginia, Amsterdam, Singapore |

- Entry paid plan source: https://docs.railway.com/reference/pricing/plans
- Pricing model source: https://docs.railway.com/reference/pricing/plans
- When you exceed a cap source: https://docs.railway.com/pricing/plans
- Regions source: https://docs.railway.com/reference/regions

## Whether it suits you

Teams that want a plan fee which doubles as usage credit, and deploy services straight from a Dockerfile without managing servers. The $5 Hobby fee comes back as $5 of resource usage.

Consider something else if: You need to run in a region outside California, Virginia, Amsterdam or Singapore.

Written by Palash Bagchi on 2026-09-05. This is a recommendation, not a sourced fact — it carries no citation because it is an opinion.

## Related

- Best hosting for Ghost: https://inetgeek.com/stacks/ghost/
- Railway: https://inetgeek.com/hosting/railway/
