xream/sub-store

By xream

Updated about 5 hours ago

Image
120

1M+

xream/sub-store repository overview

Sub-Store Docker 使用说明

欢迎加入 Telegram 群组:

折腾啥
Power Users/Automators 折腾/讨论/分享各种开源工具、脚本、自动化工作流

🆕 实验性添加了 📦 GitHub Package 可尝试使用

目录

快速启动

假设你准备在宿主机上这样使用:

配置项示例值说明
数据文件夹/root/sub-store-data挂载到容器内 /opt/app/data
端口3001前端访问端口
监听地址127.0.0.1本示例演示本地版;局域网访问等场景请自行调整
后端前缀/2cXaAxRGfddmGz2yx1wA不要使用特殊符号,避免出现其他问题
定时任务55 23 * * *每天 23:55 执行,避开部分机场后端每天 0 点定时重启

定时任务说明:

环境变量用途示例 / 状态
SUB_STORE_PUSH_SERVICE推送服务 URL推送服务
SUB_STORE_BACKEND_SYNC_CRON定时将订阅/文件上传到私有 Gist55 23 * * *
SUB_STORE_FRONTEND_BACKEND_PATH前端访问后端时使用的路径前缀/2cXaAxRGfddmGz2yx1wA
SUB_STORE_BACKEND_CRON旧定时任务变量后端版本 2.14.376 起弃用
SUB_STORE_CRONDocker 版旧定时任务变量后续不再支持

从后端版本 2.14.376 开始,应使用 SUB_STORE_BACKEND_SYNC_CRON,弃用旧的 SUB_STORE_BACKEND_CRON。Docker 版也会放弃 SUB_STORE_CRON 的后续支持。

本示例中的定时任务环境变量为 SUB_STORE_BACKEND_SYNC_CRON,此时将使用 Node 版 node-cron

这里的“定时任务”指“定时将订阅/文件上传到私有 Gist”。前端对应位置是 同步 tab。

若要定时备份或恢复 Sub-Store 的全部数据,请看 更多环境变量 中的 SUB_STORE_BACKEND_UPLOAD_CRONSUB_STORE_BACKEND_DOWNLOAD_CRON。前端对应位置是 我的 -> Gist 同步 -> 上传/下载

Docker 启动示例
docker run -it -d --restart=always \
  -e "SUB_STORE_PUSH_SERVICE=https://api.day.app/XXXXXXXXXXXX/[推送标题]/[推送内容]?group=SubStore&autoCopy=1&isArchive=1&sound=shake&level=timeSensitive&icon=https%3A%2F%2Fraw.githubusercontent.com%2F58xinian%2Ficon%2Fmaster%2FSub-Store1.png" \
  -e "SUB_STORE_BACKEND_SYNC_CRON=55 23 * * *" \
  -e SUB_STORE_FRONTEND_BACKEND_PATH=/2cXaAxRGfddmGz2yx1wA \
  -p 127.0.0.1:3001:3001 \
  -v /root/sub-store-data:/opt/app/data \
  --name sub-store \
  xream/sub-store

推送服务

新版已支持 shoutrrr URL,具体请看 shoutrrr 文档

常见示例:

服务示例
Telegram shoutrrr URLtelegram://XXXXXXXXX@telegram?chats=-1001771725356
Barkhttps://api.day.app/XXXXXXXXXXXX/[推送标题]/[推送内容]?group=SubStore&autoCopy=1&isArchive=1&sound=shake&level=timeSensitive&icon=https%3A%2F%2Fraw.githubusercontent.com%2F58xinian%2Ficon%2Fmaster%2FSub-Store1.png
PushPlushttp://www.pushplus.plus/send?token=XXXXXXXXX&title=[推送标题]&content=[推送内容]&channel=wechat
Telegram Bothttps://api.telegram.org/botAPI_KEY/sendMessage?chat_id=CHAT_ID&text=[推送标题][推送内容]

[推送标题][推送内容] 会被自动替换。若使用 Telegram Bot 推送,请自行修改 API_KEYCHAT_ID,并可先在浏览器或使用 curl 请求测试:

