Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions pages/.gitbook/includes/labels-version-note.md

This file was deleted.

21 changes: 4 additions & 17 deletions pages/faq/questions.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ title: FAQs

### **Can I use multiple containers?**

Multiple container fleets are supported, beginning with balenaOS v2.12.0. To run multiple containers, you will need to have a [microservices fleet](../learn/accounts/fleet-types.md) and include a `docker-compose.yml` file at the root of your project. You can reference the [multicontainer documentation](../learn/develop/multicontainer.md) for more details on the supported configurations.
Multiple container fleets are supported in fleets by default. To run multiple containers, you will need to include a `docker-compose.yml` file at the root of your project. You can reference the [multicontainer documentation](../learn/develop/multicontainer.md) for more details on the supported configurations.

If you are running a Docker-in-Docker setup, which builds a single container on the balena servers but has a `docker-compose.yml` file at the root of the project, you'll want to rename the file to something like `dind-compose.yml`. Then when you run Docker Compose in your container, you can use the `-f` flag with the new file name: `docker-compose -f dind-compose.yml up`.

Expand Down Expand Up @@ -46,26 +46,13 @@ For fleets running [multiple containers](../learn/develop/multicontainer.md), yo

Yes! It's actually pretty easy. Have a look at the [network setup](../reference/os/network.md#setting-a-static-ip) section of our documentation. In general, most network configurations can be achieved by changing the NetworkManager configuration file.

### **Why can't I SSH into or run code in older versions of the host OS?**

While you’ve always been able to SSH into your container, we had previously restricted SSH access to the host OS. We had a number of reasons for doing this:

* Code in the host OS currently isn't kept inside a container, so we are unable to track or update it at all.
* If code run in the host OS inadvertently kills our supervisor or overwrites critical data (such as data used to identify it), the device could become inaccessible and no longer updateable.
* Configuration of network device drivers, mount points, security provisions, and many other details have been carefully chosen to serve the balena ecosystem and your containers. Rogue code running in the host OS might interfere with this, leading to issues or degradation of performance which we would likely not be able to help you with.
* When troubleshooting issues we base our assumptions on the host OS behaving as we expect it to. If you have made changes here, there's a good chance we won't be able to reproduce the issues locally and therefore won't be able to help you.

However, we've heard from users that they would still like to be able to SSH into the host OS on their devices, so we decided to add that capability starting with balenaOS version 2.7.5. This gives you access to logs and tools for services that operate outside the scope of your container, such as NetworkManager, Docker, cloudlink, and the supervisor. For more details, please check out [this documentation](../learn/develop/runtime.md).

### **Which data is persisted on devices across updates/power cycles?**

