# 远程连接

这通常适用于那些希望在 PC 上运行 ST 服务器的同时,在同一 WiFi 网络中使用手机访问 SillyTavern 的用户。

这也是允许从本地网络外部进行远程连接的第一步。

# 允许远程连接

默认情况下,ST 服务器只接受来自运行它的机器(本地主机)的连接。要允许它监听来自其他设备的连接,请将 config.yaml 中的 listen 选项设置为 true

# 监听传入连接
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 地址:
    • 单独列出每个 IP 地址。
    • 确保包含 127.0.0.1,否则您将无法从主机连接。
    • 支持单个 IP、CIDR 掩码(例如,10.0.0.0/24)和通配符(*)范围。
  4. 保存 config.yaml 文件。
  5. 重启您的 SillyTavern 服务器。

# 示例 config.yaml 白名单配置

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

    whitelist:
      - ::1
      - 127.0.0.1
      - 10.0.0.0/8
      - 172.16.0.0/12
      - 192.168.0.0/16

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

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

    whitelist:
      - ::1
      - 127.0.0.1
      - 192.168.0.2
      - 192.168.0.5
  3. 允许 192.168.0.* 子网上的任何设备连接:

    whitelist:
      - ::1
      - 127.0.0.1
      - 192.168.0.*
  4. 允许所有 IPv4 设备的网络连接:

    whitelist:
      - 0.0.0.0/0

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

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

  • /SillyTavern/config.yaml 中将 whitelistMode 设置为 false
  • 删除或重命名 SillyTavern 基础安装文件夹中的 whitelist.txt(如果存在)。
  • 重启您的 SillyTavern 服务器。

# 不推荐:使用 whitelist.txt

如果您仍然更喜欢使用 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 连接时,服务器都会询问用户名和密码。这只有在启用远程连接(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 之前您有一个具有密码的账户。

如果 ST 已经在运行,请保存文件并重启 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 地址和端口号放入远程设备的 Web 浏览器中。

同一 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

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

# 如何获取证书

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