2.9 KiB
Sense
Sense 是从项目冻结的 GoAdmin 后端与 go-admin-ui 前端源码独立派生的视频接入管理产品。后端保留 Cobra、Gin、GORM、Casbin、JWT 和迁移框架,前端保留 Vue、Router、Store、API、Layout、权限路由和通用管理组件。
工具链
- Go 1.26.5
- Node.js 22.22.1
- pnpm 9.15.1(建议通过
corepack pnpm@9.15.1调用) - PostgreSQL
完整上游来源见 LICENSES/SOURCES.md,版本事实来源为仓库根目录 goadmin-baseline.json。
本地验证入口
已使用 Windows 打包脚本生成 Sense\dist\sense-windows-amd64 后,可从 Sense 项目目录直接启动交付包:
start_sense.bat
start_sense.bat demo
该入口只负责定位并调用包内 start-sense.bat;生产配置、迁移和 MediaMTX 编排仍由交付包处理。交付包不存在时,入口会提示先运行 scripts\build\build-windows.bat,不会自动构建或启动开发服务。
后端:
cd Sense/server
go test ./...
go vet ./...
go build ./...
前端:
cd Sense/ui
corepack pnpm@9.15.1 install --frozen-lockfile
corepack pnpm@9.15.1 lint
corepack pnpm@9.15.1 test:unit
corepack pnpm@9.15.1 build:prod
安全配置
server/config/settings.yml 仅是无凭据模板。启动生产服务前,在仓库外复制该文件并填写 PostgreSQL 连接串和至少 32 个字符的随机 JWT 密钥,然后显式传入:
go run . server -c C:\secure-path\sense-settings.yml
设备台账本身可以在不配置摄像头凭据的情况下使用。创建或更新 ONVIF/RTSP 凭据前,还必须在启动进程环境中设置 SENSE_CREDENTIAL_KEY:该值是随机 32 字节密钥的 Base64 编码,仅保存在仓库外。变量名模板见 server/config/credential.env.example;不要把真实值写入配置、脚本、日志或工单。密钥缺失或格式不正确时,Sense 会拒绝凭据写入,不会降级为明文存储。
使用 ONVIF 发现或手工接入前,还必须设置 SENSE_ONVIF_DISCOVERY_IP 和 SENSE_ONVIF_ALLOWED_CIDRS。前者只能是获准用于 WS-Discovery 的本机网卡地址;后者是获准访问的摄像头网段(多个 CIDR 用逗号分隔)。未配置时系统会给出可行动提示且不会扫描任意网卡;手工地址、Media XAddr 和 Stream URI 同样受该网段限制,并拒绝重定向或 URL 内凭据。
MediaMTX 保持独立二进制。配置 SENSE_MEDIAMTX_BINARY、SENSE_MEDIAMTX_CONFIG 和只允许回环地址的 SENSE_MEDIAMTX_API。Sense 只生成无摄像头凭据的基础配置;路径和凭据在运行时通过回环 Control API 下发。模板见 server/config/mediamtx/mediamtx.yml.example。
仓库不提供默认账号、默认密码或可用密钥。首位管理员通过受仓库外 SENSE_BOOTSTRAP_TOKEN 保护的一次性初始化接口创建,详细步骤以项目 Wiki 的本地开发与验证页为准。