The only data we [guarantee to be persisted](../learn/develop/runtime.md#persistent-storage) across reboot, shutdown and device update/container restart is the contents of the `/data` folder, or any [named volumes](../learn/develop/multicontainer.md#named-volumes) on devices running balenaOS v2.12.0 and above. However, when a device is restarted or power cycled the container is not recreated, meaning all the data that was present in the container's filesystem before, remains. It's very important not to rely on this behavior, as containers are recreated on release updates, when environment variables are changed in the UI or API, or when a fleet restart is requested.
The only data we [guarantee to be persisted](../learn/develop/runtime.md#persistent-storage) across reboot, shutdown and device update/container restart is the contents of the `/data` folder and any [named volumes](../learn/develop/multicontainer.md#named-volumes). However, when a device is restarted or power cycled the container is not recreated, meaning all the data that was present in the container's filesystem before, remains. It's very important not to rely on this behavior, as containers are recreated on release updates, when environment variables are changed in the UI or API, or when a fleet restart is requested.

### **Why does /data disappear when I move a device between fleets?**

Persistent data is specific to a fleet. If you move devices between fleets running different code, then keeping persistent data from the old fleet could potentially cause issues.

On devices running balenaOS versions before 2.12.0, if you move the device back to the old fleet you'll find `/data` remains intact. Newer balenaOS versions automatically purge named volumes when a device is moved to a new fleet.
Persistent data is specific to a fleet. If you move devices between fleets running different code, then keeping persistent data from the old fleet could potentially cause issues. balenaOS automatically purge named volumes when a device is moved to a new fleet.

### **It appears that there is a centralized master running (in cloud) and agents running on devices. Is that accurate?**

Expand Down Expand Up @@ -111,7 +98,7 @@ Please contact sales@balena.io with any questions regarding continued device sup

### **I have a device that is not on the supported devices list. Can it run on balena?**

There are a few options for devices that do not have an official device type on balena. If your device has an x86 architecture, you can try either the [Intel NUC](../learn/getting-started/intel-nuc.md) image (which is built to support generic x86 devices with a minimum set of drivers), or the generic genericx86-64 image (that includes all the standard X86 drivers). For other devices, you can [build your own](https://github.com/balena-os/meta-balena/blob/master/contributing-device-support.md) version of balenaOS using our [open source repos](https://github.com/balena-os). To discuss custom board support, please contact sales@balena.io.
There are a few options for devices that do not have an official device type on balena. If your device has an x86 architecture, you can try either the [Intel NUC](../learn/getting-started/intel-nuc.md) image (which is built to support generic x86 devices with a minimum set of drivers), or the generic genericx86-64 image (that includes all the standard X86 drivers). To discuss custom board support, please contact sales@balena.io.

### **What to keep in mind when choosing power supply units?**

Expand Down
2 changes: 1 addition & 1 deletion pages/faq/troubleshooting/raspberry-pi.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ If the Raspberry Pi is unable to connect to the balena servers, the `ACT` LED wi

This is either because it is not connected to the network or because the network ports which balena relies on are blocked in some way.

- The first things to check in this case is that your device is correctly connected to ethernet or that you correctly entered the wifi credentials. To check wifi credentials, power your device down, remove the SD card, and mount the SD card on your personal computer. If your device is running balenaOS version 2.0 or greater, wifi credentials are listed in `system-connections/resin-wifi`, found in the `resin-boot` partition of the SD card. Otherwise, check the `config.json` file (in the `resin-boot` partition for versions 1.2 and greater, or `resin-conf` for earlier versions).
- The first things to check in this case is that your device is correctly connected to ethernet or that you correctly entered the wifi credentials. To check wifi credentials, power your device down, remove the SD card, and mount the SD card on your personal computer. Wifi credentials are listed in `system-connections/resin-wifi`, found in the `resin-boot` partition of the SD card.
- Secondly check that your network is not restricting or blocking the ports specified in the [balena network requirements](../../reference/os/network.md#network-requirements).
- If you still aren't able to get your device online, reach out to us in the [forums](https://forums.balena.io).

Expand Down
2 changes: 1 addition & 1 deletion pages/faq/troubleshooting/raspberry-pi2.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ If the Raspberry Pi is unable to connect to the balena servers, the `ACT` LED wi

This is either because it is not connected to the network or because the network ports which balena relies on are blocked in some way.

- The first things to check in this case is that your device is correctly connected to ethernet or that you correctly entered the wifi credentials. To check wifi credentials, power your device down, remove the SD card, and mount the SD card on your personal computer. If your device is running balenaOS version 2.0 or greater, wifi credentials are listed in `system-connections/resin-wifi`, found in the `resin-boot` partition of the SD card. Otherwise, check the `config.json` file (in the `resin-boot` partition for versions 1.2 and greater, or `resin-conf` for earlier versions).
- The first things to check in this case is that your device is correctly connected to ethernet or that you correctly entered the wifi credentials. To check wifi credentials, power your device down, remove the SD card, and mount the SD card on your personal computer. Wifi credentials are listed in `system-connections/resin-wifi`, found in the `resin-boot` partition of the SD card.
- Secondly check that your network is not restricting or blocking the ports specified in the [balena network requirements](../../reference/os/network.md#network-requirements).
- If you still aren't able to get your device online, reach out to us in the [forums](https://forums.balena.io).

Expand Down
2 changes: 1 addition & 1 deletion pages/faq/troubleshooting/raspberrypi0-2w-64.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ If the Raspberry Pi is unable to connect to the balena servers, the `ACT` LED wi

This is either because it is not connected to the network or because the network ports which balena relies on are blocked in some way.

- The first things to check in this case is that your device is correctly connected to ethernet or that you correctly entered the wifi credentials. To check wifi credentials, power your device down, remove the SD card, and mount the SD card on your personal computer. If your device is running balenaOS version 2.0 or greater, wifi credentials are listed in `system-connections/resin-wifi`, found in the `resin-boot` partition of the SD card. Otherwise, check the `config.json` file (in the `resin-boot` partition for versions 1.2 and greater, or `resin-conf` for earlier versions).
- The first things to check in this case is that your device is correctly connected to ethernet or that you correctly entered the wifi credentials. To check wifi credentials, power your device down, remove the SD card, and mount the SD card on your personal computer. Wifi credentials are listed in `system-connections/resin-wifi`, found in the `resin-boot` partition of the SD card.
- Secondly check that your network is not restricting or blocking the ports specified in the [balena network requirements](../../reference/os/network.md#network-requirements).
- If you still aren't able to get your device online, reach out to us in the [forums](https://forums.balena.io).

Expand Down
2 changes: 1 addition & 1 deletion pages/faq/troubleshooting/raspberrypi3-64.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ If the Raspberry Pi is unable to connect to the balena servers, the `ACT` LED wi

This is either because it is not connected to the network or because the network ports which balena relies on are blocked in some way.

- The first things to check in this case is that your device is correctly connected to ethernet or that you correctly entered the wifi credentials. To check wifi credentials, power your device down, remove the SD card, and mount the SD card on your personal computer. If your device is running balenaOS version 2.0 or greater, wifi credentials are listed in `system-connections/resin-wifi`, found in the `resin-boot` partition of the SD card. Otherwise, check the `config.json` file (in the `resin-boot` partition for versions 1.2 and greater, or `resin-conf` for earlier versions).
- The first things to check in this case is that your device is correctly connected to ethernet or that you correctly entered the wifi credentials. To check wifi credentials, power your device down, remove the SD card, and mount the SD card on your personal computer. Wifi credentials are listed in `system-connections/resin-wifi`, found in the `resin-boot` partition of the SD card.
- Secondly check that your network is not restricting or blocking the ports specified in the [balena network requirements](../../reference/os/network.md#network-requirements).
- If you still aren't able to get your device online, reach out to us in the [forums](https://forums.balena.io).

Expand Down
2 changes: 1 addition & 1 deletion pages/faq/troubleshooting/raspberrypi3.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ If the Raspberry Pi is unable to connect to the balena servers, the `ACT` LED wi

This is either because it is not connected to the network or because the network ports which balena relies on are blocked in some way.

- The first things to check in this case is that your device is correctly connected to ethernet or that you correctly entered the wifi credentials. To check wifi credentials, power your device down, remove the SD card, and mount the SD card on your personal computer. If your device is running balenaOS version 2.0 or greater, wifi credentials are listed in `system-connections/resin-wifi`, found in the `resin-boot` partition of the SD card. Otherwise, check the `config.json` file (in the `resin-boot` partition for versions 1.2 and greater, or `resin-conf` for earlier versions).
- The first things to check in this case is that your device is correctly connected to ethernet or that you correctly entered the wifi credentials. To check wifi credentials, power your device down, remove the SD card, and mount the SD card on your personal computer. Wifi credentials are listed in `system-connections/resin-wifi`, found in the `resin-boot` partition of the SD card.
- Secondly check that your network is not restricting or blocking the ports specified in the [balena network requirements](../../reference/os/network.md#network-requirements).
- If you still aren't able to get your device online, reach out to us in the [forums](https://forums.balena.io).

Expand Down
2 changes: 1 addition & 1 deletion pages/faq/troubleshooting/raspberrypi4-64.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ If the Raspberry Pi is unable to connect to the balena servers, the `ACT` LED wi

This is either because it is not connected to the network or because the network ports which balena relies on are blocked in some way.

- The first things to check in this case is that your device is correctly connected to ethernet or that you correctly entered the wifi credentials. To check wifi credentials, power your device down, remove the SD card, and mount the SD card on your personal computer. If your device is running balenaOS version 2.0 or greater, wifi credentials are listed in `system-connections/resin-wifi`, found in the `resin-boot` partition of the SD card. Otherwise, check the `config.json` file (in the `resin-boot` partition for versions 1.2 and greater, or `resin-conf` for earlier versions).
- The first things to check in this case is that your device is correctly connected to ethernet or that you correctly entered the wifi credentials. To check wifi credentials, power your device down, remove the SD card, and mount the SD card on your personal computer. Wifi credentials are listed in `system-connections/resin-wifi`, found in the `resin-boot` partition of the SD card.
- Secondly check that your network is not restricting or blocking the ports specified in the [balena network requirements](../../reference/os/network.md#network-requirements).
- If you still aren't able to get your device online, reach out to us in the [forums](https://forums.balena.io).

Expand Down
6 changes: 1 addition & 5 deletions pages/learn/deploy/release-strategy/update-strategies.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ excerpt: Choosing an update strategy for your balena devices

# Controlling the update strategy

With the balena device supervisor version 1.3, we added the ability to choose the update strategy on devices, that is, the order and way in which the steps to perform an update are executed. You can check whether your Supervisor has the appropriate version in the "Supervisor version" entry in the device dashboard page. These update strategies allow users to choose between four modes that are suited for different applications, depending on available resources and the possible need to have a container running at all times.
The balena device supervisor allows you to choose the update strategy on devices. An update strategy is the order and way in which the steps to perform an update are executed. These update strategies allow users to choose between four modes that are suited for different applications, depending on available resources and the possible need to have a container running at all times.

Update strategies can be applied by setting a [docker-compose label](../../../reference/supervisor/docker-compose.md#labels). The two labels that are involved are:

Expand Down Expand Up @@ -57,10 +57,6 @@ This strategy is meant for resource-constrained scenarios or when the images be
This strategy is only recommended for extreme low storage scenarios, where the available storage cannot even fit the target [image deltas](../delta.md). For most cases, using the default strategy or the `kill-then-download` strategy (if memory usage is a concern), and ensuring [deltas are enabled](../delta.md) is the recommended approach.
{% endhint %}

{% hint style="warning" %}
**Requires Supervisor >= v2.5.1**
{% endhint %}

## hand-over

This strategy is suited for scenarios where there are enough resources and it is critical that the downtime is _zero_, that is, that the app runs continually even during an update. For this strategy to work properly, the user has to consider the way the update works and include code to perform a handover between the old and new releases. Its behavior is as follows:
Expand Down
4 changes: 1 addition & 3 deletions pages/learn/develop/dockerfile.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ excerpt: Use Dockerfiles to package your balena services and their dependencies

Balena uses [Docker](https://www.docker.com/) containers to manage deployment and updates. You can use one or more containers to package your services with whichever environments and tools they need to run.

To ensure a service has everything it needs, you'll want to create a list of instructions for building a [container image](https://docs.docker.com/engine/understanding-docker/#/inside-docker). Whether the build process is done [on your device](local-mode.md), [on your workstation](../../external-docs/balena-cli/latest.md#build), or on the [balena builders](../deploy/deployment.md), the end result is a read-only image that ends up on your device. This image is used by the container engine (balena or Docker, depending on the balenaOS version) to kick off a running container.
To ensure a service has everything it needs, you'll want to create a list of instructions for building a [container image](https://docs.docker.com/engine/understanding-docker/#/inside-docker). Whether the build process is done [on your device](local-mode.md), [on your workstation](../../external-docs/balena-cli/latest.md#build), or on the [balena builders](../deploy/deployment.md), the end result is a read-only image that ends up on your device. This image is used by the container engine to kick off a running container.

{% hint style="info" %}
For additional information on working with Dockerfiles with balena see the [services masterclass](../../external-docs/masterclasses/services-masterclass.md).
Expand Down Expand Up @@ -37,8 +37,6 @@ Containers ran as single container **have no security restrictions**, this shoul

To deploy a single-container release to balena, simply place a `Dockerfile` at the root of your repository. A `docker-compose.yml` file will be automatically generated, ensuring your container has host networking, is privileged, and has `lib/modules`, `/lib/firmware`, and `/run/dbus` bind mounted into the container. The default `docker-compose.yml` will look something like this:

{% include "../../.gitbook/includes/labels-version-note.md" %}

```yaml
version: '2.1'
networks: {}
Expand Down
Loading
Loading