balenaMachine
What it is
balenaMachine is a self-hosted balenaCloud environment, which runs on an x64 balenaOS device.
It is thus capable of being deployed in public cloud instances, within a datacenter, or on-site in a local environment.
All the device management features available in balenaCloud are provided from this instance, including the builder, the dashboard, and the connectivity with devices.
Benefits Beyond balenaCloud SaaS:
- Data Isolation / Residency: Your data is completely isolated and under your control.
- Networking: If necessary, balenaMachine is capable of running in a partially “air-gapped” environment with limited internet connectivity, making it ideal for remote locations, factory floors, private networks, etc.
- Support: Includes Premium support for operations of the instance. Periodic updates with new releases of the backend services and balenaOS versions.
A balenaMachine instance can be run in a contained network, with limited access to the public Internet, as long as it has connectivity with the end devices it manages. This means that users are able to develop, monitor, and upgrade their devices from a partially isolated environment. You only need a connection to the internet for the amount of time it takes to pull configuration files and images, and your device balenaMachine be its own balenaCloud instance for your devices in isolation. Thus, the only connection to our balenaCloud services is on your balenaMachine instance without sharing any information between your devices and our backend.
The local dashboard will be available on a local address (eg.
dashboard.balena.<your_domain>.com
). This requires the configuration of the
proper DNS servers, routing, and networking in general.
Deployment
A balenaMachine can be deployed in AWS on an EC2 instance, or a number of other providers which support custom VM import functionality. It can also be deployed in a compatible device, like an Intel NUC, where it can provide services to devices running in a partially “air-gapped” environment. The user is in charge of configuring, monitoring, and maintaining the cloud components that need to be provisioned, or configured, to allow balenaMachine to work and communicate with the devices.
Using balenaCloud, users create a Generic x86_64 (GPT) application and add a new device. Then the resulting image is used to launch a server instance (in the cloud) or to flash the device (in an Intel NUC).
Once this instance boots up, it will connect to balenaCloud, and it will appear as a new device without a running application. At this moment Balena will push the core backend services to the device.