• Stars
    star
    1,060
  • Rank 43,532 (Top 0.9 %)
  • Language
    Shell
  • License
    GNU Affero Genera...
  • Created almost 7 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Open source software to manage connected IoT devices at scale

OpenBalena is a platform to deploy and manage connected devices. Devices run balenaOS, a host operating system designed for running containers on IoT devices, and are managed via the balena CLI, which you can use to configure your application containers, push updates, check status, view logs, and so forth. OpenBalena’s backend services, composed of battle-tested components that we’ve run in production on balenaCloud for years, can store device information securely and reliably, allow remote management via a built-in VPN service, and efficiently distribute container images to your devices.

To learn more about openBalena, visit balena.io/open.

Features

  • Simple provisioning: Adding devices to your fleet is a breeze
  • Easy updates: Remotely update the software on your devices with a single command
  • Container-based: Benefit from the power of virtualization, optimized for the edge
  • Scalable: Deploy and manage one device, or one million
  • Powerful API & SDK: Extend openBalena to fit your needs
  • Built-in VPN: Access your devices regardless of their network environment

Getting Started

Our Getting Started guide is the most direct path to getting an openBalena installation up and running and successfully deploying your application to your device(s).

Compatibility

The current release of openBalena has the following minimum version requirements:

  • balenaOS v2.58.3
  • balena CLI v12.38.5

If you are updating from previous openBalena versions, ensure you update the balena CLI and reprovision any devices to at least the minimum required versions in order for them to be fully compatible with this release, as some features may not work.

Documentation

While we're still working on the project documentation, please refer to the balenaCloud documentation. BalenaCloud is built on top of openBalena, so the core concepts and functionality is identical. The following sections are of particular interest:

Getting Help

You are welcome to submit any questions, participate in discussions and request help with any issue in openBalena forums. The balena team frequents these forums and will be happy to help. You can also ask other community members for help, or contribute by answering questions posted by fellow openBalena users. Please do not use the issue tracker for support-related questions.

Contributing

Everyone is welcome to contribute to openBalena. There are many different ways to get involved apart from submitting pull requests, including helping other users on the forums, reporting or triaging issues, reviewing and discussing pull requests, or just spreading the word.

All of openBalena is hosted on GitHub. Apart from its constituent components, which are the API, VPN, Registry, S3 storage service, and Database, contributions are also welcome to its client-side software such as the balena CLI, the balena SDK, balenaOS and balenaEngine.

Roadmap

OpenBalena is currently in beta. While fully functional, it lacks features we consider important before we can comfortably call it production-ready. During this phase, don’t be alarmed if things don’t work as expected just yet (and please let us know about any bugs or errors you encounter!). The following improvements and new functionality is planned:

  • Full documentation
  • Full test suite
  • Simplified deployment
  • Remote host OS updates
  • Support for custom device types

Differences between openBalena and balenaCloud

Whilst openBalena and balenaCloud share the same core technology, there are some key differences. First, openBalena is self-hosted, whereas balenaCloud is hosted by balena and therefore handles security, maintenance, scaling, and reliability of all the backend services. OpenBalena is also single user, whereas balenaCloud supports multiple users and organizations. OpenBalena also lacks some of the commercial features that define balenaCloud, such as the web-based dashboard and updates with binary container deltas.

The following table contains the main differences between both:

openBalena balenaCloud
Device updates using full Docker images Device updates using delta images
Support for a single user Support for multiple users
Self-hosted deployment and scaling balena-managed scaling and deployment
Community support via forums Private support on paid plans
Build locally and deploy via balena-cli Build remotely with native builders using balena push or git push
No public device URL support Serve websites directly from device with public device URLs
Management via balena-cli only Cloud-based device management dashboard
Download images from balena.io and configure locally via balena-cli Download configured images directly from the dashboard
No remote device diagnostics Remote device diagnostics

Additionally, refer back to the roadmap above for planned but not yet implemented features.

License

OpenBalena is licensed under the terms of AGPL v3. See LICENSE for details.

FAQ

How do you ensure continuity of openBalena? Are there security patches on openBalena?

