---
title: "Deploy Onyx Lite Chat + Postgres"
description: "Onyx Lite self hosted AI chat with Postgres, four services"
category: "AI/ML"
url: https://railway.com/deploy/onyx-lite-chat-postgres
---

# Deploy Onyx Lite Chat + Postgres

Onyx Lite self hosted AI chat with Postgres, four services

**[Deploy Onyx Lite Chat + Postgres on Railway](https://railway.com/template/onyx-lite-chat-postgres)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/onyx-lite-chat-postgres/manifest.json

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

## Template content

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

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

### onyx-api https://raw.githubusercontent.com/onyx-dot-app/onyx/v4.7.7/web/public/logo.png

- **Image:** onyxdotapp/onyx-backend:v4.7.7
- **Start command:** `sh -c 'echo IyEvYmluL3NoCiMgUmFpbHdheSBzdGFydCBjb21tYW5kIGZvciB0aGUgT255eCBBUEkgc2VydmVyLgojCiMgbmdpbnggYW5kIHRoZSB3ZWIgc2VydmVyIGJvdGggY2FsbCB0aGlzIHNlcnZpY2Ugb3ZlciBSYWlsd2F5J3MgcHJpdmF0ZSBuZXR3b3JrLCB3aGljaCBpcyBJUHY2CiMgb25seSwgd2hpbGUgUmFpbHdheSdzIG93biBoZWFsdGhjaGVjayBhcnJpdmVzIG92ZXIgSVB2NC4gdXZpY29ybiBjYW4gYmluZCBvbmUgYWRkcmVzcyBmYW1pbHkgYXQgYQojIHRpbWU6IC0taG9zdCAwLjAuMC4wIGxvc2VzIHRoZSBwcml2YXRlIGNhbGxlcnMsIC0taG9zdCA6OiBsb3NlcyB0aGUgaGVhbHRoY2hlY2ssIGJlY2F1c2UgYXN5bmNpbwojIHNldHMgSVBWNl9WNk9OTFkgb24gdGhlIHNvY2tldCBpdCBjcmVhdGVzLiBTbyBjcmVhdGUgdGhlIGxpc3RlbmluZyBzb2NrZXQgaGVyZSB3aXRoCiMgSVBWNl9WNk9OTFkgb2ZmIGFuZCBoYW5kIHV2aWNvcm4gdGhlIGZpbGUgZGVzY3JpcHRvci4Kc2V0IC1lCmFsZW1iaWMgdXBncmFkZSBoZWFkCmVjaG8gIlN0YXJ0aW5nIE9ueXggQXBpIFNlcnZlciIKZXhlYyBweXRob24gLSA8PCdQWScKaW1wb3J0IG9zLCBzb2NrZXQKcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQ2LCBzb2NrZXQuU09DS19TVFJFQU0pCnMuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkKcy5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X1Y2T05MWSwgMCkKcy5iaW5kKCgiOjoiLCBpbnQob3MuZW52aXJvbi5nZXQoIlBPUlQiLCAiODA4MCIpKSkpCnMubGlzdGVuKDIwNDgpCm9zLnNldF9pbmhlcml0YWJsZShzLmZpbGVubygpLCBUcnVlKQpvcy5leGVjdnAoInV2aWNvcm4iLCBbInV2aWNvcm4iLCAib255eC5tYWluOmFwcCIsICItLWZkIiwgc3RyKHMuZmlsZW5vKCkpXSkKUFkK | base64 -d > /tmp/start.sh && exec sh /tmp/start.sh'`
- **Health check:** /health

### Onyx https://raw.githubusercontent.com/onyx-dot-app/onyx/v4.7.7/web/public/logo.png

- **Image:** nginx:1.25.5-alpine
- **Start command:** `sh -c 'echo IyEvYmluL3NoCiMgT255eCBmcm9udCBkb29yIGZvciBSYWlsd2F5LgojCiMgVXBzdHJlYW0ncyBkZXBsb3ltZW50L2RhdGEvbmdpbngvYXBwLmNvbmYudGVtcGxhdGUgY2Fubm90IGJlIHVzZWQgYXMtaXMgaGVyZToKIyAgICogaXQgZGVjbGFyZXMgYHVwc3RyZWFtIGFwaV9zZXJ2ZXIgeyBzZXJ2ZXIgYXBpX3NlcnZlcjo4MDgwOyB9YCwgYW5kIG5naW54CiMgICAgIHJlc29sdmVzIHVwc3RyZWFtIGJsb2NrcyBvbmNlIGF0IGNvbmZpZyBsb2FkIGFuZCB0aGVuIGNhY2hlcyB0aGUgYWRkcmVzcwojICAgICBmb3JldmVyLiBSYWlsd2F5IHByaXZhdGUgSVBzIGNoYW5nZSBvbiBldmVyeSByZWRlcGxveSwgYW5kIHRoZSBuYW1lIGRvZXMKIyAgICAgbm90IHJlc29sdmUgYXQgYWxsIHVudGlsIHRoZSB0YXJnZXQgc2VydmljZSBoYXMgZGVwbG95ZWQsIHNvIG5naW54IGVpdGhlcgojICAgICBjcmFzaC1sb29wcyB3aXRoICJob3N0IG5vdCBmb3VuZCBpbiB1cHN0cmVhbSIgb3IgcGlucyBhIHN0YWxlIGFkZHJlc3MuCiMgICAqIGl0IGxpc3RlbnMgb24gYSBoYXJkY29kZWQgcG9ydCA4MCBhbmQgSVB2NCBvbmx5LgojCiMgU28gdGhpcyBzY3JpcHQgcmVuZGVycyBhbiBlcXVpdmFsZW50IGNvbmZpZyBhdCBib290IHdpdGggYSBydW50aW1lIGByZXNvbHZlcmAKIyBwbHVzIHZhcmlhYmxlcyBpbiBwcm94eV9wYXNzIChyZS1yZXNvbHZlZCBwZXIgcmVxdWVzdCksIGFuZCBsaXN0ZW5zIG9uICRQT1JUCiMgb24gYm90aCBJUHY0IGFuZCBJUHY2LiBSb3V0ZSBtYXAgbWF0Y2hlcyB1cHN0cmVhbSBhcHAuY29uZi50ZW1wbGF0ZS4Kc2V0IC1ldQoKUE9SVD0iJHtQT1JUOi04MH0iCkFQST0iJHtPTllYX0FQSV9IT1NUOj9PTllYX0FQSV9IT1NUIG11c3QgYmUgPGhvc3Q+Ojxwb3J0PiBvZiB0aGUgT255eCBBUEkgc2VydmljZX0iCldFQj0iJHtPTllYX1dFQl9IT1NUOj9PTllYX1dFQl9IT1NUIG11c3QgYmUgPGhvc3Q+Ojxwb3J0PiBvZiB0aGUgT255eCBXZWIgc2VydmljZX0iCkNUPSIke05HSU5YX1BST1hZX0NPTk5FQ1RfVElNRU9VVDotMzAwfSIKU1Q9IiR7TkdJTlhfUFJPWFlfU0VORF9USU1FT1VUOi0zMDB9IgpSVD0iJHtOR0lOWF9QUk9YWV9SRUFEX1RJTUVPVVQ6LTMwMH0iCkJPRFk9IiR7TkdJTlhfQ0xJRU5UX01BWF9CT0RZX1NJWkU6LTVHfSIKCk5TPSIkKGF3ayAnL15uYW1lc2VydmVyLyB7IHByaW50ICQyOyBleGl0IH0nIC9ldGMvcmVzb2x2LmNvbmYpIgpjYXNlICIkTlMiIGluICo6KikgTlM9IlskTlNdIiA7OyBlc2FjCgpIRFJTPSdwcm94eV9zZXRfaGVhZGVyIEhvc3QgJGhvc3Q7IHByb3h5X3NldF9oZWFkZXIgWC1SZWFsLUlQICRyZW1vdGVfYWRkcjsgcHJveHlfc2V0X2hlYWRlciBYLUZvcndhcmRlZC1Gb3IgJHByb3h5X2FkZF94X2ZvcndhcmRlZF9mb3I7IHByb3h5X3NldF9oZWFkZXIgWC1Gb3J3YXJkZWQtUHJvdG8gJG9ueXhfcHJvdG87IHByb3h5X3NldF9oZWFkZXIgWC1Gb3J3YXJkZWQtSG9zdCAkaG9zdDsgcHJveHlfc2V0X2hlYWRlciBYLUZvcndhcmRlZC1Qb3J0ICRzZXJ2ZXJfcG9ydDsnClRNTz0icHJveHlfY29ubmVjdF90aW1lb3V0ICR7Q1R9czsgcHJveHlfc2VuZF90aW1lb3V0ICR7U1R9czsgcHJveHlfcmVhZF90aW1lb3V0ICR7UlR9czsiCgpjYXQgPiAvZXRjL25naW54L2NvbmYuZC9kZWZhdWx0LmNvbmYgPDxOR0lOWApzZXJ2ZXJfdG9rZW5zIG9mZjsKbG9nX2Zvcm1hdCBvbnl4X21haW4gJ1wkcmVtb3RlX2FkZHIgLSBcJHJlbW90ZV91c2VyIFtcJHRpbWVfbG9jYWxdICJcJHJlcXVlc3QiIFwkc3RhdHVzIFwkYm9keV9ieXRlc19zZW50ICJcJGh0dHBfcmVmZXJlciIgIlwkaHR0cF91c2VyX2FnZW50IiBydD1cJHJlcXVlc3RfdGltZSc7CnJlc29sdmVyICROUyB2YWxpZD0zMHM7CnJlc29sdmVyX3RpbWVvdXQgNXM7Cm1hcCBcJGh0dHBfdXBncmFkZSBcJGNvbm5lY3Rpb25fdXBncmFkZSB7IGRlZmF1bHQgdXBncmFkZTsgJycgY2xvc2U7IH0KbWFwIFwkaHR0cF94X2ZvcndhcmRlZF9wcm90byBcJG9ueXhfcHJvdG8geyBkZWZhdWx0IFwkaHR0cF94X2ZvcndhcmRlZF9wcm90bzsgJycgXCRzY2hlbWU7IH0Kc2VydmVyIHsKICAgIGxpc3RlbiAkUE9SVCBkZWZhdWx0X3NlcnZlcjsKICAgIGxpc3RlbiBbOjpdOiRQT1JUIGRlZmF1bHRfc2VydmVyOwogICAgc2VydmVyX25hbWUgXzsKICAgIGFjY2Vzc19sb2cgL3Zhci9sb2cvbmdpbngvYWNjZXNzLmxvZyBvbnl4X21haW47CiAgICBjbGllbnRfbWF4X2JvZHlfc2l6ZSAkQk9EWTsKICAgIGNsaWVudF9oZWFkZXJfYnVmZmVyX3NpemUgMTZrOwogICAgbGFyZ2VfY2xpZW50X2hlYWRlcl9idWZmZXJzIDQgNjRrOwogICAgc2V0IFwkb255eF9hcGkgIiRBUEkiOwogICAgc2V0IFwkb255eF93ZWIgIiRXRUIiOwoKICAgIGxvY2F0aW9uID0gL25naW54LWhlYWx0aCB7IGFjY2Vzc19sb2cgb2ZmOyBhZGRfaGVhZGVyIENvbnRlbnQtVHlwZSB0ZXh0L3BsYWluOyByZXR1cm4gMjAwICJvayI7IH0KCiAgICBsb2NhdGlvbiB+IF4vYXBpLyguKilcJCB7CiAgICAgICAgJEhEUlMKICAgICAgICBwcm94eV9odHRwX3ZlcnNpb24gMS4xOwogICAgICAgIHByb3h5X3NldF9oZWFkZXIgVXBncmFkZSBcJGh0dHBfdXBncmFkZTsKICAgICAgICBwcm94eV9zZXRfaGVhZGVyIENvbm5lY3Rpb24gXCRjb25uZWN0aW9uX3VwZ3JhZGU7CiAgICAgICAgcHJveHlfYnVmZmVyaW5nIG9mZjsKICAgICAgICBwcm94eV9yZWRpcmVjdCBvZmY7CiAgICAgICAgJFRNTwogICAgICAgIHByb3h5X3Bhc3MgaHR0cDovL1wkb255eF9hcGkvXCQxXCRpc19hcmdzXCRhcmdzOwogICAgfQoKICAgIGxvY2F0aW9uID0gL29wZW5hcGkuanNvbiB7CiAgICAgICAgJEhEUlMKICAgICAgICBwcm94eV9odHRwX3ZlcnNpb24gMS4xOwogICAgICAgIHByb3h5X3JlZGlyZWN0IG9mZjsKICAgICAgICAkVE1PCiAgICAgICAgcHJveHlfcGFzcyBodHRwOi8vXCRvbnl4X2FwaS9vcGVuYXBpLmpzb25cJGlzX2FyZ3NcJGFyZ3M7CiAgICB9CgogICAgbG9jYXRpb24gfiBeL2F1dGgvc2FtbCgvLiopP1wkIHsKICAgICAgICAkSERSUwogICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7CiAgICAgICAgcHJveHlfYnVmZmVyaW5nIG9mZjsKICAgICAgICBwcm94eV9yZWRpcmVjdCBvZmY7CiAgICAgICAgJFRNTwogICAgICAgIHByb3h5X3Bhc3MgaHR0cDovL1wkb255eF9hcGlcJHJlcXVlc3RfdXJpOwogICAgfQoKICAgIGxvY2F0aW9uIH4gXi9zY2ltKC8uKik/XCQgewogICAgICAgICRIRFJTCiAgICAgICAgcHJveHlfaHR0cF92ZXJzaW9uIDEuMTsKICAgICAgICBwcm94eV9idWZmZXJpbmcgb2ZmOwogICAgICAgIHByb3h5X3JlZGlyZWN0IG9mZjsKICAgICAgICAkVE1PCiAgICAgICAgcHJveHlfcGFzcyBodHRwOi8vXCRvbnl4X2FwaVwkcmVxdWVzdF91cmk7CiAgICB9CgogICAgbG9jYXRpb24gLyB7CiAgICAgICAgJEhEUlMKICAgICAgICBwcm94eV9odHRwX3ZlcnNpb24gMS4xOwogICAgICAgIHByb3h5X3NldF9oZWFkZXIgVXBncmFkZSBcJGh0dHBfdXBncmFkZTsKICAgICAgICBwcm94eV9zZXRfaGVhZGVyIENvbm5lY3Rpb24gXCRjb25uZWN0aW9uX3VwZ3JhZGU7CiAgICAgICAgcHJveHlfcmVkaXJlY3Qgb2ZmOwogICAgICAgICRUTU8KICAgICAgICBwcm94eV9wYXNzIGh0dHA6Ly9cJG9ueXhfd2ViXCRyZXF1ZXN0X3VyaTsKICAgIH0KfQpOR0lOWAoKZWNobyAib255eC1uZ2lueDogbGlzdGVuaW5nIG9uICRQT1JUOyAvYXBpIC0+ICRBUEk7IC8gLT4gJFdFQiAocmVzb2x2ZXIgJE5TKSIKZXhlYyAvZG9ja2VyLWVudHJ5cG9pbnQuc2ggbmdpbnggLWcgImRhZW1vbiBvZmY7Igo= | base64 -d > /tmp/railway-start.sh && exec sh /tmp/railway-start.sh'`
- **Health check:** /nginx-health
- **Public domain:** Yes

### onyx-web https://raw.githubusercontent.com/onyx-dot-app/onyx/v4.7.7/web/public/logo.png

- **Image:** onyxdotapp/onyx-web-server:v4.7.7

## Documentation

# Deploy and Host Onyx Lite on Railway

Onyx is an open source AI chat platform that works with every LLM. It gives a team a shared, self hosted chat workspace with agents, Projects, actions and tools, MCP support, per user file uploads, real accounts and roles, and SSO. This template deploys Onyx in its official **Lite** configuration, which is the upstream topology for running Onyx without a search index.

## About Hosting Onyx Lite

Onyx ships two documented topologies. The full stack runs ten containers, including OpenSearch, Redis, MinIO, a Celery worker and two machine learning model servers, and upstream sizes it at about 12 CPU and 24 GB of memory. The Lite topology, defined in upstream's own `docker-compose.onyx-lite.yml`, sets `DISABLE_VECTOR_DB=true` and moves caching, sessions and file storage onto PostgreSQL, which removes six of those containers and brings the footprint down to about 2.5 CPU and 1.7 GiB.

This template is the Lite topology: an nginx front door, the FastAPI backend, the Next.js UI, and PostgreSQL. It pins `v4.7.7`, generates `USER_AUTH_SECRET` and `ENCRYPTION_KEY_SECRET` for you, wires every service over Railway's private network with explicit ports, and renders the nginx config at boot so the proxy re-resolves the private DNS names on every redeploy instead of caching a stale address the way upstream's static config would.

The trade is explicit: **connectors and retrieval augmented search are off.** Chat, agents, Projects, tools and user file uploads all work. If you need to index Slack, Google Drive, Confluence or GitHub, use the full stack instead and budget accordingly.

## Common Use Cases

- **A shared team ChatGPT** that you own, pointed at your own OpenAI, Anthropic, Azure, Bedrock or Gemini keys
- **One front door for many models**, with per user accounts, roles and SSO instead of shared API keys
- **Custom agents and Projects** that colleagues can reuse, with system prompts and tools defined once
- **Chat over documents you upload in the conversation**, without standing up a search cluster
- **An MCP aware chat client** for teams already running MCP servers

## Dependencies for Onyx Lite Hosting

- **PostgreSQL**: required, and included. In Lite mode it also holds the cache, the session store and uploaded files.
- **An LLM provider key**: not needed to boot. Onyx starts, migrates and lets you sign up with zero keys, but chat cannot answer until you add a provider in Admin Panel > Configuration > LLM.
- **No Redis, no OpenSearch, no object store, no model servers**: all replaced by PostgreSQL or switched off in Lite mode.

### Deployment Dependencies

- [Onyx self hosting overview](https://docs.onyx.app/deployment/overview)
- [Onyx resource requirements](https://docs.onyx.app/deployment/getting_started/resourcing)
- [Onyx GitHub repository](https://github.com/onyx-dot-app/onyx)

### Implementation Details

Four services. Only the nginx service is public.

```env
# onyx-api
PORT=8080
DISABLE_VECTOR_DB=true
CACHE_BACKEND=postgres
AUTH_BACKEND=postgres
FILE_STORE_BACKEND=postgres
DISABLE_MODEL_SERVER=true
USER_AUTH_SECRET=${{secret(64,"abcdef0123456789")}}
ENCRYPTION_KEY_SECRET=${{secret(32)}}
WEB_DOMAIN=https://${{Onyx.RAILWAY_PUBLIC_DOMAIN}}

# onyx-web
PORT=3000
HOSTNAME=0.0.0.0
INTERNAL_URL=http://${{onyx-api.RAILWAY_PRIVATE_DOMAIN}}:8080

# Onyx (nginx)
PORT=80
ONYX_API_HOST=${{onyx-api.RAILWAY_PRIVATE_DOMAIN}}:8080
ONYX_WEB_HOST=${{onyx-web.RAILWAY_PRIVATE_DOMAIN}}:3000
```

The API server runs `alembic upgrade head` before uvicorn binds, and a fresh database has 440 migrations to apply, so the first deploy takes a few minutes and the healthcheck window is set to 15 minutes.

## First Steps After Deploy

1. Open the **Onyx** service domain and **create the first account. It becomes the admin.** Only addresses at the domain you gave in `VALID_EMAIL_DOMAINS` may register, so a passer by cannot claim the instance.
2. Add an LLM provider in Admin Panel > Configuration > LLM. Any OpenAI compatible base URL works, including a LiteLLM gateway running in the same Railway project.
3. To close registration entirely once your users have accounts: Admin Panel > Organization > Security, turn password signup off.
4. Optionally connect SSO in Admin Panel > Organization > SSO Providers (Google, OIDC or SAML).

Authentication cannot be disabled. `AUTH_TYPE=disabled` was removed in Onyx v4.4, so this deployment is never anonymous.

## Why Deploy Onyx Lite 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 Onyx Lite on Railway, you get the full Onyx chat platform with generated secrets, a managed PostgreSQL volume, health checks, managed SSL and private networking between the proxy, the API and the UI, on a footprint small enough to actually leave running.


## Similar templates

- [Chat Chat](https://railway.com/deploy/-WWW5r) — Chat Chat, your own unified chat and search to AI platform.
- [stella](https://railway.com/deploy/stella) — Self-host stella with web, API, Postgres, Redis, and object storage.
- [Hermes Agent | OpenClaw Alternative with Dashboard](https://railway.com/deploy/hermes-agent-or-openclaw-alternative-wit) — Self-Hosted Hermes AI Agent for Telegram, Discord & Slack

Open this page in a browser: https://railway.com/deploy/onyx-lite-chat-postgres
