Skip to content

一个开放且可扩展的视频监控系统,适合任何人,使这个世界变得更加美好、更加和平

License

Notifications You must be signed in to change notification settings

yuanzhongqiao/agent

 
 

Repository files navigation

Kerberos 代理

Kerberos 代理 Kerberos 代理

包开发工具 覆盖状态 覆盖状态

许可证:麻省理工学院 捐 Twitter 小工具 Discord 盾 凯尔贝罗西奥

Docker Hub |文档|网站|查看演示

Kerberos Agent 是一个独立且可扩展的视频(监控)管理代理,根据 MIT 许可证以开源形式提供。这意味着您或您的公司可以使用所有源代码,并且您可以使用、转换和分发源代码;只要您保留原始许可证的参考即可。Kerberos Agent 可用于商业用途(v2 不适用于此)。在此处阅读有关许可证的更多信息。

Kerberos 代理通过 UI

🤔 先决条件

  • 支持 RTSP H264 或 H265 编码流的 IP 摄像机,
  • 任何可以运行二进制文件或容器的硬件(ARMv6、ARMv7、ARM64、AMD64),例如:Raspberry Pi、NVidia Jetson、Intel NUC、VM、裸机或成熟的 Kubernetes 集群。

📹 我的相机能用吗?

市面上有各种各样的相机(USB、IP 和其他相机),要知道 Kerberos Agent 是否适用于您的相机可能令人望而生畏。因此,我们列出了社区认可的所有相机型号。欢迎将您的相机添加到列表中!

📚 概述

立即启动并运行

  1. 快速入门 - Docker
  2. 快速入门 - Balena
  3. 快速入门 - Snap

介绍

  1. Kerberos 代理的世界

运行与自动化

  1. 如何运行和部署 Kerberos 代理
  2. 访问 Kerberos 代理
  3. 配置并保留卷挂载
  4. 使用环境变量进行配置

洞察

  1. 加密
  2. H264 与 H265

贡献

  1. 通过 Codespaces 做出贡献
  2. 开发和建设
  3. 从源代码构建
  4. 为 Docker 构建

各不相同

  1. 支持我们的项目
  2. 有什么新鲜事?
  3. 贡献者

快速入门 - Docker

启动并运行 Kerberos 代理的最简单方法是使用Docker hub上的公共映像。选择特定标签后,运行以下docker命令,它将在端口上打开 Kerberos 代理的 Web 界面80,然后您就可以开始了。有关更易于配置和持久的部署,请查看运行和自动化 Kerberos 代理

docker run -p 80:80 --name mycamera -d --restart=always kerberos/agent:latest

如果您想连接到 USB 或 Raspberry Pi 相机,则需要运行我们的 Sidecar 容器,该容器将相机代理到 RTSP 流。在这种情况下,您需要配置 Kerberos Agent 容器以在主机网络中运行,以便它可以直接连接到 RTSP Sidecar。

docker run --network=host --name mycamera -d --restart=always kerberos/agent:latest

快速入门 - Balena

使用Balena Cloud超级功能运行 Kerberos Agent 。通过无缝远程访问、无线更新、加密公共https端点等监控您的 Kerberos Agent。查看我们在Balena Hubvideo-surveillance上的应用程序,并创建您的第一个或一组 Kerberos Agent。

使用 balena 进行部署

快速入门 - Snap

使用我们的Snapcraft 包运行 Kerberos Agent 。

 snap install kerberosio

安装后,您可以在 找到您的 Kerberos 代理配置/var/snap/kerberosio/common。按如下方式运行 Kerberos 代理

sudo kerberosio.agent -action=run -port=80

Kerberos 代理的世界

Kerberos 代理是一个独立且可扩展的视频(监控)管理代理,重点关注用户体验、可扩展性、弹性、扩展和集成。除了 Kerberos 代理之外,Kerberos.io 还提供许多其他工具,例如Kerberos FactoryKerberos VaultKerberos Hub,以提供更多功能:自带云、自带存储、中央概览、实时流媒体、机器学习等。

