#
远程连接
最常见的情况是人们想在同一个 WiFi 网络内通过手机使用 SillyTavern,而 PC 运行着 ST 服务器。
这也是允许从本地网络外部进行远程连接的第一步。
您不应该使用端口转发来将 ST 服务器暴露给互联网。相反,应该使用 VPN 或隧道服务,如 Cloudflare Zero Trust、ngrok 或 Tailscale。更多信息请参见 VPN 和隧道 指南。
免责声明
在确保采取适当的安全措施之前,切勿将任何实例托管到开放的互联网上。
对于因安全实施不当或不充分而导致未经授权访问造成的任何损害或损失,我们概不负责。
#
允许远程连接
默认情况下,ST 服务器只接受来自运行它的机器(localhost)的连接。要允许它监听来自其他设备的连接,请在 config.yaml
中将 listen
选项设置为 true
。
如果您直接在 SillyTavern 文件夹中搜索 config.yaml
,您可能会找到两个文件。
本文档中对 config.yaml
的所有修改都指的是 SillyTavern 根目录中的那个(/SillyTavern/config.yaml),而不是 /SillyTavern/default/config.yaml
。
# 监听传入连接
listen: true
当 ST 正在监听远程连接时,您应该在控制台中看到这条消息:
SillyTavern is listening on IPv4: 0.0.0.0:8000
以及一些关于这意味着什么的解释。
当 ST 没有监听远程连接时,您应该在控制台中看到这条消息:
SillyTavern is listening on IPv4: 127.0.0.1:8000
#
访问控制配置
启用远程连接监听后,您必须至少配置一种访问控制方法。否则,服务器将无法启动。
#
基于白名单的访问控制
要通过白名单启用访问控制,请编辑 SillyTavern 根目录中的 config.yaml
文件(/SillyTavern/config.yaml
):
- 至少启动一次 SillyTavern 以生成必要的配置文件。
- 在文本编辑器中打开
/SillyTavern/config.yaml
。 - 找到
whitelist
部分并添加您希望允许的 IP 地址:- 分别列出每个 IP 地址。
- 确保包含
127.0.0.1
,否则您将无法从主机连接。 - 支持单个 IP、CIDR 掩码(如
10.0.0.0/24
)和通配符(*
)范围。
- 保存
config.yaml
文件。 - 重启您的 SillyTavern 服务器。
#
config.yaml
白名单配置示例
允许本地网络上的任何设备:
whitelist: - ::1 - 127.0.0.1 - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16
如果不确定您的本地网络地址范围,请使用上面的白名单。
允许两个特定设备连接:
whitelist: - ::1 - 127.0.0.1 - 192.168.0.2 - 192.168.0.5
允许
192.168.0.*
子网上的任何设备连接:whitelist: - ::1 - 127.0.0.1 - 192.168.0.*
#
禁用基于白名单的访问控制
要禁用通过白名单的访问控制:
- 在
/SillyTavern/config.yaml
中将whitelistMode
设置为false
。 - 删除或重命名 SillyTavern 基本安装文件夹中的
whitelist.txt
(如果存在)。 - 重启您的 SillyTavern 服务器。
#
不推荐:使用 whitelist.txt
如果 whitelist.txt
存在,它会优先于 config.yaml
中的白名单设置。
然而,由于所有其他配置都在 config.yaml
中管理,而 whitelist.txt
可能会遇到权限问题或被锁定,系统可能会悄悄地恢复使用 config.yaml
白名单。
直接编辑 config.yaml 既简单又可靠。
如果您仍然更喜欢使用 whitelist.txt:
- 在 SillyTavern 基本安装文件夹中创建一个名为
whitelist.txt
的新文本文件。 - 在文本编辑器中打开它并添加允许的 IP 地址。
- 保存文件并重启您的 SillyTavern 服务器。
#
whitelist.txt
配置示例
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
127.0.0.1
::1
这允许本地网络上的任何设备连接。
#
通过 HTTP 基本认证进行访问控制
HTTP 基本认证不提供强大的安全性。
没有速率限制来防止暴力攻击。如果这是一个问题,建议使用具有 TLS 和速率限制的反向代理,以及专用的认证服务。
当客户端通过 HTTP 连接时,服务器将要求用户名和密码。这仅在启用远程连接(listen: true)时有效。
要启用 HTTP BA,在 SillyTavern 基本目录中打开 config.yaml
并搜索 basicAuthMode
。将 basicAuthMode 设置为 true 并设置用户名和密码。注意:只有在 ST 至少执行过一次后,config.yaml
才会存在。
basicAuthMode: true
basicAuthUser:
username: "MyUsername"
password: "MyPassword"
或者,您可以按如下方式启用基本认证:
basicAuthMode: true
enableUserAccounts: true
perUserBasicAuth: true
在这种 perUserBasicAuth
模式下,基本认证的用户名和密码将与任何有密码的有效多用户账户相同。此外,SillyTavern 将直接登录到该账户。在启用 perUserBasicAuth
之前,请确保您有一个带密码的账户。
保存文件,如果 SillyTavern 已经在运行,请重启它。连接到您的 ST 时,系统应该会提示您输入用户名和密码。用户名和密码都以明文传输。如果您担心这一点,可以通过 HTTPS 提供 ST 服务。
#
连接到您的 SillyTavern 实例
#
获取 ST 主机的 IP 地址
设置白名单后,您需要 ST 主机设备的 IP。
如果 ST 主机设备在同一个 wifi 网络上,您将使用 ST 主机的内部 wifi IP:
- 对于 Windows:Windows 按钮 > 在搜索栏中输入
cmd.exe
> 在控制台中输入ipconfig
,按 Enter > 查找IPv4
列表。
如果您(或其他人)想在不在同一网络上时连接到您托管的 ST,您需要 ST 主机设备的公共 IP。
- 使用 ST 主机设备时,访问此页面并查找
IPv4
。这就是您从远程设备连接时要使用的地址。
#
连接到 ST 服务器
无论您在您的情况下得到了什么 IP,您都将在远程设备的网络浏览器中输入该 IP 地址和端口号。
同一 wifi 网络上的 ST 主机的典型地址看起来像:
http://192.168.0.5:8000
使用 http:// 而不是 https://
#
连接日志
新的服务器连接会显示在控制台窗口中,并记录在 SillyTavern 基本目录的 access.log
文件中。
来自服务器所在机器上的浏览器的控制台消息看起来像:
New connection from 127.0.0.1; User Agent: ...
来自与服务器在同一网络上的不同机器上的浏览器的控制台消息可能看起来像:
New connection from 192.168.116.187; User Agent: ...
如果连接被拒绝,控制台消息将看起来像:
New connection from 192.168.116.211; User Agent: ...
Forbidden: Connection attempt from 192.168.116.211. If you are attempting to connect,
please add your IP address in whitelist or disable whitelist mode in config.yaml in
root of SillyTavern folder.
access.log
将包含带有时间戳的连接信息,但不包含连接是否被接受或拒绝的信息。
#
故障排除
仍然无法连接?
- 如果连接尝试
出现在控制台中 ,但被禁止,这是一个白名单问题 。 - 如果 ST 正在监听远程连接但连接尝试没有出现在控制台中,这是一个
网络问题 。 - 如果 ST 没有监听远程连接,这是一个
读取问题 。
#
网络问题
- 在 Windows 上,应用程序可能被应用程序防火墙阻止。最快的解决方法是卸载并重新安装 node.js,当防火墙提示时,允许它访问网络。否则,您需要手动允许 node.js 应用程序通过 Windows 应用程序防火墙。
- 在 Windows 11 上,在设置 > 网络和 Internet > 以太网中启用私有网络配置文件类型。这对 Windows 11 来说非常重要,否则,即使有上述防火墙规则,您也无法连接。
- 在 Linux 上,您可能需要允许端口通过防火墙。执行此操作的命令是
sudo ufw allow 8000
。这将允许端口 8000 上的流量。
不要修改路由器上的端口转发设置。这对于在本地网络内访问 ST 不是必需的,而且可能会将您的服务器暴露给互联网。
如果您正在尝试从本地网络外部访问您的 ST 服务器,并且它不工作,请确定问题是出在远程设备和隧道/VPN 端点之间,还是在服务器上的隧道端点和 ST 服务之间。否则,您将花费大量时间排除错误的问题。
#
HTTPS
#
使用 TLS/SSL 启动 SillyTavern
要加密与您的 ST 实例之间的流量,请使用 --ssl
标志启动服务器。
示例:
node server.js --ssl
默认情况下,ST 将在 certs
文件夹中搜索您的证书。如果您的文件位于其他位置,您可以使用 --keyPath
和 --certPath
参数。
示例:
node server.js --ssl --keyPath /home/user/certificates/privkey.pem --certPath /home/user/certificates/cert.pem
The user you're running SillyTavern with requires read permissions on the certificate files.
#
How to get a certificate
The simplest, quickest way to get a certificate is by using certbot.