← Back to blog

Choose Your Deployment Target First

SillyTavern is a Node.js application with a single writable data directory. That simplicity is what makes selfhosting practical: once Node, the repo, and c…

Published
  • sillytavern
  • deployment
  • docker
  • vps
  • self-hosting
  • tutorial
TargetBest forMain tradeoff
VPSAlways-on access, remote usersMonthly cost; you manage the OS
DockerReproducible upgrades, easy rollbackVolume and permission setup
Home serverZero recurring cost, full hardware controlNAT/firewall and uptime

All three run the same upstream code. Pick based on where your character cards live and who needs to reach them.

Prerequisites (All Targets)

  • Node.js 18+ (20 LTS recommended) and git
  • A non-root user to own the install directory
  • Port 8000 free, or a reverse proxy in front of it
  • A backup habit for data/ — this directory holds your characters, chats, and settings

Option 1: Deploy on a VPS

Step 1 — Provision and harden

Create an Ubuntu 22.04/24.04 instance with at least 1 vCPU and 1 GB RAM (2 GB if you plan to run local inference elsewhere and proxy to it). Create a non-root sudo user, disable password SSH login, and enable a firewall allowing only SSH, HTTP, and HTTPS.

Step 2 — Install Node and clone

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs git
git clone https://github.com/SillyTavern/SillyTavern.git ~/SillyTavern
cd ~/SillyTavern
git checkout release
npm install

Step 3 — Configure for remote access

Edit config.yaml:

  • Set listen: true (or bind to 0.0.0.0)
  • Set whitelistMode: true and add your IPs, or keep it false only behind an authenticated reverse proxy
  • Set basicAuthMode: true with credentials if you are not using a proxy with auth
  • Keep dataRoot at its default so your cards stay under ~/SillyTavern/data

Step 4 — Run as a service

Create a systemd unit that runs node server.js from the install directory as your user, with Restart=on-failure. Enable and start it, then confirm with systemctl status. Put Caddy or Nginx in front for TLS — Caddy handles certificates with a two-line config.

Option 2: Deploy with Docker

Docker is the cleanest path for upgrades: pull a new image, restart, and your data/ volume is untouched.

Step 1 — Compose file

services:
  sillytavern:
    image: ghcr.io/sillytavern/sillytavern:latest
    container_name: sillytavern
    ports:
      - "8000:8000"
    volumes:
      - ./config:/home/node/app/config
      - ./data:/home/node/app/data
    restart: unless-stopped

Step 2 — First run and permissions

Run docker compose up -d, then check logs. If the container cannot write to data/, fix ownership to the container’s node user (UID 1000 by default). Copy the sample config into ./config before the first start if you want to edit config.yaml on the host.

Step 3 — Upgrades

docker compose pull
docker compose up -d

Back up ./data before each pull. Character card imports, group chats, and presets all live there.

Option 3: Deploy on a Home Server

Step 1 — Install and pin the version

Follow the VPS install steps on the host machine. Check out the release branch rather than main so you are not tracking development commits.

Step 2 — Decide how to expose it

  • LAN only: set listen: true, restrict the whitelist to your local subnet, and access via the host’s LAN IP.
  • Remote access: use a mesh VPN (Tailscale, WireGuard) rather than opening a port. It avoids exposing the UI to the internet and needs no certificates.
  • Reverse proxy: if you do forward ports, terminate TLS at Caddy and enable basicAuthMode as a second layer.

Step 3 — Survive reboots

Use systemd or a Docker restart: unless-stopped policy. For home hardware, a UPS and automated data/ backups to another machine cover the realistic failure modes.

Post-Deploy Checklist

  • Confirm data/ is writable and backed up
  • Verify character card import works from the UI
  • Test a group chat and a preset save — these exercise the same data paths
  • Lock down access: auth enabled, firewall minimal, TLS in place
  • Record your upgrade command so the next update is boring

Conclusion

A VPS gives you reach, Docker gives you clean upgrades, and a home server gives you control; the SillyTavern configuration is identical across all three. Once deployed, the front-end experience becomes the bottleneck — which is where the MiniTavern iOS and Android apps, the Web Tavern client, and the Chrome extension come in, all sharing the same character card workflows you just set up. Browse the Character Card Market for ready-made cards, or start with the featured Captain Portia Vane, Harbormaster of the Cloud Wharf, to test your new deployment end to end.

More guides you might like

The 2026 Standard: What to Look For

The character card is the backbone of any SillyTavern experience. It defines the persona, the opening scene, and the behavioral guardrails for the model. W…

  • character-card-generator
  • ai-tools
  • sillytavern
Read more