如上所述,Kerberos.io 应用了代理的概念。代理在您的摄像机旁边(或上面)运行,并处理单个摄像机馈送。它应用基于运动或连续的录制,并通过用户友好的 Web 界面提供这些录制。Kerberos 代理允许您连接到其他云服务或与自定义应用程序集成。Kerberos 代理用于个人用途,并可扩展到企业生产级部署。

此存储库包含您需要了解的有关我们的核心产品 Kerberos Agent 的所有信息。下面是特性和功能的简要列表。

  • 内存和 CPU 使用率低。
  • 简化和现代的用户界面。
  • 多架构(ARMv6、ARMv7、ARM64、AMD64)
  • 多流,例如以 H265 录制、以 H264 进行直播和运动检测。
  • 多摄像头支持:IP 摄像头(H264 和 H265)、USB 摄像头和通过 RTSP 代理的Raspberry Pi 摄像头。
  • 每个实例单个摄像机(例如每个摄像机一个容器)。
  • 通过 MQTT 进行低分辨率流式传输,通过 WebRTC 进行高分辨率流式传输(仅支持 H264/PCM)。
  • 从 Kerberos Hub 到 IP 摄像头的反向通道音频(需要 PCM ULAW 编解码器)
  • MP4 容器中录制音频(AAC)和视频(H264/H265)。
  • 使用 RSA 和 AES 通过 MQTT 进行端到端加密(直播、ONVIF、远程配置等)
  • 条件录像:离线模式、运动区域、时间表、连续录像、webhook条件等。
  • 运动检测的后期录制和预先录制。
  • 使用 AES-256-CBC 进行静态加密。
  • 能够创建碎片录音,并通过 HLS fMP4 进行流式传输。
  • 使用您使用的工具部署到您想要的位置docker,,,,,,等等。docker composeansibleterraformkubernetes
  • 云存储/持久性:Kerberos Hub、Kerberos Vault 和 Dropbox。(WIP:Minio、Storj、Google Drive、FTP 等)
  • 输出:当发生特定事件(运动检测或开始录制)时触发集成(Webhooks、MQTT、脚本等)
  • 通过 Swagger 访问 REST API 和文档(触发记录、更新配置等)。
  • 我的许可证

如何运行和部署 Kerberos 代理

如前所述,Kerberos 代理是一个容器,可以通过各种方式和自动化工具进行部署,例如docker、等等。为了简化您的生活,我们提供了具体且可行的部署示例,以帮助您加快 Kerberos.io 之旅docker composekubernetes

我们已在此存储库的deployments目录中记录了不同的部署模型。您将在那里学习并找到如何使用以下方法进行部署:

默认情况下,您的 Kerberos 代理会将其所有配置和记录存储在容器内。为了帮助您实现自动化并实现更一致的数据治理,您可以附加卷来配置和保存 Kerberos 代理的数据,和/或通过环境变量配置每个 Kerberos 代理。

访问 Kerberos 代理

使用上述部署模型之一部署 Kerberos 代理后,您将能够访问 Kerberos 代理用户界面。系统会显示一个登录页面,要求输入一些凭据。

Kerberos 代理的默认用户名和密码是:

  • 用户名:root
  • 密码:root

请注意,您更改了最终安装的用户名和密码,请参阅下面的使用环境变量进行配置

配置并保留卷挂载

下面显示了如何使用挂载主机目录的示例docker,但适用于上面描述的所有部署模型和工具

您可以使用该选项将卷附加到容器-v。要挂载您自己的配置文件和录音文件夹,请执行以下操作:

docker run -p 80:80 --name mycamera \
-v $(pwd)/agent/config:/home/agent/data/config \
-v $(pwd)/agent/recordings:/home/agent/data/recordings \
-d --restart=always kerberos/agent:latest

在每个部署和自动化工具的部署部分中可以找到更多示例。请注意验证您正在附加的目录/卷的权限。更多信息请参阅本期

