Clash Config Store 是一个面向 Mihomo/Clash 的订阅编排与分发平台
2.2K
Clash Config Store 是一个面向 Mihomo/Clash 的订阅编排与分发平台:
把多个上游代理订阅、规则集和自定义配置统一管理,最终生成可直接下发的完整 YAML。
proxies / proxy-groups / rules)/sub/{token}),支持重新生成与过期控制| 首页 | 托管规则集 |
|---|---|
![]() | ![]() |
| 自定义配置 - 代理组 | 自定义配置 - 规则 |
|---|---|
![]() | ![]() |
| 订阅管理 - 二维码分享 | 规则集库 |
|---|---|
![]() | ![]() |
目录概览:
cmd/server/main.go # 程序入口、路由注册
internal/ # 后端核心代码(handler/service/model 等)
frontend/ # 前端工程
docker-compose.example.yml # Compose 示例:默认拉取 Docker Hub 镜像,可改为本地构建
Dockerfile # 多阶段构建镜像
预构建镜像(Docker Hub,拉取即用):shine09/clash-config-store
方式 A:拉取预构建镜像(推荐,启动快)
无需本地构建;确保已安装 Docker Compose。
git clone https://github.com/PrintNow/clash-config-store.git
cd clash-config-store
cp .env.example .env
# 编辑 .env,至少修改 JWT_SECRET
# 首次会拉取 Hub 镜像;./data 挂载为数据目录,首次启动会自动创建 SQLite
docker compose -f docker-compose.example.yml up -d
方式 B:本地构建镜像(更利于审计与可信构建)
克隆仓库后,将示例复制为本地专用文件(勿提交仓库),在副本里注释掉 image、取消注释 build 段,例如:
cp docker-compose.example.yml compose.local.yml
# 编辑 compose.local.yml …
docker compose -f compose.local.yml up -d --build
说明:预构建镜像由发布者维护,生产环境请自行评估信任边界;若更在意供应链安全,优先采用方式 B 在本地或自有 CI 中构建。
默认访问地址:
http://localhost:26406http://localhost:26406/apihttp://localhost:26406/sub/<token>说明:
DB_TYPE=sqlite);image 默认为 shine09/clash-config-store:latest,可按 Docker Hub 标签 改为固定版本(如 v1.1.0-beta.1)以便复现部署.env 设置:
DB_TYPE=mysqlDB_DSN=<mysql dsn>后端:
cp .env.example .env
# 编辑 .env,至少修改 JWT_SECRET
go mod tidy
go run ./cmd/server
前端(另开终端):
cd frontend
npm install
npm run dev
开发访问:
http://localhost:5173/api、/sub、/ruleset)建议按现有分层:
internal/model 定义模型internal/handler 增加请求处理函数cmd/server/main.go 注册路由internal/service 编排业务逻辑go test ./... 验证建议流程:
frontend/src/pages 新增页面组件frontend/src/api 增加 API 模块frontend/src/components/layout/Sidebar.tsx 添加导航项frontend/src/i18n/locales/zh.ts、frontend/src/i18n/locales/en.ts 补齐文案cd frontend && npm run build 做类型与构建校验GET /sub/:tokenGET /ruleset/:token/:name| 变量 | 默认值 | 说明 |
|---|---|---|
APP_PORT | 26406 | 服务监听端口 |
GIN_MODE | debug(未设置时) | debug / release / test;生产与 Docker Compose 示例为 release |
GIN_TRUSTED_PROXIES | 未设置时为 127.0.0.1,::1 | 逗号分隔的可信代理 IP 或 CIDR,勿使用「信任全部」;反代场景按需扩大网段 |
DB_TYPE | sqlite | sqlite 或 mysql |
DB_DSN | data.db | SQLite 文件路径或 MySQL DSN |
JWT_SECRET | please-change-this-secret-in-production | JWT 密钥,生产环境必须修改 |
JWT_EXPIRY_HOURS | 24 | JWT 有效期(小时) |
BASE_URL | http://localhost:26406 | 用于生成订阅链接 |
GEOIP_PATH | 空(自动探测) | GeoLite2 数据库路径,用于地理限制 |
用于订阅访问场景:按客户端 IP 解析国家/城市,支撑「按国家限制访问」,并在访问日志里记录地理字段。与下发 YAML 里的 GEOIP,CN,DIRECT 等客户端规则不是同一回事。
go run:未设置 GEOIP_PATH 且不存在默认路径下的库文件时,地理能力关闭(不影响其它功能)。/data/geoip/GeoLite2-City.mmdb,示例里的 GEOIP_PATH 即指向该路径;这与把宿主机 ./data 挂到容器内 /data/store(仅用于 SQLite 数据目录)互不冲突。make geoip 会把 GeoLite2-City.mmdb 下载到 .docker/geoip/,供 make docker-build 打进镜像;也可自行下载后通过 GEOIP_PATH 指向任意路径。Content type
Image
Digest
sha256:606100c53…
Size
45.6 MB
Last updated
5 months ago
docker pull shine09/clash-config-store