---
title: "Deploy Twenty"
description: "Modern open-source CRM for contacts, pipelines, workflows, and teams."
category: "Other"
url: https://railway.com/deploy/twenty-1
---

# Deploy Twenty

Modern open-source CRM for contacts, pipelines, workflows, and teams.

**[Deploy Twenty on Railway](https://railway.com/template/twenty-1)**

- **Creator:** Agaz Self-Host
- **Category:** Other
- **Total deploys:** 2

## Template content

### Twenty https://raw.githubusercontent.com/twentyhq/twenty/d8fe0d9274922c423bee373742e3340aa7120197/packages/twenty-docs/images/core/logo.svg

- **Image:** twentycrm/twenty:v2.23.2
- **Health check:** /healthz
- **Public domain:** Yes

### Twenty Worker https://raw.githubusercontent.com/twentyhq/twenty/d8fe0d9274922c423bee373742e3340aa7120197/packages/twenty-docs/images/core/logo.svg

- **Image:** twentycrm/twenty:v2.23.2
- **Start command:** `yarn worker:prod`

### Redis

- **Image:** redis:7.4.2
- **Start command:** `redis-server --maxmemory-policy noeviction`

### Postgres

- **Image:** postgres:16.8

## Buckets

- **Twenty Storage**

## Documentation

# Deploy and Host Twenty on Railway

Twenty is a modern open-source CRM for managing contacts, companies, opportunities, pipelines, tasks, notes, dashboards, and automated workflows. Its adaptable data model, table and Kanban views, APIs, and team collaboration features let organizations shape customer operations around their own processes while retaining control of their data.

## About Hosting Twenty

Hosting Twenty requires a public application server, a private background worker, PostgreSQL, Redis, and durable storage for both relational data and uploaded files. This Railway template pins Twenty 2.23.2, PostgreSQL 16.8, and Redis 7.4.2. The server runs database setup and upgrades, registers recurring jobs, serves the UI on port `3000`, and exposes `/healthz`; the worker runs `yarn worker:prod` without repeating migrations or cron registration. Railway supplies private networking, HTTPS, a shared S3-compatible bucket, persistent database/cache volumes, and generated database and application secrets. Email, calendar, and OAuth integrations remain optional and are configured by each deployer after setup.

## Common Use Cases

- Manage contacts, companies, sales opportunities, pipelines, tasks, and notes in one self-hosted CRM
- Build team-specific objects, fields, views, dashboards, and automated workflows
- Integrate customer operations with APIs, webhooks, email, Google Workspace, or Microsoft 365

## Dependencies for Twenty Hosting

- PostgreSQL 16.8 for users, workspaces, CRM records, configuration, and migrations
- Redis 7.4.2 with `noeviction` for queues, caching, and background work
- A shared Railway S3-compatible bucket for files plus persistent PostgreSQL and Redis volumes

### Deployment Dependencies

- [Twenty 2.23.2 source](https://github.com/twentyhq/twenty/tree/twenty/v2.23.2)
- [Twenty Docker Compose self-hosting guide](https://docs.twenty.com/developers/self-host/capabilities/docker-compose)
- [Twenty self-hosted configuration guide](https://docs.twenty.com/developers/self-host/capabilities/setup)
- [Twenty 2.23.2 Docker Compose contract](https://github.com/twentyhq/twenty/blob/twenty/v2.23.2/packages/twenty-docker/docker-compose.yml)
- [Umbrel Twenty 2.23.2 package](https://github.com/getumbrel/umbrel-apps/tree/master/twenty)

## Implementation Details

| Service / resource | Image or type | Networking and startup | Persistent storage |
| --- | --- | --- | --- |
| `Twenty` | `twentycrm/twenty:v2.23.2` | Public port `3000`; health `/healthz`; runs setup, migrations, upgrades, and cron registration | Shared `Twenty Storage` bucket |
| `Twenty Worker` | `twentycrm/twenty:v2.23.2` | Private; `yarn worker:prod`; migrations and cron registration disabled | Shared `Twenty Storage` bucket |
| `Postgres` | `postgres:16.8` | Private port `5432` | `/var/lib/postgresql/data` |
| `Redis` | `redis:7.4.2` | Private port `6379`; `noeviction` policy | `/data` |
| `Twenty Storage` | Railway private S3-compatible bucket | Referenced by both Twenty processes; no public bucket endpoint | Durable object storage |

`PG_DATABASE_URL` and `REDIS_URL` use Railway service references. `SERVER_URL` and the requested `FRONT_BASE_URL` point to `https://${{Twenty.RAILWAY_PUBLIC_DOMAIN}}`. Railway generates `APP_SECRET` once on `Twenty`, and `Twenty Worker` references that authoritative value rather than generating another secret. Both processes use `STORAGE_TYPE=S_3` and resolve the same bucket endpoint, name, region, and credentials through references, so worker-side file jobs operate on the files uploaded through the server.

The deployer selects the Railway bucket region during template deployment. The template does not pin a region; `${{Twenty Storage.REGION}}` resolves to the region chosen for that deployment.

The first user creates the single workspace and becomes its administrator. SMTP, Gmail/Google Calendar, Google OAuth, and Microsoft 365 credentials have no defaults and are not copied from the template source. Add them after initial setup under **Settings → Admin Panel → Configuration Variables**.

## Why Deploy Twenty 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 Twenty 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.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — [Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/twenty-1