chmod -R 755 kerberos-agent/
chown 100:101 kerberos-agent/ -R

使用环境变量进行配置

除了附加配置文件之外,还可以使用环境变量覆盖配置。这可以使部署在利用docker compose或部署时更加容易和可扩展。使用这种方法,我们通过和kubernetes简化了自动化。ansibleterraform

docker run -p 80:80 --name mycamera \
-e AGENT_NAME=mycamera \
-e AGENT_TIMEZONE=Europe/Brussels \
-e AGENT_CAPTURE_IPCAMERA_RTSP=rtsp://fake.kerberos.io/stream \
-e AGENT_CAPTURE_CONTINUOUS=true \
-d --restart=always kerberos/agent:latest
姓名 描述 默认值
LOG_LEVEL 日志记录的级别可以是“信息”、“警告”、“调试”、“错误”或“致命”。 “信息”
LOG_OUTPUT 日志输出格式“json”或“text”。 “文本”
AGENT_MODE 您可以选择在“发布”模式下运行以进行生产,或以“演示”模式下运行以进行展示。 “发布”
AGENT_TLS_INSECURE 指定是否要用于InsecureSkipVerify内部 HTTP 客户端。 “错误的”
AGENT_USERNAME 用于根据 Kerberos 代理登录页面进行身份验证的用户名。 “根”
AGENT_PASSWORD 用于针对 Kerberos 代理登录页面进行身份验证的密码。 “根”
AGENT_KEY 您的 Kerberos 代理的唯一标识符,这是自动生成的,但可以被覆盖。 “”
AGENT_NAME 代理的友好名称。 “代理人”
AGENT_TIMEZONE 用于转换时间的时区。 “非洲/休达”
AGENT_REMOVE_AFTER_UPLOAD 启用后,成功上传到存储的录音将从磁盘中删除。 “真的”
AGENT_OFFLINE 确保没有建立外部连接。 “错误的”
AGENT_AUTO_CLEAN 清理录音目录。 “真的”
AGENT_AUTO_CLEAN_MAX_SIZE 如果AUTO_CLEAN启用,请设置录音目录的最大大小(MB)。 “100”
AGENT_TIME 启用 Kerberos 代理的时间表 “错误的”
AGENT_TIMETABLE 一个(每周)时间表,指定何时进行录音“start1,end1,start2,end2;start1.. “”
AGENT_REGION_POLYGON 用于运动检测的单个多边形集:“x1,y1;x2,y2;x3,y3;... “”
AGENT_CAPTURE_IPCAMERA_RTSP 全高清 RTSP 端点到您所针对的摄像机。 “”
AGENT_CAPTURE_IPCAMERA_SUB_RTSP 用于直播(WebRTC)的子流 RTSP 端点。 “”
AGENT_CAPTURE_IPCAMERA_ONVIF 标记为兼容 ONVIF 设备。 “”
AGENT_CAPTURE_IPCAMERA_ONVIF_XADDR 摄像机上运行的 ONVIF 端点/地址。 “”
AGENT_CAPTURE_IPCAMERA_ONVIF_USERNAME 用于验证的 ONVIF 用户名。 “”
AGENT_CAPTURE_IPCAMERA_ONVIF_PASSWORD 用于验证的 ONVIF 密码。 “”
AGENT_CAPTURE_MOTION 启用或禁用运动的切换按钮。 “真的”
AGENT_CAPTURE_LIVEVIEW 启用或禁用实时取景的切换。 “真的”
AGENT_CAPTURE_SNAPSHOTS 启用或禁用快照生成的切换。 “真的”
AGENT_CAPTURE_RECORDING 开启录音功能。 “真的”
AGENT_CAPTURE_CONTINUOUS 切换启用连续“真”或运动“假”。 “错误的”
AGENT_CAPTURE_PRERECORDING 如果CONTINUOUS设置为false,请指定运动事件前后的录制时间(秒)。 “10”
AGENT_CAPTURE_POSTRECORDING 如果CONTINUOUS设置为false,请指定运动事件后的记录时间(秒)。 “20”
AGENT_CAPTURE_MAXLENGTH 单次录音的最大长度(秒)。 “30”
AGENT_CAPTURE_PIXEL_CHANGE 如果CONTINUOUS设置为false,则运动触发前需要改变的像素数。 “150”
AGENT_CAPTURE_FRAGMENTED 将录制的MP4格式设置为分片(适合HLS)。 “错误的”
AGENT_CAPTURE_FRAGMENTED_DURATION 如果AGENT_CAPTURE_FRAGMENTED设置为true,则定义片段的持续时间(秒)。 “8”
AGENT_MQTT_URI 用于双向通信(实时查看、onvif 等)的 MQTT 代理端点 “tcp://mqtt.kerberos.io:1883”
AGENT_MQTT_USERNAME MQTT 代理的用户名。 “”
AGENT_MQTT_PASSWORD MQTT 代理的密码。 “”
AGENT_STUN_URI 使用 WebRTC 时,您需要提供 STUN 服务器。 “眩晕:turn.kerberos.io:8443”
AGENT_FORCE_TURN 通过仅生成中继候选,强制使用 TURN 服务器。 “错误的”
AGENT_TURN_URI 使用 WebRTC 时,您需要提供 TURN 服务器。 “turn:turn.kerberos.io:8443”
AGENT_TURN_USERNAME 用于 WebRTC 的 TURN 用户名。 “用户名1”
AGENT_TURN_PASSWORD 用于 WebRTC 的 TURN 密码。 “密码1”
AGENT_CLOUD 将录音存储在 Kerberos Hub (s3)、Kerberos Vault (kstorage) 或 Dropbox (dropbox) 中。 “s3”
AGENT_HUB_ENCRYPTION 打开/关闭从 Kerberos 代理到 Kerberos 中心的流量加密。 “真的”
AGENT_HUB_URI Kerberos Hub API 默认为我们的 Kerberos Hub SAAS。 https://api.hub.domain.com
AGENT_HUB_KEY 链接到您的 Kerberos Hub 帐户的访问密钥。 “”
AGENT_HUB_PRIVATE_KEY 链接到 Kerberos Hub 中的您的帐户的秘密访问密钥。 “”
AGENT_HUB_REGION 您要上传到的 Kerberos Hub 区域。 “”
AGENT_HUB_SITE 您在 Kerberos Hub 帐户中创建的站点的站点 ID。 “”
AGENT_KERBEROSVAULT_URI Kerberos Vault API URL。 https://vault.domain.com/api
AGENT_KERBEROSVAULT_ACCESS_KEY Kerberos Vault 帐户的访问密钥。 “”
AGENT_KERBEROSVAULT_SECRET_KEY Kerberos Vault 帐户的密钥。 “”
AGENT_KERBEROSVAULT_PROVIDER 您创建的 Kerberos Vault 提供程序(可选)。 “”
AGENT_KERBEROSVAULT_DIRECTORY 提供商中存储录音的目录。 “”
AGENT_DROPBOX_ACCESS_TOKEN 来自您的 Dropbox 应用程序的访问令牌,用于利用 Dropbox SDK。 “”
AGENT_DROPBOX_DIRECTORY 提供商中存储录音的目录。 “”
AGENT_ENCRYPTION 为 MQTT 消息启用“true”或禁用“false”端到端加密。 “错误的”
AGENT_ENCRYPTION_RECORDINGS 对录音启用“true”或禁用“false”端到端加密。 “错误的”
AGENT_ENCRYPTION_FINGERPRINT 密钥对(公钥/私钥)的指纹,以便您知道使用哪一个。 “”
AGENT_ENCRYPTION_PRIVATE_KEY 用于解密和签署通过 MQTT 发送的请求的私钥(非对称/RSA)。 “”
AGENT_ENCRYPTION_SYMMETRIC_KEY 用于加密和解密通过 MQTT 发送的请求的对称密钥(AES)。 “”

