SillyTavern on Ubuntu — ローカルLLMキャラクターチャットUIの構築

ローカルLLM

「OllamaやLM Studioでローカルモデルを動かしたのはいいけど、チャット画面が味気ない」——そう感じたことはありませんか。SillyTavernは、そのかゆいところに手が届くWebUIです。キャラクター設定・ロールプレイ・複数のLLMバックエンドへの切り替えなど、ヘビーユーザー向けの機能が詰まっています。

本記事では Ubuntu 24.04 LTS 上に SillyTavern をセルフホストする手順を、実際に公式Dockerイメージを起動して取得したコマンド出力と、Playwright で撮影したGUIスクリーンショットをもとに解説します。npmレジストリ・docker inspect・起動中コンテナの実挙動から取った一次データだけで構成しているので、「本当に動く手順」だけが残っています。

この記事のポイント(実測ベース)

  • SillyTavern の最新版は 1.18.0、動作要件は node >= 20(npmレジストリで確認)。ライセンスは AGPL-3.0
  • Ubuntu 24.04 標準aptの nodejs 候補は 18.19.1 で、要件の Node 20 に届かない。NodeSource か公式Dockerイメージで20以上を用意する
  • 最短ルートは公式Dockerイメージ ghcr.io/sillytavern/sillytavern:latest。中身は Node.js 24.15.0 同梱で、何も入れずに http://localhost:8000 で開く
  • SillyTavern単体では会話できない。Ollama・OpenAI・Claudeなど別バックエンドへの接続が必須(実測でChat Completion 25種・Text Completion 15種に対応)
  • デフォルトはホワイトリストが有効で、外部からのアクセスは 403 になる(実測)。VPS公開時はSSHトンネルが安全

目次

  1. SillyTavernとは何か
  2. 動作確認済み環境とバージョン実測
  3. なぜNode.js 20以上が必要なのか
  4. インストール手順A:公式Dockerイメージ(最短)
  5. インストール手順B:git clone + npm(VPSセルフホスト)
  6. 起動と初期画面の確認
  7. LLMバックエンドの接続設定
  8. キャラクターの選択と会話
  9. よくあるエラーと解決策
  10. まとめ

SillyTavernとは何か

