Deploy Metabase CSV Upload
Upload CSV files and chart them in Metabase
Just deployed
/var/lib/postgresql/data
metabase/metabase
Just deployed
Deploy and Host self hosted Metabase CSV Upload (Open-Source BI) on Railway
This template runs Metabase's official image and a Railway Postgres for its own metadata, then you point a separate upload database at it so CSVs become real tables. Good for analysts who'd rather chart a CSV than email it or pay per-seat cloud pricing.
About Hosting Metabase CSV Upload open-source software on Railway (self hosted Metabase template)
CSV uploads don't live inside Metabase. Add a second Postgres service, or a separate database and user, then connect it under Admin, Databases, with write access. Railway wires MB_DB_* to the app database, sets MB_SITE_URL to your HTTPS domain, and Postgres volumes keep data across redeploys.
Why Deploy Metabase CSV Upload, the Tableau alternative on Railway (Railway Free Trial)
Tableau's per-seat math gets steep once a few analysts need to build charts. Here you pay Railway compute plus Postgres, and your CSVs land in a database you own. The dashboards are yours and the license is AGPL. Kick the tires on Railway's free trial credit.
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 Metabase CSV Upload 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.
Railway vs Other Hosting Providers and VPS for Metabase CSV Upload self hosting
Compare on how much plumbing you own, not the hourly rate.
| Provider | What You Get with Railway | What You Get with the Other Provider |
|---|---|---|
| DigitalOcean | Metabase + Postgres 18, private networking, and an HTTPS domain already wired. | A Droplet: run both containers, add Caddy and TLS, set the 50 MB proxy limit. |
| AWS | Two services and variable references, health check at /api/health. | ECS or EC2 plus RDS: IAM, security groups, load balancer, backups. |
| Hetzner | Cheap cores, and Railway still owns the domain and Postgres env vars. | Cheap cores too, but you patch the host and script pg_dump. |
Either way, give uploads their own schema.
Common Use Cases for hosted Metabase CSV Upload
- Finance exports at month-end. Upload the CSV your accounting system spits out, chart it, then append next month's file to the same model. Same headers, duplicates kept, so a bad repeat shows up.
- Marketing spend blends. Three ad platforms, three column orders. Rename headers to match, append, and join the result to production revenue tables without opening a pipeline ticket.
- Survey and research dumps. Under 50 MB goes in whole; split anything bigger into header-per-chunk files and append them in order.
- The "can you look at this file?" Slack. Give the requester curate access to a collection, upload, chart, share the link. Point uploads at a second Postgres service, never the app DB.
Dependencies for Metabase CSV Upload Docker hosted on Railway
Metabase needs its app container plus a Postgres for its own metadata. Uploads need a second Postgres as the target, because upload tables must never land in the application database.
Deployment Dependencies for Managed Metabase CSV Upload Service (BI with CSV uploads)
Template services: metabase/metabase (latest, port 3000) and Railway Postgres 18 (ghcr.io/railwayapp-templates/postgres-ssl:18, mounted volume). Add a second Postgres, connect it under Admin > Databases with a write user, then choose schema under Admin > Settings > Uploads.
Implementation Details for Metabase CSV Upload (Using Metabase official docker image)
First boot migrates the app Postgres; the wizard creates the admin user. Add MB_ENCRYPTION_SECRET_KEY early, before saving warehouse credentials, and never change it. Health check: GET /api/health. CSVs cap at 50 MB, and a fronting proxy may allow less.
How does Metabase CSV Upload compare against other spreadsheet and BI tools platforms
Uploading a CSV is the shortest path from a messy export to a chart, so the fair comparison is who else has to touch the file afterward. Spreadsheets win on input. BI wins on reuse. Uploads cap at 50 MB per file, plenty for a survey export, useless as a warehouse load.
Metabase CSV Upload vs Google Sheets (Google Sheets Alternative)
- Sheets wins: live co-editing and formulas, no install, no schema.
- Uploads win: rows sit in a Postgres table you can join to production orders in the same question.
- Gotcha: Sheets sync is Cloud-only, so on Railway you export the CSV first.
Metabase CSV Upload vs Excel (Excel Alternative)
- Excel wins: offline work, macros, and pivots finance already trusts.
- Uploads win: append or replace uploads beat twelve files named final_v3.
- Gotcha: the cap is 50 MB per CSV and a proxy in front may allow less, so split and append.
Metabase CSV Upload vs Tableau (Tableau Alternative)
- Tableau wins: chart polish and governed extracts well past 50 MB.
- Uploads win: free under AGPL, billed as Railway compute, not seats.
- Honest note: SAML/JWT SSO and row-level security need Metabase Pro.
Metabase CSV Upload vs Power BI (Power BI Alternative)
- Power BI wins: Microsoft 365 tie-ins and licensing many orgs already own.
- Uploads win: no Windows gateway, just a Linux container and Postgres write access.
- Gotcha: uploads suit ad hoc files; recurring data belongs in a pipeline.
How to use Metabase CSV Upload (the OSS BI with CSV uploads)?
- Open the public HTTPS URL, finish the wizard, create the admin user.
- Add MB_ENCRYPTION_SECRET_KEY and redeploy before saving any database credentials, then never change it.
- Add a second Railway Postgres as the upload target and connect it in Admin > Databases using a user with write access.
- In Admin > Settings > Uploads, pick that database and schema, plus an optional table prefix.
- Give a group View data Can view and Create queries Query builder or higher on the upload schema, plus Curate on the collection.
- In a collection, click Upload or + Add data, choose CSV, drag the file, pick the collection.
- Open the generated model, chart it, then append or replace later CSVs. Cap is 50 MB.
How to self host Metabase CSV Upload on other VPS Services (Metabase CSV Upload self hosting guide)
Docker is the short path. You still own the proxy, TLS, backups, and two databases.
Clone the Repository
Pull the official image; no repo needed.
docker pull metabase/metabase:latest
Install Dependencies
Docker, a Postgres for Metabase's own data, and a second write-capable database for CSVs. Raise your proxy body limit above 50 MB or uploads fail before Metabase sees them.
Configure Environment Variables
Set the app DB, a stable key, and the public URL.
MB_DB_TYPE=postgres
MB_DB_CONNECTION_URI=postgres://metabase:password@db-host:5432/metabase
MB_ENCRYPTION_SECRET_KEY=long-random-string
MB_SITE_URL=https://your-domain
Start the Metabase CSV Upload Application
Run it on 3000, finish setup, connect the upload DB under Admin > Databases, then pick a schema in Admin > Settings > Uploads.
docker run -d -p 3000:3000 --env-file .env metabase/metabase:latest
Official Pricing of Metabase CSV Upload (Metabase CSV Upload pricing)
The software is free under the AGPL and CSV upload is not a paid add-on. Metabase's Cloud plans: Starter at $100/month with 5 users, then $6 per extra user; Pro at $575/month with 10 users, then $12 per extra user; Enterprise starts around $20,000/year. Self host on Railway and you pay compute only, typically $5 to $15/month on Hobby for Metabase plus Postgres, a bit more with a second upload database.
Metabase CSV Upload cloud vs self hosted comparison (Pricing, features, costs, and more)
Cloud plans price per seat; a Railway stack prices per container. That difference drives most comparisons below.
Monthly cost of self hosting Metabase CSV Upload on Railway
You pay Railway compute plus Postgres, nothing per viewer. A small stack (app container, app database, and a second Postgres for upload tables) typically lands around $10-20/mo on Hobby, depending on usage and volume size. Metabase Cloud Starter is $100/mo for 5 users plus $6 per extra user, so self hosting pays off quickly once a handful of people need read access.
System Requirements for Hosting Metabase CSV Upload on a VPS
Metabase is light: 1 vCPU and 2 GB RAM covers a small team. Size the upload Postgres for the CSVs you keep; each file caps at 50 MB.
Frequently Asked Questions (FAQs)
Where does an uploaded CSV actually go?
Metabase doesn't store CSVs in itself: it creates a real table in an upload schema inside a database you connect. Never point uploads at the app Postgres; add a second Railway Postgres as the target.
Why is the upload icon missing?
You need View data on the upload schema and Query builder or higher, plus Curate access on the collection; the icon shows where you can curate. Personal collections work out of the box.
Can I add rows to an existing upload?
Yes. Append works when column names, order, and types match the original and the file has a header row; duplicates are kept. Replace swaps the data.
What happens with a file over 50 MB?
It's rejected: the limit is 50 MB per CSV. Split it into chunks that each carry a header row and append them in order; a proxy in front can impose a lower body limit still.
Can I delete an upload table later?
Deleting upload tables from the Uploads settings page is Pro and Enterprise only; on OSS, trash the model and drop the table in the database yourself.
Does the template set MB_ENCRYPTION_SECRET_KEY?
No. Add one before saving warehouse credentials and never change it, or encrypted settings break.
Template Content
metabase/metabase
metabase/metabase