Moonfire NVR 项目从源码构建指南

Moonfire NVR 项目从源码构建指南

【免费下载链接】moonfire-nvr Moonfire NVR, a security camera network video recorder 【免费下载链接】moonfire-nvr 项目地址: https://gitcode.com/gh_mirrors/mo/moonfire-nvr

前言

Moonfire NVR 是一款开源的网络视频录像机软件,专为 IP 摄像头设计。本文将为开发者详细介绍如何从源代码构建 Moonfire NVR 系统。与直接安装预编译二进制文件不同,从源码构建可以让开发者更灵活地定制和调试系统。

准备工作

获取源代码

首先需要获取 Moonfire NVR 的最新源代码。建议使用 git 工具克隆代码仓库:

git clone 代码仓库地址
cd moonfire-nvr

系统要求

Moonfire NVR 可以在任何类 Unix 系统上运行,包括:

  • Linux 发行版(如 Ubuntu、Raspbian)
  • macOS
  • FreeBSD
  • Windows Subsystem for Linux (WSL)

依赖安装

服务器端依赖

构建服务器需要以下组件:

  1. SQLite3 数据库(除非使用 --features=rusqlite/bundled 参数)
  2. Rust 工具链(1.82+ 版本)
  3. Cargo 包管理器
Linux 系统安装

在 Ubuntu 或 Raspbian 上,可以执行以下命令安装基础依赖:

sudo apt-get install \
    build-essential \
    libsqlite3-dev \
    pkgconf \
    sqlite3 \
    tzdata
macOS 系统安装

使用 Homebrew 安装依赖:

brew install node

用户界面依赖

构建 UI 需要 Node.js 运行时环境,建议使用 LTS 版本(当前支持 v18、v20 或 v21)。

注意:Ubuntu 20.04 LTS 自带的 Node.js 10 已过时,需要手动安装新版 Node.js。

构建过程

服务器构建

  1. 进入服务器目录:
cd server
  1. 运行测试:
cargo test
  1. 构建发布版本:
cargo build --release
  1. 安装二进制文件:
sudo install -m 755 target/release/moonfire-nvr /usr/local/bin

用户界面构建

  1. 进入 UI 目录:
cd ui
  1. 安装依赖:
pnpm install
  1. 构建 UI:
pnpm run build
  1. 部署 UI 文件:
sudo mkdir -p /usr/local/lib/moonfire-nvr
sudo rsync --recursive --delete --chmod=D755,F644 ui/dist/ /usr/local/lib/moonfire-nvr/ui

高级构建选项

如果需要将 UI 打包进二进制文件,可以在构建服务器时添加 --features=bundled-ui 参数。还可以参考发布工作流,构建静态链接 SQLite 和 musl libc 的无依赖二进制文件。

开发环境配置

为了方便开发,可以设置以下符号链接:

sudo mkdir /usr/local/lib/moonfire-nvr
sudo ln -s `pwd`/ui/dist /usr/local/lib/moonfire-nvr/ui
sudo mkdir /var/lib/moonfire-nvr
sudo chown $USER: /var/lib/moonfire-nvr
ln -s `pwd`/server/target/release/moonfire-nvr $HOME/bin/moonfire-nvr
ln -s moonfire-nvr $HOME/bin/nvr

然后就可以直接使用 nvr 命令运行开发版本:

nvr init
nvr config
nvr run

发布流程

Moonfire NVR 的发布流程目前较为手动化:

  1. 确保当前提交已推送到主分支且 CI 测试通过
  2. 更新版本号:
    • 修改 server/Cargo.toml 中的版本号
    • 运行 cargo test --workspace 更新 Cargo.lock
    • 更新 README.mdCHANGELOG.md 中的版本引用
  3. 执行发布命令:
VERSION=x.y.z
git commit -am "prepare version ${VERSION}"
git tag -a "v${VERSION}" -m "version ${VERSION}"
git push origin "v${VERSION}"

推送标签后,自动化工作流会创建发布版本,为多个平台交叉编译静态链接的二进制文件,并上传到发布页面。

结语

通过本文的指导,开发者应该能够成功构建 Moonfire NVR 系统。如果在构建过程中遇到问题,建议查阅相关文档或寻求社区帮助。从源码构建不仅能让你更深入地理解系统工作原理,也为定制化开发奠定了基础。

【免费下载链接】moonfire-nvr Moonfire NVR, a security camera network video recorder 【免费下载链接】moonfire-nvr 项目地址: https://gitcode.com/gh_mirrors/mo/moonfire-nvr

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值