加密

您可以通过启用加密设置,使用自己的 AES 和 RSA 密钥加密您的录音和传出的 MQTT 消息。启用后,您的所有录音都将使用 AES-256-CBC 和您的对称密钥加密。您可以使用默认openssl工具链使用您的 AES 密钥解密录音,如下所示:

openssl aes-256-cbc -d -md md5 -in encrypted.mp4 -out decrypted.mp4 -k your-key-96ab185xxxxxxxcxxxxxxxx6a59c62e8

另外,您还可以使用 Kerberos Agent 二进制文件解密录音文件夹,如下所示:

go run main.go -action decrypt ./data/recordings your-key-96ab185xxxxxxxcxxxxxxxx6a59c62e8

或者对于单个文件:

go run main.go -action decrypt ./data/recordings/video.mp4 your-key-96ab185xxxxxxxcxxxxxxxx6a59c62e8

H264 与 H265

如果我们谈论视频编码器和解码器(编解码器),市场上有两种主要的视频编解码器:H264 和 H265。考虑到您的用例,您可能会使用其中一种而不是另一种。我们将提供(不完整的)概述,介绍视频监控和视频分析领域中每种编解码器的优缺点。如果您想了解更多信息,您应该在互联网上寻找其他资源(或者如果您喜欢阅读实体内容,现在仍然存在书籍)。

  • H264(也称为 AVC 或 MPEG-4 Part 10)

    • 是最常见的并且对IP摄像机支持最广泛的一种。
    • 支持大多数浏览器、操作系统和第三方应用程序。
    • 可以嵌入商业和第三方应用程序。
    • 不同级别的压缩(高、中、低……)
    • 更好的质量/压缩比,在中等压缩比下显示的伪影更少。
    • 是否支持 WebRTC 等技术
  • H265(也称为 HEVC)

    • 虽然在“较新的” IP 摄像机上正在快速支持,但传统摄像机尚不支持。
    • 由于许可原因,可能并不总是受支持。例如,Linux 发行版上的浏览器不支持。
    • 嵌入商业产品时需要许可(小心)。
    • 更高级别的压缩(比 H264 高 50%)。
    • H265 在基于运动的环境中会显示伪影(H264 较少)。
    • 以 H264 和 H265 录制相同的视频(分辨率、持续时间和 FPS)将导致文件大小大约相差 50%。
    • 不支持 WebRTC 等技术

