---
title: "Deploy New API LLM Gateway"
description: "Self-hosted LLM gateway with a preset root login, Postgres and Redis"
category: "AI/ML"
url: https://railway.com/deploy/new-api-llm-gateway
---

# Deploy New API LLM Gateway

Self-hosted LLM gateway with a preset root login, Postgres and Redis

**[Deploy New API LLM Gateway on Railway](https://railway.com/template/new-api-llm-gateway)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/new-api-llm-gateway/manifest.json

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

## Template content

### New API https://raw.githubusercontent.com/QuantumNous/new-api/main/web/public/logo.png

- **Image:** calciumion/new-api:v1.0.0-rc.49
- **Start command:** `sh -c 'echo QlA9IiR7TkVXX0FQSV9CT09UU1RSQVBfUE9SVDotMzk5OX0iClU9IiR7TkVXX0FQSV9BRE1JTl9VU0VSTkFNRTotcm9vdH0iClA9IiR7TkVXX0FQSV9BRE1JTl9QQVNTV09SRDotfSIKQj0iaHR0cDovLzEyNy4wLjAuMTokQlAiCnBpZD0iIgpsb2coKSB7IGVjaG8gIltyYWlsd2F5LWJvb3RzdHJhcF0gJCoiOyB9CnN0b3AoKSB7CiAgWyAtbiAiJHBpZCIgXSB8fCByZXR1cm4gMAogIGtpbGwgLVRFUk0gIiRwaWQiIDI+L2Rldi9udWxsCiAgaT0wCiAgd2hpbGUga2lsbCAtMCAiJHBpZCIgMj4vZGV2L251bGwgJiYgWyAiJGkiIC1sdCAzMCBdOyBkbyBzbGVlcCAxOyBpPSQoKGkgKyAxKSk7IGRvbmUKICBraWxsIC1LSUxMICIkcGlkIiAyPi9kZXYvbnVsbAogIHdhaXQgIiRwaWQiIDI+L2Rldi9udWxsCiAgcGlkPSIiCn0KZmFpbCgpIHsgbG9nICJGQVRBTDogJCoiOyBzdG9wOyBleGl0IDE7IH0KcG9zdCgpIHsgd2dldCAtcSAtTyAtIC0tY29udGVudC1vbi1lcnJvciAtLWhlYWRlciAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uJyAiJEAiIDI+L2Rldi9udWxsOyB9CnRyYXAgJ3N0b3A7IGV4aXQgMTQzJyBURVJNIElOVAphdHRlbXB0PTAKd2hpbGUgOjsgZG8KICBhdHRlbXB0PSQoKGF0dGVtcHQgKyAxKSkKICBQT1JUPSIkQlAiIC9uZXctYXBpICIkQCIgJgogIHBpZD0kIQogIG49MAogIHVwPTAKICB3aGlsZSBraWxsIC0wICIkcGlkIiAyPi9kZXYvbnVsbDsgZG8KICAgIGlmIHdnZXQgLXEgLU8gL2Rldi9udWxsICIkQi9hcGkvc3RhdHVzIiAyPi9kZXYvbnVsbDsgdGhlbiB1cD0xOyBicmVhazsgZmkKICAgIG49JCgobiArIDEpKQogICAgWyAiJG4iIC1ndCAyNDAgXSAmJiBmYWlsICJuZXctYXBpIGRpZCBub3QgYW5zd2VyIG9uIHRoZSBib290c3RyYXAgcG9ydCB3aXRoaW4gMjQwIHMiCiAgICBzbGVlcCAxCiAgZG9uZQogIFsgIiR1cCIgPSAxIF0gJiYgYnJlYWsKICB3YWl0ICIkcGlkIiAyPi9kZXYvbnVsbAogIHBpZD0iIgogIFsgIiRhdHRlbXB0IiAtZ2UgNDAgXSAmJiB7IGxvZyAiRkFUQUw6IG5ldy1hcGkgZXhpdGVkIGR1cmluZyBib290c3RyYXAgNDAgdGltZXMgKGRhdGFiYXNlIG9yIFJlZGlzIHVucmVhY2hhYmxlPykiOyBleGl0IDE7IH0KICBsb2cgIm5ldy1hcGkgZXhpdGVkIGJlZm9yZSBpdCB3YXMgcmVhZHkgKGF0dGVtcHQgJGF0dGVtcHQpLCByZXRyeWluZyBpbiAzIHMiCiAgc2xlZXAgMwpkb25lCmNhc2UgIiQod2dldCAtcSAtTyAtICIkQi9hcGkvc2V0dXAiIDI+L2Rldi9udWxsKSIgaW4KICAqJyJzdGF0dXMiOnRydWUnKikgbG9nICJpbnN0YW5jZSBhbHJlYWR5IGluaXRpYWxpemVkIiA7OwogIConInN0YXR1cyI6ZmFsc2UnKikKICAgIFsgIiR7I1B9IiAtZ2UgOCBdIHx8IGZhaWwgIk5FV19BUElfQURNSU5fUEFTU1dPUkQgbXVzdCBiZSBhdCBsZWFzdCA4IGNoYXJhY3RlcnMiCiAgICBbICIkeyNVfSIgLWxlIDEyIF0gfHwgZmFpbCAiTkVXX0FQSV9BRE1JTl9VU0VSTkFNRSBtdXN0IGJlIDEyIGNoYXJhY3RlcnMgb3IgZmV3ZXIiCiAgICBjYXNlICIkVSRQIiBpbiAqJyInKiB8IConXCcqKSBmYWlsICJORVdfQVBJX0FETUlOX1VTRVJOQU1FIC8gTkVXX0FQSV9BRE1JTl9QQVNTV09SRCBtdXN0IG5vdCBjb250YWluIGEgZG91YmxlIHF1b3RlIG9yIGJhY2tzbGFzaCIgOzsgZXNhYwogICAgcj0iJChwb3N0IC0tcG9zdC1kYXRhICJ7XCJ1c2VybmFtZVwiOlwiJFVcIixcInBhc3N3b3JkXCI6XCIkUFwiLFwiY29uZmlybVBhc3N3b3JkXCI6XCIkUFwiLFwiU2VsZlVzZU1vZGVFbmFibGVkXCI6ZmFsc2UsXCJEZW1vU2l0ZUVuYWJsZWRcIjpmYWxzZX0iICIkQi9hcGkvc2V0dXAiKSIKICAgIGNhc2UgIiRyIiBpbgogICAgICAqJyJzdWNjZXNzIjp0cnVlJyopIGxvZyAicm9vdCBhY2NvdW50IGNyZWF0ZWQgZnJvbSBORVdfQVBJX0FETUlOX1VTRVJOQU1FIC8gTkVXX0FQSV9BRE1JTl9QQVNTV09SRCIgOzsKICAgICAgKikgZmFpbCAiUE9TVCAvYXBpL3NldHVwIHdhcyByZWplY3RlZDogJHIiIDs7CiAgICBlc2FjCiAgICA7OwogICopIGZhaWwgInVuZXhwZWN0ZWQgYW5zd2VyIGZyb20gR0VUIC9hcGkvc2V0dXAiIDs7CmVzYWMKaWYgWyAiJHtORVdfQVBJX1JFR0lTVEVSX0VOQUJMRUQ6LWZhbHNlfSIgIT0gInRydWUiIF07IHRoZW4KICBjYXNlICIkKHdnZXQgLXEgLU8gLSAiJEIvYXBpL3N0YXR1cyIgMj4vZGV2L251bGwpIiBpbgogICAgKicicmVnaXN0ZXJfZW5hYmxlZCI6dHJ1ZScqKQogICAgICB0PSIkKHBvc3QgLS1wb3N0LWRhdGEgIntcInVzZXJuYW1lXCI6XCIkVVwiLFwicGFzc3dvcmRcIjpcIiRQXCJ9IiAiJEIvYXBpL3VzZXIvbG9naW4iIHwgc2VkIC1uICdzLy4qImFjY2Vzc190b2tlbiI6IlwoW14iXSpcKSIuKi9cMS9wJykiCiAgICAgIGlmIFsgLW4gIiR0IiBdOyB0aGVuCiAgICAgICAgcj0iJChwb3N0IC0taGVhZGVyICJBdXRob3JpemF0aW9uOiBCZWFyZXIgJHQiIC0tbWV0aG9kPVBVVCAtLWJvZHktZGF0YSAneyJrZXkiOiJSZWdpc3RlckVuYWJsZWQiLCJ2YWx1ZSI6ImZhbHNlIn0nICIkQi9hcGkvb3B0aW9uLyIpIgogICAgICAgIGNhc2UgIiRyIiBpbgogICAgICAgICAgKicic3VjY2VzcyI6dHJ1ZScqKSBsb2cgInNlbGYgcmVnaXN0cmF0aW9uIGRpc2FibGVkIChzZXQgTkVXX0FQSV9SRUdJU1RFUl9FTkFCTEVEPXRydWUgdG8gYWxsb3cgc2lnbnVwcykiIDs7CiAgICAgICAgICAqKSBmYWlsICJjb3VsZCBub3QgZGlzYWJsZSBzZWxmIHJlZ2lzdHJhdGlvbjogJHIiIDs7CiAgICAgICAgZXNhYwogICAgICBlbHNlCiAgICAgICAgbG9nICJXQVJOSU5HOiBzZWxmIHJlZ2lzdHJhdGlvbiBpcyBPTiBhbmQgbG9naW4gd2l0aCBORVdfQVBJX0FETUlOX1BBU1NXT1JEIGZhaWxlZCAocGFzc3dvcmQgY2hhbmdlZCBpbiB0aGUgVUk/KS4gVHVybiBpdCBvZmYgaW4gU2V0dGluZ3Mgb3Igc2V0IE5FV19BUElfUkVHSVNURVJfRU5BQkxFRD10cnVlIHRvIHNpbGVuY2UgdGhpcy4iCiAgICAgIGZpCiAgICAgIDs7CiAgZXNhYwpmaQpzdG9wCnRyYXAgLSBURVJNIElOVApsb2cgImJvb3RzdHJhcCBkb25lLCBzdGFydGluZyBOZXcgQVBJIG9uIHBvcnQgJHtQT1JUOi0zMDAwfSIKZXhlYyAvbmV3LWFwaSAiJEAiCg== | base64 -d > /tmp/railway-start.sh && exec sh /tmp/railway-start.sh'`
- **Health check:** /api/status
- **Public domain:** Yes

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

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

### Redis https://avatars.githubusercontent.com/u/1529926?v=4

- **Image:** redis:8.2.10
- **Start command:** `sh -c 'exec docker-entrypoint.sh redis-server --requirepass "$REDIS_PASSWORD" --save "" --appendonly no --bind :: 0.0.0.0'`

## Documentation

# Deploy and Host New API on Railway

New API is an open source, self-hosted LLM gateway. It puts OpenAI, Claude and Gemini compatible APIs in front of upstream providers such as OpenAI, Anthropic and Google, with model routing, API tokens, per user quotas, usage logs and cost accounting, all managed from a web console.

## About Hosting New API

Hosting New API means running the Go gateway next to PostgreSQL for durable data and Redis for caching and rate limits, the same three services as the official Docker Compose file. This template pins the official `calciumion/new-api:v1.0.0-rc.49` image, sets `PORT=3000` so the Railway healthcheck hits `/api/status`, and generates `SESSION_SECRET` and `CRYPTO_SECRET` so logins survive redeploys.

New API ships without a default account: until setup is finished, anyone who opens the URL can make themselves the root user, and self registration is open by default. This template closes both gaps. Before the public port opens, the start command creates the root account from a password generated for your deploy and turns self registration off.

## Common Use Cases

- **One endpoint for every model**: OpenAI, Claude and Gemini style clients all talk to one base URL
- **Key management**: keep provider keys on the server and hand out revocable `sk-` tokens with quotas
- **Routing and failover**: weight, prioritise and retry across several channels for the same model
- **Usage and cost tracking**: per token, per user and per model logs and dashboards
- **Team or customer gateway**: groups, quotas and optional top ups when you open registration

## Dependencies for New API Hosting

- **PostgreSQL**: users, tokens, channels and logs (included, with a volume)
- **Redis**: cache and rate limits (included, no volume needed)
- **Provider API keys**: optional at boot; add them as channels in the console

### Deployment Dependencies

- [New API installation docs](https://docs.newapi.ai/en/docs/installation)
- [Environment variable reference](https://docs.newapi.ai/en/docs/installation/config-maintenance/environment-variables)
- [New API GitHub repository](https://github.com/QuantumNous/new-api)

### Implementation Details

First steps after deploy:

1. Open the New API service variables and copy `NEW_API_ADMIN_PASSWORD`.
2. Open the public URL and log in as `root` with that password.
3. Add a channel with a provider API key, then create a token.
4. Use `https:///v1` as the base URL in any OpenAI compatible client.

Key variables:

```env
PORT=3000
NEW_API_ADMIN_USERNAME=root
NEW_API_ADMIN_PASSWORD=${{secret(24)}}
NEW_API_REGISTER_ENABLED=false
SQL_DSN=${{Postgres.DATABASE_PRIVATE_URL}}
REDIS_CONN_STRING=${{Redis.REDIS_URL}}
SESSION_SECRET=${{secret(48)}}
CRYPTO_SECRET=${{secret(48)}}
SESSION_COOKIE_SECURE=true
SESSION_COOKIE_TRUSTED_URL=https://${{RAILWAY_PUBLIC_DOMAIN}}
```

`NEW_API_ADMIN_PASSWORD` is only applied on the first boot; change it later in the console. If you attach a custom domain, add its `https://` origin to `SESSION_COOKIE_TRUSTED_URL`. Set `NEW_API_REGISTER_ENABLED=true` if you want public signups. To upgrade, change the image tag on the New API service.

## Why Deploy New API 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 New API 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/new-api-llm-gateway
