Railway

Deploy Teable

No-code database with a spreadsheet interface and REST API

Deploy Teable

Just deployed

/data

/var/lib/postgresql/data

Just deployed

/app/.assets

Teable logo

Deploy and Host Teable on Railway

Teable is an open-source no-code database that looks like a spreadsheet and behaves like a real relational database. Every table is stored in PostgreSQL and exposed as a REST API, so a team captures structured data in a familiar grid while developers query the same rows programmatically. Teams reach for it when Airtable's row caps, per-seat pricing, or data-residency rules stop working.

Deploy Teable on Railway and everything is wired together already: the application, a managed PostgreSQL database holding both metadata and your table data, a managed Redis instance backing the cache and realtime layer, and a volume for attachments. You can self-host Teable without writing a compose file, and it ships with a public HTTPS URL and generated secrets rather than the image's placeholder keys.

Diagram of the Teable, Postgres and Redis services on Railway

Getting Started with Teable on Railway

Open the deployed URL once the teable service is green. There are no default credentials — Teable sends you to /auth/signup, and the first account that registers becomes the instance administrator. Register immediately after deploying, before sharing the URL.

Close public registration next: open System Admin → Instance settings and turn off Allow creating new accounts, after which people join only by invitation. Then create a space and a base inside it, and Teable generates a starter table to rename and add fields to. Adding a few fields and records confirms the deployment works end to end, since every edit is written to PostgreSQL and broadcast over Redis to other tabs. Switching the view from Grid to Kanban checks realtime collaboration, and dropping a file onto an attachment field confirms the volume is writable.

Teable grid view listing six site inspection records

Teable kanban board stacking inspection cards by status

Teable admin instance settings with account signup disabled

About Hosting Teable

Teable stores your tables as real PostgreSQL tables rather than opaque blobs, so you can point BI tools or your own SQL at the same data the grid edits. Self-hosting suits row volumes that get expensive on a hosted plan, or data that cannot leave your infrastructure.

  • Spreadsheet grid with formulas, links between tables, rollups and lookups
  • Grid, Kanban, calendar and form views over the same records
  • Generated REST API for every table, plus API tokens
  • Realtime collaboration with undo/redo and role-based access control
  • File attachments, plus CSV and Airtable imports

The teable container serves the web UI and API on port 3000 and is the only service with a public domain. PostgreSQL holds instance metadata and the user-created tables. Redis backs the cache and the pub/sub channel pushing live updates between clients — the app will not start without it. Attachments live on a volume at /app/.assets, served through the app with signed URLs.

Why Deploy Teable on Railway

One deploy replaces a compose file, a proxy and a secrets pass.

  • Managed PostgreSQL and Redis provisioned and connected for you
  • Private networking between services, with only the app exposed
  • Persistent volume for attachments, already mounted
  • Automatic HTTPS and a public domain on first deploy
  • Generated secrets instead of the image's defaults

Common Use Cases

  • Internal operations trackers — inspections, inventory or asset registers that outgrew a spreadsheet
  • A backend for a small product — model data in the grid and consume the REST API from a frontend
  • Airtable replacement at scale — teams hitting per-record limits or per-seat costs who want the same interface on their own infrastructure
  • Structured content management — editorial calendars and catalogues served through the API

Dependencies for Teable

  • Teableghcr.io/teableio/teable:latest (teableio/teable)
  • PostgreSQL — Railway managed; instance metadata and all user table data
  • Redis — Railway managed; cache plus the pub/sub channel for realtime collaboration

Environment Variables Reference

VariableDescriptionRequired
PUBLIC_ORIGINPublic base URL of the instance; used to build linksYes
PRISMA_DATABASE_URLPostgreSQL connection stringYes
BACKEND_CACHE_PROVIDERCache backend; set to redisYes
BACKEND_CACHE_REDIS_URIRedis connection stringYes
SECRET_KEYSigns JWTs and sessions; replaces a shipped defaultYes
BACKEND_ACCESS_TOKEN_ENCRYPTION_KEY / _IVAES-128-CBC pair for API tokens, 16 chars eachYes
BACKEND_STORAGE_ENCRYPTION_KEY / _IVAES-128-CBC pair for attachment URLs, 16 chars eachYes
BACKEND_STORAGE_PROVIDERlocal for the volume, or s3/minio for object storageNo
BACKEND_TRUST_PROXYSet true so client IPs come from X-Forwarded-ForNo
BACKEND_MAIL_HOSTSMTP host; enables invitations and password resetNo

