---
title: "Deploy Teable"
description: "Pinned Teable with Postgres, Redis, asset volume, secret, and /health."
category: "CMS"
url: https://railway.com/deploy/teable-2
---

# Deploy Teable

Pinned Teable with Postgres, Redis, asset volume, secret, and /health.

**[Deploy Teable on Railway](https://railway.com/template/teable-2)**

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

- **Creator:** leodev
- **Category:** CMS

## Template content

### Redis https://cdn.sanity.io/images/sy1jschh/production/0ce0bfdcfbdbf69662b1116671f97c2dd788b655-157x157.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"`

### Postgres https://devicons.railway.app/i/postgresql.svg

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

### teable https://teable-media.s3.us-west-2.amazonaws.com/image/logo.png

- **Image:** ghcr.io/teableio/teable:release.2026-09-07T09-32-29Z.2963
- **Start command:** `BACKEND_CACHE_PROVIDER=redis ENABLE_SIGNUP=true NEXT_ENV_IMAGES_ALL_REMOTE=true TZ=UTC BACKEND_SESSION_COOKIE_SECURE=true PORT=3000 scripts/start.sh`
- **Health check:** /health
- **Public domain:** Yes

## Documentation

# Deploy and Host Teable on Railway

One-click [Teable](https://github.com/teableio/teable) — an Airtable-style spreadsheet database on real Postgres.

This listing pins `ghcr.io/teableio/teable:release.2026-09-07T09-32-29Z.2963`, ships Railway Postgres + Redis on the private network, persists attachments on a volume, generates `SECRET_KEY`, and healthchecks `/health`. That is the gap versus rotting marketplace clones that ship an unpinned image and Postgres-only (no Redis).

[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/teable-2)

## About Hosting Teable

Railway runs three services: Teable (public HTTP), Postgres, and Redis (private only). First boot migrates the Prisma schema, then serves the NestJS API + Next.js UI on port 3000. Attachments land on `/app/.assets`. Cache and queues use Redis.

### What you get

| Service | Source | Public? |
| --- | --- | --- |
| **teable** | `ghcr.io/teableio/teable:release.2026-09-07T09-32-29Z.2963` | HTTP (Railway domain, port 3000) |
| **Postgres** | Railway Postgres (`ghcr.io/railwayapp-templates/postgres-ssl:18`) | Private only |
| **Redis** | Railway Redis (`redis:8.2`) | Private only |

- **Volume:** `/app/.assets` (current upstream compose path for local file storage)
- **Healthcheck:** `GET /health` (allow ~5–10 minutes on first boot for migrations)
- **Listen port:** `3000`

### First boot

1. Deploy this template. Wait until Teable is **SUCCESS** and `/health` returns 200.
2. Open the public Railway URL.
3. **Create an account on that URL.** Teable does not ship a preset admin user, and your teable.ai cloud login does not apply. The first signup becomes the instance administrator.
4. If CSV/xlsx import or image uploads fail, set `PUBLIC_ORIGIN=https://` with **no trailing slash** and redeploy.

## Why Deploy Teable on Railway?

Railway keeps the app, Postgres, and Redis on one private network, injects `DATABASE_URL` / `REDIS_URL`, and routes HTTPS to Teable. You do not manage Docker Compose, TLS, or a VPS.

Rotting clones use `ghcr.io/teableio/teable` unpinned and skip Redis. This template pins a release tag, wires private Prisma + Redis URLs, generates `SECRET_KEY` with `${{secret()}}`, mounts `/app/.assets`, and healthchecks `/health`.

## Common Use Cases

- Self-hosted Airtable alternative for team spreadsheets on Postgres
- No-code database with grid/form/kanban views and a real SQL backend
- Private collaboration base with attachments that survive redeploys

## Dependencies for Teable Hosting

### Deployment Dependencies

- Railway Postgres (bundled, private)
- Railway Redis (bundled, private)
- Volume on Teable at `/app/.assets`
- No extra API keys. Optional S3/MinIO later for large file scale.

### Variables

| Variable | Service | Value |
| --- | --- | --- |
| `SECRET_KEY` | teable | `${{secret()}}` — JWT/session/encryption umbrella |
| `PRISMA_DATABASE_URL` | teable | `${{Postgres.DATABASE_URL}}` (private) |
| `DATABASE_URL` | teable | `${{Postgres.DATABASE_URL}}` (private) |
| `BACKEND_CACHE_REDIS_URI` | teable | `${{Redis.REDIS_URL}}` (private) |
| `PUBLIC_ORIGIN` | teable | `https://${{RAILWAY_PUBLIC_DOMAIN}}` |
| `RAILWAY_RUN_UID` | teable | `0` (volume writes) |
| `POSTGRES_PASSWORD` / `REDIS_PASSWORD` | Postgres / Redis | generated secrets |

App defaults (`BACKEND_CACHE_PROVIDER=redis`, `ENABLE_SIGNUP=true`, `PORT=3000`, secure cookies) are set on the Teable start command.

Do not add a public TCP proxy on Postgres or Redis unless you intentionally want SQL/Redis on the internet.

### Ports, volumes, health

| | |
| --- | --- |
| Public HTTP | Teable only, target port **3000** |
| Healthcheck | `GET /health` → `{"status":"ok",...}` |
| Volume | `/app/.assets` on Teable |
| Databases | Private Railway network only |

## Custom domain

After attaching a custom domain, set `PUBLIC_ORIGIN=https://your.domain` (no trailing slash). Wrong `PUBLIC_ORIGIN` breaks CSV/xlsx import and image uploads.

## Ops notes

- Teable Community Edition is AGPL-3.0. The official image can unlock paid AI features later with a license key; this template does not require one.
- Do not change `SECRET_KEY` after the first successful boot unless you accept invalidating sessions and derived encryption keys.
- For production file scale, point Teable at S3-compatible storage (`BACKEND_STORAGE_PROVIDER=s3` / MinIO). The volume is the compose default.

Upstream: [teableio/teable](https://github.com/teableio/teable) · [Docker deploy guide](https://help.teable.ai/en/deploy/docker)


## 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/teable-2
