Railway

Deploy Baserow

Spreadsheet-style database your team edits together in a browser

Deploy Baserow

Just deployed

/var/lib/postgresql/data

Just deployed

Just deployed

/data

Just deployed

Just deployed

Just deployed

Just deployed

/data

celery-export-worker

baserow/backend:2.3.3

Just deployed

baserow-files

Bucket

Just deployed

Deploy and Host Baserow on Railway

Baserow is an open-source no-code database — spreadsheet-style tables that are really PostgreSQL tables underneath, with grid, kanban and calendar views, forms, an application builder and a REST API. Teams use it the way they use Airtable: an inventory list, a lightweight CRM, a form colleagues submit to. Self-host Baserow and the per-seat pricing disappears, along with any question about where the rows live.

This deploys Baserow in the split-role shape its maintainers document for production, not the all-in-one container: the Django API (baserow/backend), the Nuxt interface (baserow/web-frontend), three Celery tiers, a router giving both one domain, managed PostgreSQL and Redis, an object-storage bucket, and a mail inbox so password resets work as soon as the deploy is green. Source: github.com/bram2w/baserow.

Diagram of the nine Baserow services deployed on Railway

Getting Started with Baserow on Railway

Open the public URL of the baserow service. Because no user exists yet, Baserow serves a Create account page instead of a login form and grants staff rights to the first account made — there are no default credentials to change. Fill it in and walk the onboarding wizard, which creates your first workspace, database and table.

Click a cell and start typing. Add fields with the + at the right of the header row — single select, date, file, formula and link-to-table are all there. Attach an image to a file field to confirm object storage is wired: it uploads to the bucket and comes back as a signed URL, and the row panel logs a change entry for every edit. Visit /admin/health to check the whole stack at once, then open /admin/settings and turn off Allow creating new accounts.

Baserow grid view of site inspection records with coloured status labels Baserow row detail showing an attached photo beside its change history Baserow admin health checks reporting database, Redis and S3 storage healthy

About Hosting Baserow

Baserow stores every user table as a genuine PostgreSQL table, so a database built in the UI is queryable, indexable and backed up like any other schema — the reason to self-host it rather than use a closed SaaS.

  • Grid, gallery, kanban, calendar and form views, edited collaboratively in real time
  • 25+ field types: formulas, rollups, link-to-table, files, select fields
  • REST API per table, scoped database tokens, webhooks on row events
  • Application builder and automations over the same data
  • Row history, trash, snapshots, workspace permissions, 150+ templates

Architecturally it is a Django ASGI backend serving HTTP and WebSockets, a Nuxt server rendering the UI, and three Celery roles: a worker for notifications and webhooks, an export worker for slow jobs, and a beat scheduler. Redis carries the broker, schedule, cache and realtime channel layer. A Caddy router in front sends /api, /ws, /mcp and /assistant to the backend and everything else to the frontend, so the browser only talks to one origin.

Why Deploy Baserow on Railway

Baserow's own compose file is six containers, a shared volume and a reverse proxy. This replaces all of it.

  • Managed PostgreSQL and Redis, provisioned and connected for you
  • Object storage instead of a shared upload volume, signed URLs included
  • Private networking between services; no ports exposed by hand
  • Managed TLS, custom domains, one-click redeploys, health checks everywhere

Common Use Cases

  • Internal CRM or asset register — a shared table with workspace permissions and a form view colleagues submit to
  • Airtable replacement without per-seat billing — same interface, unlimited collaborators, your own database
  • Backend for a side project — every table exposes a REST API and scoped tokens
  • Field data collection — file fields on object storage, so photos attach to rows

Dependencies for Baserow

  • baserow/backend:2.3.3 — Django API, and the same image for all three Celery roles
  • baserow/web-frontend:2.3.3 — Nuxt user interface
  • caddy:2.11.4-alpine — path router giving the API and UI a single origin
  • axllent/mailpit:latest — SMTP inbox for password resets and invitations
  • PostgreSQL — every user table, plus Baserow's own schema
  • Redis — broker, results, schedule, cache, realtime channels
  • Object storage bucket — file uploads and thumbnails

Keep all five Baserow services on the same version tag — they share a schema and a token format, so a mismatch fails quietly.

Environment Variables Reference

