File size: 19,216 Bytes
0f33f8d f4e3401 0f33f8d f4e3401 0f33f8d f4e3401 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 |
---
title: SillyTavern Docker & HF部署
emoji: 🥂
colorFrom: pink
colorTo: blue
sdk: docker
pinned: false
app_port: 8000
---
# 最简单的方法:一键部署
> **⚠️ 重要提示:** 部署界面中的 **visibility** 一定要改为 **public**,否则无法正常使用!
如果你不想手动配置,可以直接点击下方按钮,一键将 SillyTavern Docker 部署到你自己的 Hugging Face Space 中(需要先注册 Hugging Face 账号):
[](https://huggingface.co/spaces/malt666/Tavern-Docker?duplicate=true)
## 环境变量配置指南
点击部署按钮后,请按照下表配置环境变量:
### 基本配置(必填项)
| 环境变量 | 说明 | 示例值 |
|---------|------|--------|
| **PLUGINS** | 云备份插件链接 | `https://github.com/fuwei99/cloud-saves.git` |
| **认证配置** | USERNAME/PASSWORD 和 CONFIG_YAML 二选一 | - |
#### 认证方式(二选一):
1. **USERNAME/PASSWORD**(推荐)
- 简单直接填写用户名和密码,用于酒馆的登录
2. **CONFIG_YAML**
- 见下方命令行格式
- 记得修改配置中的用户名和密码
- **注意**:由于 Hugging Face 的部署界面有 bug,复制的内容可能会变成一行
- **解决方法**:部署后进入 Settings → Secrets,点击 CONFIG_YAML 旁边的 replace,重新复制粘贴
### 扩展配置
| 环境变量 | 说明 | 示例值 |
|---------|------|--------|
| **EXTENSIONS** | 扩展链接列表,用英文逗号分隔 | `https://github.com/N0VI028/JS-Slash-Runner,https://gitee.com/muyoou/st-memory-enhancement` |
| **INSTALL_FOR_ALL_USERS** | 扩展安装模式 | `true` 或 `false` |
> **扩展安装模式INSTALL_FOR_ALL_USERS**:
> - `true`:安装到全局(推荐)
> - `false`:仅安装到 default-user
> - 不填写:默认安装到 default-user
### 可选配置(cloud-saves 插件相关,自动配置基本信息,注意自动保存还是要自己开启,这里只是配置好信息)
| 环境变量 | 说明 | 默认值 |
|---------|------|-------|
| **REPO_URL** | GitHub 仓库地址 | - |
| **GITHUB_TOKEN** | GitHub 访问令牌 | - |
| **AUTOSAVE_INTERVAL** | 自动保存间隔(秒) | 30 |
| **AUTOSAVE_TARGET_TAG** | 自动保存目标标签 | 空 |
---
## 如何读取或者保存存档
教程见: https://github.com/fuwei99/cloud-saves
* 对于推荐安装的 `cloud-saves` 插件,其管理界面通常位于:
`http://<你的SillyTavern访问地址>/api/plugins/cloud-saves/ui`
例如,如果是本地部署,则为 `http://127.0.0.1:8000/api/plugins/cloud-saves/ui`。如果是 Hugging Face Space,则将 `<你的SillyTavern访问地址>` 替换为你的 Space 公共 URL
其他插件的访问路径请参考其各自的文档。
---
# SillyTavern Docker 与 Hugging Face 部署指南
本指南说明了如何使用提供的 `Dockerfile` 来构建和运行 SillyTavern,以及如何在 Hugging Face Spaces 上进行部署。部署的核心思想是通过环境变量在容器启动时动态配置 SillyTavern 和安装插件。
## 关键文件
* `Dockerfile`: 用于构建 SillyTavern 运行环境的 Docker 镜像。它会:
* 基于官方 Node.js Alpine 镜像。
* 安装必要的系统依赖(如 `git`)。
* 从 GitHub 克隆 SillyTavern 的 `staging` 分支代码。
* 设置工作目录和用户权限。
* 定义容器启动时的 `ENTRYPOINT` 脚本,该脚本负责:
* 读取 `CONFIG_YAML` 环境变量并写入 `./config.yaml` 文件。
* 读取 `PLUGINS` 环境变量,并克隆、安装指定的插件。
* 启动 SillyTavern 服务器 (`node server.js`)。
* `README.md`: 本说明文件。
## 配置方式:环境变量
我们通过两个主要的环境变量来配置容器:
1. `CONFIG_YAML`: **必需**。
* **作用**: 定义 SillyTavern 的运行配置。
* **内容**: 下面是推荐的默认配置内容。你可以直接复制粘贴使用,但**强烈建议你修改其中的认证信息**。
* **推荐配置内容**:
```yaml
dataRoot: ./data
listen: true
listenAddress:
ipv4: 0.0.0.0
ipv6: '[::]'
protocol:
ipv4: true
ipv6: false
dnsPreferIPv6: false
autorunHostname: "auto"
port: 8000
autorunPortOverride: -1
ssl:
enabled: false
certPath: "./certs/cert.pem"
keyPath: "./certs/privkey.pem"
whitelistMode: false
enableForwardedWhitelist: false
whitelist:
- ::1
- 127.0.0.1
whitelistDockerHosts: true
basicAuthMode: true
basicAuthUser:
username: "用户名" # 请务必修改为你自己的用户名
password: "密码" # 请务必修改为你自己的密码
enableCorsProxy: false
requestProxy:
enabled: false
url: "socks5://username:[email protected]:1080"
bypass:
- localhost
- 127.0.0.1
enableUserAccounts: false
enableDiscreetLogin: false
autheliaAuth: false
perUserBasicAuth: false
sessionTimeout: -1
disableCsrfProtection: false
securityOverride: false
logging:
enableAccessLog: true
minLogLevel: 0
rateLimiting:
preferRealIpHeader: false
autorun: false
avoidLocalhost: false
backups:
common:
numberOfBackups: 50
chat:
enabled: true
checkIntegrity: true
maxTotalBackups: -1
throttleInterval: 10000
thumbnails:
enabled: true
format: "jpg"
quality: 95
dimensions: { 'bg': [160, 90], 'avatar': [96, 144] }
performance:
lazyLoadCharacters: false
memoryCacheCapacity: '100mb'
useDiskCache: true
allowKeysExposure: true
skipContentCheck: false
whitelistImportDomains:
- localhost
- cdn.discordapp.com
- files.catbox.moe
- raw.githubusercontent.com
requestOverrides: []
extensions:
enabled: true
autoUpdate: false
models:
autoDownload: true
classification: Cohee/distilbert-base-uncased-go-emotions-onnx
captioning: Xenova/vit-gpt2-image-captioning
embedding: Cohee/jina-embeddings-v2-base-en
speechToText: Xenova/whisper-small
textToSpeech: Xenova/speecht5_tts
enableDownloadableTokenizers: true
promptPlaceholder: "[Start a new chat]"
openai:
randomizeUserId: false
captionSystemPrompt: ""
deepl:
formality: default
mistral:
enablePrefix: false
ollama:
keepAlive: -1
batchSize: -1
claude:
enableSystemPromptCache: false
cachingAtDepth: -1
enableServerPlugins: true
enableServerPluginsAutoUpdate: false
```
* **⚠️ 重要警告**: 请务必修改上方配置中 `basicAuthUser` 下的 `username` 和 `password` 为你自己的凭据,以确保安全!**不要使用默认的 "用户名" 和 "密码"!**
* **注意**: 必须是有效的 YAML 格式,且**不应包含任何 `#` 开头的注释行**。
2. `PLUGINS`: **可选**。
* **作用**: 指定需要在容器启动时自动安装的 SillyTavern 插件。
* **内容**: 一个**逗号分隔**的插件 Git 仓库 URL 列表。
* **推荐安装**: 强烈建议安装 `cloud-saves` 插件,以便在不同部署环境(如本地和 Hugging Face)之间同步数据。
* **插件地址**: `https://github.com/fuwei99/cloud-saves.git`
* **重要前置条件**: 为了让容器/Hugging Face Space 能够拉取你的存档,你**必须**先在你本地的 SillyTavern 中安装好 `cloud-saves` 插件,并**至少进行一次数据存档操作**。这样,远程部署的环境才能通过该插件下载你的存档。
* **格式示例**: `https://github.com/fuwei99/cloud-saves.git` (注意包含推荐的 cloud-saves 插件)
* **注意**: URL 之间**只能用英文逗号 `,` 分隔**,且逗号前后**不能有空格**。如果留空或不提供此变量,则不会安装额外插件。
3. `EXTENSIONS`: **可选**。
* **作用**: 指定需要在容器启动时自动安装的 SillyTavern 扩展(Extensions)。
* **内容**: 一个**逗号分隔**的扩展 Git 仓库 URL 列表。
* **安装时机**: 扩展会在项目启动之后自动安装,确保 SillyTavern 目录结构已经准备完毕。
* **格式示例**: `https://github.com/user1/extension1.git,https://github.com/user2/extension2.git`
* **注意**: URL 之间**只能用英文逗号 `,` 分隔**,且逗号前后**不能有空格**。如果留空或不提供此变量,则不会安装额外扩展。
4. `INSTALL_FOR_ALL_USERS`: **可选**。
* **作用**: 控制扩展的安装位置模式。
* **可选值**:
* `true`: 扩展安装到 `public/scripts/extensions/third-party` 目录下,对**所有用户**生效(系统级安装)。
* `false` 或任何其他值,或变量不存在: 扩展安装到 `data/default-user/extensions` 目录下,仅对**默认用户**生效(用户级安装)。
* **默认行为**: 如果不设置此环境变量,默认安装到用户级目录。
* **格式示例**: `true` 或 `false`
5. `REPO_URL`: **可选**。
* **作用**: 为 cloud-saves 插件提供 GitHub 仓库 URL,用于自动配置插件。
* **前置条件**: 需要同时安装 cloud-saves 插件(通过 `PLUGINS` 环境变量)。
* **格式示例**: `https://github.com/yourusername/yourrepo`
* **说明**: 这是你用来存储 SillyTavern 数据备份的 GitHub 仓库地址。
6. `GITHUB_TOKEN`: **可选**。
* **作用**: 为 cloud-saves 插件提供 GitHub 访问令牌,用于自动配置插件。
* **前置条件**: 需要同时设置 `REPO_URL` 和安装 cloud-saves 插件。
* **格式示例**: `ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
* **获取方式**: 在 GitHub Settings -> Developer settings -> Personal access tokens -> Tokens (classic) 中创建,需要 `repo` 权限。
* **自动配置**: 如果同时提供了 `REPO_URL` 和 `GITHUB_TOKEN`,且安装了 cloud-saves 插件,系统会自动创建插件的配置文件。
7. `AUTOSAVE_INTERVAL`: **可选**。
* **作用**: 设置 cloud-saves 插件的自动保存间隔时间(秒)。
* **前置条件**: 需要同时设置 `REPO_URL` 和 `GITHUB_TOKEN`。
* **格式示例**: `30`(表示每30秒自动保存一次)
* **默认值**: 如果不设置,默认为 `30` 秒。
8. `AUTOSAVE_TARGET_TAG`: **可选**。
* **作用**: 设置 cloud-saves 插件的自动保存目标标签。
* **前置条件**: 需要同时设置 `REPO_URL` 和 `GITHUB_TOKEN`。
* **格式示例**: `auto-backup` 或 `daily-save`
* **默认值**: 如果不设置,默认为空字符串。
## 方法一:本地 Docker 部署
你可以在本地使用 Docker 来构建和运行 SillyTavern。
1. **构建镜像**: 在包含 `Dockerfile` 的目录下,运行:
```bash
docker build -t sillytavern-local .
```
将 `sillytavern-local` 替换为你想要的镜像名称。
2. **准备配置**: 将你的 `config.yaml` 内容(无注释)准备好。
3. **运行容器**: 使用 `docker run` 命令,并通过 `-e` 参数传递环境变量。
* 将上方提供的**推荐配置内容**复制,并作为 `CONFIG_YAML` 环境变量的值。**确保你已经修改了其中的用户名和密码!**
* 如果你需要安装插件(**推荐安装 `cloud-saves`**),请准备好插件 URL 列表。
```bash
# 示例:使用推荐配置并安装 cloud-saves 插件
# 1. 将推荐配置(修改密码后)保存到名为 config_no_comments.yaml 的文件中
# 2. 运行以下命令
docker run -p 8000:8000 --name my-sillytavern \\
-e CONFIG_YAML="$(cat config_no_comments.yaml)" \\
-e PLUGINS='https://github.com/fuwei99/cloud-saves.git' \\
-e EXTENSIONS='https://github.com/user1/extension1.git,https://github.com/user2/extension2.git' \\
-e INSTALL_FOR_ALL_USERS=false \\
-e REPO_URL='https://github.com/yourusername/yourrepo' \\
-e GITHUB_TOKEN='ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \\
-e AUTOSAVE_INTERVAL=30 \\
-e AUTOSAVE_TARGET_TAG=auto-backup \\
sillytavern-local
# 如果你需要安装更多插件,用逗号隔开添加到 PLUGINS 变量中
# 例如:
# docker run -p 8000:8000 --name my-sillytavern \
# -e CONFIG_YAML="$(cat config_no_comments.yaml)" \
# -e PLUGINS='https://github.com/fuwei99/cloud-saves.git,https://github.com/user/other-plugin.git' \
# -e EXTENSIONS='https://github.com/user1/extension1.git,https://github.com/user2/extension2.git' \
# -e INSTALL_FOR_ALL_USERS=false \
# -e REPO_URL='https://github.com/yourusername/yourrepo' \
# -e GITHUB_TOKEN='ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
# -e AUTOSAVE_INTERVAL=30 \
# -e AUTOSAVE_TARGET_TAG=auto-backup \
# sillytavern-local
```
* `-p 8000:8000`: 将容器的 8000 端口映射到宿主机的 8000 端口。
* `--name my-sillytavern`: 为容器命名,方便管理。
* `-e CONFIG_YAML="$(cat config_no_comments.yaml)"`: 从文件读取配置内容并传递。这是处理多行 YAML 最可靠的方式。**再次确认:运行前务必修改 `config_no_comments.yaml` 文件中的用户名和密码!**
* `-e PLUGINS='...'`: 传递插件列表,这里以安装 `cloud-saves` 为例。
* `-e EXTENSIONS='...'`: 传递扩展列表,这里以安装 `extension1` 和 `extension2` 为例。
* `-e INSTALL_FOR_ALL_USERS=false`: 设置扩展安装模式为用户级安装。
* `-e REPO_URL='...'`: 传递 REPO_URL 环境变量。
* `-e GITHUB_TOKEN='...'`: 传递 GITHUB_TOKEN 环境变量。
* `-e AUTOSAVE_INTERVAL=30`: 设置 AUTOSAVE_INTERVAL 环境变量。
* `-e AUTOSAVE_TARGET_TAG=auto-backup`: 设置 AUTOSAVE_TARGET_TAG 环境变量。
4. **访问**: 打开浏览器访问 `http://localhost:8000`。
## 方法二:Hugging Face Spaces 部署
这是推荐的在线部署方式,利用 Hugging Face 的免费计算资源和 Secrets 管理功能。
1. **创建 Space**: 在 Hugging Face 上创建一个新的 Space,选择 **Docker** SDK。
2. **上传文件**: 将本项目中的 `Dockerfile` 和 `README.md` 文件上传到你的 Space 仓库根目录。
3. **配置 Secrets**: 进入你的 Space 页面的 **Settings -> Secrets** 部分。
* **添加 `CONFIG_YAML` Secret**:
* 点击 "New secret"。
* 名称 (Name) 输入: `CONFIG_YAML`
* 值 (Value) 粘贴: **复制上方提供的推荐配置内容**。**再次强调:粘贴前请务必修改 `basicAuthUser` 下的 `username` 和 `password` 为你自己的安全凭据!**
* 点击 "Add secret"。
* **(推荐) 添加 `PLUGINS` Secret**:
* 再次点击 "New secret"。
* 名称 (Name) 输入: `PLUGINS`
* 值 (Value) 粘贴: 推荐至少包含 `cloud-saves` 插件。例如:`https://github.com/fuwei99/cloud-saves.git`。如果你需要其他插件,用逗号隔开添加,例如:`https://github.com/fuwei99/cloud-saves.git,https://github.com/user/other-plugin.git`。
* **重要提醒**: 请确保你已经在本地 SillyTavern 安装了 `cloud-saves` 并至少进行了一次存档。
* 点击 "Add secret"。如果你确实不需要任何额外插件,可以跳过这一步。
* **(可选) 添加 `EXTENSIONS` Secret**:
* 再次点击 "New secret"。
* 名称 (Name) 输入: `EXTENSIONS`
* 值 (Value) 粘贴: 你需要安装的扩展 Git URL 列表,用逗号隔开。例如:`https://github.com/user1/extension1.git,https://github.com/user2/extension2.git`。
* 点击 "Add secret"。如果你不需要安装扩展,可以跳过这一步。
* **(可选) 添加 `INSTALL_FOR_ALL_USERS` Secret**:
* 如果你添加了 `EXTENSIONS` Secret,可以继续添加这个 Secret 来控制扩展安装模式。
* 再次点击 "New secret"。
* 名称 (Name) 输入: `INSTALL_FOR_ALL_USERS`
* 值 (Value) 输入: `true`(系统级安装,所有用户可用)或 `false`(用户级安装,仅默认用户可用)。
* **推荐**: 对于 Hugging Face Space 单用户环境,建议设置为 `false` 或不设置此 Secret。
* 点击 "Add secret"。如果不设置,默认为用户级安装。
* **(可选) 添加 `REPO_URL` Secret**:
* 再次点击 "New secret"。
* 名称 (Name) 输入: `REPO_URL`
* 值 (Value) 输入: 你的 GitHub 仓库地址,用于 cloud-saves 插件自动配置。例如:`https://github.com/yourusername/yourrepo`
* 点击 "Add secret"。
* **(可选) 添加 `GITHUB_TOKEN` Secret**:
* 再次点击 "New secret"。
* 名称 (Name) 输入: `GITHUB_TOKEN`
* 值 (Value) 输入: 你的 GitHub 访问令牌,用于 cloud-saves 插件自动配置。例如:`ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
* 点击 "Add secret"。
* **(可选) 添加 `AUTOSAVE_INTERVAL` Secret**:
* 再次点击 "New secret"。
* 名称 (Name) 输入: `AUTOSAVE_INTERVAL`
* 值 (Value) 输入: 自动保存间隔秒数,不填写默认为30秒
* 点击 "Add secret"。
* **(可选) 添加 `AUTOSAVE_TARGET_TAG` Secret**:
* 再次点击 "New secret"。
* 名称 (Name) 输入: `AUTOSAVE_TARGET_TAG`
* 值 (Value) 输入: 自动保存目标标签,不填写默认为空
* 点击 "Add secret"。
4. **构建与启动**: Hugging Face 会自动检测到 `Dockerfile` 和 Secrets,并开始构建镜像、启动容器。你可以在 Space 的 **Logs** 标签页查看构建和启动过程。
5. **访问**: 构建成功并启动后,通过 Space 提供的公共 URL 访问 SillyTavern 界面。
## 插件访问
如果通过 `PLUGINS` 环境变量安装了插件,你需要根据各个插件的说明文档找到访问其界面的路径。
* 对于推荐安装的 `cloud-saves` 插件,其管理界面通常位于:
`http://<你的SillyTavern访问地址>/api/plugins/cloud-saves/ui`
例如,如果是本地部署,则为 `http://127.0.0.1:8000/api/plugins/cloud-saves/ui`。如果是 Hugging Face Space,则将 `<你的SillyTavern访问地址>` 替换为你的 Space 公共 URL。
其他插件的访问路径请参考其各自的文档。
|