Docker部署Sub-Store订阅管理系统

Docker部署Sub-Store订阅管理系统
1059 字
5 分钟
Docker部署Sub-Store订阅管理系统

一、Sub-Store 简介#

Sub-Store 是一款开源的订阅转换服务,支持聚合多个订阅链接并输出为不同客户端格式。

它能让你:

  • 将多个机场或自建节点订阅整合;

  • 输出为 Clash / Surge / QuantumultX / Loon / Shadowrocket 等格式;

  • 自定义节点筛选、排序、分组;

  • 通过 Web 界面轻松管理。

GitHub 项目地址:
👉 https://github.com/sub-store-org/Sub-Store

二、部署环境准备#

推荐系统环境:

系统支持
Debian 12 / Ubuntu 22.04✅ 推荐
Alpine / CentOS 7+✅ 支持
内存要求≥ 256MB

确保系统已安装:

Terminal window
apt update && apt install -y docker.io docker-compose

三、Docker Compose 配置文件#

在服务器任意目录(如 /root/sub-store)下创建文件:

Terminal window
mkdir -p /root/sub-store
cd /root/sub-store
nano docker-compose.yml

然后粘贴以下内容 👇:

Terminal window
version: "3.8"
services:
sub-store:
image: xream/sub-store:latest
container_name: sub-store
restart: always
ports:
- "3001:3001"
volumes:
- ./data:/opt/app/data
environment:
SUB_STORE_FRONTEND_BACKEND_PATH: /MySecretToken123
SUB_STORE_BACKEND_SYNC_CRON: "55 23 * * *"
SUB_STORE_BODY_JSON_LIMIT: 10mb
SUB_STORE_CORS_ALLOWED_ORIGINS: "*"

⚠️ 建议你修改#

自定义后端 API 路径#

SUB_STORE_FRONTEND_BACKEND_PATH=/MySecretToken123

修改自定义后端 API 路径 示例:

Terminal window
SUB_STORE_FRONTEND_BACKEND_PATH=/rd304CYuZ2KByUk4WRHF

这样可以防止被随意访问。

可以使用随机生成密码网站生成:https://1password.com/zh-cn/password-generator

设置跨域来源#

SUB_STORE_CORS_ALLOWED_ORIGINS: "*"

推荐填写实际使用的前端域名 示例:

SUB_STORE_CORS_ALLOWED_ORIGINS: "https://sub.xxx.com"

端口映射#

"3001:3001"

若使用 Caddy、Nginx 等反向代理,建议使用 127.0.0.1:3001:3001,避免直接暴露服务端口。

"127.0.0.1:3001:3001"

四、配置详解#

Docker Compose 配置参数说明#

配置项示例作用说明
imagexream/sub-store:latest指定 Docker 镜像使用 xream/sub-store 提供的 Sub-Store Docker 镜像。latest 表示使用镜像仓库中的最新版本。
container_namesub-store指定容器名称将 Docker 容器名称设置为 sub-store,方便后续使用 docker logs sub-store、docker restart sub-store 等命令管理容器。
restartalways设置自动重启设置为 always 后,如果 Sub-Store 容器异常退出,Docker 会自动尝试重新启动;同时 Docker 服务重启后容器也会自动启动。
ports3001:3001设置端口映射将 宿主机的 3001 端口 映射到 Docker 容器的 3001 端口。若使用 Caddy、Nginx 等反向代理,建议使用 127.0.0.1:3001:3001,避免直接暴露服务端口。
volumes./data:/opt/app/data持久化数据将 Docker Compose 文件所在目录下的 data 文件夹挂载到容器内的 /opt/app/data。这样即使删除或重新创建容器,Sub-Store 的数据仍然可以保存在宿主机上。
SUB_STORE_FRONTEND_BACKEND_PATH/MySecretToken123自定义前端后端路径修改 Sub-Store 前端访问后端 API 时使用的路径。例如设置为 /MySecretToken123 后,前端与后端之间会使用该自定义路径进行通信。该配置不是登录密码,也不属于真正的身份认证机制。
SUB_STORE_BACKEND_SYNC_CRON"55 23 * * *"设置后端定时同步使用 Cron 表达式设置 Sub-Store 后端的定时同步任务。55 23 * * * 表示每天晚上 23:55 执行一次。
SUB_STORE_BODY_JSON_LIMIT10mb限制 JSON 请求大小设置后端能够接受的 JSON 请求体大小。设置为 10mb 后,可以允许最大约 10 MB 的 JSON 数据请求,同时避免过大的请求占用过多服务器资源。
SUB_STORE_CORS_ALLOWED_ORIGINS"*"设置跨域访问来源用于设置允许访问 Sub-Store 后端的跨域来源。设置为 * 表示允许任意 Origin 进行跨域请求,兼容性较好,但相比指定域名安全性较低。

五、启动服务#

保存文件后执行:

Terminal window
docker compose up -d

查看运行状态:

Terminal window
docker ps

若一切正常,你会看到类似输出:

CONTAINER ID IMAGE STATUS PORTS
a1b2c3d4e5f6 xream/sub-store Up 10 seconds 0.0.0.0:3001->3001/tcp

六、Caddy反代#

编辑/etc/caddy/Caddyfile

Terminal window
nano /etc/caddy/Caddyfile
Terminal window
example.com {
reverse_proxy localhost:3001
}

重启caddy

Terminal window
systemctl restart caddy

七、访问与初始设置#

浏览器访问:

https://你的域名

若配置了后端路径(如 /ks9foTp4xE8fr24pg2DZ),
打开 反代域名 输入后端路径ks9foTp4xE8fr24pg2DZ

你会看到 Sub-Store 的管理界面,可以:

  • 添加或导入订阅;

  • 设置转换规则;

  • 生成统一的订阅链接。

八、设置Gist同步#

1.拥有一个 GitHub 账号#

注册或登录:https://github.com/

2.获取一个 GitHub Personal Access Token(访问令牌)#

  1. 打开 https://github.com/settings/tokens

  2. 点击Token(classic)并在右上选择Generate new token(classic)

  3. 勾上Repo和Gist这两项后,点击底下的Generate token即生成Token了

  4. 生成后复制该 token(⚠️ 只显示一次!)

建议保存到安全的地方,例如 ~/.config/sub-store/token.txt。

3.Sub-store设置Gist同步#

将Github用户名和获取的Token粘贴进去即可

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
Docker部署Sub-Store订阅管理系统
https://blog.leuxx.de/posts/9/
作者
Leu
发布于
2025-09-01
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Leu
慢慢折腾,认真记录,每一天都有新的收获
公告
欢迎来到我的博客,随便看看不用客气!
分类
标签
最新动态
站点统计
文章
40
分类
14
标签
19
总字数
26,964
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录