Railway

Deploy Odysseus

odysseus from pewdiepie. Self-hosted AI workspace. odyseus

Deploy Odysseus

Just deployed

/data

Just deployed

/var/cache/ntfy

Just deployed

/etc/searxng

Just deployed

/app/data

Deploy and Host Odysseus on Railway

Odysseus is a self-hosted AI workspace for chat, agents, tools, documents, memory, research, email, and model integrations. This Railway template deploys Odysseus with supporting services so you can run the web UI online while connecting it to external LLM APIs or a remote OpenAI-compatible endpoint.

About Hosting Odysseus

This template deploys a multi-service Odysseus stack on Railway: the main Odysseus app, ChromaDB for vector storage, SearXNG for web search, and ntfy for notifications. The services communicate over Railway private networking, while only the Odysseus web app is exposed publicly by default. Persistent volumes are used so application data, uploads, vectors, and service state survive redeploys. This template is intended for cloud-hosted Odysseus usage with external model providers such as OpenAI, OpenRouter, Anthropic-compatible gateways, or a remote Ollama/OpenAI-compatible server. It is not meant to run heavy local LLM inference inside Railway.

Common Use Cases

  • Host a private AI workspace with chat, memory, tools, and document search.
  • Use Odysseus with external LLM APIs instead of running local models.
  • Run web research workflows through the bundled private SearXNG service.
  • Upload documents and query them through Chroma-backed RAG.
  • Test agent workflows, reminders, notifications, email tools, and MCP-style integrations.

Dependencies for Odysseus Hosting

  • Odysseus web app
  • ChromaDB vector database
  • SearXNG metasearch engine
  • ntfy notification service
  • Railway persistent volumes
  • External LLM API key or remote OpenAI-compatible/Ollama endpoint

Deployment Dependencies

Relevant links:

Implementation Details

This template creates four Railway services:

odysseus  -> public web app, persistent volume mounted at /app/data
chroma    -> private ChromaDB service, persistent volume mounted at /data
searxng   -> private SearXNG service with JSON search enabled
ntfy      -> private notification service, persistent volume mounted at /var/cache/ntfy

Only the odysseus service should have a public domain by default. The chroma, searxng, and ntfy services should remain private and communicate with Odysseus through Railway private networking.

First Login: Where to Find the Username and Password

After deploying the template, open your Railway project and select the odysseus service.

Go to:

odysseus service -> Variables

Find these variables:

ODYSSEUS_ADMIN_USER="admin"
ODYSSEUS_ADMIN_PASSWORD="${{secret(32)}}"

Railway generates the real password from ${{secret(32)}} when the template is deployed. In the Railway UI, the generated value is available in the Variables tab for the odysseus service. Use:

Username: value of ODYSSEUS_ADMIN_USER
Password: value of ODYSSEUS_ADMIN_PASSWORD

Then open the public Odysseus URL and log in with those credentials.

If you change ODYSSEUS_ADMIN_PASSWORD after the first successful setup, it may not reset an already-created admin account because Odysseus stores auth data in the persistent /app/data volume. For a fresh template deployment, the generated variables are the credentials to use for the first login.

Recommended Default Model

After first login, go to the Odysseus model/provider settings and configure an external LLM provider.

For the best first experience with tools and memory, set Claude Sonnet 4.6 as the default model if it is available through your provider. Sonnet is generally a better default than Haiku for tool-heavy workflows such as Memory MCP, RAG, agents, and multi-step tasks.

Haiku can be faster and cheaper, but it may answer directly instead of calling tools in some setups. If you are testing Memory MCP, prefer Sonnet 4.6 first, then switch to Haiku later only after confirming your tools work.

Recommended first model setup:

Default model: Claude Sonnet 4.6
Use for: chat, agents, Memory MCP, RAG, tool use
Avoid for first Memory MCP test: Haiku

Memory MCP Test

After setting a capable default model such as Claude Sonnet 4.6, test Memory MCP from the Odysseus chat.

Send:

Call the tool mcp__memory__manage_memory with action "add", category "fact", and text "My Railway Odysseus template is working."

Then send:

Call the tool mcp__memory__manage_memory with action "search" and text "Railway Odysseus template".

Expected result: Odysseus should add the memory, then retrieve it from memory search.

