---
title: "Deploy Mathesar | (Just Updated) Postgres Spreadsheet UI Only You Can Claim"
description: "Postgres spreadsheet UI. Admin seeded per deploy, uploads on a volume."
category: "Analytics"
url: https://railway.com/deploy/mathesar-or-just-updated-postgres-spread
---

# Deploy Mathesar | (Just Updated) Postgres Spreadsheet UI Only You Can Claim

Postgres spreadsheet UI. Admin seeded per deploy, uploads on a volume.

**[Deploy Mathesar | (Just Updated) Postgres Spreadsheet UI Only You Can Claim on Railway](https://railway.com/template/mathesar-or-just-updated-postgres-spread)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/mathesar-or-just-updated-postgres-spread/manifest.json

- **Creator:** SuperSlowSloth
- **Category:** Analytics

## Template content

### mathesar

- **Image:** ghcr.io/bon5co/mathesar-railway:0.12.0
- **Public domain:** Yes

### postgres

- **Image:** postgres:17.10-alpine

## Documentation

# Deploy and Host Mathesar on Railway

Mathesar is an open-source web interface to your own PostgreSQL database. It presents your real
tables as spreadsheets — edit cells, add columns, follow foreign keys, filter and sort, share
saved explorations — while everything stays in plain Postgres that your other applications keep
reading and writing normally.

This template deploys Mathesar 0.12.0 with a Postgres database, and it is the only listing in
this category where **the instance is claimed before it is ever reachable**.

## About Hosting Mathesar

Mathesar is a Django application served by Gunicorn, with its own internal Postgres database for
users, permissions and saved explorations. Two things decide whether a hosted deploy behaves:

**The installation wizard authenticates nobody.** Stock Mathesar serves `/complete_installation/`
to any visitor until a superuser exists, and the account that form creates is a superuser that is
logged straight in. Upstream's boot sequence creates no user and offers no variable that seeds
one, so on a public URL the first stranger to load the page owns the deployment — and the loss is
permanent, because password recovery is an emailed link and a fresh deploy has no mail server.
This template seeds the administrator **before the web server binds its port**, refuses to start
at all without a password, and re-applies that password on every boot, so a redeploy is a working
password reset.

**Uploaded files need a disk.** Mathesar stages imported CSV and TSV files on the filesystem
under `MEDIA_ROOT`, which defaults to a path inside the container. Without a volume those
in-progress imports disappear on every redeploy. This template mounts a volume and points
`MEDIA_ROOT` at it.

Beyond that: the image is pinned rather than tracking a moving tag, on an application that runs
database migrations forward on boot; Gunicorn's worker count is read from the container's own CPU
and memory limits instead of a fixed number; and the fallback that silently starts a throwaway
Postgres inside the app container is deliberately not enabled, so a misconfigured database fails
loudly instead of quietly storing your data somewhere that does not survive a restart.

## Why Deploy Mathesar on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your
infrastructure so you don't have to deal with configuration, while allowing you to vertically and
horizontally scale it.

By deploying Mathesar on Railway, you are one step closer to supporting a complete full-stack
application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

Mathesar in particular benefits from Railway's private networking — the app talks to its Postgres
over the project's internal network rather than a public port — and from volumes, which is what
makes uploads and the database durable across redeploys.

## Common Use Cases

- Give non-technical teammates a spreadsheet-style view of a production Postgres database without
  writing an admin panel.
- Replace an Airtable or Google Sheets workflow with something that lives in a real relational
  database your applications can query directly.
- Clean up, import and explore a dataset — load a CSV, map it onto a table, then filter and share
  a saved exploration.
- Run an internal back-office tool over an existing database, with per-role permissions rather
  than shared credentials.

## Dependencies for Mathesar

- A PostgreSQL database for Mathesar's own metadata (users, permissions, saved explorations).
- A persistent volume for staged file uploads.

### Deployment Dependencies

- [Mathesar documentation](https://docs.mathesar.org)
- [Mathesar source](https://github.com/mathesar-foundation/mathesar)
- [Railway wrapper image source](https://github.com/bon5co/mathesar-railway)

### Implementation Details

The administrator username defaults to `admin`. The password is generated per deploy and appears
in the `MATHESAR_ADMIN_PASSWORD` variable on the Mathesar service; change it there and redeploy to
rotate it. Connect additional databases from inside the UI once you are signed in.


## Similar templates

- [Typesense PHP](https://railway.com/deploy/typesense-php) — official PHP client against Railway
- [Typesense vs Meilisearch](https://railway.com/deploy/typesense-vs-meilisearch) — self-hosted Typesense vs Meilisearch
- [Matomo Analytics + MariaDB](https://railway.com/deploy/matomo-analytics-mariadb) — Privacy-friendly analytics with MariaDB and persistent volumes.

Open this page in a browser: https://railway.com/deploy/mathesar-or-just-updated-postgres-spread
