---
title: "Deploy SillyTavern [Updated Sep '26]"
description: "SillyTavern — LLM Frontend, Auto-Secured Admin Password"
category: "AI/ML"
url: https://railway.com/deploy/sillytavern-llm
---

# Deploy SillyTavern [Updated Sep '26]

SillyTavern — LLM Frontend, Auto-Secured Admin Password

**[Deploy SillyTavern [Updated Sep '26] on Railway](https://railway.com/template/sillytavern-llm)**

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

- **Creator:** shruistic
- **Category:** AI/ML

## Template content

### SillyTavern-v2 https://sillytavern.app/img/logo.png

- **Image:** ghcr.io/sillytavern/sillytavern:latest
- **Start command:** `sh -c 'PERSIST_DIR="/home/node/app/persist"; mkdir -p "$PERSIST_DIR"; for d in config data plugins; do if [ ! -L "./$d" ]; then if [ -e "$PERSIST_DIR/$d" ]; then rm -rf "./$d"; else mv "./$d" "$PERSIST_DIR/$d"; fi; ln -s "$PERSIST_DIR/$d" "./$d"; fi; done; [ -e "config/config.yaml" ] || cp default/config.yaml config/config.yaml; npm run init; if [ -n "$SILLYTAVERN_ADMIN_PASSWORD" ]; then node recover.js default-user "$SILLYTAVERN_ADMIN_PASSWORD"; fi; exec ./docker-entrypoint.sh'`
- **Health check:** /login
- **Public domain:** Yes

## Documentation

# Deploy and Host SillyTavern on Railway

SillyTavern is an open-source, locally-installed interface for text-generation LLMs, image-generation engines, and TTS voice models — built for AI hobbyists who want real control over their prompts, personas, and world info, not a stripped-down chat box. Beginning in February 2023 as a fork of TavernAI 1.2.8, it now has over 200 contributors and multiple years of independent development behind it. This template deploys SillyTavern's official image directly and fixes the one real gap every other SillyTavern-on-Railway template documents but doesn't solve: the default account ships with no password.

## About Hosting SillyTavern

This template runs `ghcr.io/sillytavern/sillytavern:latest` — the project's own official Docker image — unmodified. What this template adds sits entirely in the start command: relocating SillyTavern's stateful directories onto a single Railway volume, and seeding a real password onto the app's default account before the server ever starts accepting connections. Nothing about how SillyTavern itself behaves is changed.

That last part matters more than it might sound. SillyTavern's multi-user account system creates a `default-user` account on first boot, and by design it has no password — the app has no way to know what you'd want it to be. Every reference template for SillyTavern on Railway documents this with some version of "change the password as soon as you're able to access ST." That's a real security gap for however long it takes you to notice the warning, log in, and act on it. This template closes that window entirely: a password is generated automatically and applied via SillyTavern's own recovery tooling before your instance is reachable by anyone.

## Common Use Cases

- **Roleplay and creative writing**: character cards, persistent personas, and rich world-info injection for long-running stories
- **A personal AI assistant**: SillyTavern's prompt engineering tools and command system work just as well for utility chat as for roleplay
- **Group chats**: multiple AI characters interacting with you and each other in the same conversation
- **Experimenting with local or API-based LLMs**: SillyTavern is backend-agnostic — point it at OpenAI, Anthropic, a local Kobold/text-generation-webui instance, or dozens of other supported providers

## Dependencies for SillyTavern Hosting

Running this template needs nothing beyond the container itself and one persistent volume — SillyTavern has no external database or separate services to wire up. The one thing you bring yourself is an LLM backend to actually talk to (an API key for a hosted provider, or a self-hosted model server reachable from Railway), which you configure from inside SillyTavern's own settings after you log in.

### Deployment Dependencies

- [SillyTavern's Source Code](https://github.com/SillyTavern/SillyTavern) — AGPL-3.0
- [SillyTavern's Official Documentation](https://docs.sillytavern.app/)
- [SillyTavern's Official Docker Image](https://github.com/SillyTavern/SillyTavern/pkgs/container/sillytavern)

### Implementation Details

The official image expects several independently-writable directories — `config`, `data`, `plugins`, and `backups` — which doesn't map cleanly onto Railway's one-volume-per-service model. This template's start command handles that on first boot: each directory gets moved onto the volume (mounted at `/home/node/app/persist`) and replaced with a symlink, so from the app's perspective nothing changed, but everything now persists across redeploys — characters, chat logs, config edits made through the UI, and any plugins you install.

After that relocation, the start command runs SillyTavern's own `recover.js` script — a tool that ships in the image for exactly this purpose, normally run by hand via SSH — against the `default-user` account, setting its password to the auto-generated value in `SILLYTAVERN_ADMIN_PASSWORD`. Only then does it hand off to the image's own entrypoint. The whole sequence adds a few hundred milliseconds to boot time and runs identically on every restart, so it's a no-op after the first successful run.

Every configuration value SillyTavern reads from `config.yaml` can also be set as an environment variable, using a naming convention (`SILLYTAVERN_`) built into SillyTavern itself rather than something this template layers on top. That's what sets networking (`SILLYTAVERN_LISTEN`, `SILLYTAVERN_WHITELISTMODE`) and the account system (`SILLYTAVERN_ENABLEUSERACCOUNTS`) — no custom config templating, no `envsubst` step, just the app reading its own environment.

## Why Deploy SillyTavern on Railway?

Railway is a singular platform for deploying your infrastructure — no server management, no manually wiring up TLS or a reverse proxy, and volumes that persist without you thinking about backup strategy on day one. For a personal LLM frontend like SillyTavern, that removes the entire "how do I expose this safely and keep my chat history" problem, leaving you to actually configure the thing and talk to your characters.

Beyond the infrastructure, this template specifically closes a real gap: deploying SillyTavern on your own infrastructure means you're responsible for securing it, and "responsible" shouldn't mean "remembered to read the warning in the README before someone else found the URL." Automating the password step doesn't just save a manual action — it removes an entire class of "I'll get to it later" security debt.

## What Was Verified

This wasn't verified by watching the deploy log turn green — it was verified by actually logging in. Deployed fresh (new volume, no build cache), the `SILLYTAVERN_ADMIN_PASSWORD` value was pulled directly from the running deployment's variables and used to authenticate as `default-user` against the live instance, which returned a successful session. `GET /login` returns `200` directly; `GET /` correctly 302-redirects an unauthenticated visitor to `/login`, which is SillyTavern's own intended behavior with accounts enabled.

Persistence was verified across a redeploy as well — the volume-backed symlinks for `config`, `data`, and `plugins` survive a full container restart, so character cards and chat history aren't lost the next time you push a change or Railway cycles the deployment.

One thing worth flagging explicitly: the healthcheck path matters here. `GET /` redirects (302) to `/login` whenever accounts are enabled, and Railway's healthcheck doesn't follow redirects — leaving it at the default `/` fails every deploy, even though the app is perfectly healthy. `/login` is the correct target: it returns `200` directly, pre-auth, and passes cleanly. This is set correctly in the template's own service config; if you're adapting the start command elsewhere, don't forget to point the healthcheck at `/login` too.

## Frequently Asked Questions

### Why doesn't the default account have a password by default?
It's how SillyTavern's own account system works — a `default-user` account is created on first boot with no password, since the app has no way to know what you'd want set. This template is what actually fixes that, rather than just warning you about it.

### Is my instance ever reachable without a password?
No — the password is set before the server starts accepting connections, using SillyTavern's own recovery script. There's no boot-then-set-later window.

### Can I change the password afterward?
Yes, from inside SillyTavern's own account settings once you're logged in. The auto-generated value is just what gets you in the door the first time.

### Does this template modify SillyTavern's code?
No. It's the unmodified official image — the only difference from a bare `docker run` is the start command's setup sequence, which relocates directories and runs a script the image already ships with.

### Why is the healthcheck path `/login` instead of `/`?
`GET /` redirects when accounts are enabled, and Railway's healthcheck doesn't follow redirects — pointing it at `/` fails every deploy regardless of whether the app is healthy. `/login` returns `200` directly without needing a session, so it's the path that actually reflects whether the app is up.

### Where can I download SillyTavern?
Source is on GitHub at [github.com/SillyTavern/SillyTavern](https://github.com/SillyTavern/SillyTavern). Use this template to deploy the official image with the account-security gap closed automatically, in one click.

Source for this template's docs: https://github.com/shruti060701/sillytavern-railway

## 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/sillytavern-llm
