---
name: storypane-deploy
description: Set up, upgrade, or troubleshoot a self-hosted Storypane installation on Node/Docker or assess the gated Railway path while preserving databases, private media, and encryption keys.
---

# Deploy Storypane

Checked against CMS revision `65741b84364f10690353d8ad4040fbfb133f1c53` and accompanying
documentation changes (2026-11-06). Re-read the relevant files in the user’s
checkout before making changes.

The CMS runtime is Node/Docker; Cloudflare hosts the static marketing website.
A fresh Railway installation and hosted template remain unverified.

The local guide recommends production for content editors and a linked dev space
per developer for schema iteration, promotion, and sync.

For local development read [local setup](references/local.md). For Cloudflare Workers Static Assets
website hosting and legacy Worker retirement read
[Cloudflare website setup](references/cloudflare.md); for independent Railway read
[Railway setup](references/railway.md). Before declaring a deployment ready, complete
[acceptance](references/verification.md) against a fresh installation.

Use the existing transactional migration runner and provider setup commands.
Preserve resource IDs, stored originals and the existing webhook encryption key on
upgrades. Keep credentials out of output and version control. Validate the selected
account/project and migration target before provisioning or writing. An unsuccessful
step is a reason to inspect and retry the same installation, not to delete resources.
Use the user's authorized scope for deployments; do not switch their provider or
modify an unrelated live installation to get a passing check.
