From 2fb4096b7528cebb5e49200cf7e46708d533035a Mon Sep 17 00:00:00 2001 From: okxlin Date: Tue, 10 Mar 2026 22:34:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0docker-mirror-monitor?= =?UTF-8?q?=E5=88=B0=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/docker-mirror-monitor/1.1.1/data.yml | 32 + .../1.1.1/data/config.yaml | 572 ++++++++++++++++++ .../1.1.1/docker-compose.yml | 25 + .../1.1.1/scripts/init.sh | 3 + apps/docker-mirror-monitor/README.md | 16 + apps/docker-mirror-monitor/data.yml | 35 ++ apps/docker-mirror-monitor/latest/data.yml | 32 + .../latest/data/config.yaml | 572 ++++++++++++++++++ .../latest/docker-compose.yml | 25 + .../latest/scripts/init.sh | 3 + apps/docker-mirror-monitor/logo.png | Bin 0 -> 4768 bytes 11 files changed, 1315 insertions(+) create mode 100644 apps/docker-mirror-monitor/1.1.1/data.yml create mode 100644 apps/docker-mirror-monitor/1.1.1/data/config.yaml create mode 100644 apps/docker-mirror-monitor/1.1.1/docker-compose.yml create mode 100644 apps/docker-mirror-monitor/1.1.1/scripts/init.sh create mode 100644 apps/docker-mirror-monitor/README.md create mode 100644 apps/docker-mirror-monitor/data.yml create mode 100644 apps/docker-mirror-monitor/latest/data.yml create mode 100644 apps/docker-mirror-monitor/latest/data/config.yaml create mode 100644 apps/docker-mirror-monitor/latest/docker-compose.yml create mode 100644 apps/docker-mirror-monitor/latest/scripts/init.sh create mode 100644 apps/docker-mirror-monitor/logo.png diff --git a/apps/docker-mirror-monitor/1.1.1/data.yml b/apps/docker-mirror-monitor/1.1.1/data.yml new file mode 100644 index 00000000..8804b662 --- /dev/null +++ b/apps/docker-mirror-monitor/1.1.1/data.yml @@ -0,0 +1,32 @@ +additionalProperties: + formFields: + - default: "49080" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "9080" + edit: true + envKey: PANEL_APP_PORT_HTTP_INTERNAL + labelEn: Internal Port + labelZh: 内部端口 + required: true + rule: paramPort + type: number + - default: "./data" + disabled: true + envKey: DATA_PATH + labelEn: Data Path + labelZh: 数据路径 + required: true + type: text + - default: Asia/Shanghai + edit: true + envKey: TIME_ZONE + labelEn: Time zone + labelZh: 时区 + required: true + type: text \ No newline at end of file diff --git a/apps/docker-mirror-monitor/1.1.1/data/config.yaml b/apps/docker-mirror-monitor/1.1.1/data/config.yaml new file mode 100644 index 00000000..b8f4ae45 --- /dev/null +++ b/apps/docker-mirror-monitor/1.1.1/data/config.yaml @@ -0,0 +1,572 @@ +server: + listen: ":9080" + debug: false # 调试模式:false=只显示错误/启动信息,true=显示所有连接日志 + refresh_interval: 1800s # 全局刷新间隔,<= 300s,系统将自动启用 WebSocket,> 300s,系统将自动启用 HTTP 定时拉取 + slow_threshold: 3000 # 响应时间超过3000ms视为缓慢 + api_token: "test-token-for-api-auth" # API访问令牌 + + # 站点配置 + site: + logo: "容器镜像监控" # Header左侧Logo文字 + logo_icon: "fab fa-docker" # Logo图标(支持Font Awesome类名或图片路径) + # Logo图标支持多种格式: + # 1. Font Awesome图标: "fab fa-docker", "fas fa-cube", "fas fa-server" 等 + # 2. 本地图片: "/custom/logo.png", "/custom/my-icon.svg" (需放在 ./data/public/ 目录下) + # 3. 网络图片: "https://example.com/logo.png" + # 4. Base64图片: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." + # + # 提示:Font Awesome 5 图标请注意前缀: + # * 品牌图标(如 Docker, GitHub, 微信):使用 **fab** (例如 fab fa-weixin) + # * 常规图标(如 首页, 设置):使用 **fas** (例如 fas fa-home) + title: "容器镜像加速器监控" # 页面主标题 + description: "实时监控多种容器镜像源的加速器状态,帮助开发者选择最佳的镜像源" # 页面描述 + browser_title: "容器镜像监控" # 浏览器标签页标题 + favicon: "" # favicon图标URL(留空使用默认) + # 示例: favicon: "https://example.com/favicon.ico" + # 示例: favicon: "./favicon.png" + + # User-Agent 配置(防止被目标站点识别为机器人) + # 默认使用 Chrome 浏览器的 User-Agent + user_agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" + + # 代理配置 (支持 HTTP/HTTPS/SOCKS5) + # proxy: "http://127.0.0.1:7890" # HTTP代理 + # proxy: "socks5://127.0.0.1:1080" # SOCKS5代理 + # proxy: "socks5://user:pass@127.0.0.1:1080" # 带认证的SOCKS5 + proxy: "" + + # 推荐镜像配置(按分组ID配置,为空则按配置顺序选择前5个在线镜像) + recommended_mirrors: + dockerhub: + - "https://docker.1ms.run" + - "https://docker.1panel.live" + - "https://docker.m.ixdev.cn" + - "https://hub.rat.dev" + - "https://docker.xuanyuan.me" + # ghcr: + # - "https://ghcr.1ms.run" + # quay: + # - "https://quay.1ms.run" + + # 推荐配置是否只选择在线镜像 + # true: 只选中推荐列表中且在线的镜像 + # false: 选中推荐列表中的所有镜像,无论是否在线 + recommended_only_online: false + + # TLS/HTTPS 配置 (可选) + # 如果配置了 cert_file 和 key_file,服务将自动启用 HTTPS + tls: + enabled: false # 是否启用 HTTPS,设为true启用 + cert_file: "./ca.crt" # 证书文件路径 + key_file: "./ca.key" # 私钥文件路径 + + # 顶部公告配置(显示在header右侧) + site_notice: + #enabled: false # 是否启用顶部公告 + #text: "站点公告" # 公告文字 + #url: "" # 点击跳转链接 + #icon: "fas fa-bullhorn" # Font Awesome图标(可选,建议用fa-bullhorn或fa-bell) + #color: "#ff6b6b" # 文字颜色 + #bg_color: "rgba(255,107,107,0.1)" # 背景颜色 + # 示例配置: + enabled: true + text: "1Panel & Halo 限时优惠 🎉" + url: "https://www.lxware.cn?code=sssvip" + icon: "fas fa-gift" + color: "#ff6b6b" + bg_color: "rgba(255,107,107,0.1)" + + # 页脚配置 + footer: + text: "容器镜像监控系统" + icp: "" # ICP备案号,如 京ICP备12345678号 + icp_url: "https://beian.miit.gov.cn/" + copyright: "" # 版权信息,如 © 2024 Your Company + enable_html: false # 是否启用HTML渲染(text和copyright字段支持HTML) + links: # 自定义链接 + - name: "GitHub" + url: "https://github.com/okxlin/docker-mirror-monitor" + + # 标签颜色配置 (keyword匹配不区分大小写,按顺序优先匹配) + tag_colors: + # 官方源 + - keyword: "官方" + color: "#4f6ef7" + bg_color: "rgba(79,110,247,0.15)" + + # CDN/服务商 + - keyword: "CloudFlare" + color: "#f6821e" + bg_color: "rgba(246,130,30,0.15)" + - keyword: "Nginx" + color: "#44a047" + bg_color: "rgba(68,160,71,0.15)" + - keyword: "EdgeOne" + color: "#006eff" + bg_color: "rgba(0,110,255,0.15)" + + # 云厂商 + - keyword: "阿里" + color: "#ff9900" + bg_color: "rgba(255,153,0,0.15)" + - keyword: "腾讯" + color: "#00a4ff" + bg_color: "rgba(0,164,255,0.15)" + - keyword: "Azure" + color: "#0078d4" + bg_color: "rgba(0,120,212,0.15)" + - keyword: "Google" + color: "#4285f4" + bg_color: "rgba(66,133,244,0.15)" + - keyword: "Oracle" + color: "#f80000" + bg_color: "rgba(248,0,0,0.15)" + + # 项目/组织 + - keyword: "1Panel" + color: "#005eeb" + bg_color: "rgba(0,94,235,0.15)" + - keyword: "DaoCloud" + color: "#005eeb" + bg_color: "rgba(0,94,235,0.15)" + - keyword: "Red Hat" + color: "#ee0000" + bg_color: "rgba(238,0,0,0.15)" + - keyword: "NVIDIA" + color: "#76b900" + bg_color: "rgba(118,185,0,0.15)" + - keyword: "Elastic" + color: "#fed10a" + bg_color: "rgba(254,209,10,0.15)" + + # 警告类 (需登录/限速等) + - keyword: "需" + color: "#ff5722" + bg_color: "rgba(255,87,34,0.15)" + - keyword: "限" + color: "#ff5722" + bg_color: "rgba(255,87,34,0.15)" + + # 配置生成器模板(可选,不配置则使用默认值) + # config_templates: + # empty_hint: "// 请先选择镜像源" # 空选择时的提示文字 + # docker: + # title: "Docker 镜像加速配置" + # steps: + # - "编辑配置文件: sudo vim /etc/docker/daemon.json" + # - "重启 Docker: sudo systemctl restart docker" + # podman: + # title: "Podman 配置" + # steps: + # - "编辑配置文件: sudo vim /etc/containers/registries.conf" + # - "重启 Podman: sudo systemctl restart podman" + # containerd: + # title: "Containerd 配置" + # steps: + # - "编辑配置文件: sudo vim /etc/containerd/config.toml" + # - "重启 Containerd: sudo systemctl restart containerd" + # nerdctl: + # title: "Nerdctl/Containerd hosts.toml" + # steps: + # - "创建目录: sudo mkdir -p /etc/containerd/certs.d/{registry}" + # - "编辑配置: sudo vim /etc/containerd/certs.d/{registry}/hosts.toml" + + # 关于页面配置 + about: + enabled: true # 是否启用关于页面 + title: "关于本项目" # 关于页面标题 + description: | # 项目介绍(支持HTML) +

