Back to Blog
Tutorial9 min read2026-06-30

How to Deploy Baserow No-Code Database

Baserow is an open-source no-code database with a friendly spreadsheet UI. This guide deploys Baserow with managed PostgreSQL and Redis for a production-ready, self-hosted setup.

Ajay Kumar
Ajay Kumar
Founder & DevOps, PandaStack

Baserow is an open-source no-code database — think Airtable, but you host it. It gives non-technical teammates a spreadsheet-like UI while storing everything in PostgreSQL. Compared to running the all-in-one image on a laptop, a production deployment splits out the database and Redis so your data is durable and the app scales cleanly.

This guide deploys Baserow with managed PostgreSQL and Redis.

Baserow's components

Baserow ships an all-in-one image bundling everything, but for production you want to externalize state:

ComponentProduction setup
Backend (Django)Container app
Web frontend (Nuxt)Bundled in the same image
Celery workersBundled / can be split
PostgreSQLManaged, external
RedisManaged, external
File storageObject storage (S3-compatible)

The all-in-one image is convenient, and you can point it at external PostgreSQL and Redis via environment variables — giving you the simplicity of one container with the durability of managed data stores.

Step 1: Provision PostgreSQL and Redis

On [PandaStack](https://dashboard.pandastack.io), create:

  • A managed PostgreSQL (Baserow stores all table data here).
  • A managed Redis (used for Celery and caching).

Size PostgreSQL with storage headroom — user-created tables and rows live here and grow over time.

Step 2: Deploy the all-in-one image with external state

Reference the official image and point it at your managed stores:

FROM baserow/baserow:1.27.0
# Serves on port 80 by default

Environment variables:

BASEROW_PUBLIC_URL=https://baserow.example.com

# External PostgreSQL
DATABASE_HOST=<managed-postgres-host>
DATABASE_PORT=5432
DATABASE_NAME=baserow
DATABASE_USER=<user>
DATABASE_PASSWORD=<password>

# External Redis
REDIS_HOST=<managed-redis-host>
REDIS_PORT=6379
REDIS_PASSWORD=<password>
REDIS_PROTOCOL=redis

# Stable secret keys — keep these constant!
SECRET_KEY=<long-random>
BASEROW_JWT_SIGNING_KEY=<long-random>

BASEROW_PUBLIC_URL must match your real domain or links and API calls break. The secret keys must stay stable across deploys.

Step 3: Configure file storage

Baserow stores uploaded files (attachments, exports). On an ephemeral container, local file storage is lost on redeploy. Configure S3-compatible object storage:

AWS_ACCESS_KEY_ID=<key>
AWS_SECRET_ACCESS_KEY=<secret>
AWS_STORAGE_BUCKET_NAME=<bucket>
AWS_S3_ENDPOINT_URL=<endpoint>

This is the most-missed production step — without it, uploaded files disappear.

Step 4: Deploy

  1. 1Push the repo (or reference the image) to GitHub.
  2. 2Create a container app on PandaStack — BuildKit handles the image, Helm deploys it.
  3. 3Set all env vars (passwords and secret keys as secrets).
  4. 4Expose port 80.
  5. 5Add a custom domain matching BASEROW_PUBLIC_URL; SSL is automatic.
  6. 6The image runs database migrations on startup, so the first boot initializes the schema in your managed PostgreSQL.

Step 5: First-run and team setup

Visit your domain and create the first admin account. Then:

  • Disable open signups in the admin if it's an internal tool.
  • Invite collaborators with appropriate roles.
  • Create your first workspace and database.

Baserow vs. NocoDB

Both are open-source Airtable alternatives. A fair, brief take:

BaserowNocoDB
Storage modelIts own PostgreSQL schemaUI over any existing DB
StrengthPolished spreadsheet UX, pluginsConnecting to existing databases
Best forBuilding new no-code basesPutting a UI on data you already have

If you're starting fresh and want the smoothest spreadsheet UX, Baserow is excellent. If you need to layer a UI over an existing production database, NocoDB's external-source model fits better. They're both solid; pick by use case.

Scaling notes

  • The all-in-one image is fine to a point; for heavy use you can deploy the backend and Celery workers as separate apps from the component images.
  • Watch PostgreSQL connections under concurrent load and size the tier accordingly.
  • Keep Redis healthy — Celery depends on it for background jobs (exports, webhooks).

Operating tips

  • Scheduled PostgreSQL backups protect all user data.
  • Pin the image version and read release notes before upgrading (migrations run on boot).
  • Object storage for files — never rely on container disk.
  • Stable secret keys — rotating them invalidates sessions and tokens.

References

  • [Baserow installation docs](https://baserow.io/docs/installation/install-with-docker)
  • [Baserow configuration / environment variables](https://baserow.io/docs/installation/configuration)
  • [Baserow Docker image](https://hub.docker.com/r/baserow/baserow)
  • [Baserow self-hosting overview](https://baserow.io/docs/installation/install-on-cloud)

---

Baserow plus managed PostgreSQL and Redis gives non-technical teammates a powerful no-code database while you keep full ownership of the data. PandaStack provisions both data stores with scheduled backups and injects the connections. Try it on the free tier at [dashboard.pandastack.io](https://dashboard.pandastack.io).

Ready to deploy?

Start free on PandaStack.

Start free on PandaStack

More in Tutorial

Browse all Tutorial articles →

See also