Sign inSign up

mark8857857/mihomo-sub

By mark8857857

•Updated about 23 hours ago

mihomo 为核心,Sub-Store管理多订阅和定时更新,添加了web安全验证

Image
0

1.6K

mark8857857/mihomo-sub repository overview

⁠🚀 mihomo-sub

单容器 All-in-One 代理方案

mihomo Alpha + metacubexd 面板 + Sub-Store 订阅管理 · 登录认证 · 订阅令牌 · 自动同步

linux/amd64 ✦ linux/arm64 双架构


⁠⚠️ 免责声明

  • 本项目仅供学习研究和技术交流使用,请遵守所在国家/地区的法律法规。
  • 开发者不提供任何代理节点、订阅链接或翻墙服务;
  • 使用者自行获取的订阅内容与开发者无关;
  • 严禁用于任何违法用途;

使用本项目即表示您已阅读并同意上述声明,使用风险自行承担


⁠✨ 特性

  • 🔄 订阅自动同步 — 增删改订阅后自动刷新 mihomo provider,新节点即时生效
  • 🔐 登录认证 — UI 密码登录(HttpOnly 会话),管理 API 未登录一律 401
  • 🎫 订阅令牌 — 订阅下载/分享需携带独立 token,不裸奔
  • 🛡️ 强制安全基线 — 三个必填密钥缺失时容器拒绝启动
  • 🩺 真实健康检查 — 同时探测代理核心、订阅后端与认证代理
  • ♻️ 自愈 — 面板 UI / GEO 数据缺失自动恢复,GEO 每 24h 自动更新
  • 💾 配置持久化 — 挂载即用,升级镜像不丢数据

⁠📦 内置组件

组件说明
mihomo代理核心(Alpha 源码编译,支持 VLESS / Hysteria2 / TUIC 等)
metacubexd代理管理面板(:9090/ui)
Sub-Store订阅管理后端 + 前端
auth-proxy登录认证 + 订阅令牌 + 「all」组合自动同步

⁠🌐 服务端口

端口用途
7890HTTP/SOCKS5 mixed 代理
9090mihomo 面板 + 控制器(需密钥)
3002Sub-Store UI(唯一对外入口,需登录密码)

订阅后端(3001)仅容器内部可达,不对外暴露。


⁠🔑 环境变量

变量要求
SUB_STORE_UI_PASSWORD 必填Sub-Store UI 登录密码,≥ 8 位
SUB_STORE_PUBLIC_TOKEN 必填订阅下载/分享令牌,≥ 16 位
MIHOMO_SECRET 必填mihomo 控制器/面板密钥,≥ 16 位
TZ 可选时区,默认 Asia/Shanghai
SUB_STORE_UI_SESSION_HOURS 可选登录会话时长(小时),默认 12
SUB_STORE_FRONTEND_BACKEND_PATH 可选API 神秘路径前缀
SUB_STORE_SECURE_COOKIE 可选HTTPS 反代后设 true

⁠🚢 部署

⁠第 1 步:配置三个必填密钥
environment:
  - SUB_STORE_UI_PASSWORD=(Sub-Store UI 登录密码,至少8位)
  - SUB_STORE_PUBLIC_TOKEN=(订阅下载/分享令牌,随机16位以上)
  - MIHOMO_SECRET=(控制器/面板密钥,随机16位以上)

可用命令在CMD或者SSH终端生成强随机16位值(生成的是32位字符比手动16位字符更安全):openssl rand -hex 16

⁠第 2 步:编写 docker-compose.yml
services:
  mihomo:
    image: mark8857857/mihomo-sub:latest
    container_name: mihomo
    restart: unless-stopped
    ports:
      - "7890:7890"
      - "9090:9090"
      - "3002:3002"
    environment:
      - TZ=Asia/Shanghai
      - SUB_STORE_UI_PASSWORD=${Sub-Store UI 登录密码}
      - SUB_STORE_PUBLIC_TOKEN=${订阅下载/分享令牌}
      - MIHOMO_SECRET=${控制器/面板密钥}
    volumes:
      - ./config:/root/.config/mihomo
      - ./sub-store-data:/opt/sub-store/data

(搭配mpull⁠更方便)

⁠第 3 步:启动
docker compose up -d

⁠📖 使用

1️⃣ 添加订阅 — 打开 http://127.0.0.1:3002,用 SUB_STORE_UI_PASSWORD 登录后添加订阅链接。

2️⃣ 代理面板 — 打开 http://127.0.0.1:9090/ui,输入 MIHOMO_SECRET 连接,即可切换节点、测延迟、查看连接。

3️⃣ 客户端订阅链接 — 给代理客户端使用:

http://<服务器IP>:3002/download/collection/all?target=ClashMeta&token=<SUB_STORE_PUBLIC_TOKEN>

支持 token 查询参数或 X-Sub-Store-Token 请求头。


⁠❓ 常见问题

Q:升级镜像会丢配置吗?

不会。数据在 ./config 和 ./sub-store-data,保留挂载即可。 不会。订阅数据在 ./sub-store-data,mihomo 配置在 ./config,保留挂载目录即可。

Q:为什么 API / 下载链接返回 401?

按设计:API 需登录,订阅下载需 token,不是故障。 按设计:管理 API 需要登录会话,订阅下载需要 SUB_STORE_PUBLIC_TOKEN,不是故障。

Q:忘记密码 / 密钥?

改 .env 后重启容器,重启后需重新登录。 修改 .env 中对应变量后重启容器。登录会话存在内存中,重启后需重新登录。


⁠📄 源码

基于 Tsutomu-miku/mihomo-docker⁠ 二次开发:安全加固(强制密钥、订阅令牌、认证修复)+ Sub-Store 订阅自动同步。

Tag summary

Content type

Image

Digest

sha256:c6b4b8671…

Size

97.2 MB

Last updated

about 23 hours ago

docker pull mark8857857/mihomo-sub