If the model replies that it has no memory access, check that tools/agent mode are enabled in the UI and use Sonnet 4.6 instead of Haiku for the test.

Recommended Odysseus Variables

AUTH_ENABLED="true" # enable authentication
LOCALHOST_BYPASS="false" # disable localhost auth bypass for public deployments
ODYSSEUS_ADMIN_USER="admin" # initial admin username
ODYSSEUS_ADMIN_PASSWORD="${{secret(32)}}" # generated admin password shown in Railway Variables

DATABASE_URL="sqlite:///./data/app.db" # SQLite database stored under /app/data

CHROMADB_HOST="${{chroma.RAILWAY_PRIVATE_DOMAIN}}" # private Chroma hostname
CHROMADB_PORT="8000" # internal Chroma port

SEARXNG_INSTANCE="http://${{searxng.RAILWAY_PRIVATE_DOMAIN}}:8080" # private SearXNG URL
NTFY_BASE_URL="http://${{ntfy.RAILWAY_PRIVATE_DOMAIN}}:80" # private ntfy URL

ALLOWED_ORIGINS="https://${{odysseus.RAILWAY_PUBLIC_DOMAIN}}" # public Odysseus origin
SECURE_COOKIES="true" # secure cookies over Railway HTTPS

LLM_HOST="localhost" # compatibility default; not used for local inference on Railway

FASTEMBED_MODEL="sentence-transformers/all-MiniLM-L6-v2" # default embedding model
FASTEMBED_CACHE_PATH="/app/data/fastembed" # persistent FastEmbed cache

CLEANUP_INTERVAL_HOURS="24" # background cleanup interval
ODYSSEUS_INPROCESS_POLLERS="1" # enable internal pollers
ODYSSEUS_INPROCESS_TASKS="1" # enable internal task scheduler
ODYSSEUS_SCRIPT_HOST="localhost" # internal script host

PUID="1000" # non-root runtime user ID
PGID="1000" # non-root runtime group ID

PLAYWRIGHT_BROWSERS_PATH="/ms-playwright" # Playwright browser path inside the image
NODE_OPTIONS="--max-old-space-size=4096" # Node.js memory limit for MCP/Playwright

Optional provider variables can be added when needed:

OPENAI_API_KEY="" # optional OpenAI API key
OLLAMA_BASE_URL="" # optional remote Ollama URL
RESEARCH_LLM_ENDPOINT="" # optional Deep Research LLM endpoint
TAVILY_API_KEY="" # optional Tavily Search API key
SERPER_API_KEY="" # optional Serper Search API key
DATA_BRAVE_API_KEY="" # optional Brave Search API key
GOOGLE_API_KEY="" # optional Google API key
GOOGLE_PSE_CX="" # optional Google Programmable Search Engine ID
HF_TOKEN="" # optional Hugging Face token
HUGGING_FACE_HUB_TOKEN="" # optional Hugging Face Hub token
EMBEDDING_URL="" # optional OpenAI-compatible embeddings endpoint
EMBEDDING_MODEL="" # optional embedding model for EMBEDDING_URL
LLM_HOSTS="" # optional additional LLM hosts

After Deployment

  1. Open the public Odysseus URL.
  2. Log in using the credentials from the odysseus service Variables tab.
  3. Add your preferred external model provider in the Odysseus UI.
  4. Set Claude Sonnet 4.6 as the default model if available.
  5. Test a simple prompt, for example: Reply only: OK_RAILWAY.
  6. Test Memory MCP with Sonnet 4.6 before trying Haiku.
  7. Test web search through SearXNG.
  8. Upload a small document and test RAG.
  9. Redeploy Odysseus and confirm that your data persists.

For mobile ntfy notifications, expose the ntfy service publicly and update the ntfy base URL to the public Railway domain. The default template keeps ntfy private, which is enough for internal Odysseus notification delivery.

Why Deploy Odysseus 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 Odysseus 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.


Template Content

More templates in this category

View Template
Chat Chat
Chat Chat, your own unified chat and search to AI platform.

okisdev
View Template
Hermes Agent | OpenClaw Alternative with Dashboard
Self-improving AI agent with memory, skills, and web dashboard 🤖

codestorm
View Template
EchoDeck
Generate a mp4 from powerpoint with TTS

Fixed Scope