ChainSillyTavernは、複数のSillyTavernサーバーインスタンスを作成、管理、および監視するために設計されたSillyTavernインスタンス管理システムです。システムはRESTful APIインターフェースとモダンな管理インターフェースを提供し、インスタンスの作成、停止、および削除などの操作をサポートします。
このプロジェクトはAGPL-3.0の下でライセンスされています。
Node.jsがインストールされたLinuxサーバーが必要です。
git clone https://github.com/easychen/CST.git
factory-api/.env.example
をfactory-api/.env
にコピーし、ADMIN_KEY
パスワードとPORT
パラメータを変更します。
ドメイン証明書をfactory-api/certs
ディレクトリに配置します:
- 証明書:
factory-api/certs/cert.pem
- 秘密鍵:
factory-api/certs/privkey.pem
npm install pm2 -g
サーバーネットワークはGithubにアクセスできる必要があります。そうでない場合は、
init.sh
のリポジトリアドレスを変更してください。
bash init.sh
factory-api/
: バックエンドAPIサービスcst/
: フロントエンド管理インターフェースstsource-changed/
: 変更されたSTソースコード
init.sh
を実行してSTコードをダウンロードし、変更されたバージョンを上書きします(コマンドライン基本パスワード入力をサポートするため)。
- Node.js(v14以上推奨)
- PM2(プロセスマネジメントツール)
factory-api/.env
ファイルに以下のパラメータを設定します:
# 管理者キーの設定
ADMIN_KEY=your-secret-admin-key
# サーバーポートの設定
PORT=3000
# 環境設定
NODE_ENV=development
cst/.env.development
ファイルにAPIアドレスを設定します:
VITE_API_URL=http://localhost:3000
SSLを有効にするには、以下のコマンドラインパラメータを使用します:
# SSLを有効にする
--ssl=true
# 証明書パスの設定
--certPath=certs/cert.pem # 証明書ファイルパス
--keyPath=certs/privkey.pem # 秘密鍵ファイルパス
cd factory-api && npm run start
開発モード:
cd cst && npm run dev
本番環境:
cd cst && npm run build
すべてのAPIリクエストには、リクエストヘッダーに管理者キーが必要です:
X-ST-Admin-Key: your-secret-admin-key
POST /api/instances
Content-Type: application/json
X-ST-Admin-Key: your-secret-admin-key
{
"port": 8001
}
レスポンス例:
{
"id": "st-instance-8001",
"port": 8001,
"dataDir": "/path/to/user-data/8001",
"status": "running",
"startTime": "2024-01-01T00:00:00.000Z",
"password": "generated-uuid-for-basic-auth"
}
GET /api/instances
X-ST-Admin-Key: your-secret-admin-key
レスポンス例:
[
{
"id": "st-instance-8001",
"port": 8001,
"status": "online",
"startTime": "2024-01-01T00:00:00.000Z",
"dataDir": "/path/to/user-data/8001"
}
]
DELETE /api/instances/st-instance-8001
X-ST-Admin-Key: your-secret-admin-key
レスポンス例:
{
"message": "インスタンスが削除されました"
}
エラーが発生した場合、APIは適切なHTTPステータスコードとエラーメッセージを返します:
{
"error": "エラーメッセージ"
}
一般的なエラー:
- 400: リクエストパラメータエラー(例:ポート番号が欠落している)またはポートが既に使用されている
- 401: 管理者キーが欠落しているか無効な管理者キー
- 404: インスタンスが見つからない
- 500: サーバー内部エラー(例:インスタンスの作成に失敗、インスタンスリストの取得に失敗、インスタンスの停止に失敗)
# 新しいインスタンスの作成
curl -X POST http://localhost:3000/api/instances \
-H "Content-Type: application/json" \
-H "X-ST-Admin-Key: your-secret-admin-key" \
-d '{"port": 8001}'
# すべてのインスタンスのクエリ
curl http://localhost:3000/api/instances \
-H "X-ST-Admin-Key: your-secret-admin-key"
# インスタンスの停止
curl -X POST http://localhost:3000/api/instances/st-instance-8001/stop \
-H "X-ST-Admin-Key: your-secret-admin-key"
# インスタンスの削除
curl -X DELETE http://localhost:3000/api/instances/st-instance-8001 \
-H "X-ST-Admin-Key: your-secret-admin-key"