{"id":31706,"date":"2022-02-03T10:05:33","date_gmt":"2022-02-03T09:05:33","guid":{"rendered":"https:\/\/www.inovex.de\/?p=31706"},"modified":"2022-11-21T11:39:53","modified_gmt":"2022-11-21T10:39:53","slug":"remote-system-updates-with-mender","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/","title":{"rendered":"Remote System Updates With Mender"},"content":{"rendered":"<p>In this blog post I would like to talk about Mender, a software solution we at inovex evaluated in the Smart Building project, which allows robust and secure OTA updates for IoT device fleets. I will give you an overview of the software and show you how we integrated it into our own project.<\/p>\n<p><!--more--><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#Introduction\" >Introduction<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#About-Mender\" >About Mender<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#Update-mechanism\" >Update mechanism<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#Update-files\" >Update files<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#Yocto-integration\" >Yocto integration<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#Security\" >Security<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#Releasing-system-updates\" >Releasing system updates<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#Infrastructure\" >Infrastructure<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#Conclusion\" >Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Introduction\"><\/span>Introduction<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>In the <a href=\"https:\/\/www.inovex.de\/de\/blog\/smart-building-iot-azure\/\">Smart Building project<\/a>, IoT edge gateways are used as intermediate devices between microcontrollers and Microsoft Azure. They allow pre-processing of incoming data before sending them to the cloud for further functionality. If you want to know more about the Smart Building project in general, you can read the <a href=\"https:\/\/www.inovex.de\/de\/blog\/smart-building-iot-azure\/\">introduction article<\/a>.<\/p>\n<p>Those devices run a custom-built image created with <a href=\"https:\/\/www.yoctoproject.org\/\" target=\"_blank\" rel=\"noopener\">Yocto<\/a>\u00a0by our development team. The image contains all components required to operate the edge gateway, for example, Docker, systemd services, configuration files and the mDNS software Avahi. It also includes the <a href=\"https:\/\/github.com\/mendersoftware\/mender\" target=\"_blank\" rel=\"noopener\">Mender<\/a>\u00a0client which I will discuss further in a moment.<\/p>\n<p>Bugs, security issues or misbehaving software is common in IT projects and the ability to fix those problems is a requirement for modern embedded systems. Furthermore, there should also be the ability to add new features after the deployment at an edge location where the operators do not have physical access. To accomplish that, we need to make sure we can deploy changes via remote software updates or over-the-air (OTA).<\/p>\n<p>The edge gateways are not directly accessible from the Internet but only within the local network. That is why it is not possible to simply connect to the device from a central system and install updates for all office locations, e. g. via SSH (which can be very error-prone nevertheless). The solution for that is \u2013 you might have guessed it \u2013 Mender.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"About-Mender\"><\/span>About Mender<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Mender enables \u201csecure, risk-tolerant and efficient over-the-air updates [&#8230;]\u201c according to their <a href=\"https:\/\/mender.io\" target=\"_blank\" rel=\"noopener\">website<\/a>.\u00a0Managed edge devices run the Mender client and connect to a central Mender server. They poll that server in regular intervals and download software updates over HTTPS when available. Using this pull-based principle, the edge devices do not need to be directly reachable from the Internet because the clients initiate the connection themselves.<\/p>\n<p>The clients are authenticated via an asymmetric key pair generated on the first boot of a device. Devices have to be accepted once via the Mender Web UI or Mender REST API (which we automated via the <a href=\"https:\/\/www.inovex.de\/de\/blog\/automating-deployment-iot-edge-gateways\/\">Gateway Provisioning Service<\/a>) in order to register with the server successfully.<\/p>\n<p>A system update can then be deployed via the Mender UI (or REST API) for only specific machines or a whole device fleet. They will then download and install the update. We will see where these update files come from and how they work later in this article.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Update-mechanism\"><\/span>Update mechanism<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Mender supports different types of update mechanisms: full system updates which contain the root file system, or just specific application updates.\u00a0In general, devices have a special partition layout consisting of two main partitions, one being active and one being passive, a bootloader partition and another one for persistent storage.\u00a0This enables automatic rollbacks on update failure using the A\/B update mechanism.<\/p>\n<p>The main partition contains the whole root file system and the kernel. The active partition is the one the system boots from and has a working file system. When a system update is installed, the new root file system is copied onto the passive partition. The device then performs a reboot and tries to boot from the passive partition with the new, updated files. In case that fails, the device simply reboots again and boots from the active partition like before. Otherwise, if the boot was successful, the pointers for the active and passive partitions are swapped so the updated partition is marked as active.<\/p>\n<p>That way, corrupt or buggy system updates do not render the device unusable, which would require manual re-setup. A faulty update just makes the device reboot from the working state again and allows the operators to remotely install another update. In addition, it also prevents incomplete updates, e. g. when the update process got disrupted due to power loss.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Update-files\"><\/span>Update files<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Update files are deployed as Mender-specific file archives, also called Mender artifacts. In our case, they contain the whole root file system, but application updates are possible as well, e. g. by installing Debian packages via dpkg. You can actually create your very own update module which executes exactly the code you need to update the system. With that, you could only update containers, just specific files in the file system or the bootloader. The possibilities are endless.<\/p>\n<p>Mender update files are compressed when created and extracted on-device to save bandwidth, after being downloaded by a client. They include metadata, like the updated version, designated device type (hardware platform, like Intel NUC, Raspberry Pi etc.) and an optional cryptographic signature (more about that later).<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Yocto-integration\"><\/span>Yocto integration<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Mender natively supports Yocto, a software project allowing developers to create custom Linux images for any hardware architecture. Yocto is especially popular and known for targeting embedded systems. It\u00a0allows integrating software into the OS by using layers. They basically contain various software components, similar to a package manager. The Mender project also releases different Yocto layers for easy integration of Mender into the custom OS image.<\/p>\n<p>It handles the installation of the Mender client and the correct partitioning as well, reducing the developer&#8217;s work required.\u00a0As you might know after reading the <a href=\"https:\/\/www.inovex.de\/de\/blog\/automating-deployment-iot-edge-gateways\/\">previous blog article<\/a>\u00a0about the Gateway Provisioning Service, we also use the software stack consisting of Yocto and Mender. On one hand, that is because of the feature set and robust OTA updates provided by Mender, but on the other hand, exactly because of the good integration Mender provides with Yocto.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Security\"><\/span>Security<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Mender also offers the option to create a cryptographic signature for Mender artifacts using RSA or ECDSA key pairs. This enables verification of updated files on-device before installing any update.\u00a0The option can be enabled in the Mender client config by providing a path to a public key which will be used for verification of signatures. All update files must then be signed by the corresponding private key.\u00a0That feature is ingrained into the OS; the Mender client refuses to install updates with none or invalid signatures. For example, a compromised Mender server does not allow an attacker to deploy arbitrary update files because, without the private key, he cannot create a valid signature.<\/p>\n<p>As another security feature, you can toggle the feature flag &#8222;read-only file system&#8220;. When building the OS image using Yocto, the Mender layers configure the currently active main partition to be mounted as read-only, so processes and users are unable to tamper with any files in the root file system, assuring file integrity. Of course, you should be aware that the root user can remount the file system as read-write.<\/p>\n<figure style=\"width: 1336px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/Mender-UI-blurred.png\" alt=\"Screenshot of Mender Web UI showing registered devices\" width=\"1336\" height=\"596\" \/><figcaption class=\"wp-caption-text\">Mender Web UI showing registered devices<\/figcaption><\/figure>\n<h2><span class=\"ez-toc-section\" id=\"Releasing-system-updates\"><\/span>Releasing system updates<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>We have implemented an automated process of how system updates are released and deployed onto devices. The whole pipeline is defined using GitLab&#8217;s CI\/CD features in a .gitlab-ci.yml file. The process starts with a push of new commits to our Git repository. GitLab triggers a build of the image with Yocto and outputs the Linux image itself and the Mender artifact. These files are saved as GitLab artifacts so they are available for manual download afterward.<\/p>\n<p>As an intermediate step in the pipeline, the Mender artifact is cryptographically signed with a private key (mounted via GitLab CI variables). The corresponding public key is embedded into the device&#8217;s image from the factory so devices can verify the update&#8217;s integrity after downloading the file. That way, we can ensure that only trusted and verified system updates are installed on all devices.<\/p>\n<p>Tagged commits are considered to get deployed onto one or more devices at a later point in time. If a tagged commit triggers the pipeline, the Mender artifact is automatically uploaded to the Mender server so it is ready to be deployed to targeted devices via Mender&#8217;s Web UI. The name of the artifact, which is displayed in the UI, is set to the Git tag. Mender artifacts produced by non-tagged commits are not uploaded to Mender and are just stored in GitLab itself.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Infrastructure\"><\/span>Infrastructure<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The Smart Building project&#8217;s Mender instance is hosted on Kubernetes in an Azure Kubernetes Service cluster. At the time we began building the infrastructure in late 2019, the Mender project only distributed Docker-Compose files for deployment of the Mender server, so we had to build the Kubernetes manifests ourselves from the ground up.<\/p>\n<p>In the meantime, the project started shipping Helm charts for the installation of the Mender server on Kubernetes. Since Mender 3.0 (<a href=\"https:\/\/mender.io\/blog\/synchronized-ota-software-update\" target=\"_blank\" rel=\"noopener\">released<\/a> in July 2021), the Helm charts are also mentioned in the <a href=\"https:\/\/docs.mender.io\/3.0\/server-installation\/production-installation-with-kubernetes\" target=\"_blank\" rel=\"noopener\">docs<\/a> and are now considered the only production-grade installation method for the Mender server (also see <a href=\"https:\/\/github.com\/mendersoftware\/mender-docs\/commit\/34c8b62fbff9c811b01f3d27a8cc1055d9319971\" target=\"_blank\" rel=\"noopener\">this commit<\/a>).<\/p>\n<p>Since Mender and the Gateway Provisioning Service share the same AKS cluster, the Mender server also benefits from the nginx ingresses with an AKS TCP load balancer in-front, automatic TLS certificate management from <a href=\"https:\/\/github.com\/jetstack\/cert-manager\" target=\"_blank\" rel=\"noopener\">Cert Manager<\/a> and DNS management via <a href=\"https:\/\/github.com\/kubernetes-sigs\/external-dns\" target=\"_blank\" rel=\"noopener\">ExternalDNS<\/a>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Mender quickly became a central component in our infrastructure because it offers hassle-free, secure and robust OTA updates for different types of device fleets.<\/p>\n<p>Its adoption by companies like <a href=\"https:\/\/mender.io\/customers-and-partners\/jetson-nvidia-ota-update\" target=\"_blank\" rel=\"noopener\">NVIDIA<\/a> or leading cloud platforms like\u00a0<a href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/update-iot-devices-connected-to-azure-with-mender-update-manager\/\" target=\"_blank\" rel=\"noopener\">Microsoft Azure<\/a> and <a href=\"https:\/\/cloud.google.com\/blog\/products\/iot-devices\/mender-and-cloud-iot-facilitate-robust-device-update-management\" target=\"_blank\" rel=\"noopener\">Google Cloud Platform<\/a>\u00a0emphasize that Mender is able to provide enterprise-grade features for potentially large-scale production setups. Additionally, the software&#8217;s footprint is still small enough to make it reasonable to maintain it for a smaller number of devices as well.<\/p>\n<p>To summarize, if you need a solution for easy and secure OTA updates for a group of (preferably) IoT devices, you should definitely take a look at Mender.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this blog post I would like to talk about Mender, a software solution we at inovex evaluated in the Smart Building project, which allows robust and secure OTA updates for IoT device fleets. I will give you an overview of the software and show you how we integrated it into our own project.<\/p>\n","protected":false},"author":204,"featured_media":34440,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[513,166,585,74,114],"service":[505,712],"coauthors":[{"id":204,"display_name":"Jan Hartkopf","user_nicename":"jhartkopf"}],"class_list":["post-31706","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-azure-2","tag-edge-computing","tag-embedded-systems","tag-iot","tag-kubernetes","service-embedded-systems","service-internet-of-things-iot"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Remote System Updates With Mender - inovex GmbH<\/title>\n<meta name=\"description\" content=\"This blog post gives an overview of Mender, a software which enables robust and secure OTA updates for IoT device fleets.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Remote System Updates With Mender - inovex GmbH\" \/>\n<meta property=\"og:description\" content=\"This blog post gives an overview of Mender, a software which enables robust and secure OTA updates for IoT device fleets.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-03T09:05:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-21T10:39:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/Mender-.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1918\" \/>\n\t<meta property=\"og:image:height\" content=\"1077\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jan Hartkopf\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/Mender--1024x575.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jan Hartkopf\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"10\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Jan Hartkopf\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/remote-system-updates-with-mender\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/remote-system-updates-with-mender\\\/\"},\"author\":{\"name\":\"Jan Hartkopf\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/80586518c29368d51341c747c8fb8abe\"},\"headline\":\"Remote System Updates With Mender\",\"datePublished\":\"2022-02-03T09:05:33+00:00\",\"dateModified\":\"2022-11-21T10:39:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/remote-system-updates-with-mender\\\/\"},\"wordCount\":1638,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/remote-system-updates-with-mender\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/Mender-.png\",\"keywords\":[\"Azure\",\"Edge-Computing\",\"Embedded Systems\",\"IoT\",\"Kubernetes\"],\"articleSection\":[\"Applications\",\"English Content\",\"General\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/remote-system-updates-with-mender\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/remote-system-updates-with-mender\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/remote-system-updates-with-mender\\\/\",\"name\":\"Remote System Updates With Mender - inovex GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/remote-system-updates-with-mender\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/remote-system-updates-with-mender\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/Mender-.png\",\"datePublished\":\"2022-02-03T09:05:33+00:00\",\"dateModified\":\"2022-11-21T10:39:53+00:00\",\"description\":\"This blog post gives an overview of Mender, a software which enables robust and secure OTA updates for IoT device fleets.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/remote-system-updates-with-mender\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/remote-system-updates-with-mender\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/remote-system-updates-with-mender\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/Mender-.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/Mender-.png\",\"width\":1918,\"height\":1077,\"caption\":\"Mender Logo, Geb\u00e4ude Cloud\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/remote-system-updates-with-mender\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Remote System Updates With Mender\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inovexde\",\"https:\\\/\\\/x.com\\\/inovexgmbh\",\"https:\\\/\\\/www.instagram.com\\\/inovexlife\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inovex\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/80586518c29368d51341c747c8fb8abe\",\"name\":\"Jan Hartkopf\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0f1698ff0a1e483f32de7112fe83e277ee3cef1d9937056bdadb850fa0aed375?s=96&d=retro&r=g90c28bf68ce5265d08da889f60dce137\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0f1698ff0a1e483f32de7112fe83e277ee3cef1d9937056bdadb850fa0aed375?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0f1698ff0a1e483f32de7112fe83e277ee3cef1d9937056bdadb850fa0aed375?s=96&d=retro&r=g\",\"caption\":\"Jan Hartkopf\"},\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/author\\\/jhartkopf\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Remote System Updates With Mender - inovex GmbH","description":"This blog post gives an overview of Mender, a software which enables robust and secure OTA updates for IoT device fleets.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/","og_locale":"de_DE","og_type":"article","og_title":"Remote System Updates With Mender - inovex GmbH","og_description":"This blog post gives an overview of Mender, a software which enables robust and secure OTA updates for IoT device fleets.","og_url":"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2022-02-03T09:05:33+00:00","article_modified_time":"2022-11-21T10:39:53+00:00","og_image":[{"width":1918,"height":1077,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/Mender-.png","type":"image\/png"}],"author":"Jan Hartkopf","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/Mender--1024x575.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"Jan Hartkopf","Gesch\u00e4tzte Lesezeit":"10\u00a0Minuten","Written by":"Jan Hartkopf"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/"},"author":{"name":"Jan Hartkopf","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/80586518c29368d51341c747c8fb8abe"},"headline":"Remote System Updates With Mender","datePublished":"2022-02-03T09:05:33+00:00","dateModified":"2022-11-21T10:39:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/"},"wordCount":1638,"commentCount":0,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/Mender-.png","keywords":["Azure","Edge-Computing","Embedded Systems","IoT","Kubernetes"],"articleSection":["Applications","English Content","General"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/","url":"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/","name":"Remote System Updates With Mender - inovex GmbH","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/Mender-.png","datePublished":"2022-02-03T09:05:33+00:00","dateModified":"2022-11-21T10:39:53+00:00","description":"This blog post gives an overview of Mender, a software which enables robust and secure OTA updates for IoT device fleets.","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/Mender-.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/Mender-.png","width":1918,"height":1077,"caption":"Mender Logo, Geb\u00e4ude Cloud"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/remote-system-updates-with-mender\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"Remote System Updates With Mender"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/80586518c29368d51341c747c8fb8abe","name":"Jan Hartkopf","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/0f1698ff0a1e483f32de7112fe83e277ee3cef1d9937056bdadb850fa0aed375?s=96&d=retro&r=g90c28bf68ce5265d08da889f60dce137","url":"https:\/\/secure.gravatar.com\/avatar\/0f1698ff0a1e483f32de7112fe83e277ee3cef1d9937056bdadb850fa0aed375?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0f1698ff0a1e483f32de7112fe83e277ee3cef1d9937056bdadb850fa0aed375?s=96&d=retro&r=g","caption":"Jan Hartkopf"},"url":"https:\/\/www.inovex.de\/de\/blog\/author\/jhartkopf\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/31706","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/204"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=31706"}],"version-history":[{"count":6,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/31706\/revisions"}],"predecessor-version":[{"id":34687,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/31706\/revisions\/34687"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/34440"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=31706"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=31706"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=31706"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=31706"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}