---
title: "Deploy nao"
description: "Self-hosted analytics chat with context-aware AI insights"
category: "AI/ML"
url: https://railway.com/deploy/nao-1
---

# Deploy nao

Self-hosted analytics chat with context-aware AI insights

**[Deploy nao on Railway](https://railway.com/template/nao-1)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/nao-1/manifest.json

- **Creator:** kmaki's Projects
- **Category:** AI/ML

## Template content

### app

- **Image:** getnao/nao:0.3.24
- **Start command:** `/entrypoint.sh`
- **Public domain:** Yes

## Documentation

# Deploy and Host nao on Railway

nao is an open-source analytics chat application that lets teams explore structured data and project context through natural-language conversations. It combines a Fastify backend, React web interface, Python query sidecar, DuckDB tooling, and configurable LLM providers, giving analysts a browser-based workspace for asking questions, generating insights, and sharing data-driven stories.

## About Hosting nao on Railway

Railway runs the pinned upstream Docker image directly with a generated public domain and routes traffic to nao's HTTP server on port 5005. The deployment uses the bundled example project and SQLite database for a simple single-service setup.

## Tech Stack

- Fastify and tRPC backend
- React and Vite frontend
- Python FastAPI query sidecar
- Bun runtime
- SQLite and DuckDB
- Configurable OpenAI-compatible LLM providers
- Docker on Railway

## Why Deploy nao on Railway

Railway provides one-click container deployment, managed networking, automatic HTTPS, environment-variable secrets, and straightforward service logs. nao starts from a maintained upstream image without source-based builds, making the deployment quick to reproduce and easy to operate.

## Common Use Cases

- Ask natural-language questions about analytics data
- Explore a bundled nao context project in a browser
- Build data-driven stories and visual insights
- Connect an LLM provider through environment variables or application settings
- Run a lightweight self-hosted analytics workspace

## Deployment Notes

The HTTP service listens on port 5005; both PORT and SERVER_PORT are set to 5005, and the Railway domain targets that port. BETTER_AUTH_URL uses Railway's generated public-domain variable, while BETTER_AUTH_SECRET is generated automatically. The first user can create an account on a fresh database; nao does not provide a built-in default username or password. No volume is included because the upstream image runs as a non-root user and fresh Railway volume mounts require explicit ownership handling. SQLite and local storage are therefore ephemeral until a correctly owned persistent volume is added. Configure an LLM provider before using chat features.

## Dependencies for nao on Railway

This template is self-contained and has no database or worker dependency. The app image includes the web UI, backend, FastAPI sidecar, migrations, and bundled example context.

### Deployment Dependencies

| Service | Image | Port | Volume |
|---------|-------|------|--------|
| app | getnao/nao:0.3.24 | 5005 | - |

## 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/nao-1
