Containers for INSYS icom OS devices

INSYS icom OS devices can run LXC containers, which can add a lot of functionality!

Send your questions, wishes, bug reports or ideas to info@m3-container.net

Types of containers

To get to your own container with your functionality, there are at least three entry levels:

  1. Use a complete distribution

    There are containers with Alpine Linux and Debian. These are perfect for fast prototyping or a PoC (Proof of Concept), because you get results very fast by using the provided package managers (apk, apt). The disadvantage is, that these containers get huge very fast because of all the dependencies of the pre compiled packages.

  2. Use a basic container

    This is a good option in case you want to implement scripts in one of the offered interpreted programming languages (e.g. Python, NodeJS, ash, PHP), where no compiler is needed. You can even develop within the running container on the device. This is a good compromise between container size and functionality. A disadvantage of this option is, that you do not have control over the basic container, so it could be problematic to add further packets or modules or update the interpreter and its lib.

  3. Create your own container

    This is the developers choice: Install the SDK (as Docker or LXC container), clone the prepared build scripts and create the containers from scratch. This is also the way, how the basic containers are created. Creating containers with this means:

    • the resulting containers will have a minimal footprint
    • you are in charge of every single bit that gets included
    • you can reproduce the build of an container
    • this could be automated by integrating these scripts into your CI/CD pipeline
    • updating the individual components is easy
    • most likely this will create the most stable and secure containers: What's not included, can't break - what's not running, can't get hacked

Download: Alpine.tar

An Alpine Linux container with only an SSH server for login.

Alpine Linux uses musl as standard C library instead of glibc, which most of the time leads to smaller binaries. The SDK doesn't support musl, so it's not possible to use it to cross compile applications for Alpine Linux.

Alpine Linux does have a huge catalogue of precompiled applications and libraries. Use the included package managing tool "apk" for updating, upgrading and installing additional packages, so this container fits when you want to run standard software, e.g. Node-RED or a minetest server.

Download: Debian.tar

A Debian container with only an SSH server for login.

This container might be the easiest way to add functionality due to the huge popularity of Debian. Despite being perfect for quick tests of PoC (Proof of Concept) this comes at the cost of a bit container size, so it isn't recommended to use such containers in a production environment.

Use the included package managing tool "apt" for updating, upgrading and installing additional packages. Before downloading such a container from the device, it's recommended to delete as many files as possible, e.g. all the cached downloaded packages and all the repository information. This data will be outdated anyway and can be replaced with a fresh apt-get upgrade.

Download: container_default.tar

A minimal container that brings a SSH server (for login). This container is meant as an example or template for your own containers you want to create with the SDK and the provided scripts. Also use this container for very simple applications, that can be implemented in ash, a minimal shell interpreter included in busybox.

Download: container_python3.tar

A minimal container with Python 3 in it. There are already a few modules installed (e.g. requests, certifi, urllib). Additional packages can be installed using the included pip.

Download: container_nodejs.tar

A minimal container with NodeJS in it.

LAMP (Linux, Apache, SQLite3, PHP)

Download: container_LAMP.tar

A container with a classic LAMP stack consisting of Linux, Apache web server, SQLite3 data base and PHP. Additionally it uses runit to start/stop processes.

Download: container_net-tools.tar

A container with a few net tools like tcpdump, nmap, nping, iperf, openvpn, httping, curl, iptables, stunnel. Use this container for debugging purposes! You can create a jump host in a remote network, bridge the nets to it and debug from there.

Download: iDS download site

Product page: https://www.insys-icom.com/

An IoT software, used for alarming and controlling your data with multiple industrial protocols.

Download: AnyViz Cloud Adapter (Container)

Documentation: Installation instructions

Product page: https://www.anyviz.io

AnyViz is probably the easiest way to monitor, operate and analyze machine and plant controls remotely.

With the container OPC-UA, Modbus, Siemens, Beckhoff, EtherNet/IP, BACnet and M-Bus devices can be connected to the cloud.

Download: Node-RED.tar

This container is based on Alpine Linux. Add more modules and connectors to it by using npm. Use this guide to install packages with npm, that need a compiler to get installed.

Download: M3_SDK_LXC.tar.gz

This SDK is just a suggestion, you can use whatever toolchain you prefer!

It contains tools to cross compile code for the armv7 architecture. It's avalable as LXC or Docker container. It is meant to be used in combination with a bunch of scripts, so all the steps to create a container are completely automated.

This SDK comes with no IDE at all, it's meant to be used

The idea is, that you continue to use all your existing tools on your PC like editors to create the content and applications. The tools within the SDK then are used to do all the necessary cross compiling and packaging, so you get a container.

Here are the first steps to create your own container.

The SDK is a Gentoo Linux without any graphical UI (headless). You can update it and install more packages with the typical Gentoo tools (emerge). In case you have to use a none Linux system, you could create a virtual machine image on your own by downloading the LXC version of the SDK. You would have to add a bootloader and a Linux kernel.

Having a container is nice, being able to reproduce its build in an automated way is better!

This git repository with scripts can be the foundation of your own container projects. Mount the clone of this repo into your installed SDK and build your first basic container. These scripts will download, check, configue, make, make install and package all necessary software. Use the existing scripts as a template for your own containers.

Hint! Use separate clones of the repos for separate container projects! This allows you to update different containers at different speed. Also this scripts will change over time, when there are updates or new basic containers.

Imprint

No cookies here!