openBalena is an open source initiative which is mostly driven by us, but it also gets contributions from the community. We work to keep openBalena as up to date as our bandwidth allows, especially with security patches. That said, we do not have a policy or guarantee of a software release schedule. However, it is in our best interest to keep openBalena updated and patched since we also use it for balenaCloud.

How do you ensure the “Join” command actually works between open and cloud?

The join command is not only used for moving from openBalena to balenaCloud, but it is used daily by our developers to move devices from developments and testing instances to production, and vice versa. The join command actually wraps the os-config command, which is the basic tool balena uses for configuring devices.

Is it “production ready”?

While we actually have some rather large fleets using openBalena, we as a company consider it still to be in Beta status. We don’t perform regular testing on the platform like we do balenaCloud, and we do not yet have feature-parity between the various services we offer.

Can new device-types be added to openBalena?

Technically “yes”, but in a supported or balena-recommended fashion, “no”. The main reason is that until we regularly test the openBalena platform the way we do balenaCloud, there’s no scalable way for us to provide support for new device-types.

Are there open-source UI dashboards from the community for openBalena?

Yes! Here are a few:

More Repositories

1

etcher

Flash OS images to SD cards & USB drives, safely and easily.
TypeScript
29,210
star
2

balena-cli

The official balena CLI tool.
TypeScript
452
star
3

triangular.js

A natural fusion between d3 and angular.js. See http://alexandros.resin.io/angular-d3-svg/ for more information
CoffeeScript
174
star
4

balena-sdk

The SDK to make balena powered JavaScript applications.
TypeScript
145
star
5

docs

Documentation for the balenaCloud platform.
HTML
68
star
6

balena-sdk-python

Balena SDK for Python
Python
67
star
7

qemu

QEMU with additional QEMU_EXECVE flag that persists emulator after an execve
C
62
star
8

pinejs

Generate rest APIs from natural language models
TypeScript
61
star
9

open-balena-api

The core API of openBalena
TypeScript
58
star
10

open-balena-vpn

openBalena VPN
TypeScript
57
star
11

deploy-to-balena-action

Official Github action to deploy releases to balenaCloud environments
TypeScript
37
star
12

lxc-docker-PKGBUILD

Docker for the RaspberryPi
Shell
34
star
13

docker-install-script

Just the docker install script
Shell
29
star
14

etcher-cli

DEPRECATED: See https://github.com/resin-io/etcher/blob/master/docs/CLI.md
JavaScript
29
star
15

balena-cli-masterclass

A guide to getting started with the balena CLI
JavaScript
29
star
16

sshproxy

sshproxy is a simple ssh server library exposing an even simpler API
Go
28
star
17

capitano

Powerful, non opinionated command line parser for serious applications
CoffeeScript
25
star
18

autohat

balenaCloud end-to-end tests (autohat).
RobotFramework
22
star
19

balena-emails

resin.io email generator
JavaScript
18
star
20

doxx

Doxx — a static docs generator with dynamic pages support.
CoffeeScript
16
star
21

contracts

Balena.io Base Contracts
Smarty
16
star
22

open-balena-registry

Docker image storage backend for openBalena
Dockerfile
16
star
23

etcher-homepage

Static website for etcher
JavaScript
15
star
24

balenaos-masterclass

An introduction to balenaOS
14
star
25

open-balena-s3

Amazon S3-compatible storage backend for openBalena
Dockerfile
13
star
26

balena-mdns-publisher

MDNS address publisher for balena services
TypeScript
13
star
27

reconfix

(Re)Configuration toolkit
Rust
13
star
28

debugging-masterclass

A guide to debugging balena device issues
JavaScript
11
star
29

valletta

Tool to build and manage Discourse theme customizations
JavaScript
10
star
30

autohat-board

Automated Hardware Test Rig
KiCad Layout
9
star
31

docker-masterclass

JavaScript
8
star
32

pensieve

A tool for managing and viewing structured documents, backed by the power of git
JavaScript
7
star
33

balena-base-ui

Extension of resin base that adds Nginx, Yarn and Chrome
JavaScript
7
star
34

logs-to-vector

Shell
6
star
35

