---
title: "Deploy October CMS"
description: "Laravel-based CMS for building websites you edit in the browser"
category: "CMS"
url: https://railway.com/deploy/october-cms
---

# Deploy October CMS

Laravel-based CMS for building websites you edit in the browser

**[Deploy October CMS on Railway](https://railway.com/template/october-cms)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/october-cms/manifest.json

- **Creator:** A3A
- **Category:** CMS
- **Total deploys:** 1

## Template content

### mailpit https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/mailpit.svg

- **Image:** axllent/mailpit:latest
- **Public domain:** Yes

### Redis https://cdn.simpleicons.org/redis/FF4438.svg

- **Image:** redis:8.2
- **Start command:** `/bin/sh -c "rm -rf $RAILWAY_VOLUME_MOUNT_PATH/lost+found/ && exec docker-entrypoint.sh redis-server --requirepass $REDIS_PASSWORD --save 60 1 --dir $RAILWAY_VOLUME_MOUNT_PATH"`

### october-worker https://raw.githubusercontent.com/octobercms/october/develop/modules/backend/assets/images/october-leaf-white.svg

- **Source:** https://github.com/gridalpha/october-railway
- **Start command:** `/usr/local/bin/october-railway-entrypoint.sh php artisan queue:work --tries=3 --timeout=90 --sleep=3 --max-time=3600`

### october https://raw.githubusercontent.com/octobercms/october/develop/modules/backend/assets/images/october-leaf-white.svg

- **Source:** https://github.com/gridalpha/october-railway
- **Health check:** /_health
- **Public domain:** Yes

### Postgres https://cdn.simpleicons.org/postgresql/4169E1.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

## Documentation

# Deploy and Host October CMS on Railway

October CMS is a content management platform built on the Laravel PHP framework, used by agencies and product teams who build a site in Twig templates and hand day-to-day editing to someone who does not write code. Its backend gives you a file-tree editor for pages, layouts and partials, a media library, a structured-content builder called Tailor, and a Composer-managed plugin ecosystem. Deploy October CMS on Railway for that developer-first workflow without the shared-hosting babysitting.

Self-host October CMS here and five services arrive wired together. **october** runs nginx, PHP-FPM and the task scheduler. **october-worker** runs the same image as a queue consumer, so mail and plugin jobs leave the request path. **Postgres** holds pages, content and settings, **Redis** backs the cache, sessions and job queue, and **mailpit** is a private SMTP endpoint with a password-protected inbox, so outbound mail works without a relay account. A volume on the web service keeps media and theme files across redeploys.

![Diagram of the October CMS services on Railway](https://res.cloudinary.com/rroe4rtk/image/upload/v1788960112/october-architecture.png)

## Getting Started with October CMS on Railway

The first administrator is created for you from the `OCTOBER_ADMIN_LOGIN`, `OCTOBER_ADMIN_EMAIL` and `OCTOBER_ADMIN_PASSWORD` values you supply at deploy time, so no open setup wizard ever sits on a public URL waiting to be claimed. When the deploy is green, open your public domain and you should see the bundled demo theme. Then go to `/manage` and sign in with those credentials.

Start in **Editor**. Expand **Pages**, open the menu beside it, choose **New Page**, give it a title and a URL such as `/about`, write markup in the Markup tab and press Save. Load that URL in a private window: if it renders for a logged-out visitor, the database, the theme and the router are all working. Next open **Media** and upload an image, which proves the volume is mounted and writable. To check mail, open the Mailpit inbox on its own domain, sign in with the `MP_UI_AUTH` credentials, then use the backend's **Forgot password?** link.

Change `OCTOBER_ADMIN_PASSWORD` and redeploy to reset the account. The credentials are rewritten only when one of those three values changes, so a password you later change inside the backend is never reverted.

![Published October CMS page on the demo theme](https://res.cloudinary.com/rroe4rtk/image/upload/v1788960114/october-front-page.png)

![Editing a page's Twig markup in the October CMS editor](https://res.cloudinary.com/rroe4rtk/image/upload/v1788960116/october-cms-editor.png)

![October CMS media library listing an uploaded banner image](https://res.cloudinary.com/rroe4rtk/image/upload/v1788960117/october-media-library.png)

![October CMS system dashboard showing build and traffic reports](https://res.cloudinary.com/rroe4rtk/image/upload/v1788960118/october-dashboard.png)

## About Hosting October CMS

October CMS sits between a framework and a CMS. A page is a flat file of Twig markup with an optional PHP section, a layout wraps it, a partial is reusable, and plugin components add dynamic behaviour. That suits marketing sites, client work and content-driven apps where the structure is custom but non-technical people still change words and images.

- File-tree editor for pages, layouts, partials, content blocks and theme assets
- Tailor blueprints for structured content without writing a plugin
- Media library with an image resizer and a built-in file manager
- Backend roles, groups and per-permission access control
- Multisite support with hostname routing
- Composer-based plugin and theme management

The Railway architecture keeps the roles separate. The web service holds the volume and runs `schedule:work` under Supervisor for October's periodic tasks. The worker runs `queue:work` against Redis. Postgres stores everything the CMS treats as content, including editor changes to templates, so the site survives a container being replaced.

## Why Deploy October CMS on Railway

Railway removes the parts of a PHP CMS deployment nobody enjoys.

- Postgres, Redis and the mail service come pre-wired, no connection strings to paste
- Managed TLS and a public domain on the first deploy
- A persistent volume for media and theme files
- Vertical and horizontal scaling from the dashboard
- Push to the source repository to rebuild and redeploy
- Logs and metrics for every service in one place

## Common Use Cases

- Agency and freelance client sites where a developer owns the templates and the client edits copy
- Marketing and product sites needing custom layouts rather than a page-builder's blocks
- Content-driven applications built on Tailor blueprints and Laravel packages
- Documentation or knowledge sites served from a single theme

## Dependencies for October CMS

- **october** and **october-worker** — built from the `gridalpha/october-railway` repository on top of `ghcr.io/octobercms/runtime-prod:php85`, October's own production runtime image
- **Postgres** — `ghcr.io/railwayapp-templates/postgres-ssl:18`, the content and settings store
- **Redis** — `redis:8.2`, backing the cache, the session store and the job queue
- **mailpit** — `axllent/mailpit:latest`, a capture-only SMTP server with a web inbox

### Environment Variables Reference

| Variable | Purpose |
|---|---|
| `OCTOBER_ADMIN_LOGIN` | Username for the administrator created at first boot |
| `OCTOBER_ADMIN_EMAIL` | Email address for that administrator |
| `OCTOBER_ADMIN_PASSWORD` | Password for that administrator, at least 8 characters |
| `APP_KEY` | Session signing and at-rest encryption key; must stay stable |
| `APP_URL` | Public base URL used in generated links and mail |
| `BACKEND_URI` | Path to the backend, `/manage` by default |
| `ACTIVE_THEME` | Fallback theme when the database is unreachable |
| `CMS_DB_TEMPLATES` | Writes editor changes to Postgres instead of the volume |
| `CMS_SAFE_MODE` | Blocks the PHP code section in the editor |
| `MP_UI_AUTH` | `user:password` for the Mailpit inbox |
| `MAIL_HOST` / `MAIL_PORT` | Where October sends mail; points at Mailpit by default |

### Deployment Dependencies

- Source repository: https://github.com/gridalpha/october-railway
- October CMS: https://github.com/octobercms/october
- Runtime images: https://github.com/octobercms/runtimes
- Documentation: https://docs.octobercms.com
- Mailpit: https://github.com/axllent/mailpit

## Hardware Requirements for Self-Hosting October CMS

| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 1 GB | 2 GB |
| Storage | 5 GB volume | 10 GB or more with a large media library |
| Runtime | PHP 8.2+, PostgreSQL 10+ or MySQL 5.7+ | PHP 8.5, PostgreSQL 18, Redis 8 |

Only the web service needs real headroom; PHP-FPM runs twelve workers at 256 MB each. Keep it at one replica unless you move theme assets onto shared storage, since the editor writes to the local filesystem.

## Self-Hosting October CMS

October CMS is a Composer project rather than a library, so an install starts by creating one. This is the command-line install:

```
composer create-project october/october myoctober "^4.0"
cd myoctober
php artisan october:migrate
php artisan serve
```

Configuration comes from environment variables, which override anything in `.env`. A production PostgreSQL setup looks like this:

```
APP_ENV=production
APP_DEBUG=false
DB_CONNECTION=pgsql
DB_HOST=postgres
DB_DATABASE=october
DB_USERNAME=october
DB_PASSWORD=change-me
CACHE_STORE=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
CMS_DB_TEMPLATES=true
```

Plugins and themes are added with Composer and deployed with the code, which is why this template builds from a source repository you can fork.

## Is October CMS Free?

October CMS is source-available under its own end-user licence agreement rather than a permissive open-source licence. The platform installs and runs without a licence key, and every new October CMS account includes a complimentary licence for its first year; after that a paid project licence keeps updates and Marketplace access flowing. Check the current terms at octobercms.com. On Railway you pay only for the compute, storage and bandwidth the five services use.

## FAQ

**What is October CMS?**
A content management platform built on Laravel, where pages, layouts and partials are Twig files edited in a browser-based file tree and plugin components supply the dynamic behaviour.

**What does this Railway template deploy?**
Five services: the October CMS web tier with the task scheduler, a queue worker running the same image, PostgreSQL, Redis, and a Mailpit inbox for outbound mail. Only the web tier and the Mailpit inbox get public URLs.

**Why does the template include Redis and a separate worker?**
Redis holds the cache, the sessions and the job queue, so nobody is logged out on a redeploy, and the worker drains that queue so a plugin sending mail or processing an upload never blocks a page load.

**Where do my pages live, on the volume or in the database?**
With `CMS_DB_TEMPLATES` enabled, the default here, pages, layouts, partials, content and language files written in the editor go to PostgreSQL. Uploaded media and theme asset files live on the volume.

**Do I need an October CMS licence key to deploy this?**
No. The platform runs without one and this template needs no account to install. A licence key is what enables in-place updates and the Marketplace, and you add it later with `php artisan project:set`.

**How do I send real email instead of capturing it?**
Point `MAIL_HOST`, `MAIL_PORT`, `MAIL_USERNAME` and `MAIL_PASSWORD` at your own SMTP provider, or configure a relay in Mailpit. The backend's Settings page also holds mail settings, and those override the environment once saved.


## Similar templates

- [Libredesk - Complete Setup](https://railway.com/deploy/libredesk-complete-setup) — Complete self-hosted omnichannel customer support desk.
- [Paperless-ngx](https://railway.com/deploy/paperless-ngx-3) — Paperless-ngx — document management with OCR and full-text search
- [Instatic CMS - Postgres](https://railway.com/deploy/instatic-cms-postgres) — Design, build and manage powerful static sites from state-of-the-art CMS

Open this page in a browser: https://railway.com/deploy/october-cms
