Deploy EmDash CMS
Open-source Astro CMS on Postgres. Locked setup wizard, auto-updated.
Just deployed
/var/lib/postgresql/data
Just deployed
/data
Deploy and Host EmDash CMS on Railway
EmDash is an open-source CMS built on Astro and written in TypeScript. It has a block editor, a media library, users and roles, revisions, scheduled publishing, plugins and passkey login. This template runs it on Node.js with PostgreSQL.
About Hosting EmDash CMS
The template deploys two services: the EmDash site, built from the official Blog starter, and Railway's PostgreSQL. Uploaded media and login sessions are kept on a volume at /data, so they survive redeploys. EmDash runs its database migrations when it starts.
EmDash normally lets the first visitor create the admin account. This template locks the setup wizard behind a generated password, so nobody else can claim your site before you do.
First steps:
- Open your site's URL and go to
/_emdash/admin. - Sign in with any username and the
EMDASH_SETUP_PASSWORDvalue from the EmDash service's Variables tab. - Follow the setup wizard: site title, optional sample content, your email, then create a passkey.
If you want a custom domain, add it and update EMDASH_SITE_URL before step 1. Passkeys are tied to the domain they were created on.
Updates: the EmDash version, starter template, Astro and Node.js are pinned. A GitHub Action checks for new releases every day, smoke-tests them and only then updates the repository. Railway then shows an update notice in your project, and you choose when to apply it.
Common Use Cases
- A blog or personal site with posts, categories, tags and RSS
- A marketing or portfolio site edited by non-developers
- A self-hosted WordPress replacement with passkey login and roles for several editors
Dependencies for EmDash CMS Hosting
- PostgreSQL (included)
- A volume for media and sessions (included)
Deployment Dependencies
- EmDash: https://github.com/emdash-cms/emdash
- EmDash documentation: https://docs.emdashcms.com
- Official starter templates: https://github.com/emdash-cms/templates
- This template's source: https://github.com/aimranov27/emdash-railway
Implementation Details
- Content, users and settings live in PostgreSQL. Media lives in
/data/uploadsand sessions in/data/sessionson the volume. Back up both. EMDASH_TEMPLATEpicks the starter (blog,starter,marketingorportfolio). Choose it before running setup.EMDASH_ENCRYPTION_KEYencrypts plugin secrets and is not stored in the database. Keep a copy.- The theme is the unmodified starter template. Content, menus, widgets and settings are edited in the admin. To change the theme's code, create your own project with
npm create emdash@latest. - EmDash's full-text search only works with SQLite. On PostgreSQL the Blog starter's search page returns no results.
- Sandboxed marketplace plugins need EmDash's
workerdsandbox runner, which is not included.
Why Deploy EmDash CMS on Railway?
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying EmDash CMS on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Template Content