结论:根据使用情况,您可以选择其中一种,也可以同时使用两种。例如,您可以使用 H264(主流)进行直播,使用 H265(子流)进行录制。如果您希望在跨平台和跨浏览器环境中播放录制内容,您可以选择 H264 以获得更好的支持。

通过 Codespaces 做出贡献

阻碍您为开源项目做出贡献的主要障碍之一是设置本地开发机器。为什么?因为您可能已经安装了一些用于其他项目的工具和库,而 Kerberos Agent 所需的库(例如 FFmpeg)可能需要不同的版本。欢迎来到依赖地狱。

通过利用 Kerberos Agent repo 支持的代码空间,您将能够在几分钟内设置所需的开发环境。通过打开<> Code页面顶部的选项卡,您将能够使用 Kerberos Devcontainer基础映像创建代码空间。此映像需要所有相关依赖项:FFmpeg、OpenCV、Golang、Node、Yarn 等。

Kerberos 代理代码空间

几分钟后,您将Visual Studio Code在浏览器中看到漂亮的显示,然后您就可以开始编码了!

Kerberos 代理 VSCode

打开 GitHub Codespace 后,将安装一些依赖项。完成后,继续执行文件ui/src/config.json,并取消注释以下部分。确保将externalHost变量替换为您将在下一步中检索的 DNS 名称。

// Uncomment this when using codespaces or other special DNS names (which you can't control)
// replace this with the DNS name of the kerberos agent server (the codespace url)
const externalHost = 'cedricve-automatic-computing-machine-v647rxvj4whx9qp-80.preview.app.github.dev';