容器镜像监控系统是一个开源项目,帮助开发者实时监控各种容器镜像加速器的可用性和响应速度。

+

本项目支持 Docker Hub、GHCR、Quay、MCR、K8s、GCR、Elastic、NVCR 等多种镜像仓库的加速器监控。

+ + # 自定义HTML文件路径(可选,启用后将使用该文件内容替代默认关于页面) + # 文件内容将直接嵌入到关于页面的内容区域 + custom_html_file: "" # 如 "about.html" + + # 捐赠配置 + donate: + enabled: false # 是否显示捐赠信息 + title: "支持本项目" + description: "如果本项目对您有帮助,欢迎打赏支持!" + # 捐赠方式列表 + items: [] + # - name: "微信支付" + # icon: "fab fa-weixin" # 品牌图标使用 fab + # qrcode: "" # 二维码图片URL或base64 + # color: "#07c160" + # - name: "支付宝" + # icon: "fab fa-alipay" # 支付宝也有专门的图标 + # qrcode: "" + # color: "#1677ff" + + # 合作伙伴/推广配置 + partners: + enabled: false # 是否显示推荐/合作伙伴 + items: [] + # - title: "推荐服务" + # description: "优质的云服务提供商" + # url: "https://example.com" + # image: "" # 广告图片URL(可选) + # color: "#4f6ef7" # 边框颜色 + + # 自定义链接 + links: + # - name: "GitHub" + # url: "https://github.com/xxx" + # icon: "fab fa-github" # 品牌图标使用 fab + # - name: "文档" + # url: "https://docs.example.com" + # icon: "fas fa-book" # 通用图标使用 fas + + # 免责声明配置 + disclaimer: + enabled: true # 是否显示免责声明 + title: "免责声明" + content: | +

本项目仅供学习和研究使用,不提供任何形式的担保。

+

镜像源的可用性和安全性由各镜像源提供方负责,使用前请自行评估风险。

+

本项目不对因使用镜像源而导致的任何损失承担责任。