Both encryption pairs must be exactly 16 characters, since Teable uses them as AES-128-CBC keys. A wrong length does not fail at startup — it surfaces the first time a token is minted or a file uploaded.

Deployment Dependencies

Server Requirements to Self-Host Teable

ResourceMinimumRecommended
CPU1 vCPU2 vCPU
RAM2 GB4 GB
Storage5 GB volume20 GB+
DatabasePostgreSQL 15+PostgreSQL 16+

Memory use tracks the size of the tables held in cache, not the user count. Attachments grow the volume, so size storage from expected uploads.

How to Self-Host Teable Outside Railway

The image needs PostgreSQL and Redis reachable. A minimal docker-compose.yml:

services:
  teable:
    image: ghcr.io/teableio/teable:latest
    ports:
      - '3000:3000'
    volumes:
      - teable-data:/app/.assets
    environment:
      - PUBLIC_ORIGIN=http://localhost:3000
      - PRISMA_DATABASE_URL=postgresql://teable:pw@db:5432/teable
      - BACKEND_CACHE_PROVIDER=redis
      - BACKEND_CACHE_REDIS_URI=redis://default:pw@cache:6379/0
      - SECRET_KEY=replace-with-a-long-random-string
    depends_on: [db, cache]

  db:
    image: postgres:16
    environment:
      - POSTGRES_DB=teable
      - POSTGRES_USER=teable
      - POSTGRES_PASSWORD=pw
    volumes:
      - teable-db:/var/lib/postgresql/data

  cache:
    image: redis:7
    command: redis-server --requirepass pw
volumes:
  teable-data:
  teable-db:

Bring it up and apply migrations, which the entrypoint runs automatically on start:

docker compose up -d
docker compose logs -f teable

Then open http://localhost:3000 and register the first account.

How Much Does Teable Cost to Self-Host?

Teable's core is open source under AGPL-3.0, so the self-hosted edition costs nothing in licence fees, and on Railway you pay only for the compute, database and volume it uses. Teable also sells a hosted cloud service: a free tier capped at 1,000 rows, Pro from about $10 per seat per month, and Business from about $20. Self-hosting removes the per-seat and per-row limits; some enterprise features need a commercial licence.

Teable vs Airtable vs NocoDB vs Baserow

TeableAirtableNocoDBBaserow
Open sourceYes (AGPL-3.0)NoSource-availableYes (MIT)
Self-hostableYesNoYesYes
Storage enginePostgreSQL tablesProprietaryExisting SQL databasePostgreSQL
Best forSpreadsheet UI over real SQL dataManaged convenienceA UI over a database you runOpen-core app building

Pick Teable when you want rows in ordinary PostgreSQL tables you can query directly. NocoDB fits better over a SQL database you already run; Baserow suits teams wanting an MIT licence.

FAQ

What is Teable? Teable is an open-source no-code database with a spreadsheet interface. It stores data in PostgreSQL and generates a REST API for every table, making it a self-hostable Airtable alternative.

What does this Railway template deploy? Three services: the Teable application on a public HTTPS domain, a managed PostgreSQL database, and a managed Redis instance. A volume at /app/.assets holds file attachments, and the application secrets are generated at deploy time.

Why does the template include PostgreSQL and Redis? PostgreSQL is not just a metadata store — your tables are real tables in it, so it holds all of your data. Redis backs the cache and the pub/sub channel pushing realtime edits between users; Teable requires a Redis connection string and will not start without one.

How do I create the admin account in self-hosted Teable? There is no default login. The first account to sign up becomes the instance administrator, so register immediately after deploying, then disable Allow creating new accounts under System Admin → Instance settings.

Does Teable have an API I can use from my own application? Yes. Every table gets REST endpoints for creating, reading, updating and deleting records, and you can generate scoped API tokens from account settings.


Template Content

More templates in this category

View Template
Libredesk - Complete Setup
Complete self-hosted omnichannel customer support desk.

codestorm
1
View Template
Paperless-ngx
Document management with OCR on Railway with PostgreSQL and Redis

INAPP
1
View Template
Instatic CMS - Postgres
Design, build and manage powerful static sites from state-of-the-art CMS

Instatic
143