更新所有初始软件:
$apt-get更新&&apt-get安装-ybuild-essentialgit
创建一个balena用户:
$adduserbalena
添加用户管理员权限:
$usermod-aGsudobalena
安装docker:
$apt-get安装docker.io
将balena用户添加到docker组:
Usermod-aG码头工人Balena
安装docker-compose:
$curl-Lhttps://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-getinstallnpm
安装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-dmydomain.com
有关更多可用选项,请参考脚本的帮助:
$./scripts/quickstart-h
至此,我们准备使用以下方法启动openBalena实例:
$./scripts/composeup-d
您可以通过以下方式停止实例:
$./scripts/composestop
域配置
为了能够访问您的openBalena实例,必须配置一些CNAME地址并指向您的服务器。
Api.mydomain.com
Registry.mydomain.com
Vpn.mydomain.com
S3.mydomain.com
安装CLI客户端
在openBalena服务器启动并运行后,我们需要在本地计算机上安装balenaCLI。这是一个命令行界面,将用于管理所有设备,并成为您和服务器之间的链接。
请按照此处提供的说明安装balenaCLI
通过balenaUrl在CLI配置文件中设置服务器域名,并将balenaCLI指向您的服务器,例如:
Linux或macOS:〜/.balenarc.yml
Windows:%UserProfile%\_balenarc.yml
BalenaUrl:“mydomain.com”
安装自签名证书
创建openBalena实例时,它将生成一些自签名证书,我们需要使用这些证书来使本地计算机和设备连接到服务器。
在安装了BalenaCLI的计算机(本地计算机)上,ca.crt从服务器下载证书并进行安装。在我们当前的示例中,openBalena实例安装在〜/open-balena/上,因此证书位于〜/open-balena/config/certs/root/ca.crt。
在Linux上:
$sudocpca.crt/usr/local/share/ca-certificates/ca.crt
$sudoupdate-ca-certificates
$sudosystemctl重新启动docker
在macOS上:
$sudo安全性add-trusted-cert-d-rtrustRoot-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本地计算机上文件下载副本的环境变量,指示balenaCLI使用新证书:
外壳命令
点击导出NODE_EXTRA_CA_CERTS='/path/to/ca.crt'
Windowscmd.exesetNODE_EXTRA_CA_CERTS=C:\path\to\ca.crt
WindowsPowerShell$Env:NODE_EXTRA_CA_CERTS=“C:\path\to\ca.crt”
部署我们的第一个应用程序
此时,我们可以登录服务器并创建我们的第一个应用程序。
1)登录到openBalena
输入balenalogin,选择Credentials,然后使用先前生成的超级用户信息。
2)创建一个应用程序
现在,我们可以用来创建第一个应用程序。balenaappcreatemyApp从那里,您可以选择要使用的设备,例如RaspberryPi3。
3)生成图像文件
在继续之前,请确保已创建我们的应用程序
$balena应用程序
IDAPPNAMEDEVICETYPE在线设备ID
1个myAppraspberrypi3
一旦有了一些应用程序,我们就可以开始在其中配置设备。为此,我们需要从https://balena.io/os下载适合我们设备类型的balenaOS映像。部署RaspberryPi3设备时,我们可以转到https://balena.io/os/#downloads-raspberrypi并为其下载图像。
下载完操作系统映像后,请在本地将其解压缩,然后使用balenaCLI配置我们的openBalena实例。可以按照以下步骤完成:
BalenaOS配置〜/Downloads/balenaos-raspberrypi3-2.22.1+rev1-dev-v7.25.3.img--appmyApp
一旦将映像配置为使用网络凭据和密钥连接到我们的openBalena实例,我们就可以使用https://etcher.io将其刷新到SD卡,然后启动设备。
大约30秒后,我们应该能够在应用程序中看到我们新配置的设备。为此,我们运行balena设备:
$balena设备
IDUUID设备名称设备类型应用程序名称S
TATUS是在线主管版本OS版本
459d7700冬季树raspberrypi3myApp闲置true7.25.3balenaOS2.22.1+rev1
如果我们想更仔细地检查设备,可以使用设备UUID,如下所示:
$balena设备59d7700
==冬季树
编号:4
设备类型:raspberrypi3
状态:在线
是否在线:是
IP地址:192.168.43.247
应用名称:myApp
UUID:59d7700755ec5de06783eda8034c9d3d
主管版本:7.25.3
操作系统版本:balenaOS2.22.1+rev1
好的,我们已经设置了一些设备并连接到我们的openBalena实例,现在是时候部署一些代码了。在openBalena中,没有云构建器服务,因此所有容器的构建都需要使用CLI在本地完成。
对于此示例,我将使用来自RaspberryPi3和SenseHat的https://github.com/balena-io-playground/sense-snake来部署示例项目。
让我们将此存储库克隆到我们的计算机,然后将其推送到我们刚刚配置的设备上:
Git克隆https://github.com/balena-io-playground/sense-snake.git
CD感蛇
Balena部署myApp--logs--source。-模拟
请注意,在上面的部署代码中,我们在末尾添加了--emulated。这是因为我们正在为RaspberryPi构建容器,该容器具有ARM架构,并且本地计算机使用x86_64架构。
看到独角兽后,我们可以在将代码推送到设备的同时喝咖啡。几分钟后,您会注意到该代码将开始在我们的RaspberryPi上运行。
任何可以运行balenaOS的设备都可以与openBalena一起使用。
BalenaOS支持许多不同的设备类型和多种体系结构。
您可以查看受支持设备的完整列表。对于Beta版本,openBalena仅支持RaspberryPi系列,IntelNUC,NVIDIAJetsonTX2和balenaFin。
尽管openBalena和balenaCloud共享相同的核心技术,但是仍然存在一些关键差异。
首先,openBalena是自托管的,而balenaCloud由balena托管
因此可以处理所有后端服务的安全性,维护,扩展和可靠性。
OpenBalena还是单个用户,而balenaCloud支持多个用户和组织。
OpenBalena还缺少定义balenaCloud的某些商业功能,例如基于Web的仪表板和带有二进制容器的增量更新。
我们在balenaOS中添加了一项功能,以允许设备加入和离开服务器。
实际上,这意味着balena客户将始终可以选择设置开源服务器,而不是使用云服务
如果开源用户需要现成的,受商业支持的平台,则他们可以随时迁移到balenaCloud。
在Balena,我们希望我们的关系由我们提供的值来定义,而不是由无法移动导致的锁定来定义。
我们认为openBalena是消除这些出口(和入口!)障碍的重要一步。