resin-node-images

6
star
36

balena-fleet-management-masterclass

A guide to managing an application fleet with balena
Python
6
star
37

open-balena-db

Shell
5
star
38

open-balena-haproxy

Haproxy component for resin environments (bob, onprem, etc)
Lua
5
star
39

community

5
star
40

ca-private

Certificate authority based on CloudFlare's PKI/TLS toolkit.
Shell
5
star
41

resin-multivisor

WORK IN PROGRESS: A modified resin-supervisor that runs as a Resin app and runs multiple containers
CoffeeScript
5
star
42

onlinelabs-cloudformation

CloudFormation Custom Resources for online.net ARM servers
CoffeeScript
5
star
43

balena-cli-advanced-masterclass

A guide to the advanced features available in balena CLI
JavaScript
5
star
44

balena-supervisor-base

Minimal base image for https://github.com/balena-io/balena-supervisor - built with Yocto
Shell
5
star
45

resin-cli-installer-osx

Resin CLI OS X installer
Makefile
4
star
46

arm-builder-kernels

Custom Linux kernel for balenaCloud remote ARM builders.
Dockerfile
4
star
47

resin-yocto

[deprecated] Resin.io Yocto manifests with repo tool
4
star
48

open-balena-registry-proxy

Pull images from balenaCloud container registry with fleet slugs!
TypeScript
4
star
49

resin-plugin-sync

[DEPRECATED] Watch a local project directory and sync it on the fly.
CoffeeScript
4
star
50

services-masterclass

A guide to developing and deploying services on a balena device
JavaScript
4
star
51

cert-manager

Certificate manager with Let's Encrypt DNS validation and private CA support
Shell
4
star
52

renovate-config

Shared renovate configuration and GitHub Action
JavaScript
4
star
53

resin-network-config

DEPRECATED. Handle resin images network configuration.
CoffeeScript
3
star
54

resin-parallella-demo

C
3
star
55

python-connman-control

Example python application that connects to the network manager running on a Resin device.
Python
3
star
56

diskio

DEPRECATED. Raw disk I/O that works in all major operating systems
CoffeeScript
3
star
57

autohat-ondevice

On device application for Automated Hardware Tests
Python
3
star
58

node-audio-stream-skew-correction

Testing audio stream time skew correction in NodeJS
CoffeeScript
3
star
59

resin-cli-installer-win32

Resin CLI Win32 installer
NSIS
2
star
60

capitanodoc

Documentation generator for Capitano projects
JavaScript
2
star
61

resin-device-path

DEPRECATED. Parse Resin.io device and partition paths.
CoffeeScript
2
star
62

balena-masterclass-skeleton

A template skeleton base for balena masterclasses
2
star
63

resin-config-inject

DEPRECATED. Resin.io config.json injection.
CoffeeScript
2
star
64

resin-image

DEPRECATED. Resin.io image utilities.
CoffeeScript
2
star
65

resin-image-config

DEPRECATED. Resin.io image FAT configuration
CoffeeScript
2
star
66

resin-olive-fruit

CoffeeScript
2
star
67

node-binary

DEPRECATED: Download node binaries for various platforms and architectures, easily.
CoffeeScript
2
star
68

leviathan-worker

TypeScript
2
star
69

fleetops-os-update

Shell
2
star
70

resin-librato

Shell
2
star
71

balena-popularity-metrics

TypeScript
2
star
72

fleetops-supervisor-update

Shell
1
star
73

networking-masterclass

A guide to on-device networking on balena devices
1
star
74

balena-blog

Create, edit, and manage the content and design of balena's blog. Uses GatsbyJS and hosted on Netlify.
JavaScript
1
star
75

resin-caddy

Caddy Docker container
JavaScript
1
star
76

autohat-resin-jenkins

Resin application to manage AutoHAT rack
Shell
1
star
77

fleetops-appmigrate

(Experimental) migrate balenaOS devices between apps while migrating volume data
Shell
1
star
78

etcher-homepage-staging

JavaScript
1
star
79

autohat-configurator

A resin application that allows to configure an autohat for a specific device type testing
JavaScript
1
star