# VERTEX

<figure><img src="https://1236336705-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fe867Ol3sPaghugvFZy1U%2Fuploads%2FLSsWmiSKSdOLQjM8frJ0%2Flogo.svg?alt=media&amp;token=24aa051d-aa8e-4f4b-bca0-5e782602909e" alt=""><figcaption></figcaption></figure>

#### 适用于 PT 玩家的追剧刷流一体化综合管理工具

#### 交流群组

[VERTEX](https://t.me/group_vertex)

#### 特别事项

Vertex 目前已处于不新增功能，仅做问题修复的状态。

#### 打赏，如果你觉得这个项目对你有帮助，可以对我打赏，感谢！

<figure><img src="https://lswl.in/assets/images/alipay_qrcode.png" alt="" width="375"><figcaption></figcaption></figure>


# 最低配置要求

* Docker 环境。
* 支持 x86 / arm64 环境, 所以 N1 等可以安装 Armbian 或其它能够运行 docker 的电视盒子均可。
* 至少 1 个 CPU 核心以及 512MiB 的内存余量。
* 尽量是固态硬盘，大小可以随意，正常使用不会占用太多存储空间。


# 安装操作

## 使用须知

在您使用之前, 请仔细阅读使用须知 => [使用须知](https://wiki.vertex.icu/zh/misc/regulations)

## 关于底包

docker 有两个镜像:

* lswl/vertex:stable 功能包, 已 lswl/vertex-base 为底包制作
* lswl/vertex-base 底包, 在下文的安装过程中, 可以拉取, 也可以直接跳过, 更不要使用这个镜像创建容器

**设置底包是为了减少更新时所需要下载的内容, 底包 170MiB 左右, 功能包 50MiB 左右, 若下载底包, 每次更新仅需下载 50MiB 的内容, 若不下载底包, 每次更新需要下载 220MiB 的内容**

## 关于装在哪里最好

* 无论用在哪里, 都最推荐装在境外 VPS, 是考虑到境内网络无法稳定访问站点的情况
* 准备用在 PT 刷流盒子上, 优先级为 境外 VPS > 盒子本身 > 本地 Nas
* 准备用在本地 Nas 上, 如果本地 Nas 有公网 IP, 那么推荐境外 VPS, 其次选择安装在本地 Nas
* 准备用在本地 Nas 上, 如果本地 Nas 没有公网 IP, 那么只能安装在 Nas
* 假如本地没有 Nas, 可以安装在任何有 Docker 环境的 x86 或 arm64 的机器上, 比如 软路由, N1, j1900, j3455 设备上, 实在没办法再去考虑 Windows Docker Desktop

## 环境变量

有两个端口可能在 vertex 容器网络模式为 Host 时发生冲突，请按需修改。 支持以下环境变量

| 字段            | 默认值           | 备注                                                |
| ------------- | ------------- | ------------------------------------------------- |
| PORT          | 3000          | 内部 HTTP 服务端口                                      |
| HTTPS\_PORT   | 无             | 内部 HTTPS 服务端口                                     |
| HTTPS\_ENABLE | 无             | 是否监听 HTTPS, 填写 true 则启用 HTTPS, 同时需要填写 HTTPS\_PORT |
| REDISPORT     | 6379          | 内部 Redis 服务端口                                     |
| TZ            | Asia/Shanghai | 时区                                                |
| PUID          | 0             | PUID                                              |
| PGID          | 0             | PGID                                              |

## 使用 Docker 命令安装

先拉取一次底包 (正常情况下底包不会更新, 只是拉取镜像, 不用创建容器)

```bash
docker pull lswl/vertex-base:latest
```

命令内的 /root/vertex 为 Vertex 的数据保存目录, 可以更换至任一有读写权限的目录。

```bash
docker run -d \
  --name vertex \
  -v /root/vertex:/vertex \
  -p 3000:3000 \
  -e TZ=Asia/Shanghai \
  --restart unless-stopped \
  lswl/vertex:stable
```

## 关于启用 HTTPS

#### 前提条件

已经生成或下载 HTTPS 证书(cert/.crt/.cer)与私钥(key/.key)文件

#### 如何启用

1. 添加 HTTPS\_PORT 以及 HTTPS\_ENABLE 环境变量
2. 添加 HTTPS\_PORT 的端口映射
3. 在 vertex/data 目录下创建 ssl 文件夹, 将证书文件 .crt 改名 https.crt, 将密钥文件 .key 改名 https.key 放入 ssl 文件夹

#### 启动命令示例

```bash
docker run -d \
  --name vertex \
  -v /root/vertex:/vertex \
  -p 3000:3000 \
  -e TZ=Asia/Shanghai \
  -e HTTPS_ENABLE=true \      # 启用 https
  -e HTTPS_PORT=3443 \				# https 监听端口为 3443
  -p 3443:3443 \							# 映射 https 端口
  --restart unless-stopped \
  lswl/vertex:stable
```

## 群晖 Docker

### 简略版

<figure><img src="https://1236336705-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fe867Ol3sPaghugvFZy1U%2Fuploads%2FP5gE2esLWNsKN2IYLjE7%2F7cd8e90fd647689218c3eed8242b3926.png?alt=media&amp;token=762553c0-bcf2-4d8a-9f65-ddb3a977d748" alt="打开 Docker, 注册表内搜索 vertex"><figcaption><p>打开 Docker, 注册表内搜索 vertex</p></figcaption></figure>

<figure><img src="https://1236336705-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fe867Ol3sPaghugvFZy1U%2Fuploads%2FCoTJyXFMEkfDFtaQKKE0%2F06ff6edba1db42fd37e5b2d8a49d3d09.png?alt=media&amp;token=868b27ef-71f8-45aa-9c01-41d35c22ef17" alt="点击打开, 标签选择 stable"><figcaption><p>点击打开, 标签选择 stable</p></figcaption></figure>

添加文件夹映射

<figure><img src="https://1236336705-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fe867Ol3sPaghugvFZy1U%2Fuploads%2FSGnWVmbEcyyog2wJHNn2%2Fc791f270867020eacc14e5f3f28f29aa.png?alt=media&amp;token=7a129ba6-85d1-4ef4-aa52-10ca0cce7748" alt="添加文件夹映射"><figcaption><p>添加文件夹映射</p></figcaption></figure>

&#x20;

<figure><img src="https://1236336705-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fe867Ol3sPaghugvFZy1U%2Fuploads%2Fd4r9vw8Sp4h8l4Ervnqk%2Fe31c09bf302bba3aedfcbc236dbca0bd.png?alt=media&amp;token=c1fe0c79-25ff-4d42-8b67-b0f4a62e457e" alt="添加端口映射"><figcaption><p>添加端口映射</p></figcaption></figure>

### 详细版

截图内容是旧版vertex，搭建思路可参考。 新版安装只拉取stable一个标签就可以装机了。&#x20;

<figure><img src="https://1236336705-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fe867Ol3sPaghugvFZy1U%2Fuploads%2FYyIRWtwIJOWtSlx08IPm%2F461aa2b96d9349525cfbbb72c783a355.png?alt=media&amp;token=dca52637-08cd-46fd-85f5-2a473bff42d6" alt=""><figcaption></figcaption></figure>

## UNRaid Docker

**UNRAID 现已支持直接在商店搜索 Vertex 下载安装!!** **UNRAID 现已支持直接在商店搜索 Vertex 下载安装!!** **UNRAID 现已支持直接在商店搜索 Vertex 下载安装!!**

1. 拉取底包

<figure><img src="https://1236336705-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fe867Ol3sPaghugvFZy1U%2Fuploads%2FbAkHXckKRFGXbUzlwBrX%2F526677b5680e5907669838acd5f81a89.jpg?alt=media&amp;token=dc0049e0-b351-41df-9dd2-5ff1cfc127fa" alt="拉取底包"><figcaption><p>拉取底包</p></figcaption></figure>

2. 回到 unraid 的 docker 页

<figure><img src="https://1236336705-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fe867Ol3sPaghugvFZy1U%2Fuploads%2FDxcrwzUN2W04h3jPMTYk%2F40c481a6a34959c9e8ebb76fc54d772a.jpg?alt=media&amp;token=4c161fad-bea4-42df-83a1-e3f31b657635" alt="回到 unraid 的 docker 页"><figcaption><p>回到 unraid 的 docker 页</p></figcaption></figure>

## VPS 虚拟专用服务器

### 一键完成

#### 将Vertex安装在国外的主机上，具备更好的网路环境！

SSH登录主机，root用户，粘贴一键完成命令：推荐Debian11全新纯净系统\
PS：此一键完成使用的是 Docker Host网络,双栈IPV4/IPV6支持性更好。安装的是最新Vertex版本

注： 在2023年2月份出现apparmor组件的报错，更新apparmor组件安装。\
个别VPS运营商原版Debian系统存在组件缺失的问题。

```bash
apt update -y && 
apt upgrade -y && 
apt install apparmor apparmor-utils -y && 
apt install curl -y && 
curl -fsSL https://get.docker.com -o get-docker.sh && 
sh get-docker.sh && 
timedatectl set-timezone Asia/Shanghai && 
mkdir -p /root/vertex && 
chmod 777 /root/vertex && 
docker run -d --name vertex --restart unless-stopped --network host -v /root/vertex:/vertex -e TZ=Asia/Shanghai lswl/vertex:stable
```

注： 2022年的旧命令，2023年2月份Cloudcone实测装机未报apparmor组件错误。 默认不再使用这套命令，如遇报错SSH输入 apt install apparmor apparmor-utils -y 安装一次组件。 然后SSH输入 docker restart vertex 重启容器。

```bash
apt update -y && 
apt upgrade -y && 
apt install curl -y && 
curl -fsSL https://get.docker.com -o get-docker.sh && 
sh get-docker.sh && 
timedatectl set-timezone Asia/Shanghai && 
mkdir -p /root/vertex && 
chmod 777 /root/vertex && 
docker run -d --name vertex --restart unless-stopped --network host -v /root/vertex:/vertex -e TZ=Asia/Shanghai lswl/vertex:stable
```

命令说明： 自动识别 主机架构 x86\_64 / AMD64 / ARM64，系统环境 Debian / Ubuntu 。 && 多命令连接执行，前一条执行成功再继续执行下一条命令。 -y 询问是否，自动确认 Y 。 查找系统更新 && 安装系统更新 && 安装Curl工具 && Docker官网稳定版脚本 && 执行安装脚本sh && 修改时区 && 创建vertex文件夹 && 赋予文件夹权限 && 安装Vertex稳定版

### 访问Vertex

FinalShell登录主机，访问vertex存储路径/root/vertex/data/ 鼠标双击password查看初始密码。 SSH访问输入命令查看密码 more /root/vertex/data/password ![XlhFij.png](https://s1.ax1x.com/2022/05/30/XlhFij.png) 浏览器使用 主机IP地址:3000 访问面板 用户名 admin 密码为 “password”文件内的初始密码 进入vertex面板后 左侧选项卡：系统设置→安全设置 请立即修改密码

欢迎使用Vertex!


# 更新操作

## 使用 Docker 命令更新

可以将以下文件保存成 update-vertex.sh, 赋予执行权限后直接执行即可更新 端口、目录等内容根据自己的实际情况修改

```bash
#! /bin/bash

docker pull lswl/vertex:stable
docker rm -f vertex
docker run -d --name vertex -v /root/vertex:/vertex -p 3000:3000 lswl/vertex:stable
docker rmi $(docker images | grep 'none' | grep 'vertex' | awk '{print $3}')
```

## 群晖 Docker

停止容器, 注册表内拉取新的 lswl/vertex:stable 镜像, 返回容器列表右键容器重置然后启动即可

## UNRaid Docker

unraid 更新那可太简单了, 检查更新然后更新即可


# 登录

## 端口

端口默认为 3000，若设置了自定义端口，则是自定义端口

## 用户名密码

默认用户名为 admin, 初始密码在 vertex/data/password 文件内, 直接复制即可 **登入之后务必在全局设置页修改账号及密码**

## 主页面

主界面为版本信息以及其它信息, 在侧边栏选择具体功能模块

![ab4ed5ea3c3b17ae78e316d1cac3f70f.png](https://pic.lswl.in/images/2022/03/25/ab4ed5ea3c3b17ae78e316d1cac3f70f.png)


# 版本说明

版本包含两类: 带有编号的已发布版本以及 release, stable, dev 等 git 分支版本 release 为目前最新的已发布版本, 仅会在版本编号更新时更新, stable 为已增加最新功能的分支, dev 为开发分支 **稳定性**: release > stable >>>> dev

详细的更新记录可以查看这里 => [更新日志](https://lswl.in/2022/01/14/vertex-changelog)

## 关于带有编号的已发布版本

参考语义化版本规范, 并作出部分改动的前提下, 本项目版本编号格式为 x.y.z\[.a], x/y/z/a均为数字

### x = 0 时

#### 版本编号要求

x = 0 时, 意味未达到正式版要求, 为测试版, 关于版本编号有以下要求:

* x: 一直为 0
* y: 必须在有不兼容先前版本的改动时改变增加。
* z: 必须在有兼容先前版本的新增功能时增加。
* a: 在有兼容先前版本的问题修复时增加。

#### 我可以在什么时候直接更新, 而无需修改本地已有的配置文件?

参考版本编号要求, 在 z 或 a 有改动时, 无需修改本地已有配置文件; 在 y 做出改动时, 需要修改本地配置文件

### x > 0 时

#### 版本编号要求

x > 0 时, 意味我认为项目已经达到正式版要求, 关于版本编号有以下要求:

* x: 必须在有不兼容先前版本的改动时改变增加。
* y: 必须在有兼容先前版本的新增功能时增加。
* z: 在有兼容先前版本的问题修复时增加。
* a: 不再使用。

#### 我可以在什么时候直接更新, 而无需修改本地已有的配置文件?

参考版本编号要求, 在 y 或 z 有改动时, 无需修改本地已有配置文件; 在 x 做出改动时, 需要修改本地配置文件


# 刷流教程

非常建议先完整看一遍然后再动手操作, 如果播放卡顿可以加入交流群, 在群文件内下载后播放, 或者下载链接: `https://s3.lswl.in/share/RSS-TASK.mp4`

{% embed url="<https://s3.lswl.in/share/RSS-TASK.mp4>" %}


# 追剧教程

非常建议先完整看一遍然后再动手操作， 如果播放卡顿可以加入交流群, 在群文件内下载后播放, 或者下载链接: `https://s3.lswl.in/share/BINGE-WATCHING.mp4`

{% embed url="<https://s3.lswl.in/share/BINGE-WATCHING.mp4>" %}


# 自动追番

非常建议先完整看一遍然后再动手操作, 如果播放卡顿可以加入交流群, 在群文件内下载后播放, 或者下载链接: `https://s3.lswl.in/share/VERTEX-MIKAN.mp4`

{% embed url="<https://s3.lswl.in/share/VERTEX-MIKAN.mp4>" %}


# 刷流配置流程

## 视频教程

非常建议先完整看一遍然后再动手操作, 如果播放卡顿可以加入交流群, 在群文件内下载后播放, 或者下载链接: `https://minio.lswl.in/share/RSS-TASK.mp4`&#x20;

## 相关模块

以下内容仅需粗略浏览 Rss 任务 删种规则 推送工具 下载器 服务器

## 全自动刷流流程

首先应该知道完整的刷流流程: Rss 获取种子列表 => 判断种子是否满足条件 => 不满足则拒绝, 满足则添加进客户端 => 在种子下载过程中, 根据具体情况实时判断是否需要删除种子 => 种子完成且无上传流量 => 删除种子, 释放空间

在了解整个流程之后, 下面来介绍用 Vertex 配置全自动刷流, 需要注意的是, 这里仅是例子, 如果需要更多功能, 则需要阅读相关文档, 当然这里不会介绍如何购买盒子, 如何安装 qBittorrent 等内容。

**特别注意: 在本例中, 涉及删除种子的操作, 建议使用全新的客户端操作, 尽量不要在保种客户端上操作**

**特别注意: 在本例中, 涉及删除种子的操作, 建议使用全新的客户端操作, 尽量不要在保种客户端上操作**

**特别注意: 在本例中, 涉及删除种子的操作, 建议使用全新的客户端操作, 尽量不要在保种客户端上操作**

## 配置 Rss 规则

#### Rss 规则, 是判断种子是否添加至客户端的规则, 主要条件是种子大小以及关键词等信息, 这里我们举三个例子

其实站点内在创建 Rss 链接的时候, 会有关键词选项, **但在此处为了表现关键词的工作, 我们使用 Vertex 的功能来筛选关键词**

#### 仅添加 10 GiB - 100 GiB 的官种

配置内容如下:

```yaml
别名: 官种-10-100
类型: 普通
条件:
  - 种子大小 - 大于   - 10*1024*1024*1024
  - 种子大小 - 小于   - 100*1024*1024*1024
  - 种子名称 - 包含   - Hares
```

#### 仅添加 10 GiB - 100 GiB 的非官种

配置内容如下:

```yaml
别名: 非官种-10-100
类型: 普通
条件:
  - 种子大小 - 大于   - 10*1024*1024*1024
  - 种子大小 - 小于   - 100*1024*1024*1024
  - 种子名称 - 不包含 - Hares
```

#### 添加 10 GiB - 100 GiB 的种子

配置内容如下:

```yaml
别名: 10-100
类型: 普通
条件:
  - 种子大小 - 大于 - 10*1024*1024*1024
  - 种子大小 - 小于 - 100*1024*1024*1024
```

## 配置删种规则

删种规则, 是指当种子符合规则时, 会删除该种, 在这里我们介绍几类常见的删种规则, 需要注意的是, 以下例子仅为参考, 不意味着读者必须添加必须用到, 应当根据自己的实际情况作出修改。

如需更多规则可以查看删种规则的介绍页面

#### 做种时间超过 10 小时, 且上传速度小于 512KiB/s 的种子

本规则主要是删除完成超过一定时间并且上传速度已经低于 512 KiB/s 的种子

```yaml
别名: 无效做种
持续时间: 留空
优先级: 0
类型: 普通
限制条件:
  - 种子状态 - 包含于 - stalledUP,uploading
  - 上传速度 - 小于   - 512*1024
  - 完成时间 - 大于   - 10*3600
```

#### 添加时间超过 48 小时

本规则主要是删除添加超过 48 小时的种子, 正常情况下大部分种子都会在此时间内完成, 并且为了不删除个别种子, 添加种子分类以排除相关种子

```yaml
别名: 超时下载
持续时间: 留空
优先级: 0
类型: 普通
限制条件:
  - 添加时间 - 大于     - 48*3600
  - 种子分类 - 不包含于 - KEEP,KEEP2
```

#### 下载速度大于 50MiB/s 但上传小于 20MiB/s

本规则主要是删除下载速度过大, 但是上传速度较小的种子, 也可以很简单的修改上传下载的值, 来匹配其它上传下载的比例

```yaml
别名: 黑车
持续时间: 留空
优先级: 0
类型: 普通
限制条件:
  - 下载速度 - 大于     - 50*1024*1024
  - 上传速度 - 小于     - 20*1024*1024
  - 种子分类 - 不包含于 - KEEP,KEEP2
```

#### 下载速度长时间小于 1MiB/s 且上传小于 512KiB/s

本规则主要是删除长时间低速度的种子

```yaml
别名: 慢车
持续时间: 180s
优先级: 0
类型: 普通
限制条件:
  - 下载速度 - 小于     - 1*1024*1024
  - 上传速度 - 小于     - 512*1024
  - 种子分类 - 不包含于 - KEEP,KEEP2
```

## 配置通知工具

推送工具, 用于推送 Rss 或客户端通知信息。目前支持 Telegram 与 企业微信, 需要特别说明的是, 客户端监控仅支持 Telegram, 且如果用到 Telegram, 请保证能够 Vertex 能够正常连接到 Telegram

[通知工具](/zhu-yao-mo-kuai/tong-zhi-gong-ju)

## 配置下载器

下载器目前仅支持 qBittorrent, 且 4.1.9 - 4.4.0 到目前为止没有发现不适配的情况

[下载器](/zhu-yao-mo-kuai/xia-zai-qi)

## 配置 Rss

[Rss 任务](/zhu-yao-mo-kuai/rss-ren-wu)

**至此, 一条完整的刷流链已完成**


# 追剧配置流程

## 视频教程

非常建议先完整看一遍然后再动手操作， 如果播放卡顿可以加入交流群, 在群文件内下载后播放, 或者下载链接: `https://minio.lswl.in/share/BINGE-WATCHING.mp4`&#x20;

## 任务流程介绍

* 根据设定启动定时任务
* 抓取豆瓣想看列表
* 根据豆瓣各个剧集页的标签或短评判断所属分类, 分类在 Vertex 的豆瓣账户内设定
* 根据 Vertex 豆瓣账户内的站点设定, 使用豆瓣页面的剧集标题搜索种子
* 利用选种规则, 对各个站点返回的数据进行筛选
* 根据规则的优先级, 返回第一个符合规则的种子
* 将种子推送至选定的客户端
* Vertex 每分钟抓取客户端的种子列表, 判断所推送的种子是否完成
* 种子完成后, Vertex 推送种子完成通知, 并且根据剧集的文件命名, 分析剧集的季/集属性, 连接所选服务器, 根据链接规则的设定执行软链接操作
* 由 Plex / Emby / Jellyfin 等工具检查文件改动, 然后自动刮削

## 前提要求

* Vertex
* 豆瓣账号
* PT 账号
* 企业微信 (用作通知消息, 创建教程群文件内有)
* NAS (非 Windows, 如果不要自动软链接的话, 可以用 Windows, 有个 qBittorrent 客户端就行)
* Plex / Emby / Jellyfin 其一 (如果只是想要自动下载的话, 也可以不要)

## 准备

除了前提要求的内容外, 需要在 Vertex 内设置以下内容

* 添加下载器 下载器用来从 PT 站点下载种子
* 添加服务器 添加服务器的目的是通过 ssh 执行命令的方式软链接文件
* 添加 PT 站点 Vertex 中 PT 站点是种子的唯一来源
* 添加选种规则 选种规则是指通过一系列的条件以及优先级来对搜索结果进行筛选, 选择出自己最想要的种子添加至下载器下载
* 添加选种规则集 选种规则集只是选中规则的集合, 仅仅是在添加豆瓣账号时方便勾选, 在选中规则集页面添加即可
* 链接规则 链接规则是指将 下载器 下载完成的种子按照规则所写的替换以及目录规则按照 Plex / Emby 等媒体服务器能够识别的命名方式生成新的链接文件

## 添加豆瓣账号

进入 追光迷影 - 豆瓣账号

### 填写说明

* 别名 取一个好记的名字
* 选择站点 选择在搜索种子时用到的站点
* 排除规则 选择排除规则, 符合这些规则的种子都会被优先拒绝, 可前往选种规则分页添加, 仅显示优先级为 0 的规则
* 选种规则 选择选种规则, 符合这些规则的种子才会添加, 需要在选种规则集页添加规则集后才会显示
* 链接规则 链接规则, 链接规则可前往链接规则分页添加, 具体内容参考 链接规则
* 下载器 下载种子时使用到的, 仅可选择已经启用的下载器
* 分类 参考下文具体介绍
* Cookie 豆瓣账号的 Cookie
* 刷新周期 刷新 想看列表 的周期, 默认为每 4 小时刷新一次, 仅刷新列表, 不搜索资源
* 资源搜索周期 影视剧的默认搜索周期, 默认为每日晚 21:35 刷新一次
* 搜索周期列表 搜索周期列表, 一行一个, 用于微信选择
* 接收微信消息 接收微信消息, 需要在全局设置内设置对应的微信 Token 以及 AesKey
* 推送通知 是否推送通知
* 通知方式 通知方式, 用于推送信息, 在推送工具页面创建

### 分类

#### 豆瓣标签

豆瓣标签指的时, 在豆瓣上添加想看时填写的标签或评论, 需要注意的是, **在 豆瓣想看 时填写的评论内仅需包含 Vertex 上填写的标签即可, 不需要完全匹配**&#x20;

#### 所属分类

所属分类包含两类, 电影 与 剧集, 根据实际情况填写即可

#### 下载器分类

下载器分类所表示的是, 当 Vertex 给下载器推送种子时, 可以添加特定的分类 除此之外, 可以使用 {SITE} 这个关键词表示站点, 用 {NAME} 表示剧名, 用 {YEAR} 表示年份 比如下载器分类填写 {SITE}, 在添加 HaresClub 站点的种子时, 会自动添加至 AHaresClubB 这个分类下, 此规则同样适用于保存路径 **若下载器使用的是 Transmission, 下载器分类对应的是种子标签, 种子标签必须在 Transmission 内预先设置**

#### 资料库路径

资料库路径指的是, 在软链接操作时, 在 **生成链接文件目录** 这个设置值的后面 **添加** 资料库路径, 比如设定的 **生成链接文件目录** 为 /mnt/user/link, 资料库设置为 movie, 在软链时, 会将软链接文件或目录存放在 /mnt/user/link/movie, 此时仅需在 Plex 等管理软件内添加目录为 /mnt/user/link/movie 即可

#### 保存路径

保存路径指的是在添加种子到下载器时, 设定的保存路径, 此路径同样可以使用 {SITE} / {NAME} / {YEAR} 的替换功能 **若下载器使用的是 Transmission, 必须完整的填写保存路径**

#### 自动管理

自动管理指的是 qBittorrent 的自动管理功能, 若不了解此功能, 请勿开启

#### 添加自动刷新

指的是, 在想看项目添加时, 是否立即搜索一次种子进行下载

#### 排除关键字

排除关键字指的是, 在使用选种规则选择种子时, 若种子的标题或副标题包含关键词, 则跳过该种, 关键词可以用英文逗号 , 分割, 多个关键词间为 或 的关系

#### 例子

这里提供一个我自己的例子&#x20;

* 请注意, 如果你配置的下载器为Transmission, 则【保存路径为必填项】

## 注意事项

### 首次添加豆瓣账号

* 首次添加豆瓣账号时会将豆瓣账号内现有的想看条目设置为已下载, 如果有希望下载的东西需要在 想看列表页 删除条目, 在豆瓣重新添加想看后刷新豆瓣账号即可

## 最后我想说些东西

最后, 我想聊一聊豆瓣账户的刷新周期, 从我们追剧的用户自身角度讲, 当然是希望越快下载到希望下载的剧集最好, 因此理想情况下应该将刷新间隔设置的足够低。 **但是**, 我们应当考虑对站点服务压力的影响, 就 Vertex 的执行逻辑来讲, 每次豆瓣刷新, 都会将所有未完成的剧集在已设定的站点内搜索一次, 如果未完成的剧集过多, 则可能会出现短时间内频繁搜索的情况, 这是站点以及我都不愿意看到的情况 **因此**, 我想提出以下几点建议:

* 合理的设置刷新周期 比如, 画江湖之不良人每周四上午更新, 我希望能在周四晚上下班后观看, 可以在想看列表内单独设置刷新周期设置为 0 18 \* \* 4, 意为 在周四的 18 点各执行一次刷新任务, 这样就能够保证不会在不可能更新的时候去站内搜索, 造成无效请求。当然这里仅仅是做一个说明, 实际操作中不可能每部剧都这么做, 实际是想表达一个合理设置刷新时间的思想。
* **不要将刷新间隔时间设置的过低, 在我看来, 每天下午至晚上每一个小时刷新一次已经够极限了!!!!!**
* **尽量不要将明知近期不会出现该影视资源的任务添加进每日刷新的剧集中!!!!**


# 常见问题

遇到任何问题, 请先在系统日志页查看日志, 信息或错误都要看!!!!用 Ctrl + F 在本页面快速搜索问题

## 全局

### 如何获取 Cookie

建议使用 Chrome 开启无痕模式抓取, 多次出现使用 EDGE 抓取到的 Cookie 无法使用的问题 以 Chrome 举例, 打开希望获取 Cookie 的网站, 按 F12 之后弹出开发者工具窗口, 选择 Network / 网络 标签页 (1), 之后刷新一次页面, 然后左侧点击第一个 (2), 然后在右方弹出的小窗口种寻找 Request Header 下的 Cookie (3), 复制内容即可&#x20;

<figure><img src="https://1236336705-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fe867Ol3sPaghugvFZy1U%2Fuploads%2FwV5AGjtsU98EoVC7ijCU%2Fcookie.jpeg?alt=media&amp;token=899569df-62b7-4e78-9703-a0c5ab996ddd" alt=""><figcaption></figcaption></figure>

### 如何查看日志

进入 Vertex, 侧边栏选择 `系统日志`&#x20;

### **登陆后一直提示** 鉴权失效，需要刷新页面

1. 异常运行导致的容器重启，可以检查 docker 日志排查问题。
2. 导入他人备份造成异常重启，有能力排查具体原因的自己排查，没能力的别导入。
3. 导入他人备份造成异常重启，着重检查 RSS 规则及删种规则内的 JavaScript 类型规则，实在不行全删了。
4. 和其它容器共用同个 IP，因 cookie 不区分端口，可能导致 cookie 被其它应用刷新，使用无痕模式打开 vertex 登录后检查是否能正常使用。解决办法是使用不同 IP，或单独绑定域名使用

### Unexpected end of JSON input

VT 所在硬盘被占满过，并且占满时进行了配置文件变更导致写出文件为空内容，具体配置文件夹可以在日志里找到线索，找到对应空文件后删了就行，若为其它组件依赖的组件，需要同步修改。

### **密码忘记了怎么办? 如何重置密码?**

1. 删除位于 `vertex/data/setting.json` 文件内的 `password` 一行
2. 若 `password` 一行位于最后一行, 需要删除上一行最后的 , 符号
3. 然后重启容器, 重新生成的密码保存在 `vertex/data/password` 文件内

### **ETIMEDOUT / ENETUNREACH / ESOCKETTIMEOUT / ECONNREFUSED / socket hang up ...**

如果 Vertex 和下载器在同一个机器上，且下载器也是 Docker 安装，百度 docker 间网络不通

网络问题, 检查 Vertex 与 下载器 / 站点 间网络是否通畅

如果是站点无法访问, 可以尝试

* 进入 常用工具 - 修改 hosts 来指定站点 ip, 优化 Cloudflare 的访问, 获取 Cloudflare 对应的 IP 可以参照这个教程: [CloudflareST](https://zhuanlan.zhihu.com/p/207315892)
* 进入 常用工具 - http 代理, 添加 http 代理的方式通过代理访问网站, http 代理服务端的搭建方式请自行研究

### getaddrinfo EAI\_AGAIN

DNS 解析发生错误, 检查要访问的地址是否正常解析, 特殊情况下也可能是网络拥堵引起的解析失败, 可以刷新或稍后重试

### unraid br0 模式下 docker 间网络不通

进入 设置 - docker

### Cookie 失效

* 字面意思, Cookie 失效或者获取 Cookie 的方式不对, 可以尝试重新获取 Cookie
* 网络原因, 某些情况下可能会导致访问 PT 站点时遇到 Cloudflare 5s 盾, 这种情况大多是 Vertex 所在的网络环境被 Cloudflare 认为是有安全威胁, 可以尝试更换 IP 甚至网络环境

### openapi 回调地址不通过

* Token 和 AesKey 需要先在 Vertex 里 保存 一遍
* openapi 调用需要公网 v4 环境能够访问自己的 vertex 页面, 可以是 FRP, NPS 等内网穿透工具, 但是前提是没有其它跳转, 或者验证环节 (比如扫码)
* 检查 AesKey 与 Token 是否填写正确，注意前后是否有多余空格
* openapi 用于追剧部分的微信交互功能，属于不是必须通过的内容，可以不配置

### error not a number : buffer\[0]=xx

出现这个错误的原因是下载到的文件不是标准的种子文件, 可以考虑以下问题

* Rss 链接用错, 需要用支持 BT 客户端的 Rss 链接
* NexusPHP 站点在第一次下载的时候需要确认, 请确认自己已经确认过
* 站内种子页面点击 下载种子, 尝试能否正常下载, 不要使用复制链接的方式下载种子
* Cookie 失效，可以试试 Cookie 是否还有效
* 可能是网络问题, 可以尝试重试下载种子

### Invalid data: Missing delemiter ":" \[0xxx]

同上

### TypeError: Cannot read property 'alias' of undefined

有 RSS 规则内选择了下载器，但是这个被选择的下载器已经被删了，取消指定下载器就行。

### 无效的 PANEL KEY

在 Vertex 系统设置 - 安全设置中填写 Panel Key。Panel Key 需在 [Vertex Panel](https://dash.vertex-app.top) 注册获得

### Too Many Requests

下载器配置的通知频道和监控频道分开，每一个下载器单独一个监控频道。

### &#x20;Telegram 推送提示 description: 'Bad Request: chat not found'

1. 频道 ID 不对
2. 机器人未拉进频道
3. 个别用户反馈需要将频道设置为公开

## 下载器

### 显示连接失败

查看错误日志, 排查问题

### **statusCode is 404**

下载器设置 WebUrl 最后的 / 去掉

### **statusCode is 403**

下载器内设置的账号密码输入错误, 也或者是曾经输入错误导致登录失败次数过多, 此时需要修改下载器账号密码配置甚至重新启动 qBittorrent

### 种子添加上了却没速度?

* 检查下载器是否能够正常连接 tracker
* 检查是否有做种者, 并且已经连接上
* 检查种子是否有限速
* 检查种子文件的下载目录是否有写入权限

### 种子添加上了提示错误?

* 检查种子文件的下载目录是否有写入权限

### 如何查看 qBittorrent 的日志

qBittorrent 登录之后网址后面添加 /api/v2/log/main

### Unauthorized

从 Vertex 内打开 qBittorrent 显示 `Unauthorized`, 需要通过原地址登录 qBittorrent 修改 设置 - WebUI - 启用跨站请求伪造 (CSRF) 保护, 取消勾选该项目保存即可

### 种子 Tracker 列表显示 Skipping tracker announce

可以尝试以下操作

* 关闭设置内的验证 HTTPS tracker 证书
* qBittorrent 43x 版本的问题， 可以尝试在 qBittorrent 内修改 BitTorrent 端口，或者直接将 qBittorrent 降级至 42x 版本

### 推送报错: Bad Request message to edit not found

下载器推送监控所用的通知工具, 必须勾选 下载器已连接 的通知类型

## Rss

### 添加了 Rss 任务之后一直不见有种子添加? 任务历史也显示空白?

* 检查 rss 链接是否正确, 一般的我们认为 Rss 链接是在 PT 站右上角生成的 Rss 链接, 而不是收藏夹
* 检查日志, 排除网络等问题

### 添加了 Rss 任务之后一直不见有种子添加? 任务历史只显示拒绝最长休眠时间?

* 检查 rss 内容是否有新种子添加, 也就是站点内是否有新种子发布

### **Vertex 显示添加成功, 但是客户端看不到种子?**

* Rss 链接用错, 需要用支持 BT 客户端的 Rss 链接
* 下载器网络问题, 自行检查
* 检查完以上内容后, 手动添加种子测试看看, 如果手动添加也不行, 重启下载器
* 除了上面提到的情况, 目前有些站添加了流控, 也就是短时间内不能下载超过一定数量的种子, 可以后续重试看看

### **Vertex 显示添加成功, 客户端也显示有种子, 但是一直处于等待状态或速度很慢?**

* 检查是否连接上 tracker, 如果连接不上, 考虑网络原因
* 检查是否做种者是否已经开始上传
* 检查已经连接上的其他用户与自己的进度差距, 即有东西可以下载
* 检查种子是否被限速
* 检查种子保存路径是否有读写权限

### **如何理解最长休眠时间?**

最长休眠时间, 若上次成功 RSS 在 N 秒以前, 则本次 RSS 拒绝所有种子, 建议为 3-5 倍于 Rss 周期, 单位为秒 设置最长休眠时间的目的是避免 Rss 任务 **第一次添加任务或长时间因网络或站点问题失败之后突然加入大量种子** 的情况 **你这个时候要做的, 就是等新种子** **如果不想启用本功能, 应当在最长休眠时间处填写 10 个 9**

**举例讲, Rss 周期为五分钟, 设置最长休眠时间 1100s**

* 14: 00, 本次 Rss 成功获取种子列表
* 14: 05, 本次 Rss 获取种子失败
* 14: 10, 本次 Rss 获取种子失败
* 14: 15, 本次 Rss 获取种子失败
* 14: 20, 本次 Rss 获取种子成功, 但是距离上次成功 Rss 过去了 20 \* 60 = 1200s > 1100s, 拒绝本次 Rss 获取到的所有种子, 同时记录下本次 Rss 成功的时间为 14: 20
* 14: 25, 本次 Rss 获取种子成功, 因此距离上次 Rss 成功时间为 5 \* 60 = 300s < 1100s, 正常进入判断流程添加种子
* 14: 30, 本次 Rss 获取种子失败
* 14: 35, 本次 Rss 获取种子成功, 同时上次 Rss 任务成功时间为 14: 25, 因此距离上次 Rss 成功时间为 10 \* 60 = 600s < 1100s, 正常进入判断流程添加种子
* **修改 Rss 任务会重新计时**

### **站点里显示免费, 但是 Vertex 提示非免费种**

两种情况

* 目前 CHD 与 U2 需要在 控制面版 - 网站设置 - 种子页面 将促销种子设置为 添加标记 选项
* 另外还有一种情况是个别站点种子的发布与优惠状态的更新不是一起执行的, 存在先发布, 后加优惠的情况, 因此需要在 Rss 任务内设置等待时间

### Cannot read property '0' of undefined

站点在生成 RSS 链接时有两个, 用了错误的一个, 尝试换用另一个 RSS 链接

### Cannot read property 'length' of undefined

创建的 Rss 链接返回的种子列表为空, 简单讲, 没有种子符合自己所选择的情况 另: MTeam 存在流控, 把 Rss 周期修改为 `*/6 * * * *`

### ERR\_INVALID\_URL

Rss 任务设置内, Rss 链接的格式不正确或存在空行

### Error: Unexpected close tag

报错原因为解析 rss 链接返回的 xml 失败, 可能以下几个原因

* 站点暂时无法访问
* rss 链接填写错误, 检查链接是否正确
* 遇到 Cloudflare 的 5s 盾, 可以考虑在全局设置内修改 UserAgent, 若修改了依然有此问题, 考虑更换 Vertex 所在的网络 IP 或者网络环境

> 可以在`常用工具 - 网络测试` 里测试看看返回的什么内容。 {.is-info}

> User Agent 可以在这里获取 => [User Agent](https://ua.lswl.workers.dev/) {.is-info}

### Non-whitespace before first tag

同上

### Cannot read property 'rss' of null

同上

### 无可用下载器

* 检查下载器状态是否正常
* 检查下载器状态是否符合下载器设置的 上限上传速度 / 上限下载速度 / 最小剩余空间 / 最大下载数量 三个限制
* 检查下载器状态是否符合 RSS 任务内设置的 下载器最高上传速度 / 下载器最高下载速度 / 下载器下载任务上限 三个限制

### M-Team 抓取免费提示 Cookie 失效

M-Team 的 Cookie 与 IP 以及 User-Agent 绑定, Vertex 页进入 常用工具 - MT 登录 手动操作一次即可 使用无痕模式抓取 Cookie, Cookie 输入框内仅保留 tp=xxxx; 一段即可, 登录之后将 tp=xxxx 填入站点列表及 Rss 任务内的 Cookie

### CHDBits 经常提示 RSS 遇到错误

CHDBits 有 RSS 流控，注意不要同时运行多个 RSS 任务。 可以通过设定不同的 RSS 规则达到分流的效果。

### 添加种子失败

* 检查 RSS 链接，需要用支持 BT 客户端的 Rss 链接
* 检查是否被站点流控限制，可以自行在站内下载一次种子试试

## 追剧

### 添加豆瓣账号并刷新后, 想看列表无内容

* 检查豆瓣 Cookie 是否正确
* 检查豆瓣网站上是否添加想看
* 查看日志

### 添加豆瓣账号并刷新后, 提示 Cookie 过期

* 注意填写 Cookie 之后尽量不要在其它地方登录，目前作者感受到的情况是，如果你填写 cookie 之后，在某地用网页登录了豆瓣，cookie 就会失效。
* 检查主账号以及附加账号的想看列表是否均有想看项目, 不能为空
* 使用常用工具 - 网络测试, 网址填入 `https://www.douban.com`, 并填入 cookie, 执行返回结果后, Ctrl + F 搜索自己的用户名, 如果搜索不到, 证明 Cookie 失效, 重新抓取

### 添加豆瓣账号并刷新后, 想看列表有内容但没有自动下载种子

首次添加豆瓣账号时会将豆瓣账号内现有的想看条目设置为已下载, 如果有希望下载的东西需要在 想看列表页 删除条目, 在豆瓣重新添加想看后刷新豆瓣账号即可

### 订阅列表里面有重复项

检查是否订阅任务之间有关键词是相同或包含问题 比如自己在豆瓣加了一个想看，填写标签为`国产剧集`，这个标签可能会同时匹配上 `剧集` 和 `国产剧集`

### 订阅列表删除之后, 刷新豆瓣又添加了回来

**默认情况下**, 删除操作时会自动删除豆瓣网站上的记录，但是某些时候遇到报错，可能需要手动在豆瓣网站上删除项目

### 查找到 0 个种子

检查所选择的站内是否有对应种子, 比如 `向往的生活 第六季` 就应该在 `追光迷影 - 聚合搜索` 内搜索 `向往的生活 第六季` 看看是否有正常返回

## 附: 提问的艺术


# 信息监控

## 下载器列表

**下载器列表展示已添加的下载器的基本信息, 包括：**

* 下载器的别名
* 下载器的 web 地址
* 下载器的类型
* 下载器当前的上传下载速度
* 下载器历史的上传下载流量
* 下载器当前的上传下载种子数量

## 服务器列表

**服务器列表展示已添加的服务器的基本信息, 包括：**

* 服务器的别名
* 服务器的 IP / 域名
* 服务器当前的 CPU 占用
* 服务器当前的上传下载速度
* 服务器的状态

## 服务器详情

**服务器详情默认折叠, 需要点击服务器列表的查看详情之后展开, 同时数据来源自 Linux 下的 sysstat 与 vnstat, 因此要求服务器必须安装上面两个软件, 并且 vnstat 的版本需要在 2.0+**

### 服务器历史流量曲线

以曲线的形式显示 vnstat 的统计数据, 时间范围 5 分钟 / 每小时 / 每日 / 每月, 由右下的统计周期下拉选择器控制

### 服务器短期流量曲线

以曲线的形式显示服务器实时的速度, 数据来自 sysstat, 显示从打开服务器详情之后开始的所有速度, 时间粒度为 5 秒钟

### 服务器历史流量统计

以表格的形式显示服务器的历史流量, 数据来自 vnstat

## Tracker 速度

按 Tracker 分类显示一天内的速度曲线, 仅统计由 Vertex 添加的种子


# 站点

注意这里是 站点 功能的支持情况，如果要看 RSS 相关功能前往这里：

## 站点支持情况

| 站点          | 站点数据 | 种子搜索 | 站点代理 | 超级追剧模式 | 备注                                    |
| ----------- | ---- | ---- | ---- | ------ | ------------------------------------- |
| 白兔          | √    | √    | √    | √      | X                                     |
| 猫站          | √    | √    | √    | √      | X                                     |
| 柠檬          | √    | √    | √    | √      | X                                     |
| 学校          | √    | √    | √    | √      | X                                     |
| OB          | √    | √    | √    | √      | X                                     |
| 家园          | √    | √    | √    | √      | X                                     |
| M-Team      | √    | √    | √    | √      | 站点 Cookie 与登录所用 IP 绑定, 查看这里 => 常见问题   |
| 天空          | √    | √    | √    | √      | X                                     |
| 不可说         | √    | √    | √    | √      | X                                     |
| 彩虹岛         | √    | √    | √    | √      | ~~2022-07-16 去除所有支持~~ 2022-08-26 恢复支持 |
| 瓷器          | √    | √    | √    | √      | X                                     |
| 观众          | √    | √    | √    | √      | X                                     |
| 憨憨          | √    | √    | √    | √      | X                                     |
| KeepFriends | √    | √    | √    | X      | X                                     |
| ToTheGlory  | √    | √    | √    | X      | X                                     |
| PTHome      | √    | √    | √    | X      | X                                     |
| NYPT        | √    | √    | √    | X      | X                                     |
| U2          | √    | √    | √    | X      | X                                     |
| PIGGO       | √    | √    | √    | X      | X                                     |
| 梓喵          | √    | √    | √    | X      | X                                     |
| HDArea      | √    | √    | √    | X      | X                                     |
| HDAtmos     | √    | √    | √    | X      | X                                     |
| 杜比          | √    | √    | √    | X      | X                                     |
| PIGGO       | √    | √    | √    | X      | X                                     |
| 皇后          | √    | X    | X    | X      | X                                     |
| 备胎          | √    | X    | X    | X      | X                                     |
| HDFans      | √    | X    | X    | X      | X                                     |
| TCCF        | √    | X    | X    | X      | X                                     |
| PTMSG       | √    | X    | X    | X      | X                                     |
| TLFBits     | √    | X    | X    | X      | X                                     |
| GPW         | √    | X    | X    | X      | X                                     |
| DICMusic    | √    | X    | X    | X      | X                                     |

## 添加站点

进入 站点聚合 - 站点列表

### 填写说明

* 选择站点 选择希望添加的站点
* 启用 是否启用
* 更新周期 站内数据的更新周期, Crontab 表达式, 默认每天的 11:55 与 23:55 各更新一次
* Cookie

## 常见问题

关于 MTeam 的 Cookie 失效问题, 参考 常见问题


# 下载器

## 支持类型

### qBittorrent

qBittorrent 为 Vertex 主要对接的下载器, 任何功能都会首先适配 qBittorrent

### Transmission

受制于 Transmission 的开放接口限制以及 Transmission 不适合刷流, 因此就目前来说 Vertex **不支持**使用 Transmission 刷流, **不支持** Transmission 的自动删种

## 添加下载器

进入 下载服务 - 下载器

### 填写说明

* 别名 给下载器取一个好记的名字
* 启用 选择是否启用下载器
* 下载器类型 按需选择
* 用户名 填写登录下载器所需的用户名
* 密码 填写登录下载器所需的密码
* WebUI - Url 下载器的访问, 最后的 / 需要删除, Transmission 同样仅需要填写 [https://ip:port](https://wiki.vertex-app.top/zhu-yao-mo-kuai/https:/ip:port)
* 推送通知 是否推送下载器相关通知, 包括连接状态 / 删种提示等
* 通知方式 选择你推送使用的工具
* 推送下载器监控 推送下载器主要信息的频道, 仅支持 Telegram 频道, 并且需要确保 Vertex 能够正常访问 Telegram
* 下载器状态频道 选择你推送使用的工具
* 信息更新周期 同步下载器信息的周期, 默认为 4s 一次, 如果下载器的种子有几百个甚至几千个, 可以适当调节周期, 周期为 Linux Cron 的写法
* 自动汇报 自动在种子添加后的 5 分钟内每分钟汇报一次, 获取更多 Peers, 按需选择
* 空间警告 下载器剩余空间小于一定值时推送警告通知, 15 分钟一次
* 空间 空间警告的阈值
* 上限上传速度 若下载器的上传速度在此速度之上时, 不再添加种子
* 上限下载速度 若下载器的下载速度在此速度之上时, 不再添加种子
* 最大下载数量 最大的下载活动种子数量, 在超过此数量时, 将不会添加种子
* 最小剩余空间 若下载器的剩余空间在此空间之下时, 不再添加种子
* 同服下载器 目前不生效, 默认即可
* 自动删种 是否开启自动删种
* 删种周期 自动删种任务的周期, 默认为 1 分钟一次, 可以适当调节周期, 周期为 Linux Cron 的写法
* 删种规则 删种规则, 种子状态符合其中一个时即触发删除种子操作


# 服务器

## 支持类型

大部分基于 Linux, 可提供 ssh 连接访问的服务器, 如 Debian, Centos, ProxmoxVE, 群晖, 威联通, UNRaid 如果需要在监控信息页查看信息, 则需要安装 sysstat 和 vnstat 2.0+

## 添加服务器

进入 下载服务 - 服务器

* 别名 给服务器取一个好记的名字
* 启用 选择是否启用服务器
* IP / 域名 服务器的 IP: 192.168.1.1 或域名: my.seed.box
* 绑定下载器 可选, 服务器绑定的下载器, 将在监控页提供链接
* 用户名 填写 ssh 登录服务器所需的用户名
* 密码 填写 ssh 登录服务器所需的密码
* 端口 填写 ssh 登录服务器所需的端口
* 重连次数 最大的 ssh 自动重连次数, 执行操作遇到错误时会自动重连, 默认为 10

## 安装 sysstat 与 vnstat

### 群晖

移步 => [看这里](https://blog.shutu736.com/archives/qun-hui-an-zhuang-vertex-he-sysstat)

### 威联通

由 HaroldXin 提供

1. 下载entware包管理器，2022.03的最新版本地址是 `https://bin.entware.net/other/Entware_1.03std.qpkg`
2. 在威联通app center中添加entware  注意：由于威联通定制Linux系统原因，/opt/bin 并没有加到环境变量中，所以在 shell 中直接运行 opkg 将不能被识别，需要在AppCenter重启 Entware-std 应用甚至重启 NAS 才能直接识别，也可以使用绝对路径（/opt/bin/opkg）直接运行。
3. 执行 `/opt/bin/opkg update && /opt/bin/opkg install vnstat && /opt/bin/opkg install sysstat` 安装后重启即可

### unraid

前置条件 NerdPack 就不多赘述了, 玩 unraid 肯定也安装了 进入 NerdPack 之后搜索 stat, 安装 sysstat 以及 vnstat

安装之后 vnstat 不会自动启动, 需要进入 ssh 执行以下命令

```bash
  chmod +x /etc/rc.d/rc.vnstat
  /etc/rc.d/rc.vnstat start
```

unraid 重启后会还原设置, 可以在启动脚本内加入这两行代码

### Debian

#### Debian 10

* sysstat 可以直接 apt 安装

```bash
apt install sysstat
```

* vnstat 因为 apt 安装的 vnstat 版本低于 2.0, 因此需要编译安装

```bash
bash <(curl -Ls "https://gitlab.lswl.in/lswl/lswl/-/raw/main/script/vnstatCompileInstaller.sh")
```

安装完成后会显示本机的 网卡信息, 需要将 `/etc/vnstat.conf` 内的 `Interface` 修改为对应的网卡名称&#x20;

#### Debian 11+

* sysstat 与 vnstat 均可通过 apt 安装

```bash
apt install sysstat vnstat
```

### CentOS

#### CentOS 7.9

```bash
yum group install "Development Tools" -y
yum install gd gd-devel sqlite-devel -y
yum install epel-release -y
yum install sysstat -y
wget https://github.com/vergoh/vnstat/releases/download/v2.6/vnstat-2.6.tar.gz
tar zxvf vnstat-2.6.tar.gz
cd vnstat-2.6 && ./configure --prefix=/usr --sysconfdir=/etc
make clean && make install
cp -v examples/systemd/vnstat.service /etc/systemd/system/
systemctl enable vnstat  
systemctl start vnstat
```


# Rss 任务

## Rss 支持情况

参考 Rss 支持站点

## 添加 Rss 任务

进入 刷流工具 - Rss 任务

### 填写说明

* 别名 给下载器取一个好记的名字
* 启用 选择是否启用下载器
* 下载器 勾选使用到的下载器, 可多选, 多选情况下启用负载均衡模式
* 排序规则 负载均衡模式下的排序规则, Rss 任务会将种子添加给从小到大排序（空间是从大到小排序）后的第一个下载器
* 下载器最高上传速度 Rss 任务在选择下载器时, 根据此项排除掉上传速度超过本值的下载器
* 下载器最高下载速度 同上
* 下载器下载任务上限 同上
* RssUrl 列表 Rss 链接列表, 可填多个, 每次执行 Rss 任务时抓取所有链接的种子, 不允许留有空行
* Cookie 在没有开启 抓取免费 或 排除 HR 的时候此项不会出现, 在开启之后此项必填
* 推送通知 是否推送 Rss 任务相关通知, 包括拒绝种子, 添加种子, Rss 任务报错等
* 通知方式 选择你推送使用的工具
* Rss 周期 Rss Cron 表达式, 默认为 1 分钟更新一次, 特别的, MT 需要改为 6 分钟一次 \*/6 \* \* \* \*
* 限制上传速度 限制种子的上传速度, 0 为不限速
* 限制下载速度 限制种子的下载速度, 0 为不限速
* 抓取免费 仅添加免费种子, 仅会在 rss 时判断 1 次, 因此魔力促销类可能不会添加, **不支持的站点不要勾!**
* 排除 HR 仅添加非 HR 种子, 仅会在 rss 时判断 1 次, **不支持的站点不要勾!**
* 每小时上限 每小时向客户端推送种子数量上限, 留空为 20, 编辑 Rss 或重启后重置计数
* 等待时间 若在 Rss 时种子是非免费状态, 将在种子发布后的一段时间内重复抓取免费状态, 建议等待时间略**小于** Rss 周期
* 保存路径 下载器在下载种子时的保存路径
* 分类 下载器在下载种子时添加的分类
* 最长休眠时间 最长休眠时间, 若上次成功 RSS 在 N 秒以前, 则本次 RSS 拒绝所有种子, 建议为 3-5 倍于 Rss 周期, 单位为秒, 更详细的内容参考 常见问题
* 跳过大小相同种子 跳过所有下载器内存在大小相同种子的种子, 若禁用此项, 存在同路径同种子时开始校验, 不同路径同种子时开始下载
* 拒绝规则 拒绝规则, 种子状态符合其中一个时即触发拒绝种子操作
* 选择规则 选择规则, 种子状态符合其中一个时即触发添加种子操作


# Rss 规则

## 自定义代码

### 基本结构

```javascript
// 提供 torrent 参数, torrent 为当前操作种子的信息
// 返回 true 则意为符合 Rss 条件, 添加该种
(torrent) => {
  return false;
}
```

### torrent

#### torrent 结构如下

```javascript
const torrent = {
  size: 0,
  name: '',
  hash: '',
  id: 0,
  url: '',
  link: ''
};
```

#### torrent 各属性释义

| 属性   | 释义             |
| ---- | -------------- |
| size | 种子大小, 单位为 Byte |
| name | 种子名称           |
| hash | 种子 hash        |
| id   | 种子在所在站点的 id    |
| url  | 种子文件的下载链接      |
| link | 种子在所在站点的详细页面链接 |

## 举栗

### 使用正则匹配 Hares 站点官种

```javascript
// 使用正则匹配 Hares 站点官种，（单纯为了演示正则, 其实完全不需要使用正则....）
(torrent) => {
  const { name } = torrent;
  if (name.match(/Hares/)) {
    return true;
  }
  return false;
};

// 上面是为了看的清晰, 实际可以这么写...
(torrent) => torrent.name.match(/Hares/);
```


# 删种规则

## 类型

* 普通规则 即通过条件列表用来筛选种子, 根据匹配情况进行删种
* javascript 通过 Javascript 代码, 依据代码段的返回值进行判断删种

## 普通规则

### 说明

1. 分享率一: 上传 / 种子大小 的结果<br>
2. 分享率二: 上传 / 下载 的结果<br>
3. 站点域名: 种子的 Tracker 地址的域名部分<br>
4. 各类时间: 选项时间到当前时间的差值, 单位为 秒/s<br>
5. 各类大小: 单位为 字节 / Byte, 可以使用 \* 做乘法运算<br>
6. 各类速度: 单位为 字节/s / Byte/s<br>
7. 种子状态: 参照 qBittorrent 对种子状态的定义, 主要包含以下几类:\
   上传中: `uploading`, 下载中: `downloading` 等待下载: `stalledDL`, 做种但无上传: `stalledUP` 更多状态请参照 qBittorrent Wiki, 若想删除等待下载状态下的种子, 应填写 `stalledDL`
8. 返回信息: 种子 Tracker 列表中由 Tracker 返回的信息<br>
9. 当前时间: 当天 0 点到当前时间的秒数\
   例: 填写 当前时间大于 8\*3600 与 当前时间小于 22\*3600\
   则只会在当天上午 8 点之后到 22 点之前删种\
   0 点的时间戳取决于 Vertex 安装环境的时区<br>
10. 全局速度: 当前下载器的速度<br>
11. 做种下载连接: 仅计算已连接上的数量, 也即 qBittorrent WebUI 内括号外的数字<br>
12. 做种下载任务: 任务的数量, 做种包含上传中状态与做种状态, 下载包含下载中与等待下载状态<br>
13. 比较类型中的 包含 / 包含于 或 不包含 / 不包含于: 值部分需以半角逗号 , 为分割符, 如种子分类不包含于 KEEP, KEEP2, KEEP3 三个分类, 则应填写: `KEEP,KEEP2,KEEP3`

## Javascript

### 基本结构

```javascript
// 提供 maindata 与 torrent 参数, maindata 为 qBittorrent 的全局信息, torrent 为当前操作种子的信息
// 返回 true 则意为符合删种条件, 若未设置持续时间, 则立即删除该种, false 为不删除
(maindata, torrent) => {
  return false;
}
```

### maindata

#### maindata 结构如下

```javascript
const maindata = {
  downloadSpeed: 0,
  uploadSpeed: 0,
  freeSpaceOnDisk: 0,
  leechingCount: 0,
  seedingCount: 0,
  usedSpace: 0,
  queuedIO: 0,
  readCacheOverload: 0，
  writeCacheOverload: 0,
  torrents: [torrent, torrent, torrent....]
}
```

#### maindata 各属性释义

| 属性                 | 释义                                                    |
| ------------------ | ----------------------------------------------------- |
| downloadSpeed      | 全局下载速度, 单位 Byte/s                                     |
| uploadSpeed        | 全局上传速度, 单位 Byte/s                                     |
| freeSpaceOnDisk    | 剩余空间, 单位 Byte                                         |
| leechingCount      | 当前下载数量, 包括下载, 等待下载状态                                  |
| seedingCount       | 当前做种数量, 包括做种, 上传状态                                    |
| usedSpace          | 已使用空间, 由所有种子完成量加和得到, 单位 Byte                          |
| queuedIO           | IO 队列长度, qBittorrent 统计页面的 队列的 I/O 任务, 仅限 qBittorrent |
| readCacheOverload  | 读取缓存超负荷, qBittorrent 统计页面的 读取缓存超负荷, 仅限 qBittorrent    |
| writeCacheOverload | 写入缓存超负荷, qBittorrent 统计页面的 写入缓存超负荷, 仅限 qBittorrent    |
| originProp         | 由客户端返回的原始客户端属性, 具体内容请参考文档                             |
| torrents           | 种子列表                                                  |

### torrent

#### torrent 结构如下

```javascript
const torrent = {
  availability: 0.5,
  name: 'torrent name',
  uploadSpeed: 0,
  downloadSpeed: 0,
  size: 0,
  progress: 0.1,
  tracker: 'tr.ack.er',
  completed: 0,
  uploaded: 0,
  downloaded: 0,
  ratio: 0.1,
  category: 'category',
  state: 'downloading',
  addedTime: 0,
  completedTime: -1,
  savePath: '/root/Downloads',
  seeder: 0,
  leecher: 0,
  trackerStatus: ''
}
```

#### torrent 属性与 qBittorrent 所返回的属性对应关系

```javascript
const torrent = {
  availability: 'availability',
  name: 'name',
  uploadSpeed: 'upspeed',
  downloadSpeed: 'dlspeed',
  size: 'size',
  progress: 'progress',
  tracker: 'tracker',
  completed: 'completed',
  uploaded: 'uploaded',
  downloaded: 'downloaded',
  ratio: 'ratio',
  category: 'category',
  state: 'state',
  addedTime: 'added_on',
  completedTime: 'completion_on',
  savePath: 'save_path',
  seeder: 'num_seeds',
  leecher: 'num_leechs'
}
```

#### torrent 各属性释义

| 属性            | 释义                                               |
| ------------- | ------------------------------------------------ |
| availability  | 可用性, 可以是小数, 4.1.x 版本没有这个参数, 由客户端根据已连接的 peer 计算得出 |
| name          | 种子名称                                             |
| uploadSpeed   | 上传速度, 单位 Byte/s                                  |
| downloadSpeed | 下载速度, 单位 Byte/s                                  |
| size          | 种子大小, 单位Byte                                     |
| progress      | 种子当前进度                                           |
| tracker       | Tracker 地址, 与 qBittorrent 返回不同, 此属性仅包含域名         |
| completed     | 已完成大小, 单位 Byte                                   |
| uploaded      | 已上传, 单位 Byte                                     |
| downloaded    | 已下载, 单位 Byte                                     |
| ratio         | 分享率                                              |
| category      | 分类                                               |
| state         | 种子当前状态                                           |
| addedTime     | 种子添加时间, 秒时间戳                                     |
| completedTime | 种子完成时间, 秒时间戳                                     |
| savePath      | 保存路径                                             |
| seeder        | 已连接的做种 peer 数量                                   |
| leecher       | 已连接的下载 peer 数量                                   |
| trackerStatus | Tracker 返回信息, 部分站点不支持                            |
| originProp    | 由客户端返回的原始种子属性, 具体内容请参考文档                         |

关于种子列表, 了解更多 => [qBittorrent-Api-Wiki:get-torrent-list](https://github.com/qbittorrent/qBittorrent/wiki/WebUI-API-\(qBittorrent-4.1\)#get-torrent-list)

#### torrent 任务状态释义

| 状态                 | 释义                               |
| ------------------ | -------------------------------- |
| error              | 发生了一些错误，适用于暂停的种子                 |
| missingFiles       | Torrent 数据文件丢失                   |
| uploading          | Torrent 正在播种，正在传输数据              |
| pausedUP           | Torrent 已暂停并已完成下载                |
| queuedUP           | 队列已启用且 torrent 已排队等待上传           |
| stalledUP          | Torrent 正在播种，但没有建立连接             |
| checkingUP         | Torrent 已完成下载，正在检查中              |
| forcedUP           | Torrent 被强制上传并忽略队列限制             |
| allocating         | Torrent 正为下载分配磁盘空间               |
| downloading        | 正在下载 Torrent，正在传输数据              |
| metaDL             | Torrent 刚刚开始下载并正在获取元数据           |
| pausedDL           | Torrent 已暂停并且尚未完成下载              |
| queuedDL           | 队列已启用且 torrent 已排队等待下载           |
| stalledDL          | Torrent 正在下载，但未建立连接              |
| checkingDL         | 与 checkingUP 相同，但 torrent 尚未完成下载 |
| forcedDL           | Torrent 被强制下载以忽略队列限制             |
| checkingResumeData | 在 qBt 启动时检查恢复数据                  |
| moving             | Torrent 正在移动到另一个位置               |
| unknown            | 未知状态                             |

关于任务状态, 了解更多 => [qBittorrent-Api-Wiki:torrent-management](https://github.com/qbittorrent/qBittorrent/wiki/WebUI-API-\(qBittorrent-4.1\)#torrent-management)

## 举栗

### 黑车

```javascript
// 黑车
(maindata, torrent) => {
  const categoryList = [
    "不想",
    "删的",
    "种子",
    "加",
    "这些",
    "分类"
  ];
  const ruleData = [
    { down: 80, up: 50 },
    { down: 70, up: 40 },
    { down: 60, up: 30 },
    { down: 50, up: 25 },
    { down: 40, up: 20 },
    { down: 20, up: 7 },
    { down: 15, up: 5 },
    { down: 10, up: 2 },
    { down: 5, up: 0.5 }
  ];
  const { state, upspeed, category, dlspeed } = torrent.originProp;
  if (categoryList.indexOf(category) !== -1) {
    return false;
  }
  for (const rule of ruleData) {
    if (
      state == "downloading" &&
      dlspeed >= util.calSize(rule.down, "MiB") &&
      upspeed <= util.calSize(rule.up, "MiB")
    ) {
      return true;
    }
  }
  return false;
};
```

### 慢车

```javascript
// 慢车 持续时间30s
// 下载状态，上传低于550kb，进度在10-100之间
// 下载人数大于100的种子不删
// 0点-7点，或者客户端下载种子数量小于等于10时不删种
(maindata, torrent) => {
  const categoryList = [
    "不想",
    "删的",
    "种子",
    "加",
    "这些",
    "分类"
  ];
  const { state, upspeed, progress, ratio, category } = torrent.originProp;
  if (categoryList.indexOf(category) !== -1 || torrent.leecher >= 100) {
    return false;
  }
  if (
    (moment().hour() >= 0 && moment().hour() <= 7) ||
    maindata.leechingCount <= 10
  ) {
    return false;
  }
  if (
    state === "downloading" &&
    upspeed <= util.calSize(1, "MiB") &&
    moment().unix() - torrent.addedTime >= 600
  ) {
    return true;
  }
  return false;
};
```


# 选种规则

## 选种规则

选种规则是指, 通过一系列的条件形成多条可以筛选种子的规则, 并且每条规则可以设定不同的优先级, 在执行任务时, 通过这一系列的规则, 筛选出自己想要的结果种子。

## 填写说明

选种规则包含以下几个属性: 优先级 / 排序规则 / 类型 / 条件

### 优先级

在执行选种任务时, 会按照优先级从大到小的顺序一一匹配, 因此用户更想选择的种子类型, 优先级应该更高

### 排序规则

排序规则是指, 在匹配规则之前, 会针对该规则所设置的排序规则, 按照排序规则进行排序, 在用户希望在符合当前规则情况下, 优先选择某一指标更高或更低的种子时, 可以选择排序规则, 比如选择做种人数降序, 则会选择做种人数最多的种子推送, 达到尽快下载的目的

### 类型

类型分为普通 与 JavaScript 普通指的时通过一系列条件判断出种子是否符合自己的规则, 而 JavaScript 是指, 可以利用 JavaScript 编写自己的选择函数, 属于高阶用法

### 条件

条件包含了一些种子的属性, 根据不同的比较类型做出判断

关于**比较类型**可以看这里 => 比较类型


# 链接规则

## 软链接设置

本教程将指导你快速完成软链接的相关设置

### 前言

为了让 Plex / Emby / Jellyfin 等媒体库管理工具 (以下用 Plex 指代) 拥有更好的刮削效果，同时也为了PT网站的正常保种，通常会选择链接的方式创建一个专供媒体库管理工具刮削的资源及文件夹结构。链接的方式有很多，较常见的为硬链接及软链接。Vertex使用的为软链接，软链接可以跨硬盘进行资源的链接，为便于理解，可以简单地将软链接理解为Windows的快捷方式。源文件删除，软链接无法使用，对软链接的任何修改包括删除都不影响源文件。

### 准备工作

* 能够通过SSH方式远程登录的设备，需在“下载服务-服务器”中添加该设备；
* 将源文件所在文件夹挂载给媒体库管理工具，保证媒体库管理工具能够正常访问源文件。

### 添加链接规则

**路径：“追光迷影-链接规则”**

1. 别名：取一个顺眼的名字；
2. 服务器：选择准备工作中添加的服务器；
3. 链接目标目录替换：重点内容，见下方对应标题；
4. 生成链接文件目录：重点内容，见下方对应标题；
5. 其余内容请根据自己需求进行设置；
6. 新增完成。

## 链接目标目录替换

### 软链接

**替换目的：将文件在下载器容器内的路径转换为在 Plex 容器内的路径。**

举个栗子： 假设我们将 **/mnt/disk/** 挂载为qBittorrent的 **/Downloads/** 同时将 **/mnt/disk/** 挂载为媒体库管理工具的 **/影视资源/**

此时，我们用 qBittorrent 下载了一个文件 **境界的彼方-过去篇.mp4** 保存至 **/Downloads/番剧/**

* 在 qBittorrent 中，该资源的路径为 **/Downloads/番剧/境界的彼方/境界的彼方-过去篇.mp4**
* 在 Plex 中该资源的路径为 **/影视资源/番剧/境界的彼方/境界的彼方-过去篇.mp4**

很容易发现 qBittorrent 与 Plex 的路径, 不同的地方就是 **Downloads** 和 **影视资源**

> 此时，链接目标目录替换规则就应该填写：**Downloads##影视资源** 这也是写出替换规则最简单的办法, 找出一个文件, 分别列出这个文件在 Plex 容器与 qBittorrent 容器中的目录, 然后找出不同的地方 {.is-success}

### 硬链接

**替换目的：将文件在下载器容器内的路径转换为在执行硬链接的环境内的路径。**

若服务器连接的是群晖 / UNRAID 等宿主机 填写规则为 **下载器路径##宿主机实际路径**

若服务器连接的是宿主机内的其它虚拟机 填写规则为 **下载器路径##文件在虚拟机内的目录**

## 生成链接文件目录

**即软链接文件存放的目录**

该存放目录应当为**宿主机的真实路径**，即你要将软链接文件存放在宿主机的哪个位置。 接上个栗子： 可以看出来栗子里我们的宿主机真实路径是 **/mnt/disk/** 为了便于管理，我在宿主机中新建了一个文件夹 **/软链接/** 用于存放软链接

> 此时，生成链接文件目录就应该填写：**/mnt/disk/软链接/** {.is-success}

## 最后

以上配置全部完成之后，记得将宿主机的 **/mnt/disk/软链接/** 路径挂载给 Plex，**源文件所在位置的挂载目录也不能删除**，因为 Plex 需要根据软链接去寻找真实文件路径，如果将源文件挂载删除将导致视频无法播放。

***

PS： 为了方便管理我想对软链接文件做分类怎么办？ 类似这种： /mnt/disk/软链接/国产剧/ /mnt/disk/软链接/国产电影/ /mnt/disk/软链接/欧美电影/ ······

**方法：**

“追光迷影-豆瓣任务-编辑-分类”中的**资料库路径**添加对应的分类即可，可通过新建多个分类设置项进行软链接文件的分类存放。 详细设置请查看追剧 -> 配置流程 -> 添加豆瓣账号 -> 分类 -> 资料库路径。


# 全局设置

## 用户名密码

**登录所用的用户名及密码**

用户名默认为 admin 密码显示为 md5 计算后得出的结果 可根据需要进行修改

## 背景样式

* 示例 1 渐变色背景 渐变色的代码可以下面的列表里生成, 直接复制粘贴就可以
* [uigradients](https://uigradients.com/)

```css
background: #007991;  /* fallback for old browsers */
background: -webkit-linear-gradient(to left, #78ffd6, #007991);  /* Chrome 10-25, Safari 5.1-6 */
background: linear-gradient(to left, #78ffd6, #007991); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
height: calc(var(--vh, 1vh) * 100);
```

* 示例 2 外链形式的背景图片

```css
background: url('https://image/url');
height: calc(var(--vh, 1vh) * 100);
background-position-x: center;
background-position-y: center;
background-size: cover;
```

## 全局样式

* 示例 1 全局字体修改为黑色 (部分样式可能不会生效)

```css
body, body * {
  color: black !important;
}
```

* 示例 2 全局字体修改为微软雅黑 (部分样式可能不会生效)

```css
body, body * {
  font-family: 'Microsoft YaHei' !important;
}
```

* 示例 3 为背景图添加一个白色蒙版

```css
#app {
  color: rgba(255,255,255,0.3);
  backdrop-filter: blur(4px);
}
```

## 通知封面

四类通知封面分别对应不同的通知类型, 填入公网可访问的图片链接即可

## 数据目录路径

备份配置所用, 一般不需要修改

## ApiKey

### ApiKey

用做部分接口的鉴权密码，第一次保存全局配置后会生成，并且不可修改

### TMDB ApiKey

The Movie Database Api Key, 用于从文件名提取影视剧名称, 请确保 Vertex 可以正常请求 api.themoviedb.org, 具体申请方式可以百度了解

## 微信鉴权

### 微信 AesKey / 微信 Token

微信交互所需要的鉴权内容, 在配置时填写即可

## 豆瓣交互

豆瓣交互所用的通知方式, 在推送工具页面创建, 与上文填写的微信鉴权绑定

## 媒体服务通知

Plex Emby 等媒体服务的通知信息, 包含新内容入库, 播放的停止与开始等

## User-Agent

网络请求所用的 User-Agent

## 日志级别

输出日志的最小级别, 正常情况下选择 INFO 即可

## Telegram 代理

详情了解这里 [Telegram-Proxy](https://hub.docker.com/r/lswl/telegram-proxy)


# 定时脚本

## 例子

### 按照剩余空间限速

```javascript
async () => {
  // 下载器 ID ['id1', 'id2', 'id3']
  const clientIds = ['21d08858'];
  // 限速, 单位 Byte
  const limitSpeed = 10 * 1024 * 1024;
  // 最小剩余空间, 单位 Byte
  const minFreeSpace = 20 * 1024 * 1024 * 1024;
  for (const clientId of clientIds) {
    const client = global.runningClient[clientId];
    // 获取下载器当前剩余空间以及当前限速信息
    const freeSpace = client.maindata.freeSpaceOnDisk;
    const limit = await client.getGlobalSpeedLimit('download');
    if (freeSpace < minFreeSpace) {
      if (+limit === limitSpeed) {
        continue;
      }
      logger.info(`定时脚本 ${this.alias} 达到限速标准, 执行限速`);
      await client.setGlobalSpeedLimit('download', limitSpeed);
    } else {
      if (+limit !== 0) {
        logger.info(`定时脚本 ${this.alias} 未达到限速标准, 恢复限速`);
        await client.setGlobalSpeedLimit('download', 0);
      }
    }
  }
}
```

### 定时备份至指定路径下

```javascript
async () => {
  // 希望备份到的目录, 需映射至 docker
  const baseDir = '/';
  const fs = require('fs');
  const path = require('path');

  try {
    const backupFilename = await (new (require('../model/SettingMod'))()).backupVertex({});
    fs.copyFileSync(backupFilename, path.join(baseDir, path.basename(backupFilename)));
    logger.sc('备份成功,', backupFilename);
  } catch (e) {
    logger.error('备份失败, 错误信息:\n', e);
  }
};
```

### 定时备份至 Webdav

```javascript
async () => {
  // 用户名
  const username = 'username';
  // 密码
  const password = 'password';
  // 希望上传到的目录
  const baseDir = '/';
  // webdav url
  const url = 'http://webdav.vertex.icu/';

  const { createClient } = require('webdav');
  const fs = require('fs');
  const path = require('path');

  const client = createClient(
    url,
    {
      username: username,
      password: password
    }
  );
  try {
    const backupFilename = await (new (require('../model/SettingMod'))()).backupVertex({});
    await client.putFileContents(path.join(baseDir, path.basename(backupFilename)), fs.readFileSync(backupFilename, { encoding: null }));
    logger.sc('备份成功,', backupFilename);
  } catch (e) {
    logger.error('备份失败, 错误信息:\n', e);
  }
};
```


# 通知工具

## 支持类型

目前支持企业微信、Telegram、Slack 三种方式

### 企业微信（由于企业微信官方的限制，目前已暂停维护，旧功能不受限）

已停止维护, 支持推送通知与交互, 交互功能需要 vertex 对外可提供 ipv4 外网访问 需要填写以下信息:

* 企业 ID
* Agent ID (应用 ID)
* Secret
* ProxyKey (可选)

~~**自 2022-06-20 起, 企业微信内新增应用需要在企业微信后台应用管理页面填写企业可信 IP, 为应对此举**~~

* ~~如果 Vertex 所在环境有固定 IP, 可以在 企业可信 IP 内填写自己的固定 IP~~
* ~~如果 Vertex 所在环境没有固定 IP, 但你有 VPS, 你可以通过将 Vertex 迁移到 VPS 或 使用代理工具使 Vertex 请求 `qyapi.weixin.qq.com` 域名时走代理, 然后在企业可信 IP 内填写 VPS 的 IP~~
* ~~如果 Vertex 所在环境没有固定 IP, 可以填写 ProxyKey 以作者的服务器中转方式来推送信息~~ 已失效

~~请注意, 使用作者的服务器转发会记录用户的 IP!!! 介意者请不要使用~~

* ~~ProxyKey: 前往~~ [~~Vertex - Panel~~](https://dash.vertex-app.top/) ~~注册账号, 侧边栏选择 安全设置, 右侧的 ApiKey 即是~~
* ~~企业可信 IP: 43.135.91.14~~

### Telegram

有限支持，目前仅支持推送信息, 且因为众所周知的原因, vertex 使用 Telegram 需要科学上网 需要填写以下信息:

* 频道 ID
* 机器人 Token

## 信息填写

* 别名 给推送工具加一个好记的名字
* 错误推送上限 单个周期内推送错误信息次数上限, 仅计算错误信息推送, 留空为 100
* 重置周期 Crontab 表达式, 在每次触发时重置推送错误信息次数为 0, 留空为 0 \* \* \* \*
* 类型 按需选择
* ....
* 推送类型 选择需要推送的信息类型, 只有被勾选的通知类型才会推送 **需要特别指出, 如果是 Telegram 类型的推送需要监控客户端, 此处的 下载器已连接 必须勾选**

## 配置教程

{% file src="/files/4mX2HXXzWpOZSpDIcoPs" %}

{% file src="/files/heSyrdXIeVS1ub40dZhD" %}

{% file src="/files/XU5RNsvsoZOHEUjnHwXi" %}


# 已支持的站点

基于 NexusPhp 的内站站点, 除非站点魔改过 Rss 相关部分, Rss 功能均被支持, 下表将不再列出。抓取免费或排除 HR 若未在下表列出, 请勿勾选!

**若要使用到抓取免费功能, 需要在 控制面版 - 网站设置 - 种子页面 将促销种子设置为 添加标记 选项!**

**排除 HR 以及抓取免费功能, 是根据站点返回网页分析得出, 因此如果站点修改相关样式, 可能会导致相关功能失效。**

| 适配站点      | 支持Rss | 抓取Free | 排除HR | 备注                                                                                                                                                                                     |
| --------- | ----- | ------ | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 白兔        | √     | X      | X    | 新种全免                                                                                                                                                                                   |
| 猫站        | √     | X      | X    | 请使用站点 Rss 自带的免费筛选                                                                                                                                                                      |
| 彩虹岛       | √     | √      | √    | 2022-07-15: 是否开启相关功能自己决定, 鉴于各种不明插件给服务器带来巨大压力和流量，经管理组决定即日起禁止使用各类插件，否则帐号将被封禁，拒绝申诉 周知！出现过开了 排除 HR 但是依然被计入 HR 的情况RSS 链接存在流控, 自行调整 RSS 周期, 否则会跳转至登录页面~~2022-07-16 去除所有支持~~ 2022-08-26 已恢复支持 |
| 杜比        | √     | √      | √    | /                                                                                                                                                                                      |
| 听听歌       | √     | √      | √    | 站点已发布公告**禁用一切**自动化脚本。RSS地址解析种子列表，添加种子正常。自己决定是否开启 抓免费 与 排除HR 功能。                                                                                                                        |
| OB        | √     | √      | √    | /                                                                                                                                                                                      |
| 家园        | √     | √      | √    | 该站禁止使用 VPS 请注意不要使用 VPS 刷流                                                                                                                                                              |
| PIGGO     | √     | √      | √    | /                                                                                                                                                                                      |
| HHanClub  | √     | √      | √    | /                                                                                                                                                                                      |
| SharkPT   | √     | √      | √    | /                                                                                                                                                                                      |
| 学校        | √     | √      | X    | /                                                                                                                                                                                      |
| 不可说       | √     | √      | X    | /                                                                                                                                                                                      |
| 天空        | √     | √      | X    | 盒子 IP 一小时内不计算上传量                                                                                                                                                                       |
| 观众        | √     | √      | √    | /                                                                                                                                                                                      |
| 铂金        | √     | √      | X    | /                                                                                                                                                                                      |
| 聆音        | √     | √      | X    | /                                                                                                                                                                                      |
| 瓷器        | √     | X      | X    | 于 2022-04-23 去除抓取免费支持                                                                                                                                                                  |
| 皇后        | √     | √      | X    | /                                                                                                                                                                                      |
| U2        | √     | √      | X    | /                                                                                                                                                                                      |
| HDFans    | √     | √      | X    | /                                                                                                                                                                                      |
| TCCF      | √     | √      | X    | /                                                                                                                                                                                      |
| M-Team    | √     | √      | X    | RSS 存在 5 分钟流控, 五分钟内重复请求会导致返回空列表, 建议 RSS 周期 `*/6 * * * *`, 站点 Cookie 与登录所用 IP 绑定, 查看这里 => 常见问题                                                                                          |
| HDArea    | √     | √      | X    | /                                                                                                                                                                                      |
| ByrPT     | √     | √      | X    | /                                                                                                                                                                                      |
| DiscFan   | √     | √      | X    | /                                                                                                                                                                                      |
| GainBound | √     | X      | X    | 请使用站点 Rss 自带的免费筛选                                                                                                                                                                      |
| PuTao     | √     | X      | X    | 创建 Rss 链接时需要勾选大小                                                                                                                                                                       |
| KeepFRDS  | √     | X      | X    | 创建 Rss 链接时勾选优惠状态, `Rss 规则`筛选 种子标题包含 `-Free-`, 如果对这条备注有疑问，先看 => [这里](https://github.com/vertex-app/vertex/issues/16)                                                                    |
| 柠檬        | √     | X      | X    | 新种全免, 流控规则: 建议 RSS 周期 `*/6 * * * *` 或者 `*/7 * * * *` 。“每小时上限”数量也限制一下。                                                                                                                  |
| HDCity    | √     | X      | X    | 仅支持域名 hdcity.leniter.org                                                                                                                                                               |

***

| 适配站点         | 支持Rss | 抓取Free | 排除HR | 备注                                              |
| ------------ | ----- | ------ | ---- | ----------------------------------------------- |
| FileList     | √     | X      | X    | 免费种子标题带 FreeLeech 字样, RSS 规则筛选 种子标题包含 FreeLeech |
| BluTopia     | √     | X      | X    | /                                               |
| TorrentDB    | √     | X      | X    | /                                               |
| JPTV         | √     | X      | X    | /                                               |
| HDBits       | √     | X      | X    | /                                               |
| BeyondHD     | √     | X      | X    | /                                               |
| Empornium    | √     | X      | X    | /                                               |
| UHDBits      | √     | X      | X    | /                                               |
| Skyey2       | √     | X      | X    | 支持的 RSS 域名 `www.skyey2.com`                     |
| HDTorrents   | √     | X      | X    | /                                               |
| IPTorrents   | √     | X      | X    | /                                               |
| TorrentLeech | √     | X      | X    | 注意不支持大小筛选                                       |


# 微信联动

目前主要提供以下几类功能: 刷新豆瓣想看 / 刷新单个剧集进度 / 添加豆瓣想看

## 刷新豆瓣想看

指令: 刷新豆瓣

Vertex 接收后会遍历所有豆瓣账号, 如果豆瓣账号开启了 接收微信消息, 将会刷新本账号的所有剧集

## 刷新单个剧集进度

指令: 刷新{剧集关键词}

栗子: 刷新境界的彼方

Vertex 接收后会遍历所有豆瓣账号, 如果豆瓣账号开启了 接收微信消息, 将会遍历本账号的所有想看, 如果剧集名称包含关键词, 将会进行选种操作

## 添加豆瓣想看

指令: 想看

然后根据提示操作即可, 本功能需要在 全局设置 内设置 豆瓣交互 选项


# 超级追剧模式

> 超级追剧模式是一种类 Rss 的追剧模式 {.is-info}

Vertex作者的服务器通过 Rss 的方式获取并保存了各PT站点新发布的种子信息, 当用户在Vertex开启超级追剧模式后, 用户的影视订阅任务将优先在Vertex作者的信息库中进行资源搜索, 如有符合条件的资源将直接推送给下载器, 跳过了在原PT站点搜索的过程。此功能把向PT站点的搜索请求转移到了Vertex作者的服务器, 大大降低了常规订阅模式给PT站点服务器带来的压力。 在超级追剧模式下，影视订阅任务可以高频地搜索种子, 让你能第一时间获取到最新发布的资源。

## 如何开启

1. 在 Vertex 系统设置 - 安全设置中填写 Panel Key。Panel Key 需在 [Vertex Panel](https://dash.vertex-app.top) 注册获得
2. 在 Vertex 基础组件 - 站点 - 站点编辑内勾选 “ 拉取远程种子 ”。站点的支持情况看这里 => PT 站点
3. 点击 “刷新”, 如成功刷新站点信息, Vertex Panel 将收到信息并激活该站点。 激活最迟需要 1 个小时, 也可手动在 Vertex Panel 端强制刷新激活
4. 在 Vertex 任务配置 - 订阅任务 - 编辑任务内勾选启用 “ 超级模式 ”

### 注意事项

* 只有在站点编辑中勾选了 “ 拉取远程种子 ” 选项的站点才会使用超级模式
* 超级追剧模式正式上线后的周期限定为 10 分钟一次
* 测试阶段为了尽快找出问题, 目前周期为 2 分钟一次


# 媒体服务通知

Vertex 通过监听一个网络地址, 由上述 Emby / Plex / Jellyfin 媒体服务器在进行 添加新项目 / 播放开始 / 播放停止 等操作时, 发送相关内容至 Vertex, 由 Vertex 将信息推送至 Vertex 内设置的通知工具

## 要求

要求 Emby / Plexy / Jellyfin 服务器能够访问到 Vertex

## 关于推送内容

因为三类媒体服务器所推送至 Vertex 的内容不同, 因此 Vertex 推送至通知工具的内容可能因媒体服务器的不同而有所差异 另外, 推送通知的封面可以在 Vertex - 全局设置 内修改, 默认为 Vertex 的 Logo

## 监听地址

```yaml
  Plex: http://$IP:$PORT/api/openapi/$APIKEY/plex
  Emby: http://$IP:$PORT/api/openapi/$APIKEY/emby
  Jellyfin: http://$IP:$PORT/api/openapi/$APIKEY/Jellyfin
```

上述地址中 $IP / $PORT / $APIKEY 应当根据自己的实际情况修改

```yaml
$IP: 即访问 Vertex 所用到的的 IP 地址
$PORT: 即访问 Vertex 所用到的的 端口
$APIKEY: Vertex 的 APIKEY, 可以在 Vertex - 全局设置 内找到, 如果 ApiKey 一栏为空, 需要保存一次全局设置然后生成
```

## 配置教程

{% file src="/files/ndVSFZghzMSHAW6L27Ma" %}


# 使用须知

如果您是第一次使用 Vertex 及其相关产品, 请仔细阅读以下内容, 从使用 Vertex 开始, 我们将默认您已经仔细阅读以下内容。 若本文内容更新, 我们将会通过 Telegram 推送频道, QQ 群公告 等方式推送通知, 因此希望您至少添加任意一个通知渠道, 若您未添加任何一个通知渠道, 我们默认您已接收到更新通知。 如果您对以下内容有任何疑问, 可以通过交流群组联系我们。

## Vertex 系列的产品

* Vertex
* Vertex Panel
* Vertex 小程序 (未上线)

## 免责声明

Vertex 服务端不存储任何实际文件资源, 实际应用过程中下载的所有文件均为第三方网站以及第三方个人提供, Vertex 仅作为辅助工具, 为用户提供搜索功能, 用户所下载的资源以及来源 Vertex 服务端无从得知, 由用户的不当操作引起的后果由用户自行承担。

## Vertex 系列的产品

## 注意事项

* 非常感谢您使用 Vertex, 当你看到这条消息时, Vertex 本身仍然是一款免费的软件
* 为了 Vertex 的稳定发展, 请不要在任何用来刷流的设备上搭建任何形式的代理工具, 以免影响刷流设备与国内的网络通信
* 为了能够使 Vertex 与各站点间保持友好关系, 请在使用 Vertex 考虑站点的服务压力, 请做到包括但不限于以下几点: 0. 在使用 Vertex 的任何功能时, 请考虑对站点造成的影响, 包括各类网页的抓取周期等
  1. 在 Rss 时, 如果 Rss 的内容本身是全部免费或者无 HR 的, 请不要开启抓取免费或排除 HR 功能
  2. 站点数据的刷新不要过于频繁, 尽量保持一天 2 次甚至一天 1 次
* 同时, 希望您不要在各大公开社交媒体平台宣传或提及本软件, 社交平台包括但不限于 B 站 / 快手 / 抖音 / 什么值得买 等

## 关于收费

* 当您看到本条信息时, Vertex 依然是款免费的产品, 但我们不能保证未来不会有各类的收费出现, 包括但不限于 功能付费 / 订阅制 / 买断制

## 关于隐私

### Vertex

Vertex 作为一个开源项目, 所有代码可以在 Gitlab / Github 查询, 若您未使用 Vertex Panel 或 Vertex 小程序相关内容, 我们不会收集您的任何信息 具体来说, 如果您未在 Vertex 的全局设置内填写 Panel Key 以及 未在通知工具内填写 ProxyKey, 您可以将 Vertex 视作一个完全可以在本地运行的产品, 与我们的服务器没有任何沟通, 也即我们不会收集您的任何信息

### Vertex Panel

Vertex Panel 是一款闭源面板, 需要您注册使用。

#### 收集信息

您在使用 Vertex Panel 过程中, 除了您提供的注册信息以外, 我们会收集或者保存您的以下信息:

* 注册或登录所用 IP 地址
* 在使用 微信代理 时, 推送的时间以及推送使用的 IP
* 在使用 种子搜索 时, 搜索的关键字以及使用的 IP 地址

### Vertex 小程序

.... 待补充


# 各类规则判断条件中的比较类型

比较类型包含 等于 / 大于 / 小于 / 包含 / 不包含 / 包含于 / 不包含于 7 类

## 等于

等于, 针对数字, 就是数学上的等于, 对于文本, 就是完全的相等, 没啥好讲的

## 大于 / 小于

仅支持数字, 数学意义上的大于 / 小于

## 包含

仅支持文本, 指的是 A 包含 B, B 可以是用 , 分割后的任意一个字符串

### 几个栗子

```
ABCD 包含 C => √
ABCD 包含 E => X
ABCD 包含 C,E => √, 因为 ABCD 包含 C => √, 所以整体来说依然是符合的
```

## 不包含

仅支持文本, 指的是 A 不包含 B, B 可以是用 , 分割后的任意一个字符串

### 几个栗子

```
ABCD 不包含 C => X
ABCD 不包含 E => √
ABCD 不包含 C,E => X, 因为 ABCD 不包含 C => X, 所以整体来说依然是不符合的
```

## 包含于

仅支持文本, 指的是 A 包含在 B 用 , 分割后的字符串集内, 换句话说, B 用 , 分割后的字符串集合内有任意一个字符串 C 能够等于 A, 则条件成立

### 几个栗子

```
ABCD 包含于 C => X
A    包含于 A,B,C => √        A = A
D    包含于 A,B,C => X
ABCD 包含于 ABC,ABD,ACD => X
ABC  包含于 AC,AB,ABC => √    ABC = ABC
```

## 不包含于

仅支持文本, 指的是 A 不包含在 B 用 , 分割后的字符串集内, 换句话说, B 用 , 分割后的字符串集合内**没有**任意一个字符串 C 能够等于 A, 则条件成立

### 几个栗子

```
ABCD 不包含于 C => √
A    不包含于 A,B,C => X       A = A
D    不包含于 A,B,C => √
ABCD 不包含于 ABC,ABD,ACD => √
ABC  不包含于 AC,AB,ABC => X    ABC = ABC
```

## 正则匹配/正则不匹配

只需填写 `//` 内的内容，不区分大小写。


# PT 扫盲

## PT 是什么

PT (英语: Private Tracker) 是一种 BitTorrent 协议的 P2P 下载方式的另一种形式, "Private Tracker" 指私有种子服务器。与 BT 最大的不同点为: 进行私密范围下载, 并且记录每一个用户的详细数据

## 站点相关

#### 做种率

```
做种时间 / 下载时间
```

#### 分享率

```
上传流量 / 下载流量
```

## 下载器相关

## 刷流相关

### Rss 的一些思路

**以下内容仅仅是个人的一些心得, 如果有觉得不对的地方可以在交流群探讨**

* 对于新种全免费的站点, 就不要有抓取免费的想法
* 站点提供优惠状态的 Rss 优先使用站点 Rss 内容进行筛选, 比如在创建 Rss 链接时仅勾选 Free 或者 2xFree, 也或者是根据 Rss 返回的标题内容在 Rss 规则 内筛选
* 对家宽来说, 建议仅仅 Rss 官方种子, 可以根据创建 Rss 时勾选制作组, 或者在 Rss 规则 内筛选官组名称进行筛选
* 非官方的种子绝大部分都是盒子在对刷
* 对盒子来说, 尽量的保持高速上传, 遇到黑车及时删除
* 尽量不要添加体积过小的种子, 就我来说, 会排除 1G 以下的种子
* 一般来说, 在盒子有限或本地带宽的情况下, 优先刷大站的流量

### 删种的思路

* 下载速度远高于上传速度, 也就是黑车, 这类种子必须删
* 时间长但是依旧不发车, 可以通过添加时间加上进度以及速度判断
* 被站点删种的种子, 这类种子一般站点 tracker 会返回信息, 根据信息关键词判断删种
* 出种但是没什么速度, 这类种子可以考虑删除, 如果硬盘空间充足, 不删也可以
* 种子速度很慢, 这类种子可以考虑删除, 如果没有设置同时下载任务的上限也可以不删

### 黑话

#### 黑盒 / 白盒

黑盒一般指自己的盒子被所在站点标记为盒子, 不享受免费等优惠政策, 具体的流量统计政策应该查看站点规则 白盒与黑盒相对, 即暂未被站点标记为盒子, 正常享受优惠政策

#### 黑种

黑种一般指没有优惠规则的种子或者因盒子标记而无法享受优惠规则的种子

#### 黑车

发种人发种速度过快, 导致自己下载时的下载速度远超过上传速度 或 下载速度过快影响了总体上传的种子

#### 慢车

发种人发种速度过慢的种子

## 盒子相关

### 概念介绍

#### VPS

关于定义 (引自维基百科): 虚拟专用服务器 (英语：Virtual private server, 缩写为VPS), 是将一台服务器分割成多个虚拟专用服务器的服务。

#### 独服

独服, 也称独立服务器, 独立两字是相对 VPS 讲的, 与 VPS 相比最大的区别就是独服是一台**实体计算机**, 这台计算机的所有资源都只归自己所有。

#### 共享盒子

共享盒子也就是共享服务器, 一般是同一台服务器创建多个用户, 多个用户共同使用这台服务器, 对于 PT, **共享的概念多指多人共享一个公网 IP**。此处需要区别于 VPS, VPS 不等于 共享盒子, 两者有差别, 但也有共同之处, 对于 PT 来说, 最大的区别是, 共享盒子是共用公网 IP, 而 VPS 没有这个限制


# Cron 表达式

CRON表达式是一个字符串，包含五个到七个由空格分隔的字段（每种软件不一样），表示一组时间，通常作为执行某个程序的时间表。 提示：本项目默认使用北京时间 环境变量TZ=Asia/Shanghai

测试有效性的网站 默认Linux模式适合顶点使用 Crontab执行时间计算 <https://tool.lu/crontab> ←点击可访问 带7步计算 三种类型 Crontab执行时间计算 <https://www.matools.com/crontab> ←点击可访问 带60步计算 自定义开始 Crontab执行时间计算 <https://tooltt.com/crontab> ←点击可访问 带9999步计算 大量案例参考

图解说明: 五位模式：分 时 日 月 周 对应自然值的范围 0-59分 0-23时 1-31日 1-12月 1-7星期 每个位置写上特定的字符表示功能：&#x20;

```
N 确定准确值 1 2 3 4 5
* 自然值开始 0或者1开始，有效范围内的数值都会被启用。60个分、24个时等
, 多个准确值 1,3,5,17,19
- 设定范围值 2-8 16-23 8-31
/ 间隔值开始 /1 /5

  可以多组合
```

默认每分钟：

```
* * * * * 
```

间隔5分钟：

```
*/5 * * * *
```

表达式案例： 标题和解释 相反义 Crontab表达式的特点

间隔N小时的准确分钟： 分钟位置准确 0点开始间隔小时

```
18 */3 * * *
30 */4 * * *
45 */6 * * *
```

间隔N小时内间隔N分钟： 0分钟开始间隔分钟 0时钟开始间隔小时

```
*/6 */3 * * *
*/15 */4 * * *
*/20 */6 * * *
```

时钟范围内的每分钟： 每分钟 在时钟范围内

```
* 9-17 * * *
* 8-20 * * *
* 0-7 * * *
```

范围时钟内间隔 又 范围分钟内间隔： 特定分钟开始间隔分钟 特定时钟开始间隔小时

```
10-50/1 1-20/1 * * *
20-40/3 2-10/3 * * *
30-50/6 0-23/6 * * *
```

指定星期的时分： 固定分钟 固定时钟 每周一三五

```
30 12 * * 1,3,5
```

每周指定星期几 又 在当日指定时钟 又 在当时指定分钟： 指定两个分钟 指定两个时钟然后范围内时钟 指定每周一到周三然后周五

```
15,45 9,15,18-21 * * 1-3,5
```