+ ai_generated: true # 是否显示AI生成声明 + ai_statement: "本项目由 AI 辅助生成" + +groups: + # Docker Hub 镜像源 + - id: "dockerhub" + name: "Docker Hub" + description: "Docker官方镜像仓库加速器" + official_url: "https://registry-1.docker.io" + targets: + - name: "Docker Hub" + url: "https://registry-1.docker.io/v2/" + tags: ["官方", "CloudFront"] + + - name: "腾讯云镜像仓库" + url: "https://mirror.ccs.tencentyun.com/v2/" + tags: ["腾讯云", "仅限腾讯云内网"] + + - name: "毫秒镜像(免费版)" + url: "https://docker.1ms.run/v2/" + tags: ["木雷坞", "CloudFlare"] + + - name: "毫秒镜像(付费版)" + url: "https://docker.1ms.run/v2/" + tags: ["木雷坞", "CDN", "需登陆", "高可用"] + + - name: "1Panel" + url: "https://docker.1panel.live/v2/" + tags: ["1Panel", "CloudFlare"] + + - name: "CNIX Internal" + url: "https://docker.m.ixdev.cn/v2/" + tags: ["国家(深圳·前海)新型互联网交换中心", "Nginx", "广东BGP"] + + - name: "耗子面板" + url: "https://hub.rat.dev/v2/" + tags: ["耗子面板", "CloudFlare"] + + - name: "轩辕镜像(免费版)" + url: "https://docker.xuanyuan.me/v2/" + tags: ["源码跳动", "CloudFlare"] + + - name: "轩辕镜像(专业版)" + url: "https://docker.xuanyuan.run/v2/" + tags: ["源码跳动", "白山云CDN", "需登陆"] + + - name: "轩辕镜像(专业版2)" + url: "https://docker.xuanyuan.dev/v2/" + tags: ["源码跳动", "CloudFlare", "需登陆"] + + - name: "DockerProxy" + url: "https://dockerproxy.net/v2/" + tags: ["DockerProxy", "Oracle CDN"] + + - name: "奶昔论坛" + url: "https://docker-registry.nmqu.com/v2/" + tags: ["奶昔论坛", "CloudFlare"] + + - name: "爱铭网络 1" + url: "https://hub.amingg.com/v2/" + tags: ["爱铭网络", "CloudFlare"] + + - name: "爱铭网络 2" + url: "https://docker.amingg.com/v2/" + tags: ["爱铭网络", "CloudFlare"] + + - name: "厚浪云" + url: "https://docker.hlmirror.com/v2/" + tags: ["厚浪云", "CloudFlare"] + + - name: "棉花云 1" + url: "https://hub1.nat.tf/v2/" + tags: ["美国西海岸节点", "Nginx"] + + - name: "棉花云 2" + url: "https://hub2.nat.tf/v2/" + tags: ["香港BGP节点", "Nginx"] + + - name: "棉花云 3" + url: "https://hub3.nat.tf/v2/" + tags: ["日本东京节点", "Nginx"] + + - name: "棉花云 4" + url: "https://hub4.nat.tf/v2/" + tags: ["美国东海岸备用节点", "Nginx"] + + - name: "天云港云" + url: "https://run-docker.cn/v2/" + tags: ["天云港云", "CloudFlare"] + + - name: "DaoCloud" + url: "https://docker.m.daocloud.io/v2/" + tags: ["DaoCloud", "阿里云", "限速"] + + - name: "科技lion" + url: "https://docker.kejilion.pro/v2/" + tags: ["自媒体UP主", "Nginx"] + + - name: "1Panel三方镜像源" + url: "https://docker.367231.xyz/v2/" + tags: ["1Panel核心用户GXL驱动", "CloudFlare"] + + - name: "1Panel三方镜像源2" + url: "https://hub.1panel.dev/v2/" + tags: ["1Panel核心用户无名驱动", "CloudFlare"] + + - name: "SUNBALCONY" + url: "https://dockerproxy.cool/v2/" + tags: ["ipip.icu博主", "EdgeOne"] + + - name: "apiba" + url: "https://docker.apiba.cn/v2/" + tags: ["apiba.cn", "CloudFlare"] + + - name: "mxjia" + url: "https://proxy.vvvv.ee/v2/" + tags: ["NodeSeek大佬", "Nginx"] + + - name: "飞牛NAS" + url: "https://docker.fnnas.com/v2/" + tags: ["飞牛NAS", "Nginx", "需登陆"] + + # GHCR 镜像源 + - id: "ghcr" + name: "GHCR" + description: "GitHub Container Registry 镜像加速器" + official_url: "https://ghcr.io" + targets: + - name: "GHCR" + url: "https://ghcr.io/v2/" + tags: ["官方", "Azure"] + + - name: "毫秒镜像(免费版)" + url: "https://ghcr.1ms.run/v2/" + tags: ["木雷坞", "CloudFlare"] + + - name: "毫秒镜像(付费版)" + url: "https://ghcr.1ms.run/v2/" + tags: ["木雷坞", "CDN", "需登陆", "高可用"] + + - name: "CNIX Internal" + url: "https://ghcr.m.ixdev.cn/v2/" + tags: ["国家(深圳·前海)新型互联网交换中心", "Nginx", "广东BGP"] + + - name: "轩辕镜像(专业版)" + url: "https://xxx-ghcr.xuanyuan.run/v2/" + tags: ["源码跳动", "白山云 CDN", "需登陆"] + + - name: "DockerProxy" + url: "https://ghcr.dockerproxy.net/v2/" + tags: ["DockerProxy", "Oracle CDN"] + + - name: "DaoCloud" + url: "https://ghcr.m.daocloud.io/v2/" + tags: ["DaoCloud", "阿里云", "限速"] + + # Quay 镜像源 + - id: "quay" + name: "Quay" + description: "Red Hat Quay.io 镜像加速器" + official_url: "https://quay.io" + targets: + - name: "Quay" + url: "https://quay.io/v2/" + tags: ["官方", "CloudFront"] + + - name: "毫秒镜像(免费版)" + url: "https://quay.1ms.run/v2/" + tags: ["木雷坞", "CloudFlare"] + + - name: "毫秒镜像(付费版)" + url: "https://quay.1ms.run/v2/" + tags: ["木雷坞", "CDN", "需登陆", "高可用"] + + - name: "CNIX Internal" + url: "https://quay.m.ixdev.cn/v2/" + tags: ["国家(深圳·前海)新型互联网交换中心", "Nginx", "广东BGP"] + + - name: "轩辕镜像(专业版)" + url: "https://xxx-quay.xuanyuan.run/v2/" + tags: ["源码跳动", "白山云 CDN", "需登陆"] + + - name: "DockerProxy" + url: "https://quay.dockerproxy.net/v2/" + tags: ["DockerProxy", "Oracle CDN"] + + - name: "DaoCloud" + url: "https://quay.m.daocloud.io/v2/" + tags: ["DaoCloud", "阿里云", "限速"] + + # MCR 镜像源 + - id: "mcr" + name: "MCR" + description: "Microsoft Container Registry 镜像加速器" + official_url: "https://mcr.microsoft.com" + targets: + - name: "MCR" + url: "https://mcr.microsoft.com/v2/" + tags: ["官方", "Azure"] + + - name: "毫秒镜像(免费版)" + url: "https://mcr.1ms.run/v2/" + tags: ["木雷坞", "CloudFlare"] + + - name: "毫秒镜像(付费版)" + url: "https://mcr.1ms.run/v2/" + tags: ["木雷坞", "CDN", "需登陆", "高可用"] + + - name: "CNIX Internal" + url: "https://mcr.m.ixdev.cn/v2/" + tags: ["国家(深圳·前海)新型互联网交换中心", "Nginx", "广东BGP"] + + - name: "轩辕镜像(专业版)" + url: "https://xxx-mcr.xuanyuan.run/v2/" + tags: ["源码跳动", "白山云 CDN", "需登陆"] + + - name: "DockerProxy" + url: "https://mcr.dockerproxy.net/v2/" + tags: ["DockerProxy", "Oracle CDN"] + + - name: "DaoCloud" + url: "https://mcr.m.daocloud.io/v2/" + tags: ["DaoCloud", "阿里云", "限速"] + + # K8s 镜像源 + - id: "k8s" + name: "K8s" + description: "Kubernetes Registry 镜像加速器" + official_url: "https://registry.k8s.io" + targets: + - name: "K8s Registry" + url: "https://registry.k8s.io/v2/" + tags: ["官方", "Google Cloud"] + + - name: "毫秒镜像(免费版)" + url: "https://k8s.1ms.run/v2/" + tags: ["木雷坞", "CloudFlare"] + + - name: "毫秒镜像(付费版)" + url: "https://k8s.1ms.run/v2/" + tags: ["木雷坞", "CDN", "需登陆", "高可用"] + + - name: "CNIX Internal" + url: "https://k8s.m.ixdev.cn/v2/" + tags: ["国家(深圳·前海)新型互联网交换中心", "Nginx", "广东BGP"] + + - name: "轩辕镜像(专业版)" + url: "https://xxx-k8s.xuanyuan.run/v2/" + tags: ["源码跳动", "白山云 CDN", "需登陆"] + + - name: "DockerProxy" + url: "https://k8s.dockerproxy.net/v2/" + tags: ["DockerProxy", "Oracle CDN"] + + - name: "DaoCloud" + url: "https://k8s.m.daocloud.io/v2/" + tags: ["DaoCloud", "阿里云", "限速"] + + + # GCR 镜像源 + - id: "gcr" + name: "GCR" + description: "Google Container Registry 镜像加速器" + official_url: "https://gcr.io" + targets: + - name: "GCR" + url: "https://gcr.io/v2/" + tags: ["官方", "Google Cloud"] + + - name: "毫秒镜像(付费版)" + url: "https://gcr.1ms.run/v2/" + tags: ["木雷坞", "CDN", "需登陆", "高可用"] + + - name: "轩辕镜像(专业版)" + url: "https://xxx-gcr.xuanyuan.run/v2/" + tags: ["源码跳动", "白山云 CDN", "需登陆"] + + - name: "DockerProxy" + url: "https://gcr.dockerproxy.net/v2/" + tags: ["DockerProxy", "Oracle CDN"] + + - name: "DaoCloud" + url: "https://gcr.m.daocloud.io/v2/" + tags: ["DaoCloud", "阿里云", "限速"] + # Elastic 镜像源 + - id: "elastic" + name: "Elastic" + description: "Elastic Docker Registry 镜像加速器" + official_url: "https://docker.elastic.co" + targets: + - name: "Elastic" + url: "https://docker.elastic.co/v2/" + tags: ["官方", "Google Cloud"] + + - name: "毫秒镜像(免费版)" + url: "https://elastic.1ms.run/v2/" + tags: ["木雷坞", "CloudFlare"] + + - name: "毫秒镜像(付费版)" + url: "https://elastic.1ms.run/v2/" + tags: ["木雷坞", "CDN", "需登陆", "高可用"] + + - name: "CNIX Internal" + url: "https://elastic.m.ixdev.cn/v2/" + tags: ["国家(深圳·前海)新型互联网交换中心", "Nginx", "广东BGP"] + + - name: "轩辕镜像(专业版)" + url: "https://xxx-elastic.xuanyuan.run/v2/" + tags: ["源码跳动", "白山云 CDN", "需登陆"] + + - name: "DaoCloud" + url: "https://elastic.m.daocloud.io/v2/" + tags: ["DaoCloud", "阿里云", "限速"] + + # NVCR 镜像源 + - id: "nvcr" + name: "NVCR" + description: "NVIDIA Container Registry 镜像加速器" + official_url: "https://nvcr.io" + targets: + - name: "NVCR" + url: "https://nvcr.io/v2/" + tags: ["官方", "CloudFront"] + + - name: "毫秒镜像(免费版)" + url: "https://nvcr.1ms.run/v2/" + tags: ["木雷坞", "CloudFlare"] + + - name: "毫秒镜像(付费版)" + url: "https://nvcr.1ms.run/v2/" + tags: ["木雷坞", "CDN", "需登陆", "高可用"] + + - name: "CNIX Internal" + url: "https://nvcr.m.ixdev.cn/v2/" + tags: ["国家(深圳·前海)新型互联网交换中心", "Nginx", "广东BGP"] + + - name: "轩辕镜像(专业版)" + url: "https://xxx-nvcr.xuanyuan.run/v2/" + tags: ["源码跳动", "白山云 CDN", "需登陆"] + + - name: "DaoCloud" + url: "https://nvcr.m.daocloud.io/v2/" + tags: ["DaoCloud", "阿里云", "限速"] + diff --git a/apps/docker-mirror-monitor/1.1.1/docker-compose.yml b/apps/docker-mirror-monitor/1.1.1/docker-compose.yml new file mode 100644 index 00000000..f1e17f43 --- /dev/null +++ b/apps/docker-mirror-monitor/1.1.1/docker-compose.yml @@ -0,0 +1,25 @@ +services: + docker-mirror-monitor: + image: "moelin/docker-mirror-monitor:v1.1.1" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP_INTERNAL}" + volumes: + - ${DATA_PATH}:/app/data + environment: + - TZ=${TIME_ZONE} + healthcheck: + test: ["CMD", "/app/docker-mirror-monitor", "healthcheck", "-config", "/app/data/config.yaml"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 5s + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/docker-mirror-monitor/1.1.1/scripts/init.sh b/apps/docker-mirror-monitor/1.1.1/scripts/init.sh new file mode 100644 index 00000000..4e811c86 --- /dev/null +++ b/apps/docker-mirror-monitor/1.1.1/scripts/init.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +chown -R 1000:1000 data \ No newline at end of file diff --git a/apps/docker-mirror-monitor/README.md b/apps/docker-mirror-monitor/README.md new file mode 100644 index 00000000..6446c162 --- /dev/null +++ b/apps/docker-mirror-monitor/README.md @@ -0,0 +1,16 @@ +# Docker Mirror Monitor + +实时监控多种容器镜像源的加速器状态,帮助开发者选择最佳的镜像源。 + +## 功能特性 + +* **多分组监控**:支持 Docker Hub、GHCR、Quay、K8s、GCR 等多种仓库。 +* **实时更新**:基于 WebSocket 的实时状态推送。 +* **配置生成**:一键生成 Docker `daemon.json` 或 Containerd 配置。 +* **美观界面**:支持浅色/深色模式及多种配色主题。 + +## 使用说明 + +安装完成后,访问 `http://IP:端口` 即可使用。 + +如需修改监控目标或站点标题,请编辑安装目录下的 `data/config.yaml` 文件,然后调用 API 热加载或重启容器。 \ No newline at end of file diff --git a/apps/docker-mirror-monitor/data.yml b/apps/docker-mirror-monitor/data.yml new file mode 100644 index 00000000..27a2d11f --- /dev/null +++ b/apps/docker-mirror-monitor/data.yml @@ -0,0 +1,35 @@ +name: Docker Mirror Monitor +tags: + - 实用工具 +title: Docker镜像监控系统 +description: 实时监控多种容器镜像源的加速器状态,帮助开发者选择最佳的镜像源 +additionalProperties: + key: docker-mirror-monitor + name: Docker Mirror Monitor + tags: + - Tool + shortDescZh: 实时监控多种容器镜像源的加速器状态 + shortDescEn: Real-time monitoring of multiple container image source accelerators + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://github.com/okxlin/docker-mirror-monitor + github: https://github.com/okxlin/docker-mirror-monitor + document: https://github.com/okxlin/docker-mirror-monitor/blob/main/README.md + description: + en: Real-time monitoring of multiple container image source accelerators. + zh: 实时监控多种容器镜像源的加速器状态。 + zh-Hant: 实时监控多種容器鏡像源的加速器状态。 + ja: 複数のコンテナイメージソースアクセラレータの状態をリアルタイムで監視。 + ms: Pemantauan masa nyata status pemacu pelbagai sumber imej bekas. + pt-br: Monitoramento em tempo real do status de aceleradores de várias fontes de imagem de contêiner. + ru: Мониторинг состояния ускорителей различных источников образов контейнеров в реальном времени. + ko: 여러 컨테이너 이미지 소스 가속기 상태 실시간 모니터링. + batchInstallSupport: true + architectures: + - amd64 + - arm64 + - armv7 + - ppc64le + - s390x diff --git a/apps/docker-mirror-monitor/latest/data.yml b/apps/docker-mirror-monitor/latest/data.yml new file mode 100644 index 00000000..8804b662 --- /dev/null +++ b/apps/docker-mirror-monitor/latest/data.yml @@ -0,0 +1,32 @@ +additionalProperties: + formFields: + - default: "49080" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "9080" + edit: true + envKey: PANEL_APP_PORT_HTTP_INTERNAL + labelEn: Internal Port + labelZh: 内部端口 + required: true + rule: paramPort + type: number + - default: "./data" + disabled: true + envKey: DATA_PATH + labelEn: Data Path + labelZh: 数据路径 + required: true + type: text + - default: Asia/Shanghai + edit: true + envKey: TIME_ZONE + labelEn: Time zone + labelZh: 时区 + required: true + type: text \ No newline at end of file diff --git a/apps/docker-mirror-monitor/latest/data/config.yaml b/apps/docker-mirror-monitor/latest/data/config.yaml new file mode 100644 index 00000000..b8f4ae45 --- /dev/null +++ b/apps/docker-mirror-monitor/latest/data/config.yaml @@ -0,0 +1,572 @@ +server: + listen: ":9080" + debug: false # 调试模式:false=只显示错误/启动信息,true=显示所有连接日志 + refresh_interval: 1800s # 全局刷新间隔,<= 300s,系统将自动启用 WebSocket,> 300s,系统将自动启用 HTTP 定时拉取 + slow_threshold: 3000 # 响应时间超过3000ms视为缓慢 + api_token: "test-token-for-api-auth" # API访问令牌 + + # 站点配置 + site: + logo: "容器镜像监控" # Header左侧Logo文字 + logo_icon: "fab fa-docker" # Logo图标(支持Font Awesome类名或图片路径) + # Logo图标支持多种格式: + # 1. Font Awesome图标: "fab fa-docker", "fas fa-cube", "fas fa-server" 等 + # 2. 本地图片: "/custom/logo.png", "/custom/my-icon.svg" (需放在 ./data/public/ 目录下) + # 3. 网络图片: "https://example.com/logo.png" + # 4. Base64图片: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." + # + # 提示:Font Awesome 5 图标请注意前缀: + # * 品牌图标(如 Docker, GitHub, 微信):使用 **fab** (例如 fab fa-weixin) + # * 常规图标(如 首页, 设置):使用 **fas** (例如 fas fa-home) + title: "容器镜像加速器监控" # 页面主标题 + description: "实时监控多种容器镜像源的加速器状态,帮助开发者选择最佳的镜像源" # 页面描述 + browser_title: "容器镜像监控" # 浏览器标签页标题 + favicon: "" # favicon图标URL(留空使用默认) + # 示例: favicon: "https://example.com/favicon.ico" + # 示例: favicon: "./favicon.png" + + # User-Agent 配置(防止被目标站点识别为机器人) + # 默认使用 Chrome 浏览器的 User-Agent + user_agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" + + # 代理配置 (支持 HTTP/HTTPS/SOCKS5) + # proxy: "http://127.0.0.1:7890" # HTTP代理 + # proxy: "socks5://127.0.0.1:1080" # SOCKS5代理 + # proxy: "socks5://user:pass@127.0.0.1:1080" # 带认证的SOCKS5 + proxy: "" + + # 推荐镜像配置(按分组ID配置,为空则按配置顺序选择前5个在线镜像) + recommended_mirrors: + dockerhub: + - "https://docker.1ms.run" + - "https://docker.1panel.live" + - "https://docker.m.ixdev.cn" + - "https://hub.rat.dev" + - "https://docker.xuanyuan.me" + # ghcr: + # - "https://ghcr.1ms.run" + # quay: + # - "https://quay.1ms.run" + + # 推荐配置是否只选择在线镜像 + # true: 只选中推荐列表中且在线的镜像 + # false: 选中推荐列表中的所有镜像,无论是否在线 + recommended_only_online: false + + # TLS/HTTPS 配置 (可选) + # 如果配置了 cert_file 和 key_file,服务将自动启用 HTTPS + tls: + enabled: false # 是否启用 HTTPS,设为true启用 + cert_file: "./ca.crt" # 证书文件路径 + key_file: "./ca.key" # 私钥文件路径 + + # 顶部公告配置(显示在header右侧) + site_notice: + #enabled: false # 是否启用顶部公告 + #text: "站点公告" # 公告文字 + #url: "" # 点击跳转链接 + #icon: "fas fa-bullhorn" # Font Awesome图标(可选,建议用fa-bullhorn或fa-bell) + #color: "#ff6b6b" # 文字颜色 + #bg_color: "rgba(255,107,107,0.1)" # 背景颜色 + # 示例配置: + enabled: true + text: "1Panel & Halo 限时优惠 🎉" + url: "https://www.lxware.cn?code=sssvip" + icon: "fas fa-gift" + color: "#ff6b6b" + bg_color: "rgba(255,107,107,0.1)" + + # 页脚配置 + footer: + text: "容器镜像监控系统" + icp: "" # ICP备案号,如 京ICP备12345678号 + icp_url: "https://beian.miit.gov.cn/" + copyright: "" # 版权信息,如 © 2024 Your Company + enable_html: false # 是否启用HTML渲染(text和copyright字段支持HTML) + links: # 自定义链接 + - name: "GitHub" + url: "https://github.com/okxlin/docker-mirror-monitor" + + # 标签颜色配置 (keyword匹配不区分大小写,按顺序优先匹配) + tag_colors: + # 官方源 + - keyword: "官方" + color: "#4f6ef7" + bg_color: "rgba(79,110,247,0.15)" + + # CDN/服务商 + - keyword: "CloudFlare" + color: "#f6821e" + bg_color: "rgba(246,130,30,0.15)" + - keyword: "Nginx" + color: "#44a047" + bg_color: "rgba(68,160,71,0.15)" + - keyword: "EdgeOne" + color: "#006eff" + bg_color: "rgba(0,110,255,0.15)" + + # 云厂商 + - keyword: "阿里" + color: "#ff9900" + bg_color: "rgba(255,153,0,0.15)" + - keyword: "腾讯" + color: "#00a4ff" + bg_color: "rgba(0,164,255,0.15)" + - keyword: "Azure" + color: "#0078d4" + bg_color: "rgba(0,120,212,0.15)" + - keyword: "Google" + color: "#4285f4" + bg_color: "rgba(66,133,244,0.15)" + - keyword: "Oracle" + color: "#f80000" + bg_color: "rgba(248,0,0,0.15)" + + # 项目/组织 + - keyword: "1Panel" + color: "#005eeb" + bg_color: "rgba(0,94,235,0.15)" + - keyword: "DaoCloud" + color: "#005eeb" + bg_color: "rgba(0,94,235,0.15)" + - keyword: "Red Hat" + color: "#ee0000" + bg_color: "rgba(238,0,0,0.15)" + - keyword: "NVIDIA" + color: "#76b900" + bg_color: "rgba(118,185,0,0.15)" + - keyword: "Elastic" + color: "#fed10a" + bg_color: "rgba(254,209,10,0.15)" + + # 警告类 (需登录/限速等) + - keyword: "需" + color: "#ff5722" + bg_color: "rgba(255,87,34,0.15)" + - keyword: "限" + color: "#ff5722" + bg_color: "rgba(255,87,34,0.15)" + + # 配置生成器模板(可选,不配置则使用默认值) + # config_templates: + # empty_hint: "// 请先选择镜像源" # 空选择时的提示文字 + # docker: + # title: "Docker 镜像加速配置" + # steps: + # - "编辑配置文件: sudo vim /etc/docker/daemon.json" + # - "重启 Docker: sudo systemctl restart docker" + # podman: + # title: "Podman 配置" + # steps: + # - "编辑配置文件: sudo vim /etc/containers/registries.conf" + # - "重启 Podman: sudo systemctl restart podman" + # containerd: + # title: "Containerd 配置" + # steps: + # - "编辑配置文件: sudo vim /etc/containerd/config.toml" + # - "重启 Containerd: sudo systemctl restart containerd" + # nerdctl: + # title: "Nerdctl/Containerd hosts.toml" + # steps: + # - "创建目录: sudo mkdir -p /etc/containerd/certs.d/{registry}" + # - "编辑配置: sudo vim /etc/containerd/certs.d/{registry}/hosts.toml" + + # 关于页面配置 + about: + enabled: true # 是否启用关于页面 + title: "关于本项目" # 关于页面标题 + description: | # 项目介绍(支持HTML) +

