Skip to content
Scalpels home

Sign up now for $10 in credit on a new Laravel Cloud account.

Idea

Could Ghost run on Laravel Cloud?

· Ed Grosvenor

Ghost is the sort of application we want Scalpels to make easy to own. It is a complete publishing platform with posts, memberships, newsletters, and a social web. It is maintained as open-source software, not assembled from Laravel packages. It is also a Node application with its own assumptions about servers, storage, and first-time setup.

Could it belong in the Scalpels marketplace anyway? Before building anything, we read Ghost's source, its published npm package, the official Docker setup, and the hosting documentation. We came away thinking a small wrapper was the most promising approach, and with several predictions to test.

Package the release, not the monorepo

Ghost's source repository is a pnpm and Nx monorepo. Its production image gets a prebuilt admin application from Ghost's own release process, so building the repository directly on Cloud is a poor starting point. The published ghost npm package already includes those assets and runs with Node. We expect the install to unpack and run that release instead.

That would make the marketplace source a wrapper, not a clean fork of Ghost. We need to learn how small that wrapper can stay and whether updates can stay routine.

Mail has to work on day one

Ghost members sign in through emailed magic links. Staff device verification is on by default in production, and password resets and invitations also use email. A deployment without working transactional mail can lock out the owner as well as members.

Cloud can attach a Resend email resource to an application. Ghost sends transactional mail over SMTP. We expect the wrapper to translate the mail environment variables Cloud sets into Ghost's nested configuration. Newsletters are a separate question, because Ghost uses Mailgun for bulk delivery.

Persistent files do not all use the same path

Ghost has an S3 adapter for images, media, and files. Themes are different. An uploaded theme lives under content/themes on local disk, and Cloud replaces the local filesystem on every deployment. We expect ordinary uploads to fit a public bucket. We expect an admin-uploaded theme to disappear on a deploy or restart unless we put it in the repository or find another way to keep it.

Cloud buckets also delete .html and .htm uploads. Ghost permits those as file attachments, so that edge case needs an answer even if normal pages and theme archives are unaffected.

The configuration needs translating

Cloud provides a MySQL connection URL in an environment variable. Ghost expects separate host, port, user, password, and database values. Cloud also supplies a public application URL and a port to listen on. Ghost uses different names for both, and by default it listens on an address Cloud cannot reach. Bucket and mail settings need the same kind of mapping. A boot script should be able to do the translation, but the experiment has to prove it.

We expect one MySQL-backed instance with no autoscaling. Ghost keeps settings, scheduled work, and background jobs in the web process. If we ran more than one replica, or copy of the application, they could disagree or run work twice. Cloud can also hibernate an idle application, which may delay scheduled posts by freezing their in-process timers.

First boot and the edge

A fresh Ghost install leaves owner setup open to whoever visits first. A marketplace install cannot leave that open. We expect to create the first owner through Ghost's setup endpoint before opening public access. That also tests something Scalpels cannot do yet, which is make a one-time HTTP call after the first deployment.

Cloud's edge, the layer that handles requests before they reach the application, raises more questions. Ghost's admin previews the public site in a frame, but Cloud's default frame policy is stricter. Ghost's social-web routes include dot-prefixed paths and normally sit behind a path-aware reverse proxy. Scheduled publishing calls back into Ghost through its public URL. We need to know which of those requests Cloud accepts and which settings or proxy work they require.

So the experiment is less about whether a Node process can boot. It has to show that one owner can safely take control, publish and schedule posts, upload files and a theme, sign in through email, and use Ghost's integrations after another deployment. Then we can decide whether the wrapper and the remaining platform gaps are small enough for a marketplace listing.

Experiments on this idea

  1. Experiment

    We Installed Ghost on Laravel Cloud

    Ghost ran on Cloud from its published npm package. The public site was up in about ten minutes. Admin, publishing, responsive images, scheduled posts, transactional mail, a newsletter preview, and core Mastodon federation followed. Theme persistence and one ActivityPub path still depend on workarounds we built only for the experiment. Several features have not been tested through their full lifecycle.

    Read the experiment

Support the Lab

The Lab runs on our supporters

Every idea here gets tried for real: deployed, broken, fixed and written up. Right now that is one person doing the work between everything else, and supporters are what buy the time. As support grows, it will also pay freelancers to run experiments of their own, so more of these ideas get tested, sooner.

Our supporters

  • Chill Vibes

    A curated collection of fun and interesting experiments and projects built with AI to entertain and educate.

    Supporter Visit
    Visit Chill Vibes
  • Fawnfox Fables

    Create and publish your own children's books. Stories built around the people you love.

    Supporter Visit
    Visit Fawnfox Fables
  • Sputnik Intelligence

    Spain

    We transcribe the podcasts and read the newsletters, and make them searchable. Set up alerts, or hand it all to your AI agent over MCP or API.

    Supporter Visit
    Visit Sputnik Intelligence
  • Team of Me

    Free resources for indie makers and people thinking about striking out on their own.

    Supporter Visit
    Visit Team of Me
  • Wicked Viral

    Earth

    Connecting builders with promoters who can help them take their products to market. Get your product listed today!

    Supporter Visit
    Visit Wicked Viral