openBalena是一款专业的连接设备部署管理平台。服务器创建管理必备软件openBalena。该设备运行balenaOS(旨在在IoT设备上运行容器的主机操作系统),并通过balena CLI进行管理。用户可以使用balena CLI配置应用程序容器,推送更新,检查状态,查看日志等。 OpenBalena后端服务由久经考验的组件组成,这些组件已经在balenaCloud的生产环境中运行了很多年。它们可以安全可靠地存储设备信息,并且可以通过内置的VPN服务进行远程管理,并且可以有效地将容器映像分发到您的设备。在此程序的帮助下,开发人员可以自行管理大量设备。释放openBalena的主要动机之一是减轻对锁定的恐惧,并消除退出(进入)的障碍。为了使用户能够解决问题并自行添加功能,系统将继续与balenaCloud同步开发openBalena,大部分开发过程都是在开放环境中进行的,以便用户可以共同改进开源项目和托管服务;需要它的用户可以下载体验
新的功能:
可扩展:部署和管理一百万个设备。
强大的API和SDK:扩展openBalena以满足您的需求
轻松更新:使用单个命令即可远程更新设备上的软件
基于容器:受益于针对边缘进行了优化的虚拟化功能。
内置VPN:无论设备的网络环境如何,您都可以访问它们
配置简单:向您的机队添加设备非常容易。
使用说明:
在VPS上设置您自己的openBalena实例
为此,我们将设置裸机Ubuntu 18.04 x64服务器。
安装依赖
在设置balena环境之前,首先,我们需要安装一些工具并确保我们的机器是最新的。
登录到新服务器:
$ ssh root @您的服务器_ip
更新所有初始软件:
$ apt-get更新&& apt-get安装-y build-essential git
创建一个balena用户:
$ adduser balena
添加用户管理员权限:
$ usermod -aG sudo balena
安装docker:
$ apt-get安装docker.io
将balena用户添加到docker组:
Usermod -aG码头工人Balena
安装docker-compose:
$ curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-Linux-x86_64 -o / usr / local / bin / docker-compose
$ chmod + x / usr / local / bin / docker-compose
用于测试您的docker-compose安装$ docker-compose --version。
安装OpenSSL:
Apt-get安装libssl-dev
安装nodejs:
Apt-get安装Node.js
安装NPM:
apt-get install npm
安装openBalena
安装完所有必需的软件之后,我们可以继续安装openBalena。
使用以下命令将openBalena项目克隆到您的主文件夹中:
Git克隆https://github.com/balena-io/open-balena.git〜/ open-balena
转到oen-balena目录并运行配置脚本。这将创建一个新目录config,并为实例生成适当的SSL证书和配置。提供的电子邮件和密码将被使用
创建一个超级用户帐户,您将使用该帐户对系统进行身份验证。
$ ./scripts/quickstart -U -P
您可以选择将实例配置为在自定义域名下运行。默认值为openbalena.local。在本指南中,我们将使用domain来设置mydomain.com,因此在这种情况下,我们将使用:
$ ./scripts/quickstart -U -P -d mydomain.com
有关更多可用选项,请参考脚本的帮助:
$ ./scripts/quickstart -h
至此,我们准备使用以下方法启动openBalena实例:
$ ./scripts/compose up -d
您可以通过以下方式停止实例:
$ ./scripts/compose stop
域配置
为了能够访问您的openBalena实例,必须配置一些CNAME地址并指向您的服务器。
Api.mydomain.com
Registry.mydomain.com
Vpn.mydomain.com
S3.mydomain.com
安装CLI客户端
在openBalena服务器启动并运行后,我们需要在本地计算机上安装balena CLI。这是一个命令行界面,将用于管理所有设备,并成为您和服务器之间的链接。
请按照此处提供的说明安装balena CLI
通过balenaUrl在CLI配置文件中设置服务器域名,并将balena CLI指向您的服务器,例如:
Linux或macOS:〜/ .balenarc.yml
Windows:%UserProfile%\ _ balenarc.yml
BalenaUrl:“ mydomain.com”
安装自签名证书
创建openBalena实例时,它将生成一些自签名证书,我们需要使用这些证书来使本地计算机和设备连接到服务器。
在安装了Balena CLI的计算机(本地计算机)上,ca.crt从服务器下载证书并进行安装。在我们当前的示例中,openBalena实例安装在〜/ open-balena /上,因此证书位于〜/ open-balena / config / certs / root / ca.crt。
在Linux上:
$ sudo cp ca.crt /usr/local/share/ca-certificates/ca.crt
$ sudo update-ca-certificates
$ sudo systemctl重新启动docker
在macOS上:
$ sudo安全性add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain〜/ ca.crt
$ osascript -e'退出应用程序“ Docker”'&& open-一个Docker
在Windows上:
$ certutil -addstore -f“ ROOT” ca.crt
重要信息:必须重新启动Docker守护程序才能获取新的可信CA证书。如果不重新启动Docker,将无法将映像推送到openBalena注册表。
在所有平台上:
另外,通过设置指向ca.crt本地计算机上文件下载副本的环境变量,指示balena CLI使用新证书:
外壳命令
点击导出NODE_EXTRA_CA_CERTS ='/ path / to / ca.crt'
Windows cmd.exeset NODE_EXTRA_CA_CERTS = C:\ path \ to \ ca.crt
Windows PowerShell $ Env:NODE_EXTRA_CA_CERTS =“ C:\ path \ to \ ca.crt”
部署我们的第一个应用程序
此时,我们可以登录服务器并创建我们的第一个应用程序。
1)登录到openBalena
输入balena login,选择Credentials,然后使用先前生成的超级用户信息。
2)创建一个应用程序
现在,我们可以用来创建第一个应用程序。 balena app create myApp从那里,您可以选择要使用的设备,例如Raspberry Pi 3。
3)生成图像文件
在继续之前,请确保已创建我们的应用程序
$ balena应用程序
ID APP NAME DEVICE TYPE在线设备ID
1个myApp raspberrypi3
一旦有了一些应用程序,我们就可以开始在其中配置设备。为此,我们需要从https://balena.io/os下载适合我们设备类型的balenaOS映像。部署Raspberry Pi 3设备时,我们可以转到https://balena.io/os/#downloads-raspberrypi并为其下载图像。
下载完操作系统映像后,请在本地将其解压缩,然后使用balena CLI配置我们的openBalena实例。可以按照以下步骤完成:
Balena OS配置〜/ Downloads / balenaos-raspberrypi3-2.22.1 + rev1-dev-v7.25.3.img --app myApp
一旦将映像配置为使用网络凭据和密钥连接到我们的openBalena实例,我们就可以使用https://etcher.io将其刷新到SD卡,然后启动设备。
大约30秒后,我们应该能够在应用程序中看到我们新配置的设备。为此,我们运行balena设备:
$ balena设备
ID UUID设备名称设备类型应用程序名称S
TATUS是在线主管版本OS版本
4 59d7700冬季树raspberrypi3 myApp闲置true 7.25.3 balenaOS 2.22.1 + rev1
如果我们想更仔细地检查设备,可以使用设备UUID,如下所示:
$ balena设备59d7700
==冬季树
编号:4
设备类型:raspberrypi3
状态:在线
是否在线:是
IP地址:192.168.43.247
应用名称:myApp
UUID:59d7700755ec5de06783eda8034c9d3d
主管版本:7.25.3
操作系统版本:balenaOS 2.22.1 + rev1
好的,我们已经设置了一些设备并连接到我们的openBalena实例,现在是时候部署一些代码了。在openBalena中,没有云构建器服务,因此所有容器的构建都需要使用CLI在本地完成。
对于此示例,我将使用来自Raspberry Pi 3和Sense Hat的https://github.com/balena-io-playground/sense-snake来部署示例项目。
让我们将此存储库克隆到我们的计算机,然后将其推送到我们刚刚配置的设备上:
Git克隆https://github.com/balena-io-playground/sense-snake.git
CD感蛇
Balena部署myApp --logs --source。 -模拟
请注意,在上面的部署代码中,我们在末尾添加了--emulated。这是因为我们正在为Raspberry Pi构建容器,该容器具有ARM架构,并且本地计算机使用x86_64架构。
看到独角兽后,我们可以在将代码推送到设备的同时喝咖啡。几分钟后,您会注意到该代码将开始在我们的Raspberry Pi上运行。
软件特色:
任何可以运行balenaOS的设备都可以与openBalena一起使用。
BalenaOS支持许多不同的设备类型和多种体系结构。
您可以查看受支持设备的完整列表。对于Beta版本,openBalena仅支持Raspberry Pi系列,Intel NUC,NVIDIA Jetson TX2和balenaFin。
尽管openBalena和balenaCloud共享相同的核心技术,但是仍然存在一些关键差异。
首先,openBalena是自托管的,而balenaCloud由balena托管
因此可以处理所有后端服务的安全性,维护,扩展和可靠性。
OpenBalena还是单个用户,而balenaCloud支持多个用户和组织。
OpenBalena还缺少定义balenaCloud的某些商业功能,例如基于Web的仪表板和带有二进制容器的增量更新。
我们在balenaOS中添加了一项功能,以允许设备加入和离开服务器。
实际上,这意味着balena客户将始终可以选择设置开源服务器,而不是使用云服务
如果开源用户需要现成的,受商业支持的平台,则他们可以随时迁移到balenaCloud。
在Balena,我们希望我们的关系由我们提供的值来定义,而不是由无法移动导致的锁定来定义。
我们认为openBalena是消除这些出口(和入口!)障碍的重要一步。