
Deploy Teable
Pinned Teable with Postgres, Redis, asset volume, secret, and /health.
Redis
Just deployed
/data
Just deployed
/var/lib/postgresql/data
Just deployed
/app/.assets
Deploy and Host Teable on Railway
One-click 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).
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
- Deploy this template. Wait until Teable is SUCCESS and
/healthreturns 200. - Open the public Railway URL.
- 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.
- 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_KEYafter 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 · Docker deploy guide
Template Content
Redis
redis:8.2REDISPORT
REDISUSER
PGDATA
PGPORT
POSTGRES_DB
POSTGRES_USER
SSL_CERT_DAYS
RAILWAY_DEPLOYMENT_DRAINING_SECONDS
RAILWAY_RUN_UID