TheTorProject / lepidopter

lepidopter: raspberry pi image for conducting OONI network measurements
https://ooni.torproject.org/
GNU General Public License v3.0
47 stars 19 forks source link

Potential improvements for lepidopter #63

Open hellais opened 8 years ago

hellais commented 8 years ago

I was just looking at what resin.io are doing for managing big fleets of embedded devices and it seems like there are some things we can learn from them.

https://resin.io/how-it-works/

Basically they have a very lightweight base OS image https://github.com/resin-os that is based on yocto (http://www.yoctoproject.org/). Then everything is an app that runs inside of a docker container. When they need to provision updates, what they do is they push a new docker image to the docker repositories and then pull it in from the devices.

The devices are managed via a VPN that allows them to reach devices behind NAT.

In particular they have a supervisor that is written in go and based on docker for running "apps" on their devices:

A captive portal like thing for connecting devices to wifi networks:

bassosimone commented 8 years ago

Nice! I think one way to address updates could be having the core functionality packaged all together into a Docker image, such that for us updating is just swapping images.

In turn, this would enable us to choose someone such as resin.io for managing devices.

I am now wondering if it would be technically feasible to have all the packaging inside of a docker image, or whether there are Raspberry specific files and dirs that Lepidopter needs to access.

anadahz commented 8 years ago

I had a look at resin-os, yoctoproject and mender; an over-the-air software updater for connected Linux devices. It seems that these projects had already solved a number of the issues and burdens that we are going to face in the future. It's definitely worth the process to test and find out if/how any of these components and software could help us to better deploy and manage probes especially if we want to support a diverse set of hardware devices.

anadahz commented 8 years ago

After some research it seems that there are a number of software projects that perform OTA upgrades in various ways. The OSTree related projects page has an excellent for most of this software: https://ostree.readthedocs.io/en/latest/manual/related-projects/

Additionally Qt (based on OSTree) seems to handle OTA upgrades: https://doc.qt.io/QtOTA/

anadahz commented 7 years ago

Adding the evaluation (WIP) spec #69 for OTA upgrades to our conversation.