搭 Docker版 Sub-Store 带 http-meta 实现 集合订阅 测延迟 排序 筛选 生成新订阅 定时任务上传Gist

需求

https://github.com/2dust/v2rayN/issues/4247/
有人希望在 v2rayN 中添加自动测延迟, 再自动切换服务器的功能.

我觉得, 如果节点很多(比如到处搜集免费节点的人, 节点总数有可能成千上万), 那么这个测速+筛选的工作不应该由翻墙客户端来做, 应该由一个单独的实体来做.

我找了一圈信息, 最终决定用 Sub-Store 完成这个任务.


搭 Docke版 Sub-Store

教程 https://surge.tel/22/2953/

Docker镜像的说明 https://hub.docker.com/r/xream/sub-store

我也记录一下自己的操作

安装 Docker

curl -fsSL https://get.docker.com | bash -s docker 

运行 Sub-Store 镜像

docker run -it -d --restart=always -e "SUB_STORE_BACKEND_SYNC_CRON=55 23 * * *" -e SUB_STORE_FRONTEND_BACKEND_PATH=/TQg8veJHzYt38utxXtav -p 127.0.0.1:3001:3001 -v /root/sub-store-data:/opt/app/data --name sub-store xream/sub-store:http-meta

* 其中, TQg8veJHzYt38utxXtav 是你的后端API秘密路径, 你应该自己生成一个随机的, 足够长的字符串, 不要直接使用我的这个.

55 23 * * * 表示同步任务每天 23:55 执行. 如果你想每小时的第55分钟执行一次, 那么使用 55 * * * * 

你可以 查看 docker 的运行状态, 确认sub-store运行起来了.

docker stats


* 如果你是在自己的 电脑 上面搭, 那么, Docker环境用你自己习惯的方式.

需要注意, 镜像为 xream/sub-store:http-meta

如果没带上 http-meta 那么镜像中就没有 http-meta, 那么就不能测速.


Caddy 套域名及 TLS

如果你是在自己的 电脑 上搭, 那么可以跳过此段.

如果你习惯使用 nginx, 那么用你喜欢的方式.

安装 caddy 

参考官方命令 
https://caddyserver.com/docs/install#debian-ubuntu-raspbian

apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg --yes
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
apt update
apt install caddy

设置域名解析

Caddyfile

你的域名 {
  reverse_proxy localhost:3001
}

打开 Sub-Store 

如果你套了域名, 那么浏览器打开

https://你的域名/subs?api=https://你的域名/TQg8veJHzYt38utxXtav
如果你是搭在自己的 电脑 上, 没有套域名, 那么浏览器打开
http://127.0.0.1:3001?api=http://127.0.0.1:3001/TQg8veJHzYt38utxXtav

Sub-Store 添加订阅

添加单条订阅


你有几条订阅就添加几条订阅
* 如果拉订阅链接有困难, 可以套 uniproxy


输出组合订阅 添加到 v2rayN


订阅链接示例
https://sub.icdyct.nyc.mn/TQg8veJHzYt38utxXtav/download/collection/merge
添加到 v2rayN, 测试一下拉取组合订阅.
* 如果你在v2rayN中拉取组合订阅不正常, 那么不要盲目继续, 应该检查前面的步骤中哪里出了问题.

可以检查 docker 的运行日志.

docker logs sub-store -n 100


Sub-Store 的测速功能

来源 https://t.me/zhetengsha/1258

修改组合订阅


滚动到页面底部.

点击 脚本操作


选择 链接 并输入 测速脚本

https://raw.githubusercontent.com/xream/scripts/main/surge/modules/sub-store-scripts/check/http_meta_availability.js#concurrency=10&http_meta_host=127.0.0.1&http_meta_port=9876&http_meta_protocol=http&http_meta_proxy_timeout=10000&http_meta_start_delay=3000&keep_incompatible=true&retries=1&retry_delay=1000&show_latency=true&status=204&timeout=1000&url=http%3A%2F%2Fconnectivitycheck.platform.hicloud.com%2Fgenerate_204


Sub-Store 的排序功能

来源 https://t.me/zhetengsha/1966

在测速脚本的下面, 点击 脚本操作


选择 脚本, 并输入 排序脚本

function operator(proxies) {
  const withLatency = proxies.filter(p => p._latency !== undefined)
  const withoutLatency = proxies.filter(p => p._latency === undefined)

  withLatency.sort((a, b) => Number(a._latency) - Number(b._latency))

  return [...withLatency, ...withoutLatency]
}

 


Sub-Store 的筛选 TopN 功能

在排序脚本的下面, 点击 脚本操作


选择 脚本, 并输入 以下脚本

function operator(proxies) {
  const topn = 10; // 你想筛选前 多少 个节点

  return proxies.slice(0, topn);
}

其中, 10 这个数字 你可以自己改, 你喜欢 5个 8个 随便你.


保存


去v2rayN里面更新订阅试试?

报错超时了.


用浏览器打开订阅链接测试一下?

等了比较长时间, 能看到结果


把这些 base64 复制粘贴到 v2rayN 中, 是可以看到筛选后的10个节点的.


那么接下来, 我们来解决这个测速时间过长, 导致订阅拉取失败的问题.


Sub-Store 订阅定时上传 Github Gist

我自己把操作过程记录一下.

申请 Github 账户, 略.

申请 Github Personal access tokens (classic), 略. 
具体过程 google 到处都有, 而且就算我在这里记录了, 如果 Github 界面改版了, 我的操作截图也过时了.
* 注意, Github 有2种 token, 我们需要申请 Personal access tokens (classic) 


Sub-Store 设置 Github token


Sub-Store 设置 订阅同步





手动触发同步到 Gist 看看效果



看到同步上传到 Gist 的结果以后, 获取 raw 链接, 添加到 v2rayN 中当作订阅链接.

把 Gist页面的url, 后面加上 /raw/

如:

https://gist.github.com/github用户名/8dae5b4ac8ede600bb0a857212a84319/raw/

添加到 v2rayN 中, 更新订阅, 效果正常.


* 如果拉订阅有困难, 可以套 uniproxy.
https://www.youtube.com/watch?v=VpQlGQq7FCk

Sub-Store 打开定时任务 同步 Gist


这个 定时 功能的触发时间是什么呢?

还记得本教程最开始的部分, 运行 Docker镜像时的参数吗?

如果你把 Sub-Store 的上传定时为每小时一次, 那么你的 v2rayN 的订阅自动更新功能也设置为 每 60 分钟 更新一次.


========

* Sub-Store 的官方讨论群
https://t.me/zhetengsha_group


========

后记

如果你是在自己的 NAS(等局域网设备)上搭, 那么运行 Sub-Store 镜像 应该是这样

docker run -it -d --restart=always -e "SUB_STORE_BACKEND_SYNC_CRON=55 23 * * *" -e SUB_STORE_FRONTEND_BACKEND_PATH=/TQg8veJHzYt38utxXtav -p 3001:3001 -v /root/sub-store-data:/opt/app/data --name sub-store xream/sub-store:http-meta

打开 Sub-Store 应该是

http://NAS的IP:3001?api=http://NAS的IP:3001/TQg8veJHzYt38utxXtav


评论

  1. 专业的检测节点的项目

    https://github.com/cmliu/SubsCheck-Win-GUI

    https://github.com/beck-8/subs-check

    回复删除

发表评论

The Hot3 in Last 30 Days

酒馆SillyTavern 玩英文角色卡 也能以中文输出 设置世界书Lorebooks

酒馆SillyTavern 用中文讲故事 修改角色卡 修改AI生成的历史记录