const dev = { ENV: 'dev', HOSTNAME: externalHost, //API_URL: ${protocol}//${hostname}:80/api, //URL: ${protocol}//${hostname}:80, //WS_URL: ${websocketprotocol}//${hostname}:80/ws,

// Uncomment, and comment the above lines, when using codespaces or other special DNS names (which you can't control) API_URL: ${protocol}//${externalHost}/api, URL: ${protocol}//${externalHost}, WS_URL: ${websocketprotocol}//${externalHost}/ws, };

<clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 tooltipped-no-delay d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w" value="// Uncomment this when using codespaces or other special DNS names (which you can't control) // replace this with the DNS name of the kerberos agent server (the codespace url) const externalHost = 'cedricve-automatic-computing-machine-v647rxvj4whx9qp-80.preview.app.github.dev';

const dev = { ENV: 'dev', HOSTNAME: externalHost, //API_URL: ${protocol}//${hostname}:80/api, //URL: ${protocol}//${hostname}:80, //WS_URL: ${websocketprotocol}//${hostname}:80/ws,

// Uncomment, and comment the above lines, when using codespaces or other special DNS names (which you can't control) API_URL: ${protocol}//${externalHost}/api, URL: ${protocol}//${externalHost}, WS_URL: ${websocketprotocol}//${externalHost}/ws, };" tabindex="0" role="button">

去打开两个终端,一个用于ui项目,一个用于machinery项目。

  1. 航站楼 A:

    cd machinery/
    go run main.go -action run -port 80
    
  2. 航站楼 B:

    cd ui/
    yarn start
    

一旦执行,将出现一个弹出窗口,其中提到portforwarding。您应该看到两个端口被打开,一个用于用户界面3000,一个用于机械80Right-click在端口上80并将可见性从更改为privatepublic这是避免CORS错误所必需的。

Codespace 公开

如上所述,复制machineryDNS 名称的主机名,并将其粘贴到文件中ui/src/config.json。完成后,重新加载ui浏览器中的页面,您应该能够使用默认凭据root和访问登录页面root

开发和建设

Kerberos Agent 分为两部分:和machineryweb这两部分都位于此存储库的相应文件夹中。要进行开发或在本地计算机上运行应用程序,您必须同时运行machinery和,web如下所述。在生产中运行时,所有内容都仅作为一个工件交付,有关更多信息,请参阅为生产构建

用户界面

web一个React项目,它是最终用户查看录音、直播和修改配置的主要入口点machinery

git clone https://github.com/kerberos-io/agent
cd ui
yarn start

这将启动一个网络服务器并在端口上启动网络应用程序3000

登录代理

    <span data-target="animated-image.imageContainer">
        <img data-target="animated-image.replacedImage" alt="login-agent" class="AnimatedImagePlayer-animatedImage" src="https://github.com/kerberos-io/agent/raw/master/assets/img/agent-login.gif" style="display: block; opacity: 1;">
      <canvas class="AnimatedImagePlayer-stillImage" aria-hidden="true" width="814" height="588"></canvas></span></a>
    <button data-target="animated-image.imageButton" class="AnimatedImagePlayer-images" tabindex="-1" aria-label="Play login-agent" hidden=""></button>
    <span class="AnimatedImagePlayer-controls" data-target="animated-image.controls" hidden="">
      <button data-target="animated-image.playButton" class="AnimatedImagePlayer-button" aria-label="Play login-agent">
        <svg aria-hidden="true" focusable="false" class="octicon icon-play" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
          <path d="M4 13.5427V2.45734C4 1.82607 4.69692 1.4435 5.2295 1.78241L13.9394 7.32507C14.4334 7.63943 14.4334 8.36057 13.9394 8.67493L5.2295 14.2176C4.69692 14.5565 4 14.1739 4 13.5427Z">
        </path></svg>
        <svg aria-hidden="true" focusable="false" class="octicon icon-pause" width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
          <rect x="4" y="2" width="3" height="12" rx="1"></rect>
          <rect x="9" y="2" width="3" height="12" rx="1"></rect>
        </svg>
      </button>
      <a data-target="animated-image.openButton" aria-label="Open login-agent in new window" class="AnimatedImagePlayer-button" href="https://github.com/kerberos-io/agent/blob/master/assets/img/agent-login.gif" target="_blank">
        <svg aria-hidden="true" class="octicon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">
          <path fill-rule="evenodd" d="M10.604 1h4.146a.25.25 0 01.25.25v4.146a.25.25 0 01-.427.177L13.03 4.03 9.28 7.78a.75.75 0 01-1.06-1.06l3.75-3.75-1.543-1.543A.25.25 0 0110.604 1zM3.75 2A1.75 1.75 0 002 3.75v8.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 12.25v-3.5a.75.75 0 00-1.5 0v3.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-8.5a.25.25 0 01.25-.25h3.5a.75.75 0 000-1.5h-3.5z"></path>
        </svg>
      </a>
    </span>
  </span></animated-image></p>

登录后,您将看到仪表板页面显示出来。成功配置代理后,您将看到实时视图和记录到磁盘的可能事件。

仪表板代理

机械

machinery是一个Golang项目,提供两种功能:一方面,它充当 Kerberos 代理,负责处理相机处理和其他类型的逻辑,另一方面,它充当 Web 服务器 (Rest API),允许从 Web (React) 或任何其他自定义应用程序进行通信。API 的文档使用swagger

您可以简单地machinery使用以下命令运行。

git clone https://github.com/kerberos-io/agent
cd machinery
go run main.go -action run -port 80

这将启动 Kerberos 代理并在端口上运行 Web 服务器80。您可以根据自己的喜好更改端口。我们强烈支持使用GolandVisual Studio Code,因为它内置了所有调试和 linting 功能。

VSCode 桌面

从源代码构建

在生产环境中运行 Kerberos Agent 仅需要运行一个二进制文件。尽管如此,我们有两个部分, 和machineryweb我们在构建时将它们合并。所以这就是发生的事情。

用户界面

要构建 Kerberos Agent Web 应用程序,您只需运行 命令buildyarn这将在目录build中创建一个目录web,其中包含 React 应用程序的缩小版本。除此之外,我们还将build目录移动到machinery目录中。

cd ui
yarn build

机械

构建machinery也非常简单🚀,通过使用,go build您可以创建一个包含所有内容的二进制文件;感谢 Golang。构建后,您将得到一个名为的二进制文件main,其中包含运行 Kerberos Agent 所需的一切。

记住该部分的构建步骤web,在构建期间,我们将构建目录移动到machinery目录。在machineryWeb 服务器内部,我们引用该 build目录。这使得仅使用单个 Web 服务器即可运行所有操作成为可能。

cd machinery
go build

为 Docker 构建

在这个存储库的根目录中agent,您将找到一个。此文件包含构建和运送Kerberos Agent 的Dockerfile说明。需要注意的是,从预构建的基础映像开始。此基础映像已包含一些工具,例如 Golang、FFmpeg 和 OpenCV。我们这样做是为了缩短编译时间。kerberos/base:xxx

通过运行该docker build命令,您将创建 Kerberos Agent Docker 映像。构建后,您可以简单地将映像作为 Docker 容器运行。

docker build -t kerberos/agent .

有什么新鲜事?

此存储库包含下一代 Kerberos.io、Kerberos Agent (v3),是 machines 和 web 存储库的后继者。技术和架构已发生转变。此版本仍在积极开发中,可在开发分支项目概述中查看。

请参阅下面的常见问题解答以了解更多相关信息。

开源到代理

贡献者

该项目的存在要感谢所有做出贡献的人。

About

一个开放且可扩展的视频监控系统,适合任何人,使这个世界变得更加美好、更加和平

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 89.8%
  • JavaScript 9.0%
  • SCSS 0.8%
  • Dockerfile 0.2%
  • HTML 0.1%
  • HCL 0.1%