SillyTavern(シリータバーン)はオープンソースのローカルLLM向けフロントエンドUIです。もともと TavernAI をフォークして生まれ、いまは独立したプロジェクトとして活発にメンテナンスされています。npmレジストリ(https://registry.npmjs.org/sillytavern)を実際に叩いて確認したところ、最新版は 1.18.0、ライセンスは AGPL-3.0 でした。

SillyTavern自体はLLMを内蔵していません。ブラウザとLLMバックエンドの間に立って、キャラクター設定やプロンプトを組み立てて橋渡しをする「ガワ」です。構成をざっくり図にすると次のようになります。

SillyTavernの構成(ブラウザ→サーバー→LLMバックエンド、概念図)
SillyTavernの構成(ブラウザ→サーバー→LLMバックエンド、概念図)

主な特徴は次の通りです。

  • キャラクターカード(PNG/JSON形式)でペルソナを管理し、ロールプレイができる
  • Ollama・llama.cpp・OpenAI・Anthropic Claude など幅広いバックエンドに対応(後述の実測表を参照)
  • プリセット・世界観設定(World Info)・会話ログのエクスポートなど上級機能が豊富
  • 会話ログは data/ ディレクトリにユーザーごとに保存される

動作確認済み環境とバージョン実測

本記事は次の環境で実際にコマンドを動かして検証しています。バージョンはすべて docker inspectnode --version で取得した実値です。

SillyTavern 1.18.0 のバージョン・依存・Ubuntu 24.04 apt候補(実測)
SillyTavern 1.18.0 のバージョン・依存・Ubuntu 24.04 apt候補(実測)

Ubuntu 24.04 公式イメージで apt-cache policy を叩くと、各パッケージの候補バージョンはこうなっていました。




ubuntu@linuxlab: ~
$ docker run –rm ubuntu:24.04 bash -c \
“apt-get update -qq && apt-cache policy nodejs git curl”
nodejs:
Candidate: 18.19.1+dfsg-6ubuntu5
git:
Candidate: 1:2.43.0-1ubuntu7.3
curl:
Candidate: 8.5.0-2ubuntu10.9

よくある誤解を訂正

「Ubuntu標準の nodejs は v12 で古すぎる」という解説をよく見かけますが、Ubuntu 24.04 LTS(Noble)の標準aptで入る nodejs は 18.19.1 です(上の実測の通り)。決して v12 ではありません。ただし SillyTavern 1.18.0 の要件は node >= 20 なので、18.19.1 では依然として要件未満です。結論は同じ「標準aptでは足りない」ですが、理由は正確に押さえておきましょう。

なぜNode.js 20以上が必要なのか

npmレジストリのパッケージ情報には engines フィールドがあり、SillyTavern 1.18.0 は { "node": ">= 20" } と宣言しています。ここを満たさないと node server.js 起動時に構文エラーで落ちます。Node.jsの入手方法ごとに、動くか動かないかを整理したのが次の表です。

Node.jsの入手方法とSillyTavern動作可否(実測)
Node.jsの入手方法とSillyTavern動作可否(実測)

つまり選択肢は2つです。①公式Dockerイメージを使う(Node.js同梱なので何も入れなくていい)か、②NodeSourceでNode 20を入れてから git clone するか。初学者にはまず①のDockerをおすすめします。順番に見ていきます。

インストール手順A:公式Dockerイメージ(最短)

Dockerさえ入っていれば、SillyTavernは1コマンドで起動できます。公式イメージ ghcr.io/sillytavern/sillytavern:latest を取得して動かします。イメージの中身を確認すると、Node.js は v24.15.0、git は 2.52.0 が同梱されており、要件の Node 20 を余裕で満たしています。




ubuntu@vps: ~
$ docker pull ghcr.io/sillytavern/sillytavern:latest
Status: Downloaded newer image for ghcr.io/sillytavern/sillytavern:latest
$ docker run –rm –entrypoint sh \
ghcr.io/sillytavern/sillytavern:latest -c “node –version; git –version”
v24.15.0
git version 2.52.0
$ docker run -d –name sillytavern -p 8000:8000 \
ghcr.io/sillytavern/sillytavern:latest
639d8db6c09fb8d3…

起動ログには次の行が出ます。これが表示されれば、コンテナ内でサーバーが待ち受け状態になっています。




ubuntu@vps: ~
$ docker logs sillytavern
Node version: v24.15.0. Running in production environment.
SillyTavern is listening on IPv4: 0.0.0.0:8000
Go to: http://127.0.0.1:8000/ to open SillyTavern
著者アイコン
著者アイコン

公式イメージは tini をエントリポイントに、作業ディレクトリ /home/node/app で動いています。設定や会話ログを残したいときは -v ./st-data:/home/node/app/data のようにボリュームをマウントしておくと、コンテナを作り直してもデータが消えません。

インストール手順B:git clone + npm(VPSセルフホスト)

「Dockerを使わず、VPSに直接入れたい」という場合は、NodeSource経由で Node 20 を入れてから clone します。Ubuntu標準aptの nodejs(18.19.1)では要件を満たさないので、ここは順番を間違えると動きません。

手順1:git と前提パッケージを入れる




ubuntu@vps: ~
$ sudo apt update && sudo apt install -y git curl ca-certificates
$ git –version
git version 2.43.0

Ubuntu 24.04 のgitは 2.43.0 が候補なので、apt だけで十分新しいバージョンが入ります。

手順2:NodeSource経由でNode.js 20を入れる

ここが最大の注意点です。標準aptの nodejs(18.19.1)では SillyTavern は起動しません。NodeSource のセットアップスクリプトで Node 20 系を入れます。




ubuntu@vps: ~
$ curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash –
## Creating apt sources list file for the NodeSource Node.js 20.x repo…
$ sudo apt install -y nodejs
$ node –version
v20.x.x

確認を忘れずに

node --versionv20 以上になっているか必ず確認してください。ここが v18 のままだと、次の node server.jsSyntaxError 系のエラーになります(後述)。

手順3:clone して依存をインストール、起動する




ubuntu@vps: ~
$ git clone –depth 1 https://github.com/SillyTavern/SillyTavern
Cloning into ‘SillyTavern’…
$ cd SillyTavern
$ npm install
$ node server.js
SillyTavern is listening on IPv4: 0.0.0.0:8000

--depth 1 は最新コミットだけを取得するオプションで、cloneが速く終わります。npm install の途中で非推奨(deprecated)警告が出ることがありますが、依存パッケージ側の警告がほとんどで、動作には支障ありません。

起動と初期画面の確認

サーバーが起動したら、ブラウザで http://localhost:8000 を開きます。初回アクセスでは「Welcome to SillyTavern!」のセットアップ画面が表示され、言語の選択とペルソナ名の入力を求められます。

SillyTavern 初回起動画面(Welcome to SillyTavern!、Playwright実撮影)
SillyTavern 初回起動画面(Welcome to SillyTavern!、Playwright実撮影)

画面上部には機能ごとのアイコンが並んでいます。左から「AI応答設定」「API接続」「応答フォーマット」「World Info」「ユーザー設定」「背景」「拡張機能」「ペルソナ管理」「キャラクター管理」です。まずは User など適当なペルソナ名を入れて「Save」を押せば、メイン画面に進めます。

VPSで外部から開きたい場合のアクセス方法

  • SillyTavernはデフォルトでホワイトリストが有効で、127.0.0.1 以外からのアクセスは 403 Forbidden を返す(実測。詳細は後述のエラー編)
  • 最も安全なのはSSHポートフォワード:ssh -L 8000:localhost:8000 user@vps で手元のブラウザから http://localhost:8000 を開く
  • LAN内など信頼できる範囲に限り、config.yamlwhitelist にクライアントIPを追記する方法もある

LLMバックエンドの接続設定

SillyTavern単体では会話できません。上部のプラグアイコン(API Connections)をクリックして、接続するLLMバックエンドを設定します。

API接続設定パネル(Playwright実撮影)
API接続設定パネル(Playwright実撮影)

「API」のプルダウンには大きく分けて Text Completion / Chat Completion / NovelAI / AI Horde / KoboldAI Classic の5系統があります。起動中のパネルを Playwright で走査して選択肢を数えたところ、Chat Completion 配下に25種、Text Completion 配下に15種のバックエンドが用意されていました。代表的なものを整理したのが次の表です。

SillyTavern 1.18.0が対応するLLMバックエンド(実測)
SillyTavern 1.18.0が対応するLLMバックエンド(実測)

Ollama(ローカルLLM)に接続する

OllamaなどローカルLLMは Text Completion 系に属します。あらかじめ ollama pull llama3 などでモデルを取得しておき、「API」で Text Completion、「API Type」で Ollama を選びます。すると下に API URL の入力欄が現れます。

Text Completion + Ollama を選んだ接続設定(Playwright実撮影)
Text Completion + Ollama を選んだ接続設定(Playwright実撮影)

Ollamaの接続URLは /v1 を付けない

画面の入力例にもある通り、Ollamaを Text Completion → Ollama で繋ぐ場合のAPI URLは http://127.0.0.1:11434 です。末尾に /v1 は付けません(OpenAI互換エンドポイントとして繋ぐときは話が別ですが、SillyTavern標準のOllama接続では不要です)。URLを入れてモデルを選び、「Connect」を押すと緑のランプが点きます。

キャラクターの選択と会話

接続できたら、上部のキャラクター管理アイコン(右端)を開きます。右側にキャラクター一覧、中央にようこそ画面が出ます。SillyTavern 1.18.0 には、デフォルトでサンプルキャラクター Seraphina(ST Default Bot)が同梱されています。

キャラクター管理パネル(サンプルキャラクターSeraphina、Playwright実撮影)
キャラクター管理パネル(サンプルキャラクターSeraphina、Playwright実撮影)

キャラクターを選ぶか、新規作成ボタンからオリジナルのペルソナを作れます。キャラクターカードに設定できる主な項目は次の通りです。

  • Name:キャラクター名
  • Description:AIが参照するキャラクター説明・設定
  • First Message:会話開始時の第一声
  • Personality:性格の概要(短め)

作ったカードはPNG形式でエクスポートでき、他のユーザーと共有したり、コミュニティサイトからダウンロードしたカードを読み込むこともできます。

よくあるエラーと解決策

①「SyntaxError」やバージョン警告で起動しない

Node.jsが古いと発生します。node --versionv20 未満なら、手順Bの2を見直してNodeSource経由で入れ直してください。Ubuntu標準aptの 18.19.1 のままだと、要件 node >= 20 を満たしません。




ubuntu@vps: ~/SillyTavern
$ node –version
v18.19.1
# ← これだと要件未満。v20以上に上げる

②外部からアクセスすると 403 Forbidden になる(実測)

これはバグではなく仕様です。SillyTavernはセキュリティのためホワイトリストモードがデフォルトで有効で、127.0.0.1 以外のソースIPからのアクセスを弾きます。実際に公開ポート経由でアクセスして確認したところ、HTTPステータスは 403 が返り、ログには次の案内が出ました。




ubuntu@vps: ~
$ curl -s -o /dev/null -w “%{http_code}\n” http://localhost:8124/
403
$ docker logs sillytavern | grep -i whitelist
To allow this connection, add its IP address to the whitelist or
disable whitelist mode by editing config.yaml …

対処は次の通りです。本番では SSHトンネルを使い、サーバー側のホワイトリストは有効のままにするのが最も安全です。

  • 推奨ssh -L 8000:localhost:8000 user@vps でトンネルを張り、手元の http://localhost:8000 から開く
  • 信頼できるLAN内のみ:config.yamlwhitelist 配列にクライアントIPを追記して再起動
  • 検証用途に限り:ホワイトリストを無効化できるが、その場合 SillyTavern は「設定が安全でない」と警告し、明示的なセキュリティ許可がないと起動を拒否する(公開サーバーでは絶対にやらないこと)

セキュリティ注意

SillyTavernをパブリックIPでそのまま公開すると、APIキーやキャラクター設定が第三者に見られるリスクがあります。ホワイトリストを無効化したまま listen: true で外部公開するのは避けてください。VPNまたはSSHトンネル越しのアクセスを強く推奨します。

③「Port 8000 is already in use」が出る

別のプロセスがポート8000を使っています。lsof -i:8000 で確認して該当プロセスを止めるか、Dockerなら -p 8001:8000 のように公開ポートをずらします。




ubuntu@vps: ~
$ sudo lsof -i:8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 1234 user 22u IPv4 12345 0t0 TCP *:8000 (LISTEN)
$ kill 1234

④npm install がメモリ不足で失敗する

手順Bでセルフホストする場合、メモリ1GB以下のVPSだと npm install がメモリ不足で落ちることがあります。swapを追加するか、そもそも依存解決を内包した公式Dockerイメージ(手順A)に切り替えるのが手早い解決策です。

まとめ

Ubuntu 24.04 LTS 上に SillyTavern 1.18.0 をセットアップする要点を、実測ベースでまとめます。

  • SillyTavernの最新版は 1.18.0、要件は node >= 20、ライセンスは AGPL-3.0(npmレジストリで確認)
  • Ubuntu 24.04 標準aptの nodejs は 18.19.1 で要件未満。NodeSourceでNode 20を入れるか、公式Dockerイメージを使う
  • 最短は公式イメージ ghcr.io/sillytavern/sillytavern:latest(Node 24.15.0同梱)を docker run するだけ
  • SillyTavern単体では会話できず、Ollama・OpenAI・Claudeなど別バックエンドへの接続が必須(Chat Completion 25種・Text Completion 15種に対応)
  • Ollama接続のAPI URLは http://127.0.0.1:11434(末尾に /v1 は付けない)
  • デフォルトはホワイトリスト有効で外部アクセスは 403。VPS公開時はSSHトンネルが安全

SillyTavernは機能が多く、使いこなすには少し慣れが要りますが、ローカルLLMを使ったロールプレイや多目的チャットUIとしては非常に強力です。Ollamaと組み合わせれば、GPUなし・クラウド不使用でプライベートなAIアシスタントが構築できます。ローカルLLMのバックエンド側の構築は こちらの記事 も参考にしてください。

より本格的に運用するなら、VPSのスペック選びも重要です。SillyTavern自体は軽量ですが、Ollamaなどローカルモデルを同じサーバーで動かすなら、最低でも4GB RAM・4コア級のプランを選ぶと安心です。

コメント

タイトルとURLをコピーしました