Kerberos Agent 是一个独立且可扩展的视频(监控)管理代理,根据 MIT 许可证以开源形式提供。这意味着您或您的公司可以使用所有源代码,并且您可以使用、转换和分发源代码;只要您保留原始许可证的参考即可。Kerberos Agent 可用于商业用途(v2 不适用于此)。在此处阅读有关许可证的更多信息。
- 支持 RTSP H264 或 H265 编码流的 IP 摄像机,
- (或)USB 摄像头、Raspberry Pi 摄像头或其他摄像头,您可以将其转换为有效的 RTSP H264 或 H265 流。
- 任何可以运行二进制文件或容器的硬件(ARMv6、ARMv7、ARM64、AMD64),例如:Raspberry Pi、NVidia Jetson、Intel NUC、VM、裸机或成熟的 Kubernetes 集群。
市面上有各种各样的相机(USB、IP 和其他相机),要知道 Kerberos Agent 是否适用于您的相机可能令人望而生畏。因此,我们列出了社区认可的所有相机型号。欢迎将您的相机添加到列表中!
启动并运行 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 Cloud超级功能运行 Kerberos Agent 。通过无缝远程访问、无线更新、加密公共https
端点等监控您的 Kerberos Agent。查看我们在Balena Hubvideo-surveillance
上的应用程序,并创建您的第一个或一组 Kerberos Agent。
使用我们的Snapcraft 包运行 Kerberos Agent 。
snap install kerberosio
安装后,您可以在 找到您的 Kerberos 代理配置/var/snap/kerberosio/common
。按如下方式运行 Kerberos 代理
sudo kerberosio.agent -action=run -port=80
Kerberos 代理是一个独立且可扩展的视频(监控)管理代理,重点关注用户体验、可扩展性、弹性、扩展和集成。除了 Kerberos 代理之外,Kerberos.io 还提供许多其他工具,例如Kerberos Factory、Kerberos Vault和Kerberos 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 compose
ansible
terraform
kubernetes
- 云存储/持久性:Kerberos Hub、Kerberos Vault 和 Dropbox。(WIP:Minio、Storj、Google Drive、FTP 等)
- 输出:当发生特定事件(运动检测或开始录制)时触发集成(Webhooks、MQTT、脚本等)
- 通过 Swagger 访问 REST API 和文档(触发记录、更新配置等)。
- 我的许可证
如前所述,Kerberos 代理是一个容器,可以通过各种方式和自动化工具进行部署,例如docker
、等等。为了简化您的生活,我们提供了具体且可行的部署示例,以帮助您加快 Kerberos.io 之旅docker compose
。kubernetes
我们已在此存储库的deployments
目录中记录了不同的部署模型。您将在那里学习并找到如何使用以下方法进行部署:
默认情况下,您的 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
简化了自动化。ansible
terraform
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(也称为 AVC 或 MPEG-4 Part 10)
- 是最常见的并且对IP摄像机支持最广泛的一种。
- 支持大多数浏览器、操作系统和第三方应用程序。
- 可以嵌入商业和第三方应用程序。
- 不同级别的压缩(高、中、低……)
- 更好的质量/压缩比,在中等压缩比下显示的伪影更少。
- 是否支持 WebRTC 等技术
-
H265(也称为 HEVC)
- 虽然在“较新的” IP 摄像机上正在快速支持,但传统摄像机尚不支持。
- 由于许可原因,可能并不总是受支持。例如,Linux 发行版上的浏览器不支持。
- 嵌入商业产品时需要许可(小心)。
- 更高级别的压缩(比 H264 高 50%)。
- H265 在基于运动的环境中会显示伪影(H264 较少)。
- 以 H264 和 H265 录制相同的视频(分辨率、持续时间和 FPS)将导致文件大小大约相差 50%。
- 不支持 WebRTC 等技术
结论:根据使用情况,您可以选择其中一种,也可以同时使用两种。例如,您可以使用 H264(主流)进行直播,使用 H265(子流)进行录制。如果您希望在跨平台和跨浏览器环境中播放录制内容,您可以选择 H264 以获得更好的支持。
阻碍您为开源项目做出贡献的主要障碍之一是设置本地开发机器。为什么?因为您可能已经安装了一些用于其他项目的工具和库,而 Kerberos Agent 所需的库(例如 FFmpeg)可能需要不同的版本。欢迎来到依赖地狱。
通过利用 Kerberos Agent repo 支持的代码空间,您将能够在几分钟内设置所需的开发环境。通过打开<> Code
页面顶部的选项卡,您将能够使用 Kerberos Devcontainer基础映像创建代码空间。此映像需要所有相关依赖项:FFmpeg、OpenCV、Golang、Node、Yarn 等。
几分钟后,您将Visual Studio Code
在浏览器中看到漂亮的显示,然后您就可以开始编码了!
打开 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
, };
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
项目。
-
航站楼 A:
cd machinery/ go run main.go -action run -port 80
-
航站楼 B:
cd ui/ yarn start
一旦执行,将出现一个弹出窗口,其中提到portforwarding
。您应该看到两个端口被打开,一个用于用户界面3000
,一个用于机械80
。Right-click
在端口上80
并将可见性从更改为private
,public
这是避免CORS
错误所必需的。
如上所述,复制machinery
DNS 名称的主机名,并将其粘贴到文件中ui/src/config.json
。完成后,重新加载ui
浏览器中的页面,您应该能够使用默认凭据root
和访问登录页面root
。
Kerberos Agent 分为两部分:和machinery
。web
这两部分都位于此存储库的相应文件夹中。要进行开发或在本地计算机上运行应用程序,您必须同时运行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
。您可以根据自己的喜好更改端口。我们强烈支持使用Goland或Visual Studio Code,因为它内置了所有调试和 linting 功能。
在生产环境中运行 Kerberos Agent 仅需要运行一个二进制文件。尽管如此,我们有两个部分, 和machinery
,web
我们在构建时将它们合并。所以这就是发生的事情。
要构建 Kerberos Agent Web 应用程序,您只需运行 命令build
。yarn
这将在目录build
中创建一个目录web
,其中包含 React 应用程序的缩小版本。除此之外,我们还将此build
目录移动到machinery
目录中。
cd ui
yarn build
构建machinery
也非常简单🚀,通过使用,go build
您可以创建一个包含所有内容的二进制文件;感谢 Golang。构建后,您将得到一个名为的二进制文件main
,其中包含运行 Kerberos Agent 所需的一切。
记住该部分的构建步骤web
,在构建期间,我们将构建目录移动到machinery
目录。在machinery
Web 服务器内部,我们引用该 build
目录。这使得仅使用单个 Web 服务器即可运行所有操作成为可能。
cd machinery
go build
在这个存储库的根目录中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 存储库的后继者。技术和架构已发生转变。此版本仍在积极开发中,可在开发分支和项目概述中查看。
请参阅下面的常见问题解答以了解更多相关信息。
该项目的存在要感谢所有做出贡献的人。