容器镜像监控系统是一个开源项目,帮助开发者实时监控各种容器镜像加速器的可用性和响应速度。

+

本项目支持 Docker Hub、GHCR、Quay、MCR、K8s、GCR、Elastic、NVCR 等多种镜像仓库的加速器监控。

+ + # 自定义HTML文件路径(可选,启用后将使用该文件内容替代默认关于页面) + # 文件内容将直接嵌入到关于页面的内容区域 + custom_html_file: "" # 如 "about.html" + + # 捐赠配置 + donate: + enabled: false # 是否显示捐赠信息 + title: "支持本项目" + description: "如果本项目对您有帮助,欢迎打赏支持!" + # 捐赠方式列表 + items: [] + # - name: "微信支付" + # icon: "fab fa-weixin" # 品牌图标使用 fab + # qrcode: "" # 二维码图片URL或base64 + # color: "#07c160" + # - name: "支付宝" + # icon: "fab fa-alipay" # 支付宝也有专门的图标 + # qrcode: "" + # color: "#1677ff" + + # 合作伙伴/推广配置 + partners: + enabled: false # 是否显示推荐/合作伙伴 + items: [] + # - title: "推荐服务" + # description: "优质的云服务提供商" + # url: "https://example.com" + # image: "" # 广告图片URL(可选) + # color: "#4f6ef7" # 边框颜色 + + # 自定义链接 + links: + # - name: "GitHub" + # url: "https://github.com/xxx" + # icon: "fab fa-github" # 品牌图标使用 fab + # - name: "文档" + # url: "https://docs.example.com" + # icon: "fas fa-book" # 通用图标使用 fas + + # 免责声明配置 + disclaimer: + enabled: true # 是否显示免责声明 + title: "免责声明" + content: | +