VariableDescriptionRequired
SECRET_KEY / BASEROW_JWT_SIGNING_KEYSigning keys; stable, identical on all fiveYes
BASEROW_PUBLIC_URLUsed in emails, share links and CORSYes
DATABASE_URL / REDIS_URLConnection stringsYes
AWS_STORAGE_BUCKET_NAMEEnables S3 storage; unset means local diskYes
AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_S3_ENDPOINT_URL / AWS_S3_REGION_NAMEBucket credentials, endpoint, regionYes
BASEROW_ENABLE_SECURE_PROXY_SSL_HEADERTrust X-Forwarded-Proto for HTTPS linksYes
BASEROW_AMOUNT_OF_WORKERSCelery concurrency; unset forks per host coreYes
EMAIL_SMTP_HOST / EMAIL_SMTP_PORTYour own relay, to deliver mailNo
SYNC_TEMPLATES_ON_STARTUPImport the built-in template libraryNo
BASEROW_FILE_UPLOAD_SIZE_LIMIT_MBPer-file upload ceilingNo

Deployment Dependencies

Hardware Requirements for Self-Hosting Baserow

ResourceMinimumRecommended
CPU2 vCPU across all services4+ vCPU
RAM2 GB total4–8 GB
Storage5 GB for PostgreSQL20 GB+, uploads on object storage
PostgreSQL / Redis12 / 615+ / 7+

First boot imports the template library on the export worker — the heaviest thing Baserow does to the database. Set SYNC_TEMPLATES_ON_STARTUP=false on a small instance.

How to Self-Host Baserow Outside Railway

The quickest path is the all-in-one image, which bundles every component plus its own PostgreSQL and Redis. Run it with Docker:

docker run -d --name baserow \
  -e BASEROW_PUBLIC_URL=http://localhost \
  -v baserow_data:/baserow/data \
  -p 80:80 -p 443:443 \
  baserow/baserow:2.3.3

For the split-role shape used here, clone the repository and run its multi-service compose file:

git clone https://github.com/bram2w/baserow.git && cd baserow
cp .env.example .env   # set SECRET_KEY, DATABASE_PASSWORD, REDIS_PASSWORD, BASEROW_PUBLIC_URL
docker compose up -d

How Much Does Baserow Cost to Self-Host?

Baserow's core is open source under the MIT licence, and the self-hosted open-source edition has no seat limit, no row cap and no time limit — it costs only the infrastructure it runs on. Paid Premium and Advanced licences add extras such as row colouring, admin tooling and SSO, priced per active user; Enterprise is quoted per organisation. On Railway you pay for compute and storage only.

Baserow vs NocoDB vs Airtable

BaserowNocoDBAirtable
Open sourceYes (MIT core)Yes (Fair Code)No
Owns its databaseYesNo — wraps an existing oneN/A
Real-time collaborationYesRefresh requiredYes
Self-hosted pricingInfrastructure onlyInfrastructure onlyPer seat

Pick Baserow for an Airtable-style product that owns its storage; pick NocoDB to put a grid over a database you already run.

FAQ

What is Baserow? An open-source no-code database. You build tables through a spreadsheet-like interface and Baserow stores them as real PostgreSQL tables with a REST API.

What does this Railway template deploy? Nine services — the API, the web interface, a Celery worker, an export worker, a beat scheduler, the router holding the public domain, PostgreSQL, Redis and a mail inbox — plus an object-storage bucket.

Why does the template include PostgreSQL, Redis and a storage bucket? PostgreSQL holds every table you create. Redis is the Celery broker, the scheduler's lock, the cache and the realtime channel layer, so exports, webhooks and notifications move through it. The bucket holds uploads and thumbnails that several services read.

How do I create the first admin account in self-hosted Baserow? Open the public URL. While no user exists Baserow shows a Create account page and grants staff rights to whoever completes it. Then disable sign-ups under /admin/settings.

Can I use the Baserow REST API from my own application? Yes. Every table has REST endpoints and you can mint database tokens with per-table create, read, update and delete scopes. Docs live at /api/redoc/.

Does self-hosted Baserow send email? The included inbox captures mail, so password resets and invitations are readable at once. Point the SMTP variables at your own provider to deliver externally.

Can I run Baserow in production on Railway? Yes — this is the multi-service shape Baserow documents for production. Scale the workers and backend independently, and keep exactly one beat scheduler: it is what stops periodic jobs firing twice.


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
Paperless-ngx — document management with OCR and full-text search

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

Instatic
147