curl "https://api.telegram.org/botAPI_KEY/sendMessage?chat_id=CHAT_ID&text=test"

network_mode: host 配置

如果你想使用 network_mode: host 模式,比如懒人无痛 IPv6,需要注意默认监听的是 ::。理论上应保证只监听 127.0.0.1

合并端口
HOST=127.0.0.1
PORT=9876
SUB_STORE_BACKEND_API_PORT=3000
SUB_STORE_BACKEND_API_HOST=127.0.0.1
SUB_STORE_BACKEND_MERGE=true
SUB_STORE_FRONTEND_BACKEND_PATH=/2cXaAxRGfddmGz2yx1wA

此时仅暴露端口 3000,并带路径访问。

自定义前后端端口
HOST=127.0.0.1
PORT=9876
SUB_STORE_BACKEND_API_PORT=3000
SUB_STORE_BACKEND_API_HOST=127.0.0.1
SUB_STORE_FRONTEND_PORT=3001
SUB_STORE_FRONTEND_HOST=127.0.0.1
SUB_STORE_FRONTEND_BACKEND_PATH=/2cXaAxRGfddmGz2yx1wA
端口与监听说明
变量说明
SUB_STORE_BACKEND_API_HOST应该永远不要暴露,这是内部裸后端
SUB_STORE_BACKEND_API_PORT后端监听端口,默认为 3000
SUB_STORE_FRONTEND_HOST可按需开放
SUB_STORE_FRONTEND_PORT前端监听端口,默认为 3001
HOST / PORThttp-meta 使用的监听配置;9876 端口可能与其他服务冲突,例如 ddns-go,可自行调整

更多环境变量

支持通过 .env 文件设置环境变量。

