酒馆百科.NET
👁 …
🏠 首页 › Administration › Administration/remote-connections.md

远程连接

最常见的情况是人们想在同一个 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):

  1. 至少启动一次 SillyTavern 以生成必要的配置文件。
  2. 在文本编辑器中打开 /SillyTavern/config.yaml。
  3. 找到 whitelist 部分并添加您希望允许的 IP 地址:
  1. 保存 config.yaml 文件。
  2. 重新启动您的 SillyTavern 服务器。

config.yaml 白名单配置示例

  1. 允许本地网络上的任何设备:

```yaml
whitelist:

```

如果不确定您的本地网络地址范围,请使用上面的白名单。

  1. 允许两个特定设备连接:

```yaml
whitelist:

```

  1. 允许 192.168.0.* 子网上的任何设备连接:

```yaml
whitelist:

```

  1. 允许所有 IPv4 设备的网络连接:

```yaml
whitelist:

```

禁用基于白名单的访问控制

要禁用通过白名单进行的访问控制:

不推荐:使用 whitelist.txt

💡

如果 whitelist.txt 存在,它会优先于 config.yaml 中的白名单设置。

然而,由于所有其他配置都在 config.yaml 中管理,而 whitelist.txt 可能会遇到权限问题或被锁定,系统可能会悄悄地恢复使用 config.yaml 白名单。

直接编辑 config.yaml 既简单又可靠。

如果您仍然更喜欢使用 whitelist.txt:

  1. 在 SillyTavern 基本安装文件夹中创建一个名为 whitelist.txt 的新文本文件。
  2. 在文本编辑器中打开它并添加允许的 IP 地址。
  3. 保存文件并重新启动您的 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 服务。

主机白名单

在没有 HTTPS 的情况下在网络上托管服务器时,强烈建议启用请求主机验证。这有助于防止各种攻击,例如 DNS 重新绑定。默认情况下,SillyTavern 服务器将在第一次从无法识别的主机连接时记录控制台消息。

切换主机白名单

要启用主机白名单,请编辑 SillyTavern 根目录中的 config.yaml 文件:

hostWhitelist:
    enabled: true

添加受信任的主机

要将主机名添加到受信任主机列表,请将其包含在 hostWhitelist.hosts 部分中:

🔖提示

不要添加 localhost 或 IP(例如 127.0.0.1 或 ::1)。这些始终被视为受信任的。

要添加一系列主机,请使用前导点。例如,添加 .trycloudflare.com 将信任 trycloudflare.com 以及任何子域,如 example.trycloudflare.com。

hostWhitelist:
  hosts:
    - "example.com"
    - ".trycloudflare.com"

切换控制台消息

要禁用无法识别主机的控制台消息,请将 hostWhitelist.scan 选项设置为 false:

hostWhitelist:
    scan: false

连接到您的 SillyTavern 实例

获取 ST 主机的 IP 地址

设置白名单后,您需要 ST 主机设备的 IP。

如果 ST 主机设备在同一个 wifi 网络上,您将使用 ST 主机的内部 wifi IP:

如果您(或其他人)想在不在同一网络上时连接到您托管的 ST,您需要 ST 主机设备的公共 IP。

连接到 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 服务器,并且它不工作,请确定问题是出在远程设备和隧道/VPN 端点之间,还是在服务器上的隧道端点和 ST 服务之间。否则,您将花费大量时间排除错误的问题。

HTTPS

使用 TLS/SSL 启动 SillyTavern

🔖

SSL 也可以使用 config.yaml 文件进行配置:SSL 配置。

要加密往返于您的 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

您运行 SillyTavern 的用户需要对证书文件具有读取权限。

如何获取证书

获取证书的最简单、最快的方法是使用 certbot。

输入关键词开始搜索