---
title: "Deploy big-AGI Auth Gateway + Postgres"
description: "big-AGI AI workspace behind a password gateway, with chat link sharing"
category: "AI/ML"
url: https://railway.com/deploy/big-agi-auth-gateway-postgres
---

# Deploy big-AGI Auth Gateway + Postgres

big-AGI AI workspace behind a password gateway, with chat link sharing

**[Deploy big-AGI Auth Gateway + Postgres on Railway](https://railway.com/template/big-agi-auth-gateway-postgres)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/big-agi-auth-gateway-postgres/manifest.json

- **Creator:** Protemplate
- **Category:** AI/ML
- **Total deploys:** 2

## Template content

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:17

### big-agi-gateway https://raw.githubusercontent.com/enricoros/big-AGI/v2.1.3/public/icons/icon-512x512.png

- **Image:** caddy:2.11-alpine
- **Start command:** `sh -c 'echo IyBCYXNpYyBhdXRoIGdhdGV3YXkuIFNoaXBwZWQgYmFzZTY0IGVuY29kZWQgaW4gdGhlIGJpZy1hZ2ktZ2F0ZXdheSBzdGFydENvbW1hbmQuCiMgRXZlcnl0aGluZyBleGNlcHQgL2dhdGV3YXktaGVhbHRoIHJlcXVpcmVzIHRoZSBjcmVkZW50aWFscy4gVGhlIHBhc3N3b3JkIGlzIGhhc2hlZAojIGF0IGJvb3QsIHNvIG9ubHkgdGhlIGJjcnlwdCBoYXNoIGlzIHdyaXR0ZW4gdG8gdGhlIENhZGR5ZmlsZS4Kc2V0IC1lCjogIiR7UE9SVDo/UE9SVCBpcyByZXF1aXJlZH0iCjogIiR7QkFTSUNfQVVUSF9VU0VSTkFNRTo/QkFTSUNfQVVUSF9VU0VSTkFNRSBpcyByZXF1aXJlZH0iCjogIiR7QkFTSUNfQVVUSF9QQVNTV09SRDo/QkFTSUNfQVVUSF9QQVNTV09SRCBpcyByZXF1aXJlZH0iCjogIiR7VVBTVFJFQU06P1VQU1RSRUFNIGlzIHJlcXVpcmVkfSIKIyBDb3N0IDEwIGtlZXBzIHRoZSBwZXIgcmVxdWVzdCBjaGVjayBmYXN0IChDYWRkeSBkZWZhdWx0IGlzIDE0KTsgb2xkZXIgQ2FkZHkgYnVpbGRzCiMgd2l0aG91dCB0aGUgZmxhZyBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgY29zdC4KSEFTSD0iJChjYWRkeSBoYXNoLXBhc3N3b3JkIC0tYmNyeXB0LWNvc3QgMTAgLS1wbGFpbnRleHQgIiRCQVNJQ19BVVRIX1BBU1NXT1JEIiAyPi9kZXYvbnVsbCB8fCBjYWRkeSBoYXNoLXBhc3N3b3JkIC0tcGxhaW50ZXh0ICIkQkFTSUNfQVVUSF9QQVNTV09SRCIpIgpwcmludGYgJyVzXG4nIFwKICAneycgXAogICcgIGF1dG9faHR0cHMgb2ZmJyBcCiAgJyAgYWRtaW4gb2ZmJyBcCiAgJyAgc2VydmVycyB7JyBcCiAgJyAgICBwcm90b2NvbHMgaDEgaDJjJyBcCiAgJyAgfScgXAogICd9JyBcCiAgIjokUE9SVCB7IiBcCiAgJyAgaGFuZGxlIC9nYXRld2F5LWhlYWx0aCB7JyBcCiAgJyAgICByZXNwb25kICJvayIgMjAwJyBcCiAgJyAgfScgXAogICcgIGhhbmRsZSB7JyBcCiAgJyAgICBiYXNpY19hdXRoIHsnIFwKICAiICAgICAgJEJBU0lDX0FVVEhfVVNFUk5BTUUgJEhBU0giIFwKICAnICAgIH0nIFwKICAiICAgIHJldmVyc2VfcHJveHkgJFVQU1RSRUFNIHsiIFwKICAnICAgICAgZmx1c2hfaW50ZXJ2YWwgLTEnIFwKICAnICAgIH0nIFwKICAnICB9JyBcCiAgJ30nID4gL2V0Yy9jYWRkeS9DYWRkeWZpbGUKZXhlYyBjYWRkeSBydW4gLS1jb25maWcgL2V0Yy9jYWRkeS9DYWRkeWZpbGUgLS1hZGFwdGVyIGNhZGR5ZmlsZQo= | base64 -d > /tmp/start.sh && exec sh /tmp/start.sh'`
- **Health check:** /gateway-health
- **Public domain:** Yes

### big-AGI https://raw.githubusercontent.com/enricoros/big-AGI/v2.1.3/public/icons/icon-512x512.png

- **Image:** ghcr.io/enricoros/big-agi:v2.1.3
- **Start command:** `sh -c 'echo IyBiaWctQUdJIHN0YXJ0IHNjcmlwdC4gU2hpcHBlZCBiYXNlNjQgZW5jb2RlZCBpbiB0aGUgYmlnLUFHSSBzZXJ2aWNlIHN0YXJ0Q29tbWFuZC4KIyAxLiBJZiBQb3N0Z3JlcyBpcyBjb25maWd1cmVkLCBjcmVhdGUgdGhlIENoYXQgTGluayBTaGFyaW5nIHNjaGVtYSAoaWRlbXBvdGVudCkuCiMgICAgRmlyc3QgY2hvaWNlIGlzIHVwc3RyZWFtJ3MgZG9jdW1lbnRlZCAicHJpc21hIGRiIHB1c2giOyBpZiB0aGUgQ0xJIGlzIG1pc3Npbmcgb3IKIyAgICBmYWlscywgdGhlIHNhbWUgRERMIChnZW5lcmF0ZWQgYnkgcHJpc21hIDUuMjIgZnJvbSBzY2hlbWEucHJpc21hKSBpcyBhcHBsaWVkCiMgICAgdGhyb3VnaCB0aGUgQHByaXNtYS9jbGllbnQgdGhlIGFwcCBpdHNlbGYgdXNlcy4KIyAyLiBTdGFydCBOZXh0LmpzIGV4YWN0bHkgbGlrZSB0aGUgaW1hZ2UgQ01ELgpzZXQgLXUKY2QgL2FwcApQUklTTUFfQ0xJPS9hcHAvbm9kZV9tb2R1bGVzL3ByaXNtYS9idWlsZC9pbmRleC5qcwpTQ0hFTUE9L2FwcC9zcmMvc2VydmVyL3ByaXNtYS9zY2hlbWEucHJpc21hCmlmIFsgLW4gIiR7UE9TVEdSRVNfUFJJU01BX1VSTDotfSIgXTsgdGhlbgogIHB1c2hlZD0wCiAgaWYgWyAtZiAiJFBSSVNNQV9DTEkiIF0gJiYgWyAtZiAiJFNDSEVNQSIgXTsgdGhlbgogICAgaT0wCiAgICB3aGlsZSBbICIkaSIgLWx0IDQgXTsgZG8KICAgICAgaWYgQ0hFQ0tQT0lOVF9ESVNBQkxFPTEgbm9kZSAiJFBSSVNNQV9DTEkiIGRiIHB1c2ggLS1za2lwLWdlbmVyYXRlIC0tc2NoZW1hICIkU0NIRU1BIjsgdGhlbgogICAgICAgIHB1c2hlZD0xCiAgICAgICAgZWNobyAiW3JhaWx3YXldIGxpbmsgc2hhcmluZyBzY2hlbWEgcmVhZHkgKHByaXNtYSBkYiBwdXNoKSIKICAgICAgICBicmVhawogICAgICBmaQogICAgICBpPSQoKGkgKyAxKSkKICAgICAgc2xlZXAgNQogICAgZG9uZQogIGZpCiAgaWYgWyAiJHB1c2hlZCIgIT0gMSBdOyB0aGVuCiAgICBjYXQgPiAvdG1wL2xpbmstc2NoZW1hLmpzIDw8J0VPRicKY29uc3QgeyBQcmlzbWFDbGllbnQgfSA9IHJlcXVpcmUoJy9hcHAvbm9kZV9tb2R1bGVzL0BwcmlzbWEvY2xpZW50Jyk7CmNvbnN0IERETCA9IFsKICBgQ1JFQVRFIFRZUEUgIkxpbmtTdG9yYWdlVmlzaWJpbGl0eSIgQVMgRU5VTSAoJ1BVQkxJQycsICdVTkxJU1RFRCcsICdQUklWQVRFJylgLAogIGBDUkVBVEUgVFlQRSAiTGlua1N0b3JhZ2VEYXRhVHlwZSIgQVMgRU5VTSAoJ0NIQVRfVjEnKWAsCiAgYENSRUFURSBUQUJMRSAiTGlua1N0b3JhZ2UiICgKICAgICJpZCIgVEVYVCBOT1QgTlVMTCwKICAgICJvd25lcklkIiBURVhUIE5PVCBOVUxMLAogICAgInZpc2liaWxpdHkiICJMaW5rU3RvcmFnZVZpc2liaWxpdHkiIE5PVCBOVUxMLAogICAgImRhdGFUeXBlIiAiTGlua1N0b3JhZ2VEYXRhVHlwZSIgTk9UIE5VTEwsCiAgICAiZGF0YVRpdGxlIiBURVhULAogICAgImRhdGFTaXplIiBJTlRFR0VSIE5PVCBOVUxMLAogICAgImRhdGEiIEpTT05CIE5PVCBOVUxMLAogICAgInVwVm90ZXMiIElOVEVHRVIgTk9UIE5VTEwgREVGQVVMVCAwLAogICAgImRvd25Wb3RlcyIgSU5URUdFUiBOT1QgTlVMTCBERUZBVUxUIDAsCiAgICAiZmxhZ3NDb3VudCIgSU5URUdFUiBOT1QgTlVMTCBERUZBVUxUIDAsCiAgICAicmVhZENvdW50IiBJTlRFR0VSIE5PVCBOVUxMIERFRkFVTFQgMCwKICAgICJ3cml0ZUNvdW50IiBJTlRFR0VSIE5PVCBOVUxMIERFRkFVTFQgMSwKICAgICJleHBpcmVzQXQiIFRJTUVTVEFNUCgzKSwKICAgICJkZWxldGlvbktleSIgVEVYVCBOT1QgTlVMTCwKICAgICJpc0RlbGV0ZWQiIEJPT0xFQU4gTk9UIE5VTEwgREVGQVVMVCBmYWxzZSwKICAgICJkZWxldGVkQXQiIFRJTUVTVEFNUCgzKSwKICAgICJjcmVhdGVkQXQiIFRJTUVTVEFNUCgzKSBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLAogICAgInVwZGF0ZWRBdCIgVElNRVNUQU1QKDMpIE5PVCBOVUxMLAogICAgQ09OU1RSQUlOVCAiTGlua1N0b3JhZ2VfcGtleSIgUFJJTUFSWSBLRVkgKCJpZCIpCiAgKWAsCl07Cihhc3luYyAoKSA9PiB7CiAgY29uc3QgZGIgPSBuZXcgUHJpc21hQ2xpZW50KCk7CiAgZm9yIChsZXQgYXR0ZW1wdCA9IDE7IGF0dGVtcHQgPD0gMTI7IGF0dGVtcHQrKykgewogICAgdHJ5IHsKICAgICAgY29uc3Qgcm93cyA9IGF3YWl0IGRiLiRxdWVyeVJhd1Vuc2FmZShgU0VMRUNUIHRvX3JlZ2NsYXNzKCdwdWJsaWMuIkxpbmtTdG9yYWdlIicpOjp0ZXh0IEFTIHRgKTsKICAgICAgaWYgKHJvd3NbMF0gJiYgcm93c1swXS50KSB7CiAgICAgICAgY29uc29sZS5sb2coJ1tyYWlsd2F5XSBsaW5rIHNoYXJpbmcgc2NoZW1hIGFscmVhZHkgcHJlc2VudCcpOwogICAgICB9IGVsc2UgewogICAgICAgIGF3YWl0IGRiLiR0cmFuc2FjdGlvbihEREwubWFwKChzcWwpID0+IGRiLiRleGVjdXRlUmF3VW5zYWZlKHNxbCkpKTsKICAgICAgICBjb25zb2xlLmxvZygnW3JhaWx3YXldIGxpbmsgc2hhcmluZyBzY2hlbWEgcmVhZHkgKFNRTCBmYWxsYmFjayknKTsKICAgICAgfQogICAgICBhd2FpdCBkYi4kZGlzY29ubmVjdCgpOwogICAgICByZXR1cm47CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tyYWlsd2F5XSBzY2hlbWEgYXR0ZW1wdCAnICsgYXR0ZW1wdCArICcgZmFpbGVkOiAnICsgU3RyaW5nKGUgJiYgZS5tZXNzYWdlKS5zbGljZSgwLCAzMDApKTsKICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHIpID0+IHNldFRpbWVvdXQociwgNTAwMCkpOwogICAgfQogIH0KICBjb25zb2xlLmVycm9yKCdbcmFpbHdheV0gV0FSTklORzogbGluayBzaGFyaW5nIHNjaGVtYSBub3QgY3JlYXRlZCwgc2hhcmluZyB3aWxsIGZhaWwgdW50aWwgUG9zdGdyZXMgaXMgcmVhY2hhYmxlJyk7CiAgYXdhaXQgZGIuJGRpc2Nvbm5lY3QoKS5jYXRjaCgoKSA9PiBudWxsKTsKfSkoKTsKRU9GCiAgICBub2RlIC90bXAvbGluay1zY2hlbWEuanMgfHwgZWNobyAiW3JhaWx3YXldIFdBUk5JTkc6IHNjaGVtYSBmYWxsYmFjayBleGl0ZWQgd2l0aCBhbiBlcnJvciIKICBmaQpmaQpleGVjIC9hcHAvbm9kZV9tb2R1bGVzLy5iaW4vbmV4dCBzdGFydAo= | base64 -d > /tmp/start.sh && exec sh /tmp/start.sh'`
- **Health check:** /api/edge/backend.listCapabilities

## Documentation

# Deploy and Host big-AGI on Railway

big-AGI is an open source AI workspace for people who use several models at once. It talks to OpenAI, Anthropic, Gemini, OpenRouter, Ollama and more than a dozen other providers, and adds Beam (ask many models, merge the best answer), personas, voice, image generation, code rendering and file attachments.

## About Hosting big-AGI

The official big-AGI image has no login. Upstream's optional HTTP Basic Auth only exists if you rebuild the image yourself, and the server will happily relay requests to any model host a caller names. So this template never gives big-AGI a public domain. A small Caddy gateway holds the only public domain and asks for a username and a generated password before anything reaches the app, including every API route.

Chats, settings and any API keys you type into the UI stay in your browser. The only data big-AGI keeps on the server is Chat Link Sharing, which needs a database, so the template includes Postgres and creates the schema on first boot.

What is included:

- **big-AGI** `ghcr.io/enricoros/big-agi:v2.1.3` (private, port 3000)
- **big-agi-gateway** `caddy:2.11-alpine` (public, basic auth in front of big-AGI)
- **Postgres 17** with a volume (stores shared chat links only)

## First Steps After Deploy

1. Open the **big-agi-gateway** service, copy `BASIC_AUTH_PASSWORD` from Variables. The username is `admin`.
2. Open the gateway's public URL and sign in at the browser prompt.
3. In big-AGI open Models and add a provider key. It is stored in your browser. Or set a server side key (below) so every signed in user shares it.
4. To share a chat, open its Export dialog and create a share link. The link works for anyone who has the gateway login.

## Common Use Cases

- **One workspace for every model**: compare OpenAI, Anthropic, Gemini and local models side by side
- **Beam**: fan a prompt out to several models and merge the answers
- **Team key sharing**: set provider keys on the server once, hand out only the gateway login
- **Private front end for Ollama**: point `OLLAMA_API_HOST` at an Ollama service in the same project

## Dependencies for big-AGI Hosting

- **Postgres**: included. Used only for Chat Link Sharing
- **Provider API keys**: optional. The app boots with none, add them in the UI or as variables
- **No Redis, no object storage, no GPU**

### Deployment Dependencies

- [big-AGI repository](https://github.com/enricoros/big-AGI)
- [Environment variables](https://github.com/enricoros/big-AGI/blob/v2.1.3/docs/environment-variables.md)
- [Authentication notes](https://github.com/enricoros/big-AGI/blob/v2.1.3/docs/deploy-authentication.md)
- [Database notes](https://github.com/enricoros/big-AGI/blob/v2.1.3/docs/deploy-database.md)

### Implementation Details

Key variables:

```env
# big-agi-gateway
BASIC_AUTH_USERNAME=admin
BASIC_AUTH_PASSWORD=${{secret(32)}}
UPSTREAM=${{big-AGI.RAILWAY_PRIVATE_DOMAIN}}:3000

# big-AGI
PORT=3000
POSTGRES_PRISMA_URL=${{Postgres.DATABASE_PRIVATE_URL}}
POSTGRES_URL_NON_POOLING=${{Postgres.DATABASE_PRIVATE_URL}}
OPENAI_API_KEY=        # optional, shared with every signed in user
ANTHROPIC_API_KEY=     # optional
GEMINI_API_KEY=        # optional
OPENROUTER_API_KEY=    # optional
OLLAMA_API_HOST=       # optional
```

Things to know:

- A server side provider key is usable by everyone who has the gateway login. Hand the login only to people you would hand the key to.
- Chats are not backed up by this template. They live in each browser. Use big-AGI's own export to move them.
- Do not add a public domain to the big-AGI service. That would bypass the gateway.
- The pinned 2.1.3 image includes the fixes for both published big-AGI advisories and ships Next.js 15.5.28.

## Why Deploy big-AGI 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 big-AGI 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.


## Similar templates

- [Chat Chat](https://railway.com/deploy/-WWW5r) — Chat Chat, your own unified chat and search to AI platform.
- [Weaviate](https://railway.com/deploy/weaviate-1) — Vector database with hybrid search and an API key-protected API
- [Möbius Personal AI OS](https://railway.com/deploy/mobius-v01-personal-ai-os) — Self-hosted AI agent that builds and runs apps for you, with memory.

Open this page in a browser: https://railway.com/deploy/big-agi-auth-gateway-postgres