基础配置
环境变量说明示例 / 默认值
SUB_STORE_FRONTEND_PATH前端文件夹路径。Docker 版已经自带默认内部路径,无需设置;非 Docker 版可按需设置-
SUB_STORE_BACKEND_MERGE后端同时处理 API 和前端资源请求,不再分为前后端两个端口true
SUB_STORE_BACKEND_PREFIX后端也加上 SUB_STORE_FRONTEND_BACKEND_PATH 设置的后缀,适用于同主机防扫等场景-
SUB_STORE_FRONTEND_BACKEND_PATH前端访问后端时使用的路径前缀/2cXaAxRGfddmGz2yx1wA
SUB_STORE_MAX_HEADER_SIZE设置 undici header 大小限制;订阅响应头过大时报 Headers Overflow Error 可调大默认 32768
SUB_STORE_BODY_JSON_LIMIT自定义 JSON Body limit默认 1mb,例:10mb
SUB_STORE_CORS_ALLOWED_ORIGINSCORS allowlist默认 *(代理 App 模块默认 https://sub-store.vercel.app,http://substore.stash,https://substore.stash,可通过模块参数 cors 配置)
SUB_STORE_BACKEND_DEFAULT_PROXY设置默认代理,支持 SOCKS5 / HTTP / HTTPSsocks5://a:[email protected]:7890http://127.0.0.1:7890

HTTP-META 也有类似的环境变量 BODY_JSON_LIMIT

备份与恢复
环境变量 / 接口说明
SUB_STORE_BACKEND_DOWNLOAD_CRON定时恢复配置
SUB_STORE_BACKEND_UPLOAD_CRON定时备份配置
/api/utils/backup?action=upload&encode=plaintext明文备份
/api/utils/backup?action=download&keep=settings.gistToken恢复时保留现有 Token

GitHub 现在会扫描明文 Gist 中的 GitHub Token。Sub-Store 备份数据时若选择明文,将不会备份设置的 GitHub Token;若选择 Base64 编码,将完整备份。默认使用 Base64 编码,可在前端更多设置中修改。

前端支持选择恢复时是否保留本地已设置的 Token。最近备份失败的用户可能是 Token 被吊销了,请更新 Sub-Store 后配置一个新的 Token 再备份。保险起见,可以删除 Gist、创建新 Token、更新到最新版 Sub-Store、保存新 Token 后再上传。

MMDB
环境变量说明
SUB_STORE_MMDB_COUNTRY_PATHMaxMind GeoLite2 Country 数据库路径
SUB_STORE_MMDB_ASN_PATHMaxMind GeoLite2 ASN 数据库路径
SUB_STORE_MMDB_CRON定时更新 MMDB,要求后端版本 >= 2.19.30
SUB_STORE_MMDB_ASN_URLASN 数据库下载地址;使用 ASN 定时更新时需要设置
SUB_STORE_MMDB_COUNTRY_URLCountry 数据库下载地址;使用 Country 定时更新时需要设置

搭配 检测落地脚本检测入口脚本 使用时,数据来自本地,可在脚本中节约大量请求时间。

-e "SUB_STORE_MMDB_COUNTRY_PATH=/opt/app/data/GeoLite2-Country.mmdb" \
-e "SUB_STORE_MMDB_ASN_PATH=/opt/app/data/GeoLite2-ASN.mmdb"
远程数据恢复
环境变量说明示例
SUB_STORE_DATA_URL设置远程数据文件链接。每次启动都会从这个地址拉取并恢复数据SUB_STORE_DATA_URL="https://gist.githubusercontent.com/username/id/raw/Sub-Store#noCache"
SUB_STORE_DATA_URL_POST拉取远程数据后执行自定义命令,可用于修改某些字段SUB_STORE_DATA_URL_POST="content.settings.gistToken='xxxxxxxxx'"

如果要从 Gist 恢复,请使用 Raw 链接,并建议使用固定的最新版本链接。可以加上 #noCache 避免缓存,大概长这样:

https://gist.githubusercontent.com/[gist username]/[gist ID]/raw/[file name]#noCache
自定义显示与响应
环境变量说明
SUB_STORE_BACKEND_CUSTOM_NAME自定义前端显示的运行环境名称
SUB_STORE_BACKEND_CUSTOM_ICON自定义前端显示的运行环境图标
SUB_STORE_X_POWERED_BY自定义响应头中的 X-Powered-By
后台定时处理订阅
环境变量说明格式
SUB_STORE_PRODUCE_CRON后台定时处理订阅,用于脚本缓存;脚本参数必须开启缓存cron,类型,名称,多个任务用分号连接

示例:

0 */2 * * *,sub,a;0 */3 * * *,col,b

含义:

  • 每 2 小时处理一次单条订阅 a
  • 每 3 小时处理一次组合订阅 b
  • sub 表示单条订阅
  • col 表示组合订阅

这样在缓存有效期内,Surge 等 App 拉取订阅时就不会超时。

使用示例

一键配置打开本地前端 + 本地后端

http://127.0.0.1:3001?api=http://127.0.0.1:3001/2cXaAxRGfddmGz2yx1wA

后端地址为:

http://127.0.0.1:3001/2cXaAxRGfddmGz2yx1wA

简单验证:

http://127.0.0.1:3001/2cXaAxRGfddmGz2yx1wA/api/utils/env

这个 URL 可以看到版本信息,也可以作为健康检查 URL。

更新

和其他 Docker 服务一样,可使用 watchtower

示范:每隔 3600 秒检查一次 Sub-Store Docker 是否有更新,如果有更新则自动更新容器,并发送通知到 Telegram

日志

和其他 Docker 服务一样,可使用:

docker logs -f -t --tail 100 sub-store

也可在前端右上角查看后端日志。

HTTP-META

http-meta tag 的镜像包含 HTTP-META

可直接使用需要 HTTP-META 功能的脚本,本地且端口号为默认值时无需设置。

场景环境变量 / 说明
自定义 HTTP-META 端口PORT=9876
调试META_DISABLE_AUTO_CLEAN=trueMETA_TEMP_FOLDER=/opt/app/data

设置调试环境变量后,可以查看每次运行时核心的日志和配置。

更多参考:

安装其他版本

请参考 Sub-Store Wiki

Tag summary

Content type

Image

Digest

sha256:2aa5adea4

Size

72.6 MB

Last updated

about 5 hours ago

docker pull xream/sub-store:2.36.19