Spaces:
Running
Running
File size: 10,494 Bytes
fbf1cb9 57cfa52 fbf1cb9 57cfa52 fbf1cb9 57cfa52 fbf1cb9 57cfa52 |
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 |
---
title: SillyTavern Docker & HF部署
emoji: 🥂
colorFrom: pink
colorTo: blue
sdk: docker
pinned: false
app_port: 8000 # SillyTavern 默认端口
# 定义所需的 Hugging Face Secrets
secrets:
- name: CONFIG_YAML
description: "你的 config.yaml 文件内容(无注释)"
required: true # 配置是必需的
- name: PLUGINS
description: "要安装的插件Git URL列表(逗号分隔)"
required: false # 插件是可选的
---
# 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: false
skipContentCheck: false
whitelistImportDomains:
- localhost
- cdn.discordapp.com
- files.catbox.moe
- raw.githubusercontent.com
requestOverrides: []
extensions:
enabled: true
autoUpdate: true
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 之间**只能用英文逗号 `,` 分隔**,且逗号前后**不能有空格**。如果留空或不提供此变量,则不会安装额外插件。
## 方法一:本地 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' \\
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' \
# 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` 为例。
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"。如果你确实不需要任何额外插件,可以跳过这一步。
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。
其他插件的访问路径请参考其各自的文档。
|