本项目仅供学习和研究使用,不提供任何形式的担保。

+

镜像源的可用性和安全性由各镜像源提供方负责,使用前请自行评估风险。

+

本项目不对因使用镜像源而导致的任何损失承担责任。

+ ai_generated: true # 是否显示AI生成声明 + ai_statement: "本项目由 AI 辅助生成" + +groups: + # Docker Hub 镜像源 + - id: "dockerhub" + name: "Docker Hub" + description: "Docker官方镜像仓库加速器" + official_url: "https://registry-1.docker.io" + targets: + - name: "Docker Hub" + url: "https://registry-1.docker.io/v2/" + tags: ["官方", "CloudFront"] + + - name: "腾讯云镜像仓库" + url: "https://mirror.ccs.tencentyun.com/v2/" + tags: ["腾讯云", "仅限腾讯云内网"] + + - name: "毫秒镜像(免费版)" + url: "https://docker.1ms.run/v2/" + tags: ["木雷坞", "CloudFlare"] + + - name: "毫秒镜像(付费版)" + url: "https://docker.1ms.run/v2/" + tags: ["木雷坞", "CDN", "需登陆", "高可用"] + + - name: "1Panel" + url: "https://docker.1panel.live/v2/" + tags: ["1Panel", "CloudFlare"] + + - name: "CNIX Internal" + url: "https://docker.m.ixdev.cn/v2/" + tags: ["国家(深圳·前海)新型互联网交换中心", "Nginx", "广东BGP"] + + - name: "耗子面板" + url: "https://hub.rat.dev/v2/" + tags: ["耗子面板", "CloudFlare"] + + - name: "轩辕镜像(免费版)" + url: "https://docker.xuanyuan.me/v2/" + tags: ["源码跳动", "CloudFlare"] + + - name: "轩辕镜像(专业版)" + url: "https://docker.xuanyuan.run/v2/" + tags: ["源码跳动", "白山云CDN", "需登陆"] + + - name: "轩辕镜像(专业版2)" + url: "https://docker.xuanyuan.dev/v2/" + tags: ["源码跳动", "CloudFlare", "需登陆"] + + - name: "DockerProxy" + url: "https://dockerproxy.net/v2/" + tags: ["DockerProxy", "Oracle CDN"] + + - name: "奶昔论坛" + url: "https://docker-registry.nmqu.com/v2/" + tags: ["奶昔论坛", "CloudFlare"] + + - name: "爱铭网络 1" + url: "https://hub.amingg.com/v2/" + tags: ["爱铭网络", "CloudFlare"] + + - name: "爱铭网络 2" + url: "https://docker.amingg.com/v2/" + tags: ["爱铭网络", "CloudFlare"] + + - name: "厚浪云" + url: "https://docker.hlmirror.com/v2/" + tags: ["厚浪云", "CloudFlare"] + + - name: "棉花云 1" + url: "https://hub1.nat.tf/v2/" + tags: ["美国西海岸节点", "Nginx"] + + - name: "棉花云 2" + url: "https://hub2.nat.tf/v2/" + tags: ["香港BGP节点", "Nginx"] + + - name: "棉花云 3" + url: "https://hub3.nat.tf/v2/" + tags: ["日本东京节点", "Nginx"] + + - name: "棉花云 4" + url: "https://hub4.nat.tf/v2/" + tags: ["美国东海岸备用节点", "Nginx"] + + - name: "天云港云" + url: "https://run-docker.cn/v2/" + tags: ["天云港云", "CloudFlare"] + + - name: "DaoCloud" + url: "https://docker.m.daocloud.io/v2/" + tags: ["DaoCloud", "阿里云", "限速"] + + - name: "科技lion" + url: "https://docker.kejilion.pro/v2/" + tags: ["自媒体UP主", "Nginx"] + + - name: "1Panel三方镜像源" + url: "https://docker.367231.xyz/v2/" + tags: ["1Panel核心用户GXL驱动", "CloudFlare"] + + - name: "1Panel三方镜像源2" + url: "https://hub.1panel.dev/v2/" + tags: ["1Panel核心用户无名驱动", "CloudFlare"] + + - name: "SUNBALCONY" + url: "https://dockerproxy.cool/v2/" + tags: ["ipip.icu博主", "EdgeOne"] + + - name: "apiba" + url: "https://docker.apiba.cn/v2/" + tags: ["apiba.cn", "CloudFlare"] + + - name: "mxjia" + url: "https://proxy.vvvv.ee/v2/" + tags: ["NodeSeek大佬", "Nginx"] + + - name: "飞牛NAS" + url: "https://docker.fnnas.com/v2/" + tags: ["飞牛NAS", "Nginx", "需登陆"] + + # GHCR 镜像源 + - id: "ghcr" + name: "GHCR" + description: "GitHub Container Registry 镜像加速器" + official_url: "https://ghcr.io" + targets: + - name: "GHCR" + url: "https://ghcr.io/v2/" + tags: ["官方", "Azure"] + + - name: "毫秒镜像(免费版)" + url: "https://ghcr.1ms.run/v2/" + tags: ["木雷坞", "CloudFlare"] + + - name: "毫秒镜像(付费版)" + url: "https://ghcr.1ms.run/v2/" + tags: ["木雷坞", "CDN", "需登陆", "高可用"] + + - name: "CNIX Internal" + url: "https://ghcr.m.ixdev.cn/v2/" + tags: ["国家(深圳·前海)新型互联网交换中心", "Nginx", "广东BGP"] + + - name: "轩辕镜像(专业版)" + url: "https://xxx-ghcr.xuanyuan.run/v2/" + tags: ["源码跳动", "白山云 CDN", "需登陆"] + + - name: "DockerProxy" + url: "https://ghcr.dockerproxy.net/v2/" + tags: ["DockerProxy", "Oracle CDN"] + + - name: "DaoCloud" + url: "https://ghcr.m.daocloud.io/v2/" + tags: ["DaoCloud", "阿里云", "限速"] + + # Quay 镜像源 + - id: "quay" + name: "Quay" + description: "Red Hat Quay.io 镜像加速器" + official_url: "https://quay.io" + targets: + - name: "Quay" + url: "https://quay.io/v2/" + tags: ["官方", "CloudFront"] + + - name: "毫秒镜像(免费版)" + url: "https://quay.1ms.run/v2/" + tags: ["木雷坞", "CloudFlare"] + + - name: "毫秒镜像(付费版)" + url: "https://quay.1ms.run/v2/" + tags: ["木雷坞", "CDN", "需登陆", "高可用"] + + - name: "CNIX Internal" + url: "https://quay.m.ixdev.cn/v2/" + tags: ["国家(深圳·前海)新型互联网交换中心", "Nginx", "广东BGP"] + + - name: "轩辕镜像(专业版)" + url: "https://xxx-quay.xuanyuan.run/v2/" + tags: ["源码跳动", "白山云 CDN", "需登陆"] + + - name: "DockerProxy" + url: "https://quay.dockerproxy.net/v2/" + tags: ["DockerProxy", "Oracle CDN"] + + - name: "DaoCloud" + url: "https://quay.m.daocloud.io/v2/" + tags: ["DaoCloud", "阿里云", "限速"] + + # MCR 镜像源 + - id: "mcr" + name: "MCR" + description: "Microsoft Container Registry 镜像加速器" + official_url: "https://mcr.microsoft.com" + targets: + - name: "MCR" + url: "https://mcr.microsoft.com/v2/" + tags: ["官方", "Azure"] + + - name: "毫秒镜像(免费版)" + url: "https://mcr.1ms.run/v2/" + tags: ["木雷坞", "CloudFlare"] + + - name: "毫秒镜像(付费版)" + url: "https://mcr.1ms.run/v2/" + tags: ["木雷坞", "CDN", "需登陆", "高可用"] + + - name: "CNIX Internal" + url: "https://mcr.m.ixdev.cn/v2/" + tags: ["国家(深圳·前海)新型互联网交换中心", "Nginx", "广东BGP"] + + - name: "轩辕镜像(专业版)" + url: "https://xxx-mcr.xuanyuan.run/v2/" + tags: ["源码跳动", "白山云 CDN", "需登陆"] + + - name: "DockerProxy" + url: "https://mcr.dockerproxy.net/v2/" + tags: ["DockerProxy", "Oracle CDN"] + + - name: "DaoCloud" + url: "https://mcr.m.daocloud.io/v2/" + tags: ["DaoCloud", "阿里云", "限速"] + + # K8s 镜像源 + - id: "k8s" + name: "K8s" + description: "Kubernetes Registry 镜像加速器" + official_url: "https://registry.k8s.io" + targets: + - name: "K8s Registry" + url: "https://registry.k8s.io/v2/" + tags: ["官方", "Google Cloud"] + + - name: "毫秒镜像(免费版)" + url: "https://k8s.1ms.run/v2/" + tags: ["木雷坞", "CloudFlare"] + + - name: "毫秒镜像(付费版)" + url: "https://k8s.1ms.run/v2/" + tags: ["木雷坞", "CDN", "需登陆", "高可用"] + + - name: "CNIX Internal" + url: "https://k8s.m.ixdev.cn/v2/" + tags: ["国家(深圳·前海)新型互联网交换中心", "Nginx", "广东BGP"] + + - name: "轩辕镜像(专业版)" + url: "https://xxx-k8s.xuanyuan.run/v2/" + tags: ["源码跳动", "白山云 CDN", "需登陆"] + + - name: "DockerProxy" + url: "https://k8s.dockerproxy.net/v2/" + tags: ["DockerProxy", "Oracle CDN"] + + - name: "DaoCloud" + url: "https://k8s.m.daocloud.io/v2/" + tags: ["DaoCloud", "阿里云", "限速"] + + + # GCR 镜像源 + - id: "gcr" + name: "GCR" + description: "Google Container Registry 镜像加速器" + official_url: "https://gcr.io" + targets: + - name: "GCR" + url: "https://gcr.io/v2/" + tags: ["官方", "Google Cloud"] + + - name: "毫秒镜像(付费版)" + url: "https://gcr.1ms.run/v2/" + tags: ["木雷坞", "CDN", "需登陆", "高可用"] + + - name: "轩辕镜像(专业版)" + url: "https://xxx-gcr.xuanyuan.run/v2/" + tags: ["源码跳动", "白山云 CDN", "需登陆"] + + - name: "DockerProxy" + url: "https://gcr.dockerproxy.net/v2/" + tags: ["DockerProxy", "Oracle CDN"] + + - name: "DaoCloud" + url: "https://gcr.m.daocloud.io/v2/" + tags: ["DaoCloud", "阿里云", "限速"] + # Elastic 镜像源 + - id: "elastic" + name: "Elastic" + description: "Elastic Docker Registry 镜像加速器" + official_url: "https://docker.elastic.co" + targets: + - name: "Elastic" + url: "https://docker.elastic.co/v2/" + tags: ["官方", "Google Cloud"] + + - name: "毫秒镜像(免费版)" + url: "https://elastic.1ms.run/v2/" + tags: ["木雷坞", "CloudFlare"] + + - name: "毫秒镜像(付费版)" + url: "https://elastic.1ms.run/v2/" + tags: ["木雷坞", "CDN", "需登陆", "高可用"] + + - name: "CNIX Internal" + url: "https://elastic.m.ixdev.cn/v2/" + tags: ["国家(深圳·前海)新型互联网交换中心", "Nginx", "广东BGP"] + + - name: "轩辕镜像(专业版)" + url: "https://xxx-elastic.xuanyuan.run/v2/" + tags: ["源码跳动", "白山云 CDN", "需登陆"] + + - name: "DaoCloud" + url: "https://elastic.m.daocloud.io/v2/" + tags: ["DaoCloud", "阿里云", "限速"] + + # NVCR 镜像源 + - id: "nvcr" + name: "NVCR" + description: "NVIDIA Container Registry 镜像加速器" + official_url: "https://nvcr.io" + targets: + - name: "NVCR" + url: "https://nvcr.io/v2/" + tags: ["官方", "CloudFront"] + + - name: "毫秒镜像(免费版)" + url: "https://nvcr.1ms.run/v2/" + tags: ["木雷坞", "CloudFlare"] + + - name: "毫秒镜像(付费版)" + url: "https://nvcr.1ms.run/v2/" + tags: ["木雷坞", "CDN", "需登陆", "高可用"] + + - name: "CNIX Internal" + url: "https://nvcr.m.ixdev.cn/v2/" + tags: ["国家(深圳·前海)新型互联网交换中心", "Nginx", "广东BGP"] + + - name: "轩辕镜像(专业版)" + url: "https://xxx-nvcr.xuanyuan.run/v2/" + tags: ["源码跳动", "白山云 CDN", "需登陆"] + + - name: "DaoCloud" + url: "https://nvcr.m.daocloud.io/v2/" + tags: ["DaoCloud", "阿里云", "限速"] + diff --git a/apps/docker-mirror-monitor/latest/docker-compose.yml b/apps/docker-mirror-monitor/latest/docker-compose.yml new file mode 100644 index 00000000..eca07ef1 --- /dev/null +++ b/apps/docker-mirror-monitor/latest/docker-compose.yml @@ -0,0 +1,25 @@ +services: + docker-mirror-monitor: + image: "moelin/docker-mirror-monitor:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP_INTERNAL}" + volumes: + - ${DATA_PATH}:/app/data + environment: + - TZ=${TIME_ZONE} + healthcheck: + test: [ "CMD", "/app/docker-mirror-monitor", "healthcheck", "-config", "/app/data/config.yaml" ] + interval: 30s + timeout: 10s + retries: 3 + start_period: 5s + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/docker-mirror-monitor/latest/scripts/init.sh b/apps/docker-mirror-monitor/latest/scripts/init.sh new file mode 100644 index 00000000..4e811c86 --- /dev/null +++ b/apps/docker-mirror-monitor/latest/scripts/init.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +chown -R 1000:1000 data \ No newline at end of file diff --git a/apps/docker-mirror-monitor/logo.png b/apps/docker-mirror-monitor/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9cec3e62d1817bf3fe702d0d21ccdd15beb049a2 GIT binary patch literal 4768 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

!}0k@$uIak@e=yjlY=N3BnWaKW~gk*dW)%cD3KH zwneSf(5a7)G8=QG9&G%o^pIm^L|i@bbY{D?PdIy50b`l(y!p* u)zeQLhv-{v{-Yu3Xm({aFaH6