如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
一款全面的Web应用程序,用于从单一仪表板监控离网 mesh 网络(Meshtastic、MeshCore 和 MQTT)。基于 React、TypeScript 和 Node.js 构建,采用美观的 Catppuccin Mocha 深色主题,并支持多数据库(SQLite、PostgreSQL、MySQL)。
完整文档请访问 meshmonitor.org
MeshMonitor 支持多种部署方式:
🐳 Docker(推荐)- 预构建多架构镜像,支持自动升级
☸️ Kubernetes / Helm - 适用于生产集群的 Helm 图表
📦 Proxmox LXC - 适用于 Proxmox VE 的轻量级容器
🔧 手动部署 - 直接 Node.js 部署(裸机)
[!NOTE] SQLite 默认路径为
/data/meshmonitor.db(Docker 约定)。裸机安装必须将DATABASE_PATH设置为可写位置,或为运行时用户创建/data/目录。
MeshMonitor 支持通过反向代理头进行认证,可与 Cloudflare Access、oauth2-proxy、Authelia、Traefik ForwardAuth 及类似解决方案无缝集成单点登录(SSO)。
services:
meshmonitor:
image: ghcr.io/yeraze/meshmonitor:latest
environment:
# 启用代理认证
- PROXY_AUTH_ENABLED=true
- PROXY_AUTH_AUTO_PROVISION=true
# 管理员检测
- PROXY_AUTH_ADMIN_GROUPS=admins,mesh-admins
- PROXY_AUTH_ADMIN_EMAILS=admin@example.com
# 必需:信任反向代理
- TRUST_PROXY=1
# 可选:登出重定向
- PROXY_AUTH_LOGOUT_URL=https://auth.example.com/oauth2/sign_out
[!IMPORTANT] 代理认证要求:
- MeshMonitor 不可直接访问(使用 Docker 网络、防火墙规则或 ***)
TRUST_PROXY已配置为信任您的反向代理- 您的代理在转发请求前验证认证
从 v4.13 版本开始,TRUST_PROXY 默认值为 false;当 MeshMonitor 运行在任何反向代理之后时,您必须设置 TRUST_PROXY=1(或适当的跳数/子网),否则客户端 IP 解析、速率限制和审计日志都将显示代理的 IP。
[!IMPORTANT] 数据库模式中不强制电子邮件唯一性。如果多个用户共享相同的电子邮件地址,将使用第一个匹配项。确保您的代理为每个用户提供唯一的电子邮件地址。
# 核心设置
PROXY_AUTH_ENABLED=false # 启用代理认证(默认:false)
PROXY_AUTH_AUTO_PROVISION=false # 自动创建用户(默认:false)
# 管理员检测(建议至少配置一项)
PROXY_AUTH_ADMIN_GROUPS= # 逗号分隔的管理员组(不区分大小写匹配)
PROXY_AUTH_ADMIN_EMAILS= # 逗号分隔的管理员电子邮件(不区分大小写匹配)
# 普通用户组限制(可选,见下文)
PROXY_AUTH_NORMAL_USER_GROUPS= # 允许访问的逗号分隔组(为空则允许所有)
# JWT 配置(适用于 Cloudflare Access)
PROXY_AUTH_JWT_GROUPS_CLAIM=groups # 组声明路径(支持 Auth0 自定义命名空间)
# 自定义头(可选,适用于非标准代理)
PROXY_AUTH_HEADER_EMAIL= # 自定义电子邮件头名称
PROXY_AUTH_HEADER_GROUPS= # 自定义组头名称
# 登出
PROXY_AUTH_LOGOUT_URL= # 登出后的重定向 URL
# 审计日志
PROXY_AUTH_AUDIT_LOGGING=true # 记录认证事件(默认:true)
Cloudflare Access 应用 JWT 包含完整身份的子集——通常是 email、aud、iss、sub。自定义 OIDC 声明(例如 Auth0 角色声明)仅在 IdP 集成配置为包含它们时才会出现。如果 Cf-Access-Jwt-Assertion 头中缺少您的 PROXY_AUTH_JWT_GROUPS_CLAIM(例如 https://your-domain/roles),MeshMonitor 将看到空组,基于组的管理员权限将永远不会触发。
验证方法: 使用浏览器开发者工具中的 Cf-Access-Jwt-Assertion 头,在 jwt.io 解码真实请求的 JWT,确认组声明存在及其格式。Cloudflare 通常将 IdP 自定义声明放在 custom 对象下(例如 custom["https://your-domain/roles"]);官方示例可能显示更扁平的结构——您的解码令牌是您租户的实际依据。
备用方案: 将 PROXY_AUTH_ADMIN_EMAILS 设置为操作员电子邮件允许列表。MeshMonitor 不区分大小写地匹配电子邮件,因此即使应用 JWT 省略了自定义 IdP 声明,管理员功能仍然可用。
参见:https://developers.cloudflare.com/cloudflare-one/identity/authorization-cookie/application-token/
MeshMonitor 规范化 JWT 中的组声明,以处理不同的 IdP 格式:
["admin", "user"])——原样使用"admin")——包装为数组[{ "name": "admin" }, { "name": "user" }])——提取 .name 属性这可处理 Auth0 登录后操作中发出角色对象而非纯字符串的情况。所有组匹配(管理员组、普通用户组)均不区分大小写。
PROXY_AUTH_NORMAL_USER_GROUPS 在反向代理的 URL 级访问控制之上,添加了应用层组检查作为第二道限制。
双层模型:
配置后,仅允许组中包含此列表中至少一个值的用户(或管理员)访问。通过代理但缺少匹配组的用户将收到 403 FORBIDDEN_PROXY_GROUP 错误。
为空时(默认),允许所有代理认证用户访问——反向代理是唯一的限制。
/reports路径下的跨源分析工作区;首个报告为太阳能监测分析,支持太阳能节点自动检测、发电量叠加、健康水平参考线和多日电池预测模拟完整功能列表和技术详情,请访问 meshmonitor.org。
前端:
后端:
DevOps:
我们欢迎贡献!详情请参见我们的贡献指南,其中包括:
快速开始:
git checkout -b feature/amazing-feature)npm run test:run)feat: add amazing feature)本项目采用BSD-3-Clause许可证授权 - 详情参见LICENSE文件。
MeshMonitor - 优雅地监控您的 mesh 网络。🌐✨
本应用在https://claude.ai/code的帮助下开发。
来自真实用户的反馈,见证